项目简介
此存储库提供了一种基于 LangGraph 的代理服务架构的蓝图和完整工具包。它包括一个 LangGraph 代理,一个 FastAPI 服务来提供服务,一个客户端用于与服务交互,以及一个使用客户端提供聊天界面的 Streamlit 应用。
该项目为您提供了一个模板,使用 LangGraph 框架轻松构建和运行您自己的代理。它演示了从代理定义到用户界面的完整设置,通过提供一个全面、强大的工具包,使开始 LangGraph 为基础的项目变得更加容易。
架构图
主要特性
-
LangGraph 代理:使用 LangGraph 框架构建的可定制代理。
-
快速 API 服务:为代理提供流式和非流式端点。
-
高级流式传输:一种支持基于令牌和基于消息的流式传输的新型方法。
-
Streamlit 界面:提供了一个用户友好的聊天界面,用于与代理交互。
-
异步设计:利用 async/await 高效处理并发请求。
-
(待更新) 内容审核:实施 LlamaGuard 进行内容审核。
-
反馈机制:包含与 LangSmith 集成的基于星级的反馈系统。
-
Docker 支持:包含 Dockerfiles 和一个 docker compose 文件,便于快速开发和部署。
关键文件
仓库结构如下:Translation:
-
agent/agent.py
: 定义 LangGraph 代理
-
schema/__init__.py
: 定义服务架构
-
service/service.py
: 快速 API 服务,用于提供代理
-
client/__init__.py
: 客户与代理服务互动
-
streamlit_app.py
: 提供聊天界面的 Streamlit 应用
为什么选择 LangGraph?
AI 代理正越来越多地构建为具有更明确结构和严格控制的复合 AI 系统,并且对认知架构给予高度关注。在本仓库创建时,LangGraph 看起来是构建此类系统最先进的开源框架,具有高度的控制权,同时支持如并发执行、图中的循环、流式结果、内置可观测性以及围绕 LangChain 的丰富生态系统等功能。
在过去的一年里,我花费了一定的时间使用 LangChain 进行构建,并体验了一些常被提及的问题。在使用 LangGraph 构建时,我发现了一些类似的问题,但总体上我喜欢这个方向,我对使用它做出了满意的选择。
说了这么多,这个领域还有几个其他有趣的项目值得提及,我希望不久后能有更多时间与它们一起构建:
-
LlamaIndex 工作流和 llama-agents:LlamaIndex 工作流在我开始处理这个项目时启动。我通常非常喜欢使用 LlamaIndex 构建的体验,这看起来非常有前景。
-
DSPy:DSPy 优化器和方法看起来非常有趣且有前景。但是创造者已经声明他们目前不专注于代理。我将来可能会尝试使用 DSPy 构建更复杂代理中的某些特定节点。
-
我知道不断有新的事物出现,比如我最近发现的总督控制流。
设置与使用
-
克隆仓库:
git clone https://github.com/JoshuaC215/agent-service-toolkit.git
cd agent-service-toolkit
2. 设置环境变量:在根目录下创建一个
.env
文件,并添加以下内容:
OPENAI_API_KEY=your_openai_api_key
GROQ_API_KEY=your_groq_api_key
AUTH_SECRET=any_string_you_choose
LANGCHAIN_TRACING_V2=true
LANGCHAIN_ENDPOINT=https://api.smith.langchain.com
LANGCHAIN_API_KEY=your_langchain_api_key
LANGCHAIN_PROJECT=your_project
配置
该项目包括一个 Docker 设置,用于轻松的开发和部署。
compose.yaml
文件定义了两个服务:
agent_service
和
streamlit_app
。每个服务的
Dockerfile
在其各自的目录中。
对于本地开发,我们推荐使用 docker compose watch。此功能通过在检测到源代码更改时自动更新您的容器,提供更流畅的开发体验。
-
确保您的系统上已安装 Docker 和 Docker Compose(>= 2.23.0)。
-
构建并以监控模式启动服务:
3. 服务现在将在您更改代码时自动更新:
4.
通过导航到网页浏览器中的
http://localhost:8501
访问 Streamlit 应用。
5. 代理服务 API 将在
http://localhost:80
处可用。您也可以使用
http://localhost:80/redoc
处的 OpenAPI 文档。
6.
使用
docker compose down
停止服务。
此设置允许您实时开发和测试更改,无需手动重新启动服务。
本地开发不使用 Docker
您也可以不使用 Docker,仅使用 Python 虚拟环境在当地运行代理服务和 Streamlit 应用。
-
创建虚拟环境并安装依赖项:创建虚拟环境:1. 打开命令行界面。2. 使用命令 `python -m venv env_name`(对于 Python 3)创建虚拟环境,其中 `env_name` 是您选择的环境名称。3. 激活虚拟环境:在 Windows 上使用 `.\env_name\Scripts\activate`,在 Unix 或 MacOS 上使用 `source env_name/bin/activate`。安装依赖项:1. 确保虚拟环境已激活。2. 使用 pip 命令安装所需的依赖项,例如 `pip install package_name`,其中 `package_name` 是您需要的包名称
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
2. 运行 FastAPI 服务器:
3. 在单独的终端中,运行 Streamlit 应用:
streamlit run streamlit_app.py
4. 打开你的浏览器并导航到 Streamlit 提供的 URL(通常为
http://localhost:8501
)。