Skip to main content

非 OpenAI 模型的使用技巧

以下是使用非 OpenAI 模型与 AutoGen 的一些建议。

找到合适的模型

每个模型在 AutoGen 的设置中,如说话者选择、编码、函数调用、内容生成等操作中的表现都不同。总体而言,规模较大的模型(13B+)在遵循指令和提供更连贯的回复方面表现更好。

大多数模型都可以进行内容生成。

经过微调的模型非常适合特定任务,如函数调用和编码。

对于需要非常准确输出的特定任务,例如在群聊场景中选择说话者,大多数开源/轻量级模型可能会面临挑战。使用思维链和/或少量提示可以帮助引导 LLM 以你想要的格式提供输出。

验证你的程序

使用非常大的 LLM(如 OpenAI 的 ChatGPT 或 Anthropic 的 Claude 3)来测试你的 AutoGen 设置,可以帮助验证你的代理设置和配置。

一旦设置按照你的要求运行,你可以将代理的模型替换为非 OpenAI 模型,并迭代调整系统消息、提示和模型选择。

聊天模板

AutoGen 使用一组聊天消息来进行 AutoGen/用户与 LLM 之间的对话。每个聊天消息都有一个角色属性,通常为 userassistantsystem

聊天模板在推理过程中应用,并且一些聊天模板实现了关于在特定消息序列中可以使用哪些角色的规则。

例如,使用 Mistral AI 的 API 时,最后一条聊天消息的角色必须是 user。在群聊场景中,用于选择下一个说话者的消息默认的角色是 system,API 将对此步骤抛出异常。为了解决这个问题,GroupChat 的构造函数有一个名为 role_for_select_speaker_messages 的参数,可以用来将角色名称更改为 user

groupchat = autogen.GroupChat(
agents=[user_proxy, coder, pm],
messages=[],
max_round=12,
# 选择说话者的消息的角色将被设置为 'user' 而不是 'system'
role_for_select_speaker_messages='user',
)

如果你想使用的模型关联的聊天模板不支持 AutoGen 中使用的角色序列和名称,你可以修改聊天模板。在我们的 vLLM 页面 上有一个示例。

Discord

加入 AutoGen 的 Discord 上的 #alt-models 频道,讨论非 OpenAI 模型和配置。