Langchain-dev-utils Example Project
该仓库提供了一个示例项目langchain-dev-utils-example,目的是为了帮助开发者快速了解如何利用 langchain-dev-utils 提供的工具函数,高效构建三种典型的智能体(agent)系统:
- 单智能体(Single Agent):适用于执行简单任务以及长期记忆存储相关的任务。
- 监督者-多智能体架构(Supervisor-Multi-Agent Architecture):通过一个中央监督者协调多个专业化智能体,适用于需要任务分解、规划和迭代优化的复杂场景。
- 交接架构(Handoffs Architecture):每个智能体负责特定任务,并在需要时将控制权转移给其他智能体。
快速开始
- 克隆本仓库:
- 使用 uv 安装依赖:
- 创建.env文件
-
编辑
.env文件,填入你的 API 密钥(需要ZhipuAI和Tavily的 API 密钥)。 -
启动项目
使用的功能
单智能体(Simple Agent):
使用的本库的功能:
- 对话模型管理(含OpenAI兼容API集成):
register_model_provider、load_chat_model - 嵌入模型管理:
register_embeddings_provider、load_embeddings - 格式化序列:
format_sequence - 中间件:
format_prompt
监督者-多智能体架构(Supervisor-Multi-Agent Architecture):
使用的本库的功能:
- 对话模型管理(含OpenAI兼容API集成):
register_model_provider、load_chat_model - 多智能体构建:
wrap_all_agents_as_tool
交接架构(Handoffs Architecture):
使用的本库的功能:
- 对话模型管理(含OpenAI兼容API集成):
register_model_provider、load_chat_model - 中间件:
HandoffAgentMiddleware
如何自定义
可以根据实际的需求,对本项目进行自定义修改。
1. 替换对话模型提供商
本项目默认使用智谱AI的GLM系列作为核心模型,具体如下:
GLM-5:用于simple-agent,supervisor-agent的主智能体,以及handoffs架构的智能体GLM-4.7-Flash:用于supervisor-agent的search subagentGLM-4.6V:用于supervisor-agent的vision 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。是该架构下的所有智能体的工具实现,如需为某个特定智能体添加自定义工具,直接在该文件内新增对应的工具实现即可。