LangChain 中文课
返回体系图 文章库
第 02 课,共 7 课:模型与工具

第 02 课,共 7 课

看懂模型和工具

理解统一模型接口和工具定义规则,让 Agent 正确调用带参数的业务函数。

入门 20 分钟 Python
完成本课后

你应该能做到

  • 分清聊天模型和 Agent
  • 用类型标注定义工具参数
  • 知道工具说明为什么会影响调用结果
01

模型不是 Agent

聊天模型接收消息并生成消息。Agent 在模型外增加工具循环,让模型可以选择工具、读取工具结果,再继续推理。

LangChain 的统一模型接口让上层 Agent 不依赖某一个提供商。更换模型时,工具和业务流程通常不需要重写。

  • 模型回答问题
  • 工具执行确定性的代码
  • Agent 决定何时调用哪个工具
02

定义一个有真实参数的工具

官方 Tools 文档强调,函数名、docstring、参数名和类型都会进入模型看到的工具描述。含糊的说明会直接导致错误调用。

下面的工具计算订单总价。模型必须从用户输入中提取 price 和 quantity。

order_agent.py
from langchain.agents import create_agent
from langchain_deepseek import ChatDeepSeek


def calculate_total(price: float, quantity: int) -> float:
    """计算订单总价。

    Args:
        price: 单件商品价格,单位为元。
        quantity: 购买数量,必须是整数。
    """
    return round(price * quantity, 2)


agent = create_agent(
    model=ChatDeepSeek(model="deepseek-chat", temperature=0),
    tools=[calculate_total],
    system_prompt="你是订单助手。涉及总价时必须调用计算工具。",
)

result = agent.invoke(
    {"messages": [{"role": "user", "content": "单价 19.9 元,买 3 件,一共多少钱?"}]}
)
print(result["messages"][-1].content)
03

什么时候只用模型

解释概念、改写文本或总结已有内容时,模型通常可以直接回答。涉及价格、数据库、文件、网络请求或任何需要真实数据的任务时,应该使用工具。

不要让模型猜测可以由代码确定的结果。工具调用的价值是把自然语言决策和确定性执行分开。

不要凭感觉结束

本课完成标准

  • 工具参数同时包含 float 和 int 类型
  • 最终总价为 59.7 元
  • 修改数量后结果会同步变化
遇到问题先看这里

常见错误

工具收到字符串而不是数字

检查参数类型标注是否完整,并在 docstring 中解释单位和限制。

模型自己口算

在 system_prompt 中明确规定涉及总价必须调用工具。

内容来源

依据官方文档中文整理

代码和概念来自 LangChain 官方固定提交。中文解释用于降低学习门槛,英文原文只作为核对入口。

固定提交 08ae2610bd712a4a340d59f27122bea97a0a598d