news 2026/4/18 15:34:16

AI中的函数调用是什么?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
AI中的函数调用是什么?

在现代大模型(比如 ChatGPT)里说的「函数调用」(Function Calling),一般不是指传统编程里的func(),而是指:

让大模型根据自然语言,自动选择并调用你提供的“工具/接口/函数”,再把调用结果融入回答的机制。

也就是说:
用户用中文/英文说一句话 → 模型“看懂需求” → 产出一个要调用哪个函数、传什么参数的结构化结果 → 系统去执行这个函数 → 把执行结果再喂回模型,让它生成最终回答。


核心流程(逻辑图)

  1. 你定义函数(工具)
    • 告诉模型:我有这些工具可以用,每个工具:
      • 名字:比如getWeather
      • 功能描述:比如“根据城市和日期查询天气”
      • 参数结构:比如{"city": "string", "date": "string"}
  2. 用户发自然语言请求
    • 例:“帮我查一下明天上海的天气”
  3. 模型决定是否调用函数
    • 模型会输出一个结构化内容(通常是 JSON),比如:
{"name":"getWeather","arguments":{"city":"上海","date":"2025-12-11"}}

这一步相当于模型在“写代码调用你的接口”,但它只生成“要调用什么 + 参数是什么”,不自己真去访问网络或数据库。
4.你的后端真实执行这个函数
调用你写好的getWeather(city, date)函数 / HTTP 接口 / 数据库查询, 拿到真实结果,比如:

{"city":"上海","date":"2025-12-11","weather":"多云","temp":"8~13℃"}
  1. 把函数结果再给模型,让它组织回答
    • 把这个结果当作“工具返回内容”塞回给模型:
    • 模型基于这个结果,生成面向用户的自然语言答案:

“明天上海多云,气温 8–13℃,建议带件外套。”


为什么要用函数调用?

  • 接入你的业务能力
    大模型本身不能访问你公司数据库、内部 API、设备等,通过函数调用就可以让它“间接”访问。
  • 结构化输出
    比起让模型“随便写一大段文本”,函数调用让它输出严格符合你定义的 JSON 结构,易于程序处理。
  • 更安全可控
    你只暴露有限的工具,模型只能在这些工具范围内调用,避免乱访问不该访问的东西。
  • 让模型具备“行动能力”
    不只是聊天,还能:
    • 查天气、查订单、改数据库、调用机器人、发邮件、执行脚本等。

和传统“让模型直接写文本 API 请求”有啥区别?

  • 传统做法
    让模型直接生成一段 HTTP 请求 / SQL / shell 命令文本,然后你再解析。这会有:
    • 容易语法错误
    • 字段名不精确
    • 安全风险大(比如注入问题)
  • 函数调用
    模型只负责填“结构化参数”,不能随便乱写底层实现,
    你可以严格校验 JSON、限制参数范围,安全性和鲁棒性都更好。

典型使用场景举例

  • 问答 + 数据库检索
    用户:“查一下我 2024 年 10 月的全部订单”
    模型 → 生成对queryOrders(userId, month)的调用参数
    你后端查完订单 → 返回结果 → 模型总结给用户看。
  • 多工具组合
    1. 模型先调用extractCitiesFromText分析用户输入涉及哪些城市
    2. 再对每个城市调用getWeather
    3. 然后整合成一句话给用户。
  • 插件/Agent 系统
    大模型通过函数调用去使用:搜索引擎、地图、支付、日历、邮件、企业内部系统等。

1. 你问我需要“最新、实时、可验证”的信息 → 会用 Web 搜索工具

例如:

  • “帮我查一下昨天 OpenAI 发布了什么”
  • “现在苹果股票多少”
  • “今天纽约天气如何”
  • “最近 GPT 有什么新闻”

这些属于时效性强、必须查外部数据的问题,所以我会调用系统内置的web.run来搜索。


2. 你让我生成或编辑图片 → 会调用 Image Generation 工具

例如:

  • “帮我生成一张 3D UI 风格插画”
  • “把我上传的图片背景改成白色”
  • “做一个像素风的猫咪头像”

这些情况会直接触发image_gen工具。


