AI 模型管理

模型是AI智能体的核心驱动力。OpenClaw提供了完整的模型管理系统,包括模型注册表、加载与保存机制、版本控制、性能评估以及微调训练功能。通过统一的模型管理接口,您可以轻松地在不同Agent之间共享和切换模型。

模型注册表

模型注册表(Model Registry)是OpenClaw中所有AI模型的中央目录。它记录了每个模型的元数据、配置参数、性能指标和使用历史。注册表支持多种模型类型,包括大语言模型(LLM)、嵌入模型、分类模型和自定义模型。

# 模型注册表配置
model_registry:
  # 注册表存储后端
  backend: postgresql
  connection: ${REGISTRY_DB_URL}

  # 模型分类
  categories:
    llm:
      description: "大语言模型,用于文本生成和对话"
      providers:
        - openai
        - anthropic
        - local
    embedding:
      description: "嵌入模型,用于向量化和语义搜索"
      providers:
        - openai
        - sentence-transformers
    classifier:
      description: "分类模型,用于意图识别和文本分类"
      providers:
        - sklearn
        - custom

  # 模型元数据Schema
  metadata_schema:
    required_fields:
      - name
      - version
      - type
      - provider
    optional_fields:
      - description
      - max_tokens
      - supported_languages
      - license
      - paper_url

核心概念:模型标识符

每个模型在注册表中都有唯一的标识符,格式为 provider/model-name:version。例如 openai/gpt-4o:2024-05-13 或 local/llama3.1:8b。这个标识符用于在配置中引用模型。

模型加载与保存

OpenClaw的模型加载系统支持从多种来源加载模型,包括远程API、本地文件系统和模型仓库。加载过程会自动处理模型缓存、预热和兼容性检查。

# 模型加载配置
model_loading:
  # 缓存策略
  cache:
    enabled: true
    backend: local  # local / redis / s3
    directory: /var/cache/openclaw/models
    max_size: 50GB
    eviction_policy: lru

  # 模型预热(启动时预加载常用模型)
  warmup:
    enabled: true
    models:
      - openai/gpt-4o
      - openai/text-embedding-3-small
    parallel_loading: true

  # 本地模型加载
  local_models:
    llama3.1:
      format: gguf
      path: /models/llama3.1-8b-q4_k_m.gguf
      runtime: llama-cpp
      gpu_layers: 32
      context_size: 8192

    custom-classifier:
      format: pytorch
      path: /models/intent_classifier_v2.pt
      runtime: pytorch
      device: cuda:0

通过Python API加载和使用模型:

from openclaw.models import ModelManager

# 初始化模型管理器
manager = ModelManager()

# 加载模型
llm = manager.load("openai/gpt-4o")
embedding = manager.load("openai/text-embedding-3-small")

# 使用LLM生成文本
response = await llm.generate(
    prompt="请分析AI Agent的发展趋势",
    max_tokens=1000,
    temperature=0.7
)

# 使用嵌入模型生成向量
vectors = await embedding.embed([
    "AI智能体是未来的技术方向",
    "Agent框架正在快速发展"
])
print(f"向量维度: {vectors.shape}")  # (2, 1536)

模型版本管理

OpenClaw内置了模型版本管理系统,允许您跟踪模型的每次更新,并在不同版本之间切换。这对于生产环境的稳定性至关重要。

  • 语义化版本:支持语义化版本号(如1.0.0、1.1.0、2.0.0),自动检测不兼容变更
  • 版本标签:可以为特定版本添加标签(如stable、latest、canary),方便引用
  • 版本对比:可以对比不同版本的性能指标,帮助决策是否升级
  • 灰度发布:支持按比例将流量分配到不同版本,实现平滑升级
  • 一键回滚:发现问题时可以立即回滚到上一个稳定版本
# 模型版本管理CLI
# 列出模型的所有版本
openclaw model versions openai/gpt-4o

# 创建版本标签
openclaw model tag openai/gpt-4o:2024-05-13 --label stable

# 灰度发布:将10%流量切换到新版本
openclaw model rollout openai/gpt-4o:2024-08-01 \
  --percentage 10 \
  --duration 24h

# 回滚到稳定版本
openclaw model rollback openai/gpt-4o --to stable

支持的模型类型

OpenClaw支持多种AI模型类型,每种类型针对不同的应用场景进行了优化:

  • 大语言模型(LLM):GPT-4o、Claude 3.5 Sonnet、Llama 3.1、Qwen 2.5等,用于对话生成、文本理解和创作
  • 嵌入模型:text-embedding-3-small/large、BGE、E5等,用于文本向量化和语义检索
  • 分类模型:BERT微调模型、FastText等,用于意图识别、情感分析和文本分类
  • 多模态模型:GPT-4V、LLaVA等,支持图像和文本的联合理解
  • 语音模型:Whisper、TTS模型等,用于语音识别和合成

模型微调

OpenClaw提供了内置的模型微调功能,允许您基于自有数据对预训练模型进行定制化训练,以获得更好的特定任务表现。

# 微调配置
fine_tuning:
  # 基础模型
  base_model: openai/gpt-4o-mini

  # 训练数据
  training_data:
    source: jsonl
    path: /data/training/customer_service.jsonl
    validation_split: 0.1

  # 训练参数
  hyperparameters:
    epochs: 3
    batch_size: 4
    learning_rate: 2e-5
    warmup_steps: 100
    weight_decay: 0.01

  # 训练环境
  environment:
    device: cuda
    num_gpus: 2
    distributed: true

  # 评估指标
  evaluation:
    metrics:
      - perplexity
      - accuracy
      - f1_score
    eval_interval: 500  # 每500步评估一次

提示:微调数据准备

微调数据应采用JSONL格式,每行包含一个训练样本。对于对话模型,格式为 {"messages": [{"role": "system", "content": "..."}, {"role": "user", "content": "..."}, {"role": "assistant", "content": "..."}]}。建议至少准备100个高质量样本以获得有意义的微调效果。

微调完成后,模型会自动注册到模型注册表中,并分配一个新的版本号。您可以通过Web管理台或CLI查看微调过程的详细日志和评估结果。

警告:微调资源需求

模型微调需要大量的计算资源(GPU显存和训练时间)。对于大型模型,建议使用云GPU实例进行训练。OpenClaw支持断点续训,如果训练过程中断,可以从最近的检查点恢复。