📚 实战教程

Function Calling 实战:让 AI Agent 调用工具

把工具声明、参数校验、执行权限和结果回传拆成可审查的步骤。

一、基本模型

安全的 Function Calling 循环包含四步:声明工具、读取工具调用、校验参数并执行、回传结构化结果。模型只提出调用建议,真正权限由应用控制。

二、定义窄接口

from typing import Any

def add_numbers(a: int, b: int) -> dict[str, Any]:
    if not isinstance(a, int) or not isinstance(b, int):
        raise TypeError("a and b must be integers")
    return {"result": a + b}

TOOLS = {"add_numbers": add_numbers}

生产代码还应限制参数范围、设置超时、记录调用 ID,并对异常返回稳定结构。

三、不要执行任意代码

不要把 eval、任意 shell 或任意 URL 请求直接暴露为工具。应拆成窄接口,并在服务端再次校验路径、参数和权限。

四、限制调用循环

MAX_TOOL_CALLS = 5
for _ in range(MAX_TOOL_CALLS):
    response = call_model(messages, tools=tool_schemas)
    if not response.tool_calls:
        break
    # 校验工具名、参数、权限和超时后再执行

五、上线检查

六、验收标准

四类测试都得到可预测结果后,才适合继续接入 RAG、MCP 或多 Agent 编排。