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", "###"]

重要:maxTokens 配置

⚠️ 关键警告:始终将 maxTokens 配置为模型支持的最大值!

配置 maxTokens 时,应将其设置为模型支持的最大值,以避免输出被截断:

yaml
models:
  - name: "gpt-4"
    provider: "openai"
    model: "gpt-4"
    apiKey: "${OPENAI_API_KEY}"
    roles: ["chat"]
    defaultCompletionOptions:
      temperature: 0.7
      maxTokens: 8192 # GPT-4 最大上下文长度
      topP: 0.9

为什么这很重要:

  1. 避免截断:如果 maxTokens 设置过低,模型的输出将被过早截断,可能导致响应不完整或代码片段未完成。

  2. 模型能力:不同模型有不同的最大 token 限制:

    • GPT-4:8,192 tokens
    • GPT-4 Turbo:128,000 tokens
    • Claude 3 Opus:200,000 tokens
    • Claude 3 Sonnet:200,000 tokens
    • Gemini Pro:32,768 tokens
    • 本地模型:根据模型大小和配置而异
  3. 任务需求:不同任务需要不同的 token 预算:

    • 简短响应:1,000-2,000 tokens
    • 代码生成:4,000-8,000 tokens
    • 文档编写:8,000-16,000 tokens
    • 复杂分析:16,000+ tokens

最佳实践:始终检查模型的文档了解其最大上下文长度,并相应配置 maxTokens。设置较高的限制让模型决定何时停止,比截断潜在重要内容要好。

常见模型的示例配置:

yaml
# OpenAI 模型
- name: "gpt-4-turbo"
  provider: "openai"
  model: "gpt-4-turbo"
  defaultCompletionOptions:
    maxTokens: 128000 # GPT-4 Turbo 最大值

- name: "gpt-4"
  provider: "openai"
  model: "gpt-4"
  defaultCompletionOptions:
    maxTokens: 8192 # GPT-4 最大值

# Anthropic 模型
- name: "claude-3-opus"
  provider: "anthropic"
  model: "claude-3-opus"
  defaultCompletionOptions:
    maxTokens: 200000 # Claude 3 模型最大值

# Google 模型
- name: "gemini-pro"
  provider: "google"
  model: "gemini-pro"
  defaultCompletionOptions:
    maxTokens: 32768 # Gemini Pro 最大值

自动补全选项

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

自动补全注意事项:对于自动补全角色,maxTokens 通常应设置较低(例如 128-256 tokens),因为自动补全建议通常很简短。但对于其他角色如 chat、edit 和 apply,始终使用模型支持的最大值。

请求选项

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"]

使用公司内部模型

如果你的公司部署了符合 OpenAI API 规范的内部模型服务,即使该模型不在 ByteBuddy 的官方支持清单中,也可以直接使用!

只需将 provider 设置为 "openai",然后配置你公司内部的模型名称和 API 地址:

yaml
models:
  - name: "company-internal-model"
    provider: "openai" # 关键:使用 openai provider
    model: "your-company-model-name" # 你公司内部的模型名称
    apiKey: "${COMPANY_API_KEY}" # 公司内部 API 密钥
    apiBase: "https://your-company-ai-api.com/v1" # 公司内部 API 地址
    roles: ["chat", "edit", "autocomplete"] # 根据需要分配角色

配置要点:

  • provider 必须设置为 "openai":这样 ByteBuddy 会使用标准的 OpenAI API 调用格式
  • model 字段填写公司内部模型名称:比如 "qwen-max""glm-4""internlm2"
  • apiBase 指向公司内部 API 网关:确保地址包含 /v1 路径(如果公司 API 遵循 OpenAI 标准)
  • apiKey 使用公司分配的密钥:同样建议通过环境变量管理

这种方式让你能够无缝集成公司内部的 AI 模型服务,享受与官方 OpenAI 模型相同的体验,同时保持数据在公司内部的安全性。

模型能力配置

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 限流错误