以下是关于如何写适配多个 LLM 的提示词的详细内容:
实现原理:
提示词工程主要由两部分代码组成,即提示词注入和工具结果回传。提示词注入用于将工具信息及使用工具的提示词添加到系统提示中,它包含 TOOL_EAXMPLE、tools_instructions、REUTRN_FORMAT 三个部分。TOOL_EAXMPLE 用于提示 LLM 如何理解和使用工具,编写时应注意用无关紧要的工具作示例以免 LLM 混淆。tools_instructions 是将通用工具字典转换成 LLM 可读的工具列表,实际使用时可动态调整以让 LLM 知晓可用工具及使用方法。REUTRN_FORMAT 定义了调用 API 的格式。工具结果回传则是解析 tool calling 的输出,并将工具返回的内容再次嵌入 LLM,利用正则表达式抓取输出中的“tool”和“parameters”参数,对于 interpreter 工具使用另一种正则表达式提取 LLM 输出的代码,以提高成功率。对于不接受某些角色的 LLM 接口,可改为回传给 user 角色。
相关成果:
目前绝大多数小型本地开源大语言模型以及部分商用大模型接口不支持稳定的 tool calling 功能,现有的微调 LLM 解决方案会浪费大量时间和算力。本文提出仅使用提示词工程和精巧的代码设计,让 LLM 获得稳定的 tool calling 能力。使用多个不具备该能力的 LLM 作为测试模型,在多个工具调用任务上实验成功率达 100%,且基于 comfyui 开发,适合无代码基础的人员复现和修改。
2025-03-03