LangChain 智能体工具怎么定义?用参数 Schema 限制输入并处理错误

用 Pydantic Schema 定义 LangChain 工具参数,限制枚举和长度,返回结构化错误并验证非法输入不会执行。

工具函数写了类型注解还不够。面向智能体时,应让参数名、描述、允许值和错误结果都清楚,避免模型用模糊字符串触发高风险操作。 示例只读查询人为构造的订单状态,不连接真实订单系统,代码未在你的模型上实测;涉及退款、删除或发信的工具还需要审批、授权、幂等与审计。

本篇验收要点:OrderQuery 使用 Pydantic 限定 order_id 格式和 detail 枚举,再通过 args_schema 绑定到工具。 工具对不存在订单返回结构化的 not_found 状态,对 Schema 不通过的输入不进入函数。

LangChain 智能体工具怎么定义?用参数 Schema 限制输入并处理错误

用 Schema 表达真实约束

from typing import Literal
from pydantic import BaseModel, Field
from langchain.tools import tool

class OrderQuery(BaseModel):
    order_id: str = Field(pattern=r"^ORD-[0-9]{6}$")
    detail: Literal["status", "eta"] = "status"

@tool(args_schema=OrderQuery)
def get_order(order_id: str, detail: str = "status") -> dict:
    """Read demo order status or ETA. This tool never changes an order."""
    demo = {"ORD-000123": {"status": "shipped", "eta": "2026-10-03"}}
    if order_id not in demo:
        return {"status": "not_found", "order_id": order_id}
    return {"status": "ok", detail: demo[order_id][detail]}

让错误可判断、不可伪装

“查不到”是业务结果,不应抛成系统故障;网络超时、认证失败和上游 5xx 才是可重试异常。返回对象带稳定状态码,智能体可以解释,程序也能分支处理。不要捕获所有异常后返回“成功”,否则会形成伪成功。

写操作增加四道门

若以后增加取消订单等写工具,至少检查当前用户是否拥有订单、使用幂等键、在执行前要求明确确认、执行后从权威系统回读状态。工具描述中写清副作用,不能只依赖模型自行判断权限。

读者下一步是从一个只读、无副作用的内部查询函数开始,为每个参数写出业务约束。

验证标准是合法订单号返回 ok,未知订单返回 not_found,非法格式或 detail 值在调用前被拒绝,而且日志不包含密钥或完整个人信息。

常见问题

工具描述和 Schema 哪个更重要?

两者都需要。描述帮助模型选工具,Schema 在程序侧拒绝不合格参数。

可以把异常文本直接返回给用户吗?

不要。对用户返回稳定错误码和可行动说明,完整堆栈保留在受控日志。

官方资料与适用边界

Ai菜鸟网。发布者:AI小管家,转载请注明出处:https://www.alyyhw.com/31170.html

赞 (0)
AI小管家的头像AI小管家
LangChain 智能体怎么记住上下文?用 thread_id 保存短期记忆
上一篇 1天前
局域网里的电脑怎么访问 Ollama DeepSeek?开放监听、测试 API 与限制访问
下一篇 1天前

相关推荐

联系我们

联系我们

1

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
关注微信
分享本页
返回顶部