专栏名称: GitHubStore
分享有意思的开源项目
目录
相关文章推荐
顽主杯实盘大赛  ·  大娃封神一战 ·  2 天前  
顽主杯实盘大赛  ·  大娃封神一战 ·  2 天前  
51好读  ›  专栏  ›  GitHubStore

AI Agent服务工具包

GitHubStore  · 公众号  ·  · 2024-08-11 16:38

正文

项目简介

此存储库提供了一种基于 LangGraph 的代理服务架构的蓝图和完整工具包。它包括一个 LangGraph 代理,一个 FastAPI 服务来提供服务,一个客户端用于与服务交互,以及一个使用客户端提供聊天界面的 Streamlit 应用。


该项目为您提供了一个模板,使用 LangGraph 框架轻松构建和运行您自己的代理。它演示了从代理定义到用户界面的完整设置,通过提供一个全面、强大的工具包,使开始 LangGraph 为基础的项目变得更加容易。


架构图

主要特性

  1. LangGraph 代理:使用 LangGraph 框架构建的可定制代理。

  2. 快速 API 服务:为代理提供流式和非流式端点。

  3. 高级流式传输:一种支持基于令牌和基于消息的流式传输的新型方法。

  4. Streamlit 界面:提供了一个用户友好的聊天界面,用于与代理交互。

  5. 异步设计:利用 async/await 高效处理并发请求。

  6. (待更新) 内容审核:实施 LlamaGuard 进行内容审核。

  7. 反馈机制:包含与 LangSmith 集成的基于星级的反馈系统。

  8. 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 构建更复杂代理中的某些特定节点。

  • 我知道不断有新的事物出现,比如我最近发现的总督控制流。


设置与使用

  1. 克隆仓库:

git clone https://github.com/JoshuaC215/agent-service-toolkit.gitcd agent-service-toolkit


2. 设置环境变量:在根目录下创建一个 .env 文件,并添加以下内容:

OPENAI_API_KEY=your_openai_api_keyGROQ_API_KEY=your_groq_api_key
# Optional, to enable simple header-based auth on the serviceAUTH_SECRET=any_string_you_choose
# Optional, to enable LangSmith tracingLANGCHAIN_TRACING_V2=trueLANGCHAIN_ENDPOINT=https://api.smith.langchain.comLANGCHAIN_API_KEY=your_langchain_api_keyLANGCHAIN_PROJECT=your_project


配置

该项目包括一个 Docker 设置,用于轻松的开发和部署。 compose.yaml 文件定义了两个服务: agent_service streamlit_app 。每个服务的 Dockerfile 在其各自的目录中。

对于本地开发,我们推荐使用 docker compose watch。此功能通过在检测到源代码更改时自动更新您的容器,提供更流畅的开发体验。

  1. 确保您的系统上已安装 Docker 和 Docker Compose(>= 2.23.0)。

  2. 构建并以监控模式启动服务:

docker compose watch


3. 服务现在将在您更改代码时自动更新:

  • 相关 Python 文件和目录的更改将触发 relevantservices 的更新。

  • 注意:如果您对 requirements.txt 文件进行了更改,您将需要通过运行 docker compose up --build 来重建服务。


4. 通过导航到网页浏览器中的 http://localhost:8501 访问 Streamlit 应用。


5. 代理服务 API 将在 http://localhost:80 处可用。您也可以使用 http://localhost:80/redoc 处的 OpenAPI 文档。

6. 使用 docker compose down 停止服务。


此设置允许您实时开发和测试更改,无需手动重新启动服务。

本地开发不使用 Docker

您也可以不使用 Docker,仅使用 Python 虚拟环境在当地运行代理服务和 Streamlit 应用。

  1. 创建虚拟环境并安装依赖项:创建虚拟环境: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 venvsource venv/bin/activatepip install -r requirements.txt


2. 运行 FastAPI 服务器:

python run_service.py

3. 在单独的终端中,运行 Streamlit 应用:

streamlit run streamlit_app.py

4. 打开你的浏览器并导航到 Streamlit 提供的 URL(通常为 http://localhost:8501 )。







请到「今天看啥」查看全文