小众AI

agent-service-toolkit
agent-service-toolkit - 轻量级的 AI 代理开发框架
帮助开发者用 Python 快速搭建和运行基于 LangGraph 框架的 AI 代理服务。它结合 FastAPI、Streamlit 和 Pydantic 等技术栈,提供了用户界面、自定义 Agent、流式传输等功能,并集成了内容审核(LlamaGuard)和用户反馈机制(LangSmith),极大地简化了 AI Agent 应用的开发和优化过程。
  官网   代码仓

帮助开发者用 Python 快速搭建和运行基于 LangGraph 框架的 AI 代理服务。它结合 FastAPI、Streamlit 和 Pydantic 等技术栈,提供了用户界面、自定义 Agent、流式传输等功能,并集成了内容审核(LlamaGuard)和用户反馈机制(LangSmith),极大地简化了 AI Agent 应用的开发和优化过程。

系统架构

主要功能

  1. LangGraph 代理:使用 LangGraph 框架构建的可自定义代理。
  2. FastAPI 服务:为代理提供流式处理和非流式处理终结点。
  3. Advanced Streaming:一种同时支持基于令牌和基于消息的流式处理的新方法。
  4. 内容审核:实现 LlamaGuard 进行内容审核(需要 Groq API 密钥)。
  5. Streamlit Interface(流式接口):提供用户友好的聊天界面,用于与代理交互。
  6. 多 Agent 支持:在服务中运行多个 Agent 并通过 URL 路径调用
  7. 异步设计:利用 async/await 高效处理并发请求。
  8. 反馈机制:包括与 LangSmith 集成的基于星星的反馈系统。
  9. Dynamic Metadata: endpoint 提供有关服务以及可用代理和模型的动态配置元数据。/info
  10. Docker 支持:包括 Dockerfile 和 docker compose 文件,以便于开发和部署。
  11. 测试:包括针对完整存储库的强大单元和集成测试。

安装和使用

  1. 克隆存储库:

    git clone https://github.com/JoshuaC215/agent-service-toolkit.git
    cd agent-service-toolkit
    
  2. 设置环境变量: 在根目录中创建一个文件。至少需要一个 LLM API 密钥或配置。有关可用环境变量的完整列表,请参阅 .env.example 文件,包括各种模型提供程序 API 密钥、基于标头的身份验证、LangSmith 跟踪、测试和开发模式以及 OpenWeatherMap API 密钥。.env

  3. 现在,您可以使用 Docker 或仅使用 Python 在本地运行代理服务和 Streamlit 应用程序。建议使用 Docker 设置,以简化环境设置,并在更改代码时立即重新加载服务。

构建或自定义您自己的代理

要针对您自己的使用案例自定义代理,请执行以下作:

  1. 将新代理添加到目录中。您可以复制或修改它以更改代理的行为和工具。src/agentsresearch_assistant.pychatbot.py
  2. 在 中导入新代理并将其添加到字典中。您的代理可以由 或 调用。agentssrc/agents/agents.py/<your_agent_name>/invoke/<your_agent_name>/stream
  3. 调整 Streamlit 界面以匹配您的代理的功能。src/streamlit_app.py

Docker 设置

该项目包括一个 Docker 设置,以便于开发和部署。该文件定义了两个服务:和 .for each 位于各自的目录中。compose.yamlagent_servicestreamlit_appDockerfile

对于本地开发,我们建议使用 docker compose watch。此功能可在源代码中检测到更改时自动更新容器,从而提供更流畅的开发体验。

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

  2. 在监视模式下构建并启动服务:

    docker compose watch
    
  3. 现在,当您更改代码时,这些服务将自动更新:

    • 相关 python 文件和目录中的更改将触发相关服务的更新。
    • 注意:如果对 或 文件进行更改,则需要通过运行 .pyproject.tomluv.lockdocker compose up --build
  4. 通过在 Web 浏览器中导航到 来访问 Streamlit 应用程序。http://localhost:8501

  5. 代理服务 API 将在 上提供。您还可以使用 OpenAPI 文档。http://0.0.0.0:8080http://0.0.0.0:8080/redoc

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

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

在 AgentClient 上构建其他应用程序

存储库包括可用于与代理服务交互的泛型。此客户端设计为灵活,可用于在代理之上构建其他应用程序。它支持同步和异步调用,以及流式处理和非流式处理请求。src/client/client.AgentClient

有关如何使用 .一个简单的例子:src/run_client.pyAgentClient

from client import AgentClient
client = AgentClient()

response = client.invoke("Tell me a brief joke?")
response.pretty_print()
# ================================== Ai Message ==================================
#
# A man walked into a library and asked the librarian, "Do you have any books on Pavlov's dogs and Schrödinger's cat?"
# The librarian replied, "It rings a bell, but I'm not sure if it's here or not."

使用 LangGraph Studio 进行开发

该代理支持 LangGraph Studio,这是一个用于在 LangGraph 中开发代理的新 IDE。

您只需安装 LangGraph Studio,如上所述将文件添加到根目录,然后启动指向根目录的 LangGraph Studio。根据需要进行自定义。.envlanggraph.json

使用 Ollama

⚠️ ***注意:*agent-service-toolkit 中的 Ollama 支持是实验性的,可能无法按预期工作。以下说明已在 MacBook Pro 上使用 Docker Desktop 进行了测试。请为您遇到的任何挑战提交问题。

您还可以使用 Ollama 运行为代理服务提供支持的 LLM。

  1. 按照 https://github.com/ollama/ollama 中的说明安装 Ollama
  2. 安装您要使用的任何模型,例如 并将环境变量设置为您要使用的模型,例如ollama pull llama3.2OLLAMA_MODELOLLAMA_MODEL=llama3.2

如果您在本地运行服务(例如 ),您应该已全部设置完毕!python src/run_service.py

如果您在 Docker 中运行该服务,您还需要:

  1. 按照此处的说明配置 Ollama 服务器,例如在 MacOS 上运行并重新启动 Ollama。launchctl setenv OLLAMA_HOST "0.0.0.0"
  2. 将环境变量设置为 Ollama 服务器的基 URL,例如OLLAMA_BASE_URLOLLAMA_BASE_URL=http://host.docker.internal:11434
  3. 或者,您可以在 Docker 中运行镜像并使用类似的配置(但在某些情况下可能会更慢)。ollama/ollama

不使用 Docker 的本地开发

您还可以在没有 Docker 的情况下在本地运行代理服务和 Streamlit 应用程序,只需使用 Python 虚拟环境即可。

  1. 创建虚拟环境并安装依赖项:

    pip install uv
    uv sync --frozen
    source .venv/bin/activate
    
  2. 运行 FastAPI 服务器:

    python src/run_service.py
    
  3. 在单独的终端中,运行 Streamlit 应用程序:

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


更多...


wdoc
一个功能强大的 RAG(检索增强生成)系统,旨在汇总、搜索和查询各种文件类型的文档。
ai-financial-agent
探索人工智能在投资研究中的应用。
Meetily
一个 AI 驱动的会议助手,可捕获实时会议音频、实时转录并生成摘要,同时确保用户隐私。