GEO

函数调用

函数调用(也称为工具使用)是让 LLM 分析用户请求并以结构化 JSON 格式调用外部函数或 API 的能力。OpenAI 于 2023 年 6 月推出了官方支持;自那以后,Claude、Gemini 和 Llama 都将其作为标准功能提供,它也成为了 AI 智能体实现的基本单元。

函数调用(也称为工具使用)是让 LLM 分析用户请求并以结构化 JSON 格式调用外部函数或 API 的能力。OpenAI 于 2023 年 6 月推出了官方支持;自那以后,Claude、Gemini 和 Llama 都将其作为标准功能提供,它也成为了 AI 智能体实现的基本单元。

为什么重要

LLM 本质上是文本生成器。如果没有函数调用,询问“首尔现在的天气怎么样?”只能调用训练时学到的知识。有了函数调用,模型会以 JSON 形式输出 get_weather(location: "Seoul"),宿主应用运行实际的 API,结果再回流到模型中生成最终答案。这个简单的机制是 AI 智能体、AI 搜索以及整个 MCP 生态系统的基础。

工作原理

  1. 工具定义:应用向 LLM 传入一份可用函数列表,包含名称、描述和参数结构。
  2. 用户请求:用户输入一个自然语言问题。
  3. 调用决策:LLM 决定调用哪个函数,并以 JSON 形式生成参数。
  4. 实际执行:宿主应用解析 JSON 并运行真实的函数。模型本身并不执行代码。
  5. 注入结果:函数输出被反馈回 LLM 的上下文中。
  6. 最终响应:LLM 基于结果生成一段自然语言答案。

示例

工具定义

{
  "name": "search_blog_posts",
  "description": "Search blog posts by keyword",
  "parameters": {
    "type": "object",
    "properties": {
      "keyword": { "type": "string", "description": "search keyword" },
      "limit": { "type": "integer", "default": 5 }
    },
    "required": ["keyword"]
  }
}

用户:“帮我找 3 篇关于 GEO 的文章”

模型响应

{
  "tool_call": "search_blog_posts",
  "arguments": { "keyword": "GEO", "limit": 3 }
}

应用运行工具后[{title: "...", url: "..."}, ...]

最终响应:“我找到了 3 篇关于 GEO 的文章……”

函数调用 vs MCP vs ReAct

维度函数调用MCPReAct
层级API 调用协议标准化的工具连接协议提示词模式
作用模型输出 JSON 来调用工具在不同宿主/服务器之间共享工具逐步推理 + 行动循环
关系MCP 的基础在各应用间标准化函数调用在循环中使用函数调用

函数调用是一次工具调用;MCP 是多个应用共享同一工具的方式;ReAct 是一种把调用与推理放在循环中的模式。

局限与注意事项

幻觉风险:模型可能会捏造不存在的函数或生成错误的参数。严格的结构校验是必须的。

并行调用:前沿模型(GPT-4o、Claude Opus 4.6)可以并行调用多个函数。这也带来了依赖管理的问题。

成本:每次调用都会扩展上下文并提高 token 开销。缩小暴露的工具范围可以同时改善性能和成本。

安全性:与提示注入结合时,函数调用可能放大危害。对于支付或删除等高风险操作,应要求用户确认。

对 GEO 的影响

当 AI 搜索从博客中提取信息时,它会在内部调用诸如 fetch_web_contentsearch_knowledgecite_source 之类的函数。提供干净 HTML 和结构化数据的博客能够提升这些调用的质量,并提高被引用的概率。换句话说,“一个便于函数读取的博客”就是对 GEO 友好的博客。

Sources: