自定义提供商深度解析
自定义提供商系统允许用户扩展 ByteBuddy 的功能,集成各种第三方服务和自定义数据源,打造个性化的 AI 开发环境。
提供商类型
官方支持的提供商
ByteBuddy 支持多种主流 AI 提供商:
- OpenAI: GPT-4, GPT-3.5
- Anthropic: Claude 3 系列
- Google: Gemini Pro
- Azure OpenAI: 企业级 OpenAI 服务
- AWS Bedrock: AWS 托管的 AI 模型
- Cohere: 嵌入和重排序模型
- Together: 开源模型托管
- Ollama: 本地模型运行
自定义提供商集成
可以集成任何兼容 OpenAI API 格式的提供商。
自定义 API 提供商
基础配置
yaml
models:
- name: "custom-api"
provider: "openai-compatible"
model: "custom-model-name"
apiKey: "${CUSTOM_API_KEY}"
apiBase: "https://api.custom-provider.com/v1"
roles: ["chat"]
defaultCompletionOptions:
temperature: 0.7
maxTokens: 2000OpenAI 兼容 API
许多提供商提供 OpenAI 兼容的 API:
yaml
models:
# DeepSeek
- name: "deepseek"
provider: "openai-compatible"
model: "deepseek-chat"
apiKey: "${DEEPSEEK_API_KEY}"
apiBase: "https://api.deepseek.com/v1"
roles: ["chat"]
defaultCompletionOptions:
temperature: 0.7
maxTokens: 4000
# Perplexity
- name: "perplexity"
provider: "openai-compatible"
model: "llama-3.1-sonar-large-128k-online"
apiKey: "${PERPLEXITY_API_KEY}"
apiBase: "https://api.perplexity.ai"
roles: ["chat"]
defaultCompletionOptions:
temperature: 0.7
maxTokens: 4096
# Fireworks AI
- name: "fireworks"
provider: "openai-compatible"
model: "accounts/fireworks/models/llama-v3p1-70b-instruct"
apiKey: "${FIREWORKS_API_KEY}"
apiBase: "https://api.fireworks.ai/inference/v1"
roles: ["chat"]
defaultCompletionOptions:
temperature: 0.7
maxTokens: 4096本地模型提供商
Ollama 配置
yaml
models:
- name: "local-llama"
provider: "ollama"
model: "llama2"
apiBase: "http://localhost:11434"
roles: ["chat"]
defaultCompletionOptions:
temperature: 0.7
maxTokens: 2000
- name: "local-codellama"
provider: "ollama"
model: "codellama:13b"
apiBase: "http://localhost:11434"
roles: ["autocomplete", "edit"]
defaultCompletionOptions:
temperature: 0.2
maxTokens: 1024LM Studio 配置
yaml
models:
- name: "lmstudio-model"
provider: "lmstudio"
model: "local-model"
apiBase: "http://localhost:1234/v1"
roles: ["chat"]
defaultCompletionOptions:
temperature: 0.7
maxTokens: 2000llama.cpp 服务器配置
yaml
models:
- name: "llamacpp-model"
provider: "llamacpp"
model: "llama-2-13b"
apiBase: "http://localhost:8080"
roles: ["chat"]
defaultCompletionOptions:
temperature: 0.7
maxTokens: 2000云服务提供商
Azure OpenAI
yaml
models:
- name: "azure-gpt4"
provider: "azure-openai"
model: "gpt-4"
apiKey: "${AZURE_OPENAI_API_KEY}"
apiBase: "${AZURE_OPENAI_API_BASE}"
env:
deploymentName: "gpt-4-deployment"
apiVersion: "2024-02-15-preview"
roles: ["chat", "edit"]
defaultCompletionOptions:
temperature: 0.7
maxTokens: 4000AWS Bedrock
yaml
models:
- name: "bedrock-claude"
provider: "bedrock"
model: "anthropic.claude-3-sonnet-20240229-v1:0"
env:
region: "us-east-1"
accessKeyId: "${AWS_ACCESS_KEY_ID}"
secretAccessKey: "${AWS_SECRET_ACCESS_KEY}"
roles: ["chat"]
defaultCompletionOptions:
temperature: 0.7
maxTokens: 4096Google Vertex AI
yaml
models:
- name: "vertexai-gemini"
provider: "vertexai"
model: "gemini-pro"
env:
projectId: "${GOOGLE_CLOUD_PROJECT_ID}"
location: "us-central1"
credentials: "${GOOGLE_APPLICATION_CREDENTIALS}"
roles: ["chat"]
defaultCompletionOptions:
temperature: 0.7
maxTokens: 2048专用服务提供商
嵌入模型提供商
yaml
models:
# OpenAI 嵌入
- name: "openai-embed"
provider: "openai"
model: "text-embedding-3-large"
apiKey: "${OPENAI_API_KEY}"
roles: ["embed"]
# Cohere 嵌入
- name: "cohere-embed"
provider: "cohere"
model: "embed-english-v3.0"
apiKey: "${COHERE_API_KEY}"
roles: ["embed"]
# Voyage AI 嵌入
- name: "voyage-embed"
provider: "openai-compatible"
model: "voyage-large-2"
apiKey: "${VOYAGE_API_KEY}"
apiBase: "https://api.voyageai.com/v1"
roles: ["embed"]重排序模型提供商
yaml
models:
# Cohere 重排序
- name: "cohere-rerank"
provider: "cohere"
model: "rerank-english-v3.0"
apiKey: "${COHERE_API_KEY}"
roles: ["rerank"]
# Jina AI 重排序
- name: "jina-rerank"
provider: "openai-compatible"
model: "jina-reranker-v1-base-en"
apiKey: "${JINA_API_KEY}"
apiBase: "https://api.jina.ai/v1"
roles: ["rerank"]自定义请求选项
请求头配置
yaml
models:
- name: "custom-headers"
provider: "openai-compatible"
model: "custom-model"
apiKey: "${API_KEY}"
apiBase: "https://api.example.com/v1"
requestOptions:
headers:
"X-Custom-Header": "value"
"User-Agent": "ByteBuddy/1.0"
roles: ["chat"]
defaultCompletionOptions:
temperature: 0.7
maxTokens: 2000超时和重试配置
yaml
models:
- name: "timeout-config"
provider: "openai"
model: "gpt-4"
apiKey: "${OPENAI_API_KEY}"
requestOptions:
timeout: 60000 # 60 秒
maxRetries: 3
retryDelay: 1000 # 1 秒
roles: ["chat"]
defaultCompletionOptions:
temperature: 0.7
maxTokens: 2000最佳实践
1. 提供商选择
- 云端: 高性能、最新模型
- 本地: 隐私保护、无需网络
- 混合: 结合两者优势
2. API 密钥管理
- 使用环境变量存储密钥
- 定期轮换密钥
- 限制密钥权限
- 监控密钥使用情况
3. 性能优化
- 选择地理位置最近的服务器
- 配置合适的超时时间
- 实施重试策略
- 启用连接池
4. 成本控制
- 监控 API 使用量
- 设置使用限额
- 选择性价比高的模型
- 使用缓存减少调用
故障排除
连接问题
解决方案:
- 检查 API 端点是否正确
- 验证网络连接
- 检查防火墙设置
- 确认 API 密钥有效
认证失败
解决方案:
- 验证 API 密钥格式
- 检查密钥权限
- 确认密钥未过期
- 查看提供商状态
性能问题
解决方案:
- 优化请求大小
- 增加超时时间
- 调整重试策略
- 考虑更换提供商
环境变量配置
bash
# ~/.bashrc 或 ~/.zshrc
# OpenAI 兼容提供商
export CUSTOM_API_KEY="your-custom-api-key"
export DEEPSEEK_API_KEY="your-deepseek-api-key"
export PERPLEXITY_API_KEY="your-perplexity-api-key"
export FIREWORKS_API_KEY="your-fireworks-api-key"
# 云服务提供商
export AZURE_OPENAI_API_KEY="your-azure-key"
export AZURE_OPENAI_API_BASE="https://your-resource.openai.azure.com"
export AWS_ACCESS_KEY_ID="your-aws-access-key"
export AWS_SECRET_ACCESS_KEY="your-aws-secret-key"
export GOOGLE_CLOUD_PROJECT_ID="your-project-id"
export GOOGLE_APPLICATION_CREDENTIALS="/path/to/credentials.json"
# 专用服务提供商
export VOYAGE_API_KEY="your-voyage-api-key"
export JINA_API_KEY="your-jina-api-key"通过灵活配置自定义提供商,您可以充分利用各种 AI 服务,构建最适合您需求的开发环境。