跳转至

Langchain-dev-utils Example Project

该仓库提供了一个示例项目langchain-dev-utils-example,目的是为了帮助开发者快速了解如何利用 langchain-dev-utils 提供的工具函数,高效构建三种典型的智能体(agent)系统:

  • 单智能体(Single Agent):适用于执行简单任务以及长期记忆存储相关的任务。
  • 监督者-多智能体架构(Supervisor-Multi-Agent Architecture):通过一个中央监督者协调多个专业化智能体,适用于需要任务分解、规划和迭代优化的复杂场景。
  • 交接架构(Handoffs Architecture):每个智能体负责特定任务,并在需要时将控制权转移给其他智能体。

graph

快速开始

  1. 克隆本仓库:
    git clone https://github.com/TBice123123/langchain-dev-utils-example.git  
    cd langchain-dev-utils-example
    
  2. 使用 uv 安装依赖:
    uv sync
    
  3. 创建.env文件
    cp .env.example .env
    
  4. 编辑 .env 文件,填入你的 API 密钥(需要 ZhipuAITavily 的 API 密钥)。

  5. 启动项目

    langgraph dev
    

使用的功能

单智能体(Simple Agent)

使用的本库的功能:

  • 对话模型管理(含OpenAI兼容API集成):register_model_providerload_chat_model
  • 嵌入模型管理:register_embeddings_providerload_embeddings
  • 格式化序列:format_sequence
  • 中间件:format_prompt

监督者-多智能体架构(Supervisor-Multi-Agent Architecture)

使用的本库的功能:

  • 对话模型管理(含OpenAI兼容API集成):register_model_providerload_chat_model
  • 多智能体构建:wrap_all_agents_as_tool

交接架构(Handoffs Architecture)

使用的本库的功能:

  • 对话模型管理(含OpenAI兼容API集成):register_model_providerload_chat_model
  • 中间件:HandoffAgentMiddleware

如何自定义

可以根据实际的需求,对本项目进行自定义修改。

1. 替换对话模型提供商

本项目默认使用智谱AI的GLM系列作为核心模型,具体如下:

  • GLM-5:用于simple-agent,supervisor-agent的主智能体,以及handoffs架构的智能体
  • GLM-4.7-Flash:用于supervisor-agentsearch subagent
  • GLM-4.6V:用于supervisor-agentvision subagent

如需自定义模型提供商,请修改src/utils/providers/chat_models/register.py,在register_all_model_providers函数中使用register_model_provider函数注册你的模型提供商。

同时建议修改src/utils/providers/chat_models/load.py,在load_chat_model函数中添加对应的加载逻辑。

对话模型管理最佳实践

load_chat_model函数采用关键字参数接收不同对话模型类的额外参数(LangChain官方函数也采用此方式)。这种方式提升了通用性,但会削弱IDE类型提示,增加参数误用风险。因此,若已确定具体提供商,可针对其集成对话模型类(或嵌入模型类)扩展参数签名以恢复类型提示,参考src/utils/providers/chat_models/load.py进行针对性修改。

2. 注册嵌入模型提供商

嵌入模型提供商的注册方式与对话模型类似。请修改src/utils/providers/embeddings/register.py,在register_all_embeddings_providers函数中使用register_embeddings_provider函数注册你的嵌入模型提供商。

如需自定义加载逻辑,可修改src/utils/providers/embeddings/load.py,在load_embeddings函数中添加相应的加载逻辑。

3. 自定义工具

单智能体(simple-agent)
工具实现位于 src/agents/simple_agent/tools.py,已内置:
- save_user_memory —— 持久化用户记忆
- get_user_memory —— 读取用户记忆

如需扩展,直接在该文件内新增对应的工具实现即可。

监督者-多智能体(supervisor-agent)
工具实现位于 src/agents/supervisor/subagent/tools.py。是子智能体的工具实现,如需为子智能体添加自定义工具,直接在该文件内新增对应的工具实现即可。

注意:supervisor 默认仅持有“调用子智能体”的task工具。若需为 supervisor 追加自定义工具,建议在 src/agents/supervisor/ 下新建 tools.py,编写完成后在 src/agents/supervisor/agent.py 中导入并传递给 create_agent 函数即可。

交接架构(handoffs)
工具实现位于 src/agents/handoffs/tools.py。是该架构下的所有智能体的工具实现,如需为某个特定智能体添加自定义工具,直接在该文件内新增对应的工具实现即可。