在过去的几次极客时间中,探讨了Nvidia NIMS和Microsoft Autogen。MS Autogen能够利用各种本地和在线模型的能力令人着迷。而降低推理成本的挑战也同样引人入胜。今天,将玩一个名为RouteLLM的开源库,它承诺通过高效管理和集成不同的AI模型来解决这些问题。
安装RouteLLM
首先,需要在机器上安装RouteLLM:(https://github.com/lm-sys/RouteLLM)
git clone https://github.com/lm-sys/RouteLLM.git
cd RouteLLM
pip install -e .[serve,eval]
设置环境
然后,必须使用Nvidia NIM和OpenAI的API密钥来设置环境。在“examples”文件夹下创建一个文件run_route_llm.py。
代码片段如下:
import os
# 设置API密钥
os.environ["NVIDIA_NIM_API_KEY"] = "your-nvidia-nim-api-key"
os.environ["OPENAI_API_KEY"] = "your-openai-api-key"
需要分别登录NIM和OpenAI账户生成API密钥并复制过来。

初始化控制器
接下来,从RouteLLM包中初始化控制器。控制器负责管理不同AI模型之间的通信并处理路由逻辑。将NIM上的llama-3.1设置为弱模型,而gpt-4则为强模型。初始化控制器的代码如下:
from routellm.controller import Controller
# 使用NIM端点初始化控制器
client = Controller(
routers=["mf"], # 指定使用的路由器
weak_model="nvidia_nim/meta/llama-3.1-8b-instruct", # 弱模型端点
strong_model="gpt-4-1106-preview", # 强模型端点
config={
"mf": {
"checkpoint_path": "routellm/mf_gpt4_augmented" # 路由器检查点路径
}
},
api_base=None, # API的基础URL,如果有的话
api_key=None, # 基础URL的API密钥,如果有的话
progress_bar=False, # 是否显示进度条
)
创建聊天完成
控制器初始化后,可以创建聊天完成。发送用户消息并接收模型的响应。代码片段如下:
# 为简单查询创建聊天完成
response1 = client.chat.completions.create(
model="router-mf-0.11593", # 用于聊天完成的模型
messages=[
{"role": "user", "content": "Hello! Who are you? What is your model version?"} # 用户消息
]
)
print(response1.choices[0]["message"]["content"]) # 打印模型的响应
# 为复杂查询创建聊天完成
response2 = client.chat.completions.create(
model="router-mf-0.11593", # 用于聊天完成的模型
messages=[
{"role": "user", "content": "Hello! Who are you? What is your model version? What's the square root of 144?"} # 用户消息
]
)
print(response2.choices[0]["message"]["content"]) # 打印模型的响应
观察
RouteLLM有效地管理了Nvidia NIM和OpenAI模型之间的路由。通过将较不复杂的查询路由到较弱的模型(llama 3.1),而将较复杂的查询路由到较强的模型(gpt-4),RouteLLM提供了一种潜在的成本优化策略。

阈值校准
RouteLLM中的阈值校准涉及设置阈值以管理路由查询的成本质量权衡。校准过程使用查询样本来确定适当的阈值,以将特定百分比的查询路由到较强的模型。默认情况下,校准使用公共的Chatbot Arena数据集,例如,要使用mf路由器将50%的查询路由到较强的模型,可以使用以下命令:
python -m routellm.calibrate_threshold --task calibrate --routers mf --strong-model-pct 0.5 --config config.example.yaml
对于mf的50.0%强模型调用,阈值=0.11593。这表示为mf路由器设置的阈值,以便大约50%的调用路由到较强的模型router-mf-0.11593。可以根据路由器和权衡设置不同的阈值。
结论
RouteLLM为管理多个AI模型提供了一种解决方案,优化了性能和成本。将RouteLLM集成到工作流程中可以显著增强AI能力。有很多用例,其中之一是添加校准阈值和在资源受限设备(如物联网设备)上将查询路由到本地或在线模型的能力。这增加了灵活性,特别有用。
请随意探索RouteLLM GitHub仓库,并尝试使用自己的模型。如果有任何问题或想分享经验,请在下方留言。
玩得开心!