可能是最轻量级的本地 RAG + Agent 应用之一,无需进行复杂配置,即可一键体验 Agent 加持下不同模型能力的强大提升。
如果你喜欢这个项目,请为它点一个 star ,这对我很重要!
聊天及 Agent 交互:
- 💭 简洁易用的聊天框界面
- 🌏️ 语言可选(简体中文、English)
- 🎤 语音输入(可选,本地 whisper 提供 TTS 服务)
- 🔧 多种(本地)模型来源的推理支持(OpenAI, Azure OpenAI, Groq, ollama, llamafile/OpenAI Like)
- 原生 Function Call (OpenAI, Azure OpenAI, OpenAI Like, Ollama)
- 模型本身需支持 Function Call
- 🤖 预置多种 Agent 模式(基于 AutoGen )
- 🖥️ 对话数据的本地存储和管理
- 多格式导出支持(Markdown、HTML)
- 多主题选择(HTML)
知识库:
- 原生实现的检索增强生成(RAG),轻量而高效
- 可供选择的嵌入模型(Hugging Face/OpenAI)
- 易于使用的知识库管理
- 混合检索、重排序和指定文件检索
如果你喜欢这个项目,请你为它点上 star,这是对我最大的鼓励!
支持导出格式、主题选择和导出范围控制:
目前已支持主题:
经典 | Glassmorphism |
---|---|
设置模型(边栏)及查看详细引用:
配置 RAG :
在 Chat
和 AgentChat
页面均支持 Function call,但实现方式不同。
原生调用,对所有 OpenAI Compatible 模型均有效,但需要模型本身支持 Function call。
你也可以自定义想要调用函数,编写请参考toolkits.py的编写规则。
注意:由于 AutoGen v0.4 完全重写,AgentChat 页面将在未来版本中更新,目前仅使用 AutoGen v0.2 作为测试。如果需要使用 AgentChat 页面,请使用
python startup.py
启动应用,而不是streamlit run RAGenT.py
。
借由 AutoGen 框架实现(测试),对模型的兼容性请参考 AutoGen 的文档。
Function call 可以显著增强 LLM 的能力,目前支持 OpenAI, Azure OpenAI, Groq 以及本地模型(通过 LiteLLM + Ollama)。
你也可以自定义想要调用函数,请注意 AutoGen 的函数编写与原生调用的函数编写规则不同,具体请参考官方文档以及本项目的tools.py。
-
使用
git clone https://github.com/Wannabeasmartguy/RAGenT.git
拉取代码; 然后在**命令提示符 (CMD)**中打开你的运行环境,使用pip install -r requirements.txt
安装运行依赖。 -
配置模型依赖项:修改
.env_sample
文件为.env
并填写以下内容:LANGUAGE
: 支持English
和简体中文
,默认为English
。OPENAI_API_KEY
: 如果你使用 OpenAI 模型,请在此处填写 api key;AZURE_OAI_KEY
: 如果你使用 Azure OpenAI 模型,请在此处填写 api key;AZURE_OAI_ENDPOINT
: 如果你使用 OpenAI 模型,请在此处填写 end_point;API_VERSION
: 如果你使用 Azure OpenAI 模型,请在此处填写 api version;API_TYPE
: 如果你使用 Azure OpenAI 模型,请在此处填写 api type;GROQ_API_KEY
: 如果你使用 Groq 作为模型来源,请在此处填写 api key;COZE_ACCESS_TOKEN
: 如果你需要使用创建的 Coze Bot ,请在此处填写 access token;
使用 Llamafile 及其他 OpenAI-Like 模型(支持 OpenAI 接口)或本地 OpenAI API 服务,请在应用内设置 api key 和 endpoint ,并自行启动 Llamafile 等本地服务。
-
启动应用:
命令行运行:
streamlit run RAGenT.py
即可启动,启动完成后会在浏览器自动打开前端页面。如果你想要使用 AgentChat 页面,请使用
python startup.py
启动应用,而不是streamlit run RAGenT.py
。
- 聊天记录及配置本地持久化
- 聊天记录本地持久化
- 配置本地持久化
- 增加对更多模型来源的支持
- 增加更多可供调用的函数工具
- 增加对更多嵌入模型的支持
- 增加预置 Agent 的数量
对于使用中遇到的问题和产生的新想法,欢迎提交 issue 和 PR!