无需微调,仅用提示词工程就能让 LLM 获得 tool calling 的功能
无需微调,仅用提示词工程就能让 LLM 获得 tool calling 的功能
2024年8月1日修改
本文讨论了在绝大多数小型本地开源大语言模型以及部分商用大模型接口不支持稳定的 tool calling 功能,且现有微调LLM的解决方案存在浪费时间和算力问题的背景下,提出仅用提示词工程让LLM获得tool calling功能的方法,并展示了实验过程、无代码开发步骤、实现原理等内容。关键要点包括:
1.
提示词工程可实现tool calling功能:仅使用提示词工程和精巧代码设计,能让LLM获得稳定的tool calling能力,实验成功率为100%。
2.
实验任务及设备平台:以多个主流小型开源模型为测试模型,进行7类工具调用任务测试;测试设备为nvidia的GeForce RTX 4080,平台为作者开发的开源项目。
3.
实验结果受限于LLM智能水平:提示词工程可使LLM获得调用工具能力,但利用工具返回信息解决问题的能力受LLM自身智能水平限制,较大模型利用能力更稳定。
4.
基于Comfyui开发:所有工作基于comfyui,适合无代码基础的人复现和修改,涉及Comfyui下载、Comfyui LLM party下载等无代码开发步骤。
5.
提示词工程代码组成:由提示词注入和工具结果回传两部分组成,提示词注入将工具信息等添加到系统提示中,工具结果回传解析输出并将工具返回内容嵌入LLM。
6.
提供交流渠道:使用comfyui LLM party出现错误或有新想法,可加QQ群931057213交流。
大家好,我是一个开源项目作者 ailm。目前,绝大多数小型本地开源大语言模型以及部分商用大模型接口都不支持稳定的 tool calling 功能。而现有的解决方案是微调 LLM,这导致大量的时间和算力被浪费。本文提出一种仅使用提示词工程和一些精巧的代码设计,即可让 LLM 获得稳定的 tool calling 能力。本文使用多个不具备 tool calling 能力的 LLM 作为测试模型,在多个工具调用任务上进行实验,成功率为 100%。本文所有工作是基于 comfyui 开发,适合完全没有代码基础的小伙伴们复现并且按自己的想法修改我的工作。
效果展示
1、实验任务
本文以目前主流的小型开源模型 llama3-8b、gemma2-9b、qwen2-7b、mistral-7b 的 ollama 量化版本作为测试模型,将如下调用工具作为测试任务,并以不同的提问方式测试 10 次:
1.
查询不同时区的实时时间;
2.
查询不同地点的实时天气;
3.
谷歌搜索相关信息后回答最近发生的事情;
4.
使用 python 解释器计算数学问题;
5.
搜索本地文件信息回答问题;
6.
查询 arxiv 上的相关论文;
7.
搜索本地知识图谱回答问题。
2、实验设备及平台
测试使用的设备为 nvidia 的 GeForce RTX 4080,搭建智能体的平台为笔者 ailm 自己开发的开源项目:
https://github.com/heshengtao/comfyui_LLM_party