乐于分享
好东西不私藏

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

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

模型层负责管理和提供 LLM(大型语言模型)能力,支持云端供应商 API 和本地模型推理。为 Agent 提供统一的模型调用接口。

这是 CoPaw 系统的智能来源。


核心职责

  1. 供应商管理:注册和管理云端 LLM 供应商
  2. 本地模型:支持 llama.cpp 和 MLX 后端
  3. 模型工厂:根据配置动态创建模型实例
  4. 统一接口:为 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 层的模型工厂,根据配置选择云端或本地模型


支持的模型供应商

云端供应商

供应商
模型
说明
OpenAI
GPT-4o / GPT-4o-mini 等
OpenAI 官方 API
Anthropic
Claude 3.5 Sonnet 等
Anthropic Claude API
Google Gemini
gemini-2.0-flash 等
Google Gemini API
DashScope(阿里云通义千问)
qwen 系列
阿里云通义千问 API

本地模型

类型
说明
Ollama
本地 Ollama 服务
llama.cpp
跨平台本地推理
MLX
Apple Silicon 优化推理

模型选择策略

1. 检查工作区是否配置了本地模型(workspace local models)2. 检查全局本地模型配置(global local models)3. 检查云端供应商配置(providers)4. 根据优先级和可用性选择模型

API 端点

路径
功能
/api/models
模型管理(列表、配置、激活)
/api/local-models
本地模型(下载、列表、激活)

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 实例

重要设计细节

  1. API Key:使用云端模型必须配置 API Key

  2. 硬件要求:本地模型需要足够的硬件资源(内存、显存)

  3. 配置方式:模型配置通过 config.json 或 Console UI 管理

  4. 运行时切换:支持运行时切换模型供应商


总结

模型层是 CoPaw 系统的智能大脑:

  • 双轨制:支持云端 API + 本地模型
  • 多供应商:OpenAI + Anthropic Claude + Google Gemini + 阿里 DashScope
  • 本地推理:llama.cpp(跨平台)
  • 模型下载:内置模型下载管理器
  • 统一接口:Model Factory 屏蔽底层差异

这种设计让用户可以根据硬件条件和需求灵活选择:用配置好的云端 API 最简单,用本地模型更隐私。