<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Function Calling on FXIO 技术博客</title><link>https://fxio.site/tags/function-calling/</link><description>Recent content in Function Calling on FXIO 技术博客</description><generator>Hugo -- 0.157.0</generator><language>zh-cn</language><lastBuildDate>Mon, 23 Mar 2026 01:36:35 +0800</lastBuildDate><atom:link href="https://fxio.site/tags/function-calling/index.xml" rel="self" type="application/rss+xml"/><item><title>Function Calling 函数调用</title><link>https://fxio.site/posts/ai/function-calling/</link><pubDate>Mon, 23 Mar 2026 01:36:35 +0800</pubDate><guid>https://fxio.site/posts/ai/function-calling/</guid><description>&lt;p&gt;&lt;strong&gt;Function Calling&lt;/strong&gt;（函数调用）是人工智能领域，特别是大语言模型（LLM）应用中的一项关键技术。它允许 AI 模型不仅生成文本，还能&lt;strong&gt;主动选择并执行外部定义的函数或工具&lt;/strong&gt;，以解决超出其内部知识库的问题，或完成需要精确计算、实时数据查询等任务。&lt;/p&gt;
&lt;p&gt;简单来说，就是让 AI 学会“调用代码”来干活，而不仅仅是“说话”。&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="1-核心概念ai-如何调用函数"&gt;1. 核心概念：AI 如何调用函数？&lt;/h3&gt;
&lt;p&gt;在传统的 LLM 交互中，用户输入提示词（Prompt），模型直接生成文本回答。而在 &lt;strong&gt;Function Calling&lt;/strong&gt; 模式下，流程发生了变化：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;定义工具&lt;/strong&gt;：开发者预先定义一组函数（Function Schema），描述这些函数的名称、参数类型、参数含义以及返回值。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;模型决策&lt;/strong&gt;：当用户提问时，模型会根据意图判断：是否需要调用某个函数？如果需要，它会自动生成一个包含函数名称和参数值的结构化请求（通常是 JSON 格式）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;执行与反馈&lt;/strong&gt;：用户的后端服务器接收到这个请求，执行真实的函数逻辑，获取结果。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;模型生成回答&lt;/strong&gt;：系统将执行结果（如天气数据、搜索结果、数据库记录）传回给模型，模型结合原始问题和执行结果，生成最终的自然语言回答。&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="2-为什么需要-function-calling"&gt;2. 为什么需要 Function Calling？&lt;/h3&gt;
&lt;p&gt;大模型本身存在一些局限性，通过函数调用可以弥补：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;时效性问题&lt;/strong&gt;：LLM 的训练数据有截止时间，无法知道“现在的天气”或“今天的股价”。通过调用 API，模型可以获取实时数据。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;精确计算与逻辑&lt;/strong&gt;：LLM 在处理复杂数学运算或精确代码执行时容易出错（幻觉）。调用 Python 解释器或计算器函数可以得到 100% 准确的结果。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;访问私有数据&lt;/strong&gt;：企业的数据在内部数据库中，模型无法直接读取。通过调用内部 API，模型可以查询订单状态或用户信息。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;控制输出格式&lt;/strong&gt;：让模型生成结构化的 JSON 数据，而不是长篇大论的文本，便于程序后续处理。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="3-工作流程示例"&gt;3. 工作流程示例&lt;/h3&gt;
&lt;p&gt;假设你正在开发一个&lt;strong&gt;智能天气助手&lt;/strong&gt;：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;开发者定义函数&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;函数名：&lt;code&gt;get_current_weather&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;参数：&lt;code&gt;location&lt;/code&gt; (string), &lt;code&gt;unit&lt;/code&gt; (string: &amp;ldquo;celsius&amp;rdquo; or &amp;ldquo;fahrenheit&amp;rdquo;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;用户提问&lt;/strong&gt;：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“上海现在的气温是多少？用摄氏度表示。”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;模型推理与调用&lt;/strong&gt;：
模型识别到需要查询天气，于是输出如下结构（JSON）：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;name&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;get_current_weather&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;arguments&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;location&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;上海&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;unit&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;celsius&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;后端执行&lt;/strong&gt;：
你的代码解析出 JSON，调用真实的天气 API，得到结果：&lt;code&gt;{&amp;quot;temp&amp;quot;: 24, &amp;quot;status&amp;quot;: &amp;quot;sunny&amp;quot;}&lt;/code&gt;。&lt;/p&gt;</description></item></channel></rss>