Skip to content

模型配置

ByteBuddy 支持多种 AI 模型,允许你根据需求选择最合适的模型。

支持的模型类型

大语言模型

  • OpenAI 模型:GPT-3.5、GPT-4 系列
  • Anthropic 模型:Claude 系列模型
  • 开源模型:通过 Ollama、LM Studio 等运行的本地模型
  • 其他提供商:支持 OpenAI 兼容的 API

模型角色

ByteBuddy 支持为不同角色配置不同的模型:

  • chat:用于对话交互和复杂任务处理
  • edit:用于代码编辑任务
  • apply:用于代码应用操作
  • autocomplete:用于实时代码补全
  • embed:用于嵌入向量生成
  • rerank:用于搜索结果重排序

基本配置

配置文件结构

在项目根目录或 ~/.bytebuddy/config.yaml 中配置模型:

yaml
# config.yaml
name: My ByteBuddy Config
version: 0.0.1
schema: v1

models:
  - name: "gpt-4"
    provider: "openai"
    model: "gpt-4"
    apiKey: "${OPENAI_API_KEY}"
    roles:
      - chat
      - edit
      - apply

  - name: "claude-3-sonnet"
    provider: "anthropic"
    model: "claude-3-sonnet"
    apiKey: "${ANTHROPIC_API_KEY}"
    roles:
      - chat
      - autocomplete

  - name: "local-llama"
    provider: "ollama"
    model: "llama2"
    apiBase: "http://localhost:11434"
    roles:
      - chat

基本配置参数

每个模型支持以下基本参数:

  • name:模型配置的名称
  • provider:模型提供商(openai、anthropic、ollama 等)
  • model:具体的模型名称
  • apiKey:API 密钥(可使用环境变量)
  • apiBase:API 基础 URL(可选)
  • roles:模型扮演的角色列表

高级配置选项

完成选项配置

yaml
models:
  - name: "gpt-4-turbo"
    provider: "openai"
    model: "gpt-4-turbo"
    apiKey: "${OPENAI_API_KEY}"
    roles: ["chat"]
    defaultCompletionOptions:
      temperature: 0.7
      maxTokens: 2000
      topP: 0.9
      presencePenalty: 0.1
      frequencyPenalty: 0.1
      stop: ["\n\n", "###"]

自动补全选项

yaml
models:
  - name: "claude-autocomplete"
    provider: "anthropic"
    model: "claude-3-haiku"
    apiKey: "${ANTHROPIC_API_KEY}"
    roles: ["autocomplete"]
    autocompleteOptions:
      maxPromptTokens: 2000
      debounceDelay: 300
      modelTimeout: 10000
      useCache: true
      useImports: true
      useRecentlyEdited: true

请求选项

yaml
models:
  - name: "configured-model"
    provider: "openai"
    model: "gpt-4"
    apiKey: "${OPENAI_API_KEY}"
    roles: ["chat"]
    requestOptions:
      timeout: 30000
      verifySsl: true
      headers:
        "User-Agent": "ByteBuddy/1.0"
      extraBodyProperties:
        custom_field: "value"

环境变量配置

为了安全起见,建议使用环境变量存储 API 密钥:

bash
# 环境变量设置
export OPENAI_API_KEY="your-openai-key"
export ANTHROPIC_API_KEY="your-anthropic-key"

在配置文件中使用:

yaml
models:
  - name: "secure-model"
    provider: "openai"
    model: "gpt-4"
    apiKey: "${OPENAI_API_KEY}"

不同提供商的配置示例

OpenAI 模型

yaml
models:
  - name: "gpt-4"
    provider: "openai"
    model: "gpt-4"
    apiKey: "${OPENAI_API_KEY}"
    apiBase: "https://api.openai.com/v1"
    roles: ["chat", "edit"]

Anthropic 模型

yaml
models:
  - name: "claude-3-opus"
    provider: "anthropic"
    model: "claude-3-opus-20240229"
    apiKey: "${ANTHROPIC_API_KEY}"
    roles: ["chat", "edit"]

本地 Ollama 模型

yaml
models:
  - name: "local-llama3"
    provider: "ollama"
    model: "llama3:8b"
    apiBase: "http://localhost:11434"
    roles: ["chat"]

自定义 OpenAI 兼容 API

yaml
models:
  - name: "custom-provider"
    provider: "openai-compatible"
    model: "custom-model"
    apiKey: "${CUSTOM_API_KEY}"
    apiBase: "https://your-custom-api.com/v1"
    roles: ["chat"]

模型能力配置

ByteBuddy 支持为模型指定特定能力:

yaml
models:
  - name: "gpt-4-vision"
    provider: "openai"
    model: "gpt-4-vision-preview"
    apiKey: "${OPENAI_API_KEY}"
    roles: ["chat"]
    capabilities:
      - "tool_use"
      - "image_input"

支持的模型能力:

  • tool_use:支持工具调用
  • image_input:支持图像输入
  • next_edit:支持 next 编辑模式

缓存配置

yaml
models:
  - name: "cached-model"
    provider: "openai"
    model: "gpt-4"
    apiKey: "${OPENAI_API_KEY}"
    cacheBehavior:
      cacheSystemMessage: true
      cacheConversation: true

故障排除

常见问题解决

  1. API 连接失败

    yaml
    # 增加超时时间
    requestOptions:
      timeout: 60000
  2. 模型响应慢

    yaml
    # 使用更快的模型
    - name: "fast-model"
      provider: "openai"
      model: "gpt-3.5-turbo"
      # ... 其他配置
  3. API 密钥问题

    • 确保环境变量正确设置
    • 检查 API 密钥权限
    • 验证模型是否在可用列表中

最佳实践

  1. 安全性

    • 始终使用环境变量存储 API 密钥
    • 定期轮换 API 密钥
    • 限制 API 密钥权限范围
  2. 性能优化

    • 为不同任务选择合适的模型
    • 合理设置 temperature 和 maxTokens
    • 启用缓存减少重复请求
  3. 成本控制

    • 监控 token 使用情况
    • 为简单任务使用较小的模型
    • 设置合理的上下文长度限制
  4. 可靠性

    • 配置多个模型作为备份
    • 设置适当的超时时间
    • 处理 API 限流错误