3. 你让我处理文件、生成文件、运行 Python → 会调用 Python 工具

例如:

  • “帮我把这张表格统计一下”
  • “生成一个带目录的 PDF”
  • “帮我可视化这个 CSV”
  • “处理我上传的 Excel 数据”

这些会触发python_user_visible,用来运行 Python、生成文件或可视化。


4. 你想创建或修改一份文档 / 长代码 → 会自动使用 Canvas 工具

例如:

  • “帮我写一篇博客文章草稿”
  • “帮我生成一个 Next.js 组件文件”
  • “这段代码帮我重构一下”
  • “写一篇报告(可继续修改的那种)”

这会触发canmore来管理文档。


❗️ 注意:这些都属于“内置工具调用”

不是你在 API 里自定义的 JSON function calling。
是 ChatGPT 系统自动调用的工具。


❓ 那哪些情况不会调用工具?

只要问题不需要外部数据、不需要处理文件、不需要生成图片、不需要长文档,我就不会自动使用工具。

例如:

  • “解释一下 RAG 是什么”
  • “React useEffect 为什么会重复执行”
  • “帮我写一段正则”
  • “翻译下面这段话”
  • “改写句子”

这些纯文本处理任务,直接在模型内部完成即可。

你问的问题类型是否触发工具工具
需要实时信息✔️Web Search
图片生成/编辑✔️image_gen
文件处理 / Python 计算✔️python_user_visible
文档/大段代码管理✔️canmore
纯文本思考/解释/翻译不调用工具
我无法确定你的需求直接回答

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/17 12:14:29

beijing面试

mybatis和mybatis plus的区别 spring 常用的注解 spring mvc 和 spring boot常用的注解 mysql的索引有哪些 Java中的集合有哪些 hashset 和 list的区别

作者头像 李华
网站建设 2026/4/18 5:22:47

复旦大学推出首个多轮视频对话评测基准,AI视频理解能力大起底

这项由复旦大学、南京大学、快手科技等多所机构联合完成的研究发表于2025年10月,研究成果已投稿至计算机视觉顶级学术期刊。有兴趣深入了解的读者可以通过论文编号arXiv:2510.17722查询完整论文。这项研究的核心贡献是构建了全球首个专门评估AI模型在多轮视频对话中…

作者头像 李华
网站建设 2026/4/17 9:50:53

MIT和魏茨曼研究所首次用AI大规模解密视觉皮层的秘密语言

这项由魏茨曼科学研究所的纳夫瓦瑟曼(Navve Wasserman)、马蒂亚斯科萨林斯基(Matias Cosarinsky)、尤瓦尔戈尔巴里(Yuval Golbari)和米哈尔伊拉尼(Michal Irani),以及麻省理工学院的奥德奥利瓦(Aude Oliva)、安东尼奥托拉尔巴(Antonio Torralba)和塔马尔罗特沙哈姆(…

作者头像 李华
网站建设 2026/4/18 5:24:22

基于zigbee的广告牌安全监测系统设计与实现(论文+源码)

1 系统总体设计本次基于Zigbee的广告牌安全监测系统,使用Zigbee组网,一共具有2块板子,其中1块作为协调器,另1块作为终端。首先由协调器构建Zigbee网络,终端连上协调器网络后,每隔1秒钟采集一次传感器数据并…

作者头像 李华
网站建设 2026/4/18 6:21:22

UDP广播接收小优化

Linux 系统排查与优化查看当前缓冲区大小(默认通常很小,如 212992 字节):bash运行sysctl net.core.rmem_default # 默认接收缓冲区 sysctl net.core.rmem_max # 最大接收缓冲区临时调高缓冲区(立即生效&#xff…

作者头像 李华
网站建设 2026/4/18 7:03:00

多肽药物开发:兼具双重优势的医药研发热门领域

多肽药物凭借兼具小分子药物的高活性与蛋白质药物的高特异性的核心优势,成为医药行业快速发展的热门研发方向,其研发进程受市场前景、设计因素、研究策略及行业挑战等多重因素共同推动。一、广阔的市场前景多肽药物的市场认可度持续攀升,截至…

作者头像 李华