给语言模型插上翅膀
0 引言
现在有些模型,例如反代出来的grok等,没有工具调用能力,这极大限制的了模型的能力,并给我们造成了相当大的困扰。如果要让他们可以调用工具,就又需要在代码部分做出一些变更。那么,我们是否可以寻找到一个中间件,能够在不修改业务代码的情况下,给这些模型接入tool call能力呢?这就是本文推荐使用的一个开源工具:litellm。
litellm是一个开源的LLM网关。这篇文章里主要使用了其工具转换功能。
1 环境准备
安装docker,教程略过。
2 准备配置
2.1 先在合适的地方创建一个目录,例如~/litellm-p,并cd进去。后续自行命令和文件写入默认工作目录为该目录
1 | mkdir -p ~/litellm-p |
2.2 准备config.yaml(litellm配置)
将以下内容写入config.yaml:
1 | model_list: |
[1]此处可以拦截一些不需要转换的模型。例如如果使用grok2api,生图模型不需要进行中转,可以在此处添加如下配置:
1 | - model_name: "grok-imagine-*" |
[2]此处可以填写具体要进行转换的模型名称。如果你不想一个个写,可以使用通配符(推荐,可以省很多麻烦),这种情况下模型名称会透传至下方对应的通配符位置,不用担心模型id错误
[3]此处填写对应模型名称,可以使用通配符。openai/前缀不可省略,用于标识请求格式,对实际id无影响
[4]填写上游密钥
[5]填写上游的OpenAI SDK Base URL
[6]这部分是核心配置,配置了工具调用转换相关功能。已经经过实践,可以照抄。stream和complete_response是为了减少奇奇怪怪的解析错误,上游也建议配置stream为false。drop_params为时候丢弃不支持参数,这里关闭以确保对请求的影响减小到最小
[7]来一层回程转换,以兼容OpenAI SDK
2.3 准备docker-compose.yaml
写入以下配置:
1 | services: |
[8]容器名字,可以随便取,比如ll-p-42
[9]请求该litellm所使用的api key
2.4 启动容器
运行:docker compose up -d
2.5 修改业务配置
代码不必修改,只需将base url改为litellm部署的位置,例如[url]http://127.0.0.1:4000/v1[/url] ,并将api key修改为刚才在docker-compose.yaml配置的即可。
3 结语
通过以上方法,使用了一个开源项目,我们成功的对一个请求进行了最小化改造,让他适配了我们基于OpenAI SDK的tool call架构。希望可以给各位读者一些启发。
此文章也为作者所写。
加载不畅或无法显示时,可尝试开启代理(梯子)后刷新。