【AutoGen: Model clients use the JSON schema of the tools to generate tool calls.】
AutoGen 和 Function Calling(工具调用)里最容易迷糊的点。
Model clients use the JSON schema of the tools to generate tool calls.
✅ 一句话解释那句“不是太理解”的地方:
AutoGen 会把你写的函数,用 JSON 的形式告诉 GPT,让 GPT 来决定“要不要调用这个函数”,以及“用什么参数调用”。
我们通过一个超简单的例子一步步来说明。
📌 第一步:你写一个 Python 函数
def add(a: int, b: int) -> int:
return a + b
📌 第二步:把它注册成 AutoGen 的工具
from autogen_core.tools import FunctionTool
tool = FunctionTool.from_function(add)
👉 这一步内部会自动生成一个 JSON schema,大致长这样:
{
"name": "add",
"description": "add(a, b)",
"parameters": {
"type": "object",
"properties": {
"a": {"type": "integer"},
"b": {"type": "integer"}
},
"required": ["a", "b"]
}
}
这个 JSON schema 是专门给 GPT-4 或 DeepSeek 看的:
你可以调用一个函数叫
add,它有两个参数a和b,都是整数。
📌 第三步:传给大模型客户端
from autogen_ext.models.openai import OpenAIChatCompletionClient
model = OpenAIChatCompletionClient(
model="gpt-4",
tools=[tool], # 💡 把函数作为工具告诉模型
)
📌 第四步:用户发消息
messages = [
{"role": "user", "content": "请帮我算一下 7 + 5 是多少?"}
]
response = model.chat_completion(messages)
✅ 发生了什么?
GPT-4 会分析你说的话:“请帮我算一下 7 + 5 是多少?”
由于它被允许使用 add(a, b) 这个工具,它就会构造一个这样的 tool call:
{
"tool_call": {
"name": "add",
"arguments": {
"a": 7,
"b": 5
}
}
}
👉 然后 AutoGen 自动执行你本地的 add 函数 → add(7, 5) → 得到 12
把这个结果再发给模型:“调用结果是 12”,模型再输出:“答案是 12”。
🧠 所以总结下来:
| 角色 | 工作 |
|---|---|
| 你 | 提供 Python 函数 |
| AutoGen | 转成 JSON schema,告诉 GPT 有这个工具 |
| GPT | 根据用户问题,构造工具调用请求 |
| AutoGen | 自动调用函数并返回结果 |
| GPT | 再继续生成自然语言回应 |
✅ 最终效果(一问一答):
用户: 你能帮我算一下 23 + 58 吗?
Agent: 调用了函数 add(23, 58) → 得到 81
最终回复: 当然可以,答案是 81!

浙公网安备 33010602011771号