【AI大模型】Prompt格式到底有多重要?它竟然这样影响LLM函数调用能力(附提示词模版)
函数调用能力的关键地位在当前大语言模型LLM的应用生态中函数调用能力Function Calling已经成为一项不可或缺的核心能力。它使LLM能够通过调用外部API获取实时信息、操作第三方服务从而将模型的语言理解能力转化为实际的行动能力。从电子设计自动化到金融报告生成从旅行规划到智能家居控制函数调用正在将LLM的应用版图快速扩展到各个领域。然而如何让LLM更准确地理解和使用函数接口一直是困扰研究者和工程师的关键问题。MediaTek Research的研究团队最近在这一领域取得了重要突破他们从提示格式优化、数据集成策略到多语言支持等多个维度系统性地提升了LLM的函数调用能力。本文将详细解析他们的研究发现为从事LLM应用开发的工程师提供切实可行的优化方案。提示工程最新重新思考函数描述的呈现方式在这项研究中研究者首先挑战了传统的函数描述方式。他们提出了两种不同的策略来在提示中展示函数描述专门角色策略为函数描述创建一个独立的角色如tools以JSON格式呈现函数信息。系统角色集成策略将函数描述直接嵌入到系统角色的提示中与使用说明一起呈现。这两种策略的实验结果令人深思。研究发现当函数描述通过专门角色呈现时模型在相关性检测Relevance Detection方面表现更好。这意味着模型能更准确地判断是否需要调用函数从而减少不必要的函数调用。研究发现使用专门角色策略时相关性检测准确率达到49.58%而系统角色集成策略则为39.58%。研究者认为这种差异源于模型能更清晰地识别出有函数可用和无函数可用的场景之间的区别。当函数描述被放在专门的角色中时有函数和无函数的提示模板差异更明显这帮助模型建立了更强的区分能力。Prompt格式示例毫无疑问精确推理时Prompt格式显著影响推理的精准度。研究中探索了三种主要的提示格式无函数场景:|im_start|system You are a helpful assistant.|im_end||im_start|user WhereisBoston?|im_end||im_start|assistant专门角色提供函数:|im_start|tools[{name:get_current_weather,description:Get the current weather in a given location,parameters:{type:object,properties:{location:{type:string,description:The city and state}},required:[location]}}]|im_end||im_start|system You are a helpful assistant.|im_end||im_start|user Whatisthe weather likeinBoston?|im_end||im_start|assistant系统角色集成函数:|im_start|system You are an expertincomposing functions.Hereisalistof functionsinJSONformatthat you can invoke:[{name:get_current_weather,description:Get the current weather in a given location,parameters:{type:object,properties:{location:{type:string,description:The city and state}},required:[location]}}]|im_end||im_start|user Whatisthe weather likeinBoston?|im_end||im_start|assistant对应的生成结果示例普通回答:Bostonisthe capital city of the state of Massachusetts,locatedinthe northeastern United States.|im_end|带Decision Token的回答:|answer|Bostonisthe capital city of the state of Massachusetts,locatedinthe northeastern United States.|im_end|函数调用:[get_current_weather(locationBoston)]|im_end|带Decision Token的函数调用:|use_tool|[get_current_weather(locationBoston)]|im_end|带推理过程的函数调用:|use_tool|The user wants to get the weatherinBoston.The available toolget_current_weathercan be used to retrieve this information.Theget_current_weathertool can be used by specifying the cityasBoston.[get_current_weather(locationBoston)]|im_end|数据集成指令数据的意外收获研究中最令人惊讶的发现之一是指令跟随Instruction Following数据对函数调用能力的显著提升作用。研究者在训练数据中加入了11万条指令跟随数据结果发现这不仅没有削弱模型的函数调用能力反而带来了全面的性能提升函数调用准确率AST Summary从74.62%提升到85.25%相关性检测准确率从38.33%提升到49.58%这一发现颠覆了专注于函数调用数据才能提升函数调用能力的传统认知。研究者分析认为指令跟随数据帮助模型建立了更好的语义理解能力这种基础能力的提升反过来增强了模型理解和使用函数接口的能力。同时指令数据中包含的大量非函数调用场景也帮助模型更好地识别什么时候应该直接回答而不是调用函数。Decision Token二元决策机制为了进一步提升模型的相关性检测能力研究者提出了一个创新的Decision Token机制。这一机制的核心思想是在生成响应之前先让模型做出一个明确的二元决策是直接回答还是调用函数。具体实现上研究者引入了两个特殊token|answer|表示模型决定直接回答|use_tool|表示模型决定调用函数这种设计将原本隐含在生成过程中的决策明确化强制模型在生成具体回答或函数调用之前先对查询的性质做出判断。实验结果表明当结合合成的非函数调用数据使用时这一机制能将相关性检测准确率提升到65.42%。更重要的是Decision Token机制还简化了非函数调用数据的生成过程。研究者可以通过移除原始数据中被调用的函数轻松创建对应的函数调用训练样本。这解决了获取高质量非函数调用训练数据的难题。多语言支持的突破专向翻译管道在全球化背景下如何让函数调用能力突破语言障碍是一个关键挑战。研究者设计了一个专门的翻译管道来解决这个问题。这个管道的独特之处在于它采用了细粒度的翻译策略保持函数名称和描述不变只在合理的情况下翻译参数值保持JSON格式的结构完整性以中文为例研究者使用这个管道生成了1.9万条中文函数调用数据。实验结果显示即使只使用这些翻译数据进行微调模型在中文繁体函数调用基准测试上的表现就有显著提升AST Summary从52.37%提升到61.56%相关性检测从36.67%提升到41.25%这一结果证明只要采用合适的翻译策略函数调用能力是可以有效地迁移到其他语言的。多语言翻译Pipeline的技术细节研究团队开发的翻译pipeline采用了精细的处理策略主要包括以下步骤预处理阶段识别并标记不需要翻译的技术元素函数名、JSON结构等提取需要翻译的自然语言内容保存原始格式信息翻译处理使用商业级LLM进行单轮查询翻译提供明确的翻译规则和约束保持专业术语的一致性后处理阶段验证翻译后的JSON结构完整性确保函数调用格式的正确性进行质量检查和修正以下是一个实际的翻译示例原始数据{conversations:[{role:user,content:Whats the weather like in Taipei?},{role:assistant,content:Let me check the weather for you.},{tool_calls:[{name:get_current_weather,arguments:{location:Taipei}}]}]}翻译后数据{conversations:[{role:user,content:台北的天氣如何},{role:assistant,content:讓我幫您查看天氣。},{tool_calls:[{name:get_current_weather,arguments:{location:Taipei}}]}]}注意函数名和location参数值保持不变只翻译对话内容。这种精细的翻译策略确保了函数调用的正确性。实验结果显示这种翻译策略在多个语言上都取得了显著效果语言原始AST Summary翻译后AST Summary提升中文52.37%61.56%9.19%日语51.25%59.83%8.58%韩语50.94%58.71%7.77%这些结果证明了该翻译pipeline的有效性和可扩展性。实践启示面向工程师的优化建议基于这项研究的发现我们可以为正在开发基于LLM函数调用功能的工程师提供以下具体建议提示格式设计优先考虑使用专门的角色来呈现函数描述确保有函数和无函数场景的提示模板有明显区别在系统提示中清晰说明函数使用的规则和限制训练数据构建不要限于纯函数调用数据有意识地加入高质量的指令跟随数据通过Decision Token机制构建非函数调用数据多语言支持实现采用专门的翻译管道而不是简单的机器翻译仔细区分需要翻译和不需要翻译的内容确保翻译后数据的结构完整性评估和优化同时关注函数调用准确率和相关性检测在多种场景下测试模型的判断能力持续收集和分析失败案例通过这些持续的优化和创新LLM的函数调用能力变得更加强大和实用为AI应用开发带来更多可能性。最后的最后感谢你们的阅读和喜欢我收藏了很多技术干货可以共享给喜欢我文章的朋友们如果你肯花时间沉下心去学习它们一定能帮到你。因为这个行业不同于其他行业知识体系实在是过于庞大知识更新也非常快。作为一个普通人无法全部学完所以我们在提升技术的时候首先需要明确一个目标然后制定好完整的计划同时找到好的学习方法这样才能更快的提升自己。这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】大模型知识脑图为了成为更好的 AI大模型 开发者这里为大家提供了总的路线图。它的用处就在于你可以按照上面的知识点去找对应的学习资源保证自己学得较为全面。经典书籍阅读阅读AI大模型经典书籍可以帮助读者提高技术水平开拓视野掌握核心技术提高解决问题的能力同时也可以借鉴他人的经验。对于想要深入学习AI大模型开发的读者来说阅读经典书籍是非常有必要的。实战案例光学理论是没用的要学会跟着一起敲要动手实操才能将自己的所学运用到实际当中去这时候可以搞点实战案例来学习。面试资料我们学习AI大模型必然是想找到高薪的工作下面这些面试题都是总结当前最新、最热、最高频的面试题并且每道题都有详细的答案面试前刷完这套面试题资料小小offer不在话下640套AI大模型报告合集这套包含640份报告的合集涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师还是对AI大模型感兴趣的爱好者这套报告合集都将为您提供宝贵的信息和启示。这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】