AI Agent平台CoPaw源码学习——系统层级概览:06 模型层

模型层负责管理和提供 LLM(大型语言模型)能力,支持云端供应商 API 和本地模型推理。为 Agent 提供统一的模型调用接口。
这是 CoPaw 系统的智能来源。
核心职责
-
供应商管理:注册和管理云端 LLM 供应商 -
本地模型:支持 llama.cpp 和 MLX 后端 -
模型工厂:根据配置动态创建模型实例 -
统一接口:为 Agent 提供一致的模型调用
核心组件
1. Provider Registry(供应商注册表)
路径:src/copaw/providers/provider_manager.py(非 registry.py)
职责:注册和管理云端 LLM 供应商
2. Provider Manager(供应商管理器)
路径:src/copaw/providers/provider_manager.py
职责:供应商的注册、管理、持久化(load/save provider)
3. Provider Data Models(供应商数据模型)
路径:src/copaw/providers/models.py
职责:定义供应商相关的小型数据模型(如 ModelSlotConfig、ActiveModelsInfo)
4. Ollama Manager(Ollama 管理器)
路径:src/copaw/providers/ollama_provider.py
职责:管理本地 Ollama 服务和模型
5. Local Model Manager(本地模型管理器)
路径:src/copaw/local_models/manager.py
职责:管理本地模型的下载、加载和运行
6. Local Model Manager(本地模型管理器)
路径:src/copaw/local_models/model_manager.py
职责:管理本地模型的下载、加载和运行
7. Local Model Download Manager(模型下载管理器)
路径:src/copaw/local_models/download_manager.py
职责:管理本地模型的下载
8. llama.cpp 本地推理
路径:srccopaw/local_models/llamacpp.py
职责:llama.cpp 本地推理实现
9. Agent Model Factory
路径:src/opaw/agents/model_factory.py
职责:Agent 层的模型工厂,根据配置选择云端或本地模型
支持的模型供应商
云端供应商
|
|
|
|
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
本地模型
|
|
|
|---|---|
|
|
|
|
|
|
|
|
|
模型选择策略
1. 检查工作区是否配置了本地模型(workspace local models)2. 检查全局本地模型配置(global local models)3. 检查云端供应商配置(providers)4. 根据优先级和可用性选择模型
API 端点
|
|
|
|---|---|
|
|
|
|
|
|
CLI 命令
copaw models # 交互式模型管理copaw models download <model> # 下载本地模型
关键代码路径
src/copaw/├─ agents/│ └─ model_factory.py # Agent 模型工厂├─ providers/│ ├─ __init__.py│ ├─ provider_manager.py # 供应商管理器(包含持久化)│ ├─ provider.py # 供应商基类│ ├─ models.py # 小型数据模型│ ├─ openai_provider.py # OpenAI 供应商│ ├─ anthropic_provider.py # Anthropic 供应商│ ├─ gemini_provider.py # Google Gemini 供应商│ ├─ ollama_provider.py # Ollama 供应商│ ├─ rate_limiter.py # 速率限制│ └─ retry_chat_model.py # 重试机制├─ local_models/│ ├─ __init__.py│ ├─ manager.py # 本地模型管理器│ ├─ model_manager.py # 模型实例管理│ ├─ download_manager.py # 模型下载管理│ ├─ llamacpp.py # llama.cpp 本地推理│ └─ tag_parser.py # 模型标签解析└─ tokenizer/ # 分词器(Token 计数)
与其他层的交互
上层依赖(被调用):
-
Agent 运行层:Model Factory 为 Agent 创建 LLM 实例 -
API 路由层:Providers/Models Router 管理模型配置
下层调用:
-
外部服务:DashScope API、OpenAI 兼容 API -
本地推理:llama.cpp 或 MLX -
Ollama 服务:本地 Ollama 实例
重要设计细节
-
API Key:使用云端模型必须配置 API Key
-
硬件要求:本地模型需要足够的硬件资源(内存、显存)
-
配置方式:模型配置通过 config.json 或 Console UI 管理
-
运行时切换:支持运行时切换模型供应商
总结
模型层是 CoPaw 系统的智能大脑:
-
双轨制:支持云端 API + 本地模型 -
多供应商:OpenAI + Anthropic Claude + Google Gemini + 阿里 DashScope -
本地推理:llama.cpp(跨平台) -
模型下载:内置模型下载管理器 -
统一接口:Model Factory 屏蔽底层差异
这种设计让用户可以根据硬件条件和需求灵活选择:用配置好的云端 API 最简单,用本地模型更隐私。
夜雨聆风