Bot 的大脑:模型服务
模型服务 (ModelService
) 是 YesImBot 的“大脑中枢”,它负责管理、连接和调用所有的大语言模型(LLM)。该服务取代了旧版的“适配器系统”,提供了更强大、更灵活的模型管理能力。
核心概念
模型服务的运作基于三个核心概念:提供商 (Providers)、模型组 (Model Groups) 和 任务分配 (Task Assignment)。
1. 提供商 (Providers)
- 定义: 一个“提供商”代表一个具体的 AI 模型 API 来源。
- 示例: 你可以配置一个名为
my_openai
的 OpenAI 提供商,一个名为my_ollama
的本地 Ollama 提供商,以及一个名为my_anthropic
的 Anthropic 提供商。 - 配置:
modelService.providers
数组。每个对象包含name
,type
,apiKey
,baseURL
等信息。
2. 模型组 (Model Groups)
- 定义: 一个“模型组”是一个或多个具体模型的有序集合。这是实现故障转移和任务路由的关键。
- 工作原理:
- 当一个模型组被调用时,它会按照列表顺序尝试使用组内的模型。
- 如果第一个模型调用失败(例如 API 宕机、并发超限),它会自动尝试列表中的下一个模型,保证服务的健壮性。
- 配置:
modelService.modelGroups
数组。
3. 任务分配 (Task Assignment)
- 定义: 将特定的内部“任务”分配给一个“模型组”。
- 核心任务类型:
chat
: 主要的对话功能。summarize
: 对话历史摘要任务。embed
: 文本嵌入任务(用于记忆检索等)。
- 优势: 您可以为不同任务分配最适合的模型,以优化成本和性能。
- 例如: 使用最强大的
gpt-4o
进行聊天 (chat
),同时使用一个更便宜、更快速的本地模型llama3:8b
来进行后台的摘要任务 (summarize
)。
- 例如: 使用最强大的
- 配置:
modelService.task
对象。
配置示例:实现故障转移与成本优化
以下配置展示了如何同时使用 OpenAI 和本地 Ollama,并为不同任务分配不同模型,实现高可用性和成本效益。
modelService:
providers:
# 1. 配置 OpenAI 提供商
- name: openai_provider
type: OpenAI
apiKey: sk-xxxxxxxxxxxxxxxxxxxxxxxxxxx # 你的 OpenAI Key
models:
- modelId: gpt-4o
- modelId: gpt-3.5-turbo
# 2. 配置本地 Ollama 提供商
- name: ollama_provider
type: Ollama
baseURL: http://localhost:11434 # 你的 Ollama 地址
models:
- modelId: llama3:8b
modelGroups:
# 3. 创建一个用于聊天的模型组,具备故障转移能力
- name: failover_chat_group
models:
- providerName: openai_provider # 首选 gpt-4o
modelId: gpt-4o
- providerName: ollama_provider # gpt-4o 失败后,自动切换到本地的 llama3
modelId: llama3:8b
# 4. 创建一个专门用于后台任务的模型组,节约成本
- name: cheap_task_group
models:
- providerName: ollama_provider
modelId: llama3:8b
task:
# 5. 为不同任务分配模型组
chat: failover_chat_group # 聊天使用高可用的 failover_chat_group
summarize: cheap_task_group # 摘要使用低成本的 cheap_task_group
embed: cheap_task_group # 嵌入也使用 cheap_task_group