【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,它有两个参数 ab,都是整数。


📌 第三步:传给大模型客户端

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!

posted @ 2025-05-25 23:22  十三山入秋  阅读(66)  评论(0)    收藏  举报