自定义提供商
自定义提供商系统允许用户扩展 MyDeskBot 的功能,集成各种第三方服务和自定义数据源,创建个性化的 AI 开发环境。
提供商类型
官方支持的提供商
MyDeskBot 支持多个主流 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: "${{ secrets.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: "${{ secrets.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: "${{ secrets.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: "${{ secrets.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 Server 配置
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: "${{ secrets.AZURE_OPENAI_API_KEY }}"
apiBase: "${{ secrets.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: "${{ secrets.AWS_ACCESS_KEY_ID }}"
secretAccessKey: "${{ secrets.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: "${{ secrets.GOOGLE_CLOUD_PROJECT_ID }}"
location: "us-central1"
credentials: "${{ secrets.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: "${{ secrets.OPENAI_API_KEY }}"
roles: ["embed"]
# Cohere 嵌入
- name: "cohere-embed"
provider: "cohere"
model: "embed-english-v3.0"
apiKey: "${{ secrets.COHERE_API_KEY }}"
roles: ["embed"]
# Voyage AI 嵌入
- name: "voyage-embed"
provider: "openai-compatible"
model: "voyage-large-2"
apiKey: "${{ secrets.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: "${{ secrets.COHERE_API_KEY }}"
roles: ["rerank"]
# Jina AI 重排序
- name: "jina-rerank"
provider: "openai-compatible"
model: "jina-reranker-v1-base-en"
apiKey: "${{ secrets.JINA_API_KEY }}"
apiBase: "https://api.jina.ai/v1"
roles: ["rerank"]自定义请求选项
请求头配置
yaml
models:
- name: "custom-headers"
provider: "openai-compatible"
model: "custom-model"
apiKey: "${{ secrets.API_KEY }}"
apiBase: "https://api.example.com/v1"
requestOptions:
headers:
"X-Custom-Header": "value"
"User-Agent": "MyDeskBot/1.0"
roles: ["chat"]
defaultCompletionOptions:
temperature: 0.7
maxTokens: 2000超时和重试配置
yaml
models:
- name: "timeout-config"
provider: "openai"
model: "gpt-4"
apiKey: "${{ secrets.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
# ~/.mydeskbot/.env
OPENAI_API_KEY=sk-proj-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
ANTHROPIC_API_KEY=sk-ant-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
GROQ_API_KEY=gsk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
# OpenAI 兼容的提供商
CUSTOM_API_KEY=your-custom-api-key
DEEPSEEK_API_KEY=your-deepseek-api-key
PERPLEXITY_API_KEY=your-perplexity-api-key
FIREWORKS_API_KEY=your-fireworks-api-key
# 云服务提供商
AZURE_OPENAI_API_KEY=your-azure-key
AZURE_OPENAI_API_BASE=https://your-resource.openai.azure.com
AWS_ACCESS_KEY_ID=your-aws-access-key
AWS_SECRET_ACCESS_KEY=your-aws-secret-key
GOOGLE_CLOUD_PROJECT_ID=your-project-id
GOOGLE_APPLICATION_CREDENTIALS=/path/to/credentials.json
# 专业服务提供商
VOYAGE_API_KEY=your-voyage-api-key
JINA_API_KEY=your-jina-api-key通过灵活的自定义提供商配置,您可以充分利用各种 AI 服务,构建最适合您需求的开发环境。