从0到1打造专属智能助手:Langchain-Chatchat自定义Agent开发指南

【免费下载链接】Langchain-Chatchat Langchain-Chatchat(原Langchain-ChatGLM)基于 Langchain 与 ChatGLM 等语言模型的本地知识库问答 | Langchain-Chatchat (formerly langchain-ChatGLM), local knowledge based LLM (like ChatGLM) QA app with langchain 【免费下载链接】Langchain-Chatchat 项目地址: https://gitcode.com/GitHub_Trending/la/Langchain-Chatchat

你是否还在为通用AI无法解决专业领域问题而烦恼?是否希望构建一个能调用工具、连接知识库的专属智能助手?本文将带你一步步实现Langchain-Chatchat框架下自定义Agent的开发,让AI真正为你所用。读完本文,你将掌握工具注册、提示词优化、执行逻辑定制的全流程技能。

Agent开发基础架构

Langchain-Chatchat的Agent系统采用模块化设计,核心代码位于agent模块。该架构主要包含三大组件:Agent Factory负责管理不同类型的智能体模型,Tool Factory存储各类功能工具,而自定义提示词模板则控制着Agent的决策流程。

Agent执行流程

目前框架已支持GLM-3/4和Qwen-2等系列模型的Agent能力,工具库涵盖从互联网搜索到数据库查询的20+实用功能。这种设计允许开发者在不修改核心代码的情况下,通过"插件式"开发扩展新能力。

工具注册实战指南

基础工具开发模板

创建自定义工具需遵循固定模板,所有工具代码建议放在工具注册目录中。以下是数学计算器工具的实现示例:

@regist_tool(title="数学计算器")
def calculate(text: str = Field(description="a math expression")) -> float:
    """
    Useful to answer questions about simple calculations.
    translate user question to a math expression that can be evaluated by numexpr.
    """
    import numexpr
    try:
        ret = str(numexpr.evaluate(text))
    except Exception as e:
        ret = f"wrong: {e}"
    return BaseToolOutput(ret)

这段代码通过@regist_tool装饰器完成工具注册,使用Pydantic的Field定义输入参数,最终返回封装在BaseToolOutput中的结果。

集成LangChain生态工具

对于已有LangChain实现的工具,可直接集成到框架中。系统命令工具就是典型案例:

from langchain_community.tools import ShellTool
from chatchat.server.pydantic_v1 import Field
from .tools_registry import BaseToolOutput, regist_tool

@regist_tool(title="系统命令")
def shell(query: str = Field(description="The command to execute")):
    """Use Shell to execute system shell commands"""
    tool = ShellTool()
    return BaseToolOutput(tool.run(tool_input=query))

这种方式让开发者能够复用LangChain丰富的工具生态,快速扩展Agent能力边界。官方文档agent.md提供了更多工具开发示例。

提示词工程与工具调用优化

工具调用触发策略

要让Agent准确调用工具,需要在提示词中明确使用场景。例如针对互联网搜索工具:

使用这个工具是因为用户需要在联网进行搜索。这些问题通常是你不知道的,这些问题具有特点,例如:"联网帮我查询xxx"或"我想知道最新的新闻"

工具调用流程

自定义系统提示词模板

对于不兼容默认模板的模型,可在prompt_settings.yaml中自定义提示词。GLM-3模型的提示词模板示例:

You can answer using the tools.Respond to the human as helpfully and accurately as possible.\nYou have access to the following tools:\n{tools}\nUse a json blob to specify a tool by providing an action key (tool name)\nand an action_input key (tool input).

这个模板明确要求模型使用JSON格式指定工具名称和输入参数,确保Agent能正确解析工具调用请求。

高级定制:Agent执行逻辑适配

当模型返回格式与标准不符时,需定制执行逻辑。以GLM系列模型为例,其特有的函数调用格式要求开发者实现专用的解析器。这部分工作涉及agent模块中的核心代码修改,建议参考现有模型的实现方式进行适配。

框架提供的langchain_chatchat_webui.png展示了Agent在Web界面中的工作状态,通过观察工具调用记录,可以帮助开发者调试自定义Agent的执行流程。

开发资源与学习路径

通过本文介绍的方法,你可以构建从简单工具调用到复杂工作流的各类Agent。无论是企业知识库问答,还是自动化数据分析,自定义Agent都能让AI系统更贴合实际业务需求。现在就动手开发你的第一个工具,开启智能助手定制之旅吧!

提示:开发完成后,可通过全局配置调整Agent的响应策略,进一步优化用户体验。

【免费下载链接】Langchain-Chatchat Langchain-Chatchat(原Langchain-ChatGLM)基于 Langchain 与 ChatGLM 等语言模型的本地知识库问答 | Langchain-Chatchat (formerly langchain-ChatGLM), local knowledge based LLM (like ChatGLM) QA app with langchain 【免费下载链接】Langchain-Chatchat 项目地址: https://gitcode.com/GitHub_Trending/la/Langchain-Chatchat

更多推荐