Gitee AI 现已上线支持函数调用的模型 API,实践应用结合理论学习体验更佳:https://ai.gitee.com/apps/stringify/agent-qwen2.5
目前市面上的众多大语言模型依托庞大参数和深度学习算法,具备了对复杂自然语言的理解和生成能力,已经广泛应用在了智能问答、客户支持和人机交互等领域。
但随着应用越来越广泛和深入,大家会发现大语言模型在获取实时数据和执行动态操作方面存在着明显的瓶颈,今天马建仓就和各位开发者共同探讨大语言模型局限性的破解之道——函数调用(Function Calling)。
并不万能的大模型尽管大语言模型在自然语言处理上展现了优越的生成能力,但训练的数据仅基于既有的静态数据集,这些数据集主要来源于历史文本、文献和网络内容。因此,模型的知识和理解仅限于训练时已有的内容,缺乏对最新信息的实时获取能力。当需要查询诸如当前天气、最新股票价格、交通状况等动态数据时,大模型只能基于已有数据猜测答案,往往无法给出准确的实时信息。
另一方面,由于它无法直接与数据库或其他系统交互,模型在执行多步骤或需要动态调整的任务中也面临局限——它表现出的逻辑、推理,是训练文本的统计规律,而不是真正的逻辑。
函数调用的出现正是为了解决这些限制。
函数调用由 OpenAI 在 2023 年 6 月首次发布(这一概念也被称为tool use),根据官方博客描述,函数调用可以让模型输出一个请求调用函数的消息,其中包含所需调用的函数信息、以及调用函数时所携带的参数信息。
通过为大模型添加函数调用功能,让大模型与真实世界连接,在需要时实时访问外部数据和 API 接口,不仅能够回答更准确,还能够完成操作型任务。例如,智能助手通过函数调用可以查询实时天气、最新新闻或账户余额,甚至能执行「下单购买」这样的操作。
函数调用使得大模型从「回答者」进化为「操作执行者」,极大扩展了其应用场景。
函数是怎么调用的函数调用的流程可以总结为以下几个关键步骤:
1️⃣ **意图识别:**模型分析用户输入内容,识别是否涉及函数调用需求。如下图中用户询问「现在纽约的天气怎么样」时,模型识别出这是一个实时天气查询的请求,需调用天气 API 获取准确数据。
2️⃣ **参数生成:**模型根据用户输入生成调用 API 所需的参数,通常以 JSON 格式呈现,如下图中的get_weather("NYC")。这一步确保了模型生成的参数与 API 接口匹配,使调用顺利进行。
3️⃣ **API执行:**模型将生成的参数传递给 API 接口。API 处理请求并返回相应的数据,例如当前的天气和温度等信息。
4️⃣ **结果加工与反馈:**模型将 API 返回的数据整合到生成的自然语言回复中,最终形成完整、动态的回答。例如用户询问「现在纽约的天气怎么样」时,模型可以回复「纽约现在在下雨,湿度 90%,温度为 57 华氏度」。
通过这样的调用流程,模型不仅实现了实时数据获取能力,还增强了其在多步骤任务中的执行力,具备了处理复杂、多步骤任务的潜力。
函数调用还能怎么玩除了上述案例中的天气查询服务外,函数调用还为其他各类 AI 应用带来了巨大的提升空间,如:
**智能财务助手:**通过函数调用,财务助手能够查询账户余额、查看最近的交易记录,并实现跨账户转账等功能,将传统财务管理和实时数据查询结合。
**电商客服助手:**模型借助函数调用可以连续完成「订单查询」、「物流查询」、「退款处理」等一系列操作,通过多重 API 调用为用户提供一站式服务。
⚙️ **多步骤任务自动化:**例如在项目管理中,模型可以先调用 API 获取项目进度,随后生成项目汇报,最终将结果推送至特定的工作群组中,实现任务的自动化执行。
还需要学点什么尽管函数调用功能拓展了大语言模型的应用范围,但对普通开发者而言,掌握这一技术仍面临一些挑战,如果想要较为轻松地上手函数调用,以下方面的技术是需要开发者掌握的:
️ **API 设计:**函数调用要求开发者使用精确的 JSON 格式定义 API 参数。开发者需将用户输入的意图映射到具体函数调用的参数上,这需要对 API 接口和数据格式有深入理解,而这一过程对缺乏 API 设计经验的开发者来说较为困难。
️ **多步骤任务管理:**在涉及多步骤任务的场景中,开发者需管理上下文和数据的连续性,以确保各步骤的顺利执行。稍有疏漏,可能导致任务链中断或数据丢失,增加了开发的复杂性。
️ **模型调试能力:**由于模型生成的参数由自然语言解析生成,任何不准确的映射可能导致 API 调用失败,调试过程因此变得尤为繁琐。开发者在调试过程中需多次测试模型生成的参数,并在 API、参数传递和返回数据之间来回排查错误,这对缺乏自动化工具的开发者而言是较大的技术障碍。
️ **调用效率调整:**函数调用多次涉及外部 API 和模型生成步骤,容易产生较高延迟。尤其在时间敏感型应用场景中,开发者需要谨慎调控每次调用的效率,以保证用户体验。
Serverless API 再次进化是的,你没猜错,这时就该 Serverless API 登场了。
Serverless API 现已上线了大语言模型Qwen2.5-72B并提供了完整的函数调用支持,简化了普通开发者的使用流程。
无需自建服务器,便能便捷地调用大模型的强大功能并进行参数定义和数据管理,为 Agent 类智能应用的开发带来了极大便利。
通过把更复杂的更占用资源的工作交给 Serverless API,开发者可以更加专注于应用本身。即使没有太多的 AI 开发经验,开发者也可以轻松借助 API 实现一款 Agent 应用的开发,如果你刚好有一个智能应用的idea,不妨来用 Serverless API 试试吧!
Serverless API 还提供了文本生成、语音识别、语音生成、向量与重排模型、代码生成等多种类型下的多个大模型的 API 使用。同时,Gitee AI 也上线了模型资源包,通过极低的价格即可尽享众多主流模型。