重新审视了一下使用示例,感觉太复杂了,于是让Copilot出一个函数,用户只需要指明要使用的模型名称和api_key,即可自动生成autogen可以使用的config_list。
提示词:
请写一个函数,输入是model_name字符串或者字符串数组,输出是类似OAI_CONFIG_LIST的数组。其中,每个输入的model_name都对应list中一个字典。每个字典中,model等于model_name,api_key是预先定义的key,base_url等于https://api.mrtoyy.com/v1/
Copilot给出的代码如下:
def generate_config_list(model_names, api_key='your_api_key'):
# 如果输入是字符串,将其转换为只有一个元素的数组
if isinstance(model_names, str):
model_names = [model_names]
base_url = 'https://api.mrtoyy.com/v1/'
config_list = []
# 为每个模型名称创建一个字典,并添加到数组中
for model_name in model_names:
config_list.append({
'model': model_name,
'api_key': api_key,
'base_url': base_url
})
return config_list
粗看一下觉得可用,但是我告诉Copilot,再简洁一点,于是它给出了新的代码:
def generate_config_list(model_names, api_key='your_api_key'):
# 如果输入是字符串,将其转换为只有一个元素的数组
if isinstance(model_names, str):
model_names = [model_names]
base_url = 'https://api.mrtoyy.com/v1/'
# 使用列表推导式创建配置列表
return [{'model': model_name, 'api_key': api_key, 'base_url': base_url} for model_name in model_names]
测试一次通过,无需修改。
那么这里更新一下使用示例:
import autogen
def generate_config_list(model_names, api_key='your_api_key'):
# 如果输入是字符串,将其转换为只有一个元素的数组
if isinstance(model_names, str):
model_names = [model_names]
base_url = 'https://api.mrtoyy.com/v1/'
# 使用列表推导式创建配置列表
return [{'model': model_name, 'api_key': api_key, 'base_url': base_url} for model_name in model_names]
config_list = generate_config_list(
model_names=["mistralai/mistral-7b-instruct:free"],
api_key="YOUR_API_KEY" #目前可以随便填,我还没有完成用户系统部分
)
assistant = autogen.AssistantAgent(
name="assistant",
llm_config={
"config_list": config_list,
"temperature": 0,
},
)
这样的话比一个一个设置模型的json配置简单多了。再更新一下,目前支持的模型名称如下,只需要把要用的模型名称列到model_names那里就可以正确运行了:
"01-ai/yi34b:free" # 零一万物34B
"mistralai/mistral-7b-instruct:free" # Mistral 7B Instruct
"undi95/toppy-m-7b:free" # Toppy M 7B
"openchat/openchat-7b:free": call_openchat7b, # OpenChat 3.5 7B