开源Slack AI应用
这个仓库是一个开箱即用的基本Slack AI解决方案,您可以自己托管,并使用OpenAI按需生成帖子和频道摘要(如果有需求,将添加对其他和开源LLM的支持)。官方的Slack AI产品很好,但由于访问受限和附加收费,我决定开源我在2023年9月创建的版本。了解更多关于我如何以及为何构建一个开源Slack AI.
一旦启动并运行(全过程的说明在下文提供),您所有的Slack用户将能够生成以下内容:
- 帖子摘要 - 生成任何Slack帖子详细摘要(由GPT-3.5-Turbo提供支持)
- 频道概述 - 基于扩展消息历史记录生成频道的目的概述(由一组NLP模型和少量的GPT-4自然语言解释分析提供支持)
- 自某时间起的频道摘要 - 生成自某个时间点以来频道消息的详细摘要(由GPT-3.5-Turbo提供支持)。注意:这还不包括帖子。
- 完整的频道摘要(beta)- 生成频道扩展历史的详细摘要(由GPT-3.5-Turbo提供支持)。注意:这可能会非常长!
目录
开始使用
按照以下说明在您的本地机器上获取项目副本以进行开发和测试。
先决条件
确保您在本地开发机器上预先配置或安装了以下内容:
- Python 3.8或更高
- OpenAI API密钥
- Slack应用及相关API令牌
- Poetry包管理器
- ngrok(推荐)
安装
- 克隆仓库到您的本地机器。
- 导航到项目目录。
- 使用Poetry安装所需的Python包:
poetry install
- 安装字典模型:
poetry run python -m spacy download en_core_web_md
- 在项目根目录创建一个
.env
文件,并用您的API密钥和令牌填写它。使用example.env
文件作为模板。
cp example.env .env && open .env
Slack应用配置
复制manifest.json
并将请求URL更改为您的ngrok或服务器URL。
在这里创建一个新的Slack应用,并使用您的manifest.yaml
文件配置它。
您不需要做其他修改,但可以更改名称、描述和其他相关设置。
如果您想调整斜杠命令的名称,您需要修改slack_server.py
。
配置完成后,从“安装应用程序”页面获取“Bot User OAuth令牌”,并将其添加到您的.env
文件中作为SLACK_BOT_TOKEN
。
然后,在“基本信息”页面的“应用级别令牌”下,创建一个具有connections:write
范围的令牌,并将其添加到您的.env
文件中作为SLACK_APP_TOKEN
。
使用
要运行应用程序,请运行FastAPI服务器:
cd ossai && poetry run uvicorn slack_server:app --reload
然后您需要使用ngrok将服务器暴露到互联网。
运行以下命令启动ngrok:ngrok http 8000
然后将ngrok URL添加到您的Slack应用设置中。
定制
主要的定制选项是:
- 频道摘要:在
topic_analysis.py
中定制ChatGPT提示 - 帖子摘要:在
summarizer.py
中定制ChatGPT提示
测试
这个项目使用pytest
和pytest-cov
来运行测试并测量测试覆盖率。
按照以下步骤运行测试并查看覆盖率:
-
导航到项目根目录。
-
运行以下命令执行带有覆盖率的测试:
pytest --cov=ossai tests/
该命令将运行
tests/
目录中的所有测试,并为ossai
模块生成一个覆盖率报告。 -
运行测试后,您将在终端中看到一个报告,显示被测试覆盖的代码百分比,并突出显示未被覆盖的行。
请注意,如果您使用虚拟环境,请确保在运行这些命令之前已经激活虚拟环境。
未来增强
- 迁移到LangChain和LangSmith以实现可扩展性、追踪和控制
- 利用LangSmith的反馈功能捕获和学习用户反馈
- 添加
/tldr_since
命令以总结从某个日期以来的频道消息 - 添加Slack应用设置详细信息和示例应用清单到README
- 在频道级别的摘要中包含线程对话
- 实现与单元测试互补的评估套件
- 添加对替代和开源LLM的支持
- 探索收集数据和微调模型以降低成本的工作流程
- 添加对匿名消息摘要的支持
- 利用链条工具例如Chain of Destiny
- 添加从公司知识库等外部来源提取支持性上下文的支持
- 探索缓存和其他性能优化
- 探索情感分析
贡献
我非常欢迎提出贡献!请阅读CONTRIBUTING.md
了解如何提交反馈、漏洞、功能请求、增强或您自己的拉取请求。
许可证
该项目根据GPL-3.0许可证授权 - 详情请见LICENSE.md
文件。