LLM 提供商
在 promptfoo 中,提供商是连接各种语言模型和 AI 服务的接口。本指南将帮助您了解如何在 promptfoo 评估中配置和使用提供商。
快速开始
以下是一个在 promptfoo YAML 配置中配置提供商的基本示例:
providers:
- openai:gpt-4o-mini
- anthropic:messages:claude-3-5-sonnet-20240620
- vertex:gemini-pro
可用提供商
| API 提供商 | 描述 | 语法与示例 |
|---|---|---|
| OpenAI | 包括 GPT-4 和 GPT-3.5 的 GPT 模型 | openai:o1-preview |
| Anthropic | Claude 模型 | anthropic:messages:claude-3-5-sonnet-20240620 |
| HTTP | 基于 HTTP 的通用提供商 | https://api.example.com/v1/chat/completions |
| Javascript | 自定义 - JavaScript 文件 | file://path/to/custom_provider.js |
| Python | 自定义 - Python 文件 | file://path/to/custom_provider.py |
| Shell 命令 | 自定义 - 基于脚本的提供商 | exec: python chain.py |
| AI21 Labs | Jurassic 和 Jamba 模型 | ai21:jamba-1.5-mini |
| AWS Bedrock | AWS 托管的来自各提供商的模型 | bedrock:us.meta.llama3-2-90b-instruct-v1:0 |
| Azure OpenAI | Azure 托管的 OpenAI 模型 | azureopenai:gpt-4o-custom-deployment-name |
| Cloudflare AI | Cloudflare 的 AI 平台 | cloudflare-ai:@cf/meta/llama-3-8b-instruct |
| Cohere | Cohere 的语言模型 | cohere:command |
| fal.ai | 图像生成提供商 | fal:image:fal-ai/fast-sdxl |
| Google AI Studio (PaLM) | Gemini 和 PaLM 模型 | google:gemini-pro |
| Google Vertex AI | Google Cloud 的 AI 平台 | vertex:gemini-pro |
| Groq | 高性能推理 API | groq:llama3-70b-8192-tool-use-preview |
| Hugging Face | 访问数千种模型 | huggingface:text-generation:gpt2 |
| IBM BAM | IBM 的基础模型 | bam:chat:ibm/granite-13b-chat-v2 |
| LiteLLM | 多提供商的统一接口 | 兼容 OpenAI 语法 |
| Mistral AI | Mistral 的语言模型 | mistral:open-mistral-nemo |
| OpenLLM | BentoML 的模型服务框架 | 兼容 OpenAI 语法 |
| OpenRouter | 多提供商的统一 API | openrouter:mistral/7b-instruct |
| Perplexity AI | 专注于问答 | 兼容 OpenAI 语法 |
| Replicate | 各种托管模型 | replicate:stability-ai/sdxl |
| Together AI | 各种托管模型 | 兼容 OpenAI 语法 |
| Voyage AI | 专注于嵌入模型 | voyage:voyage-3 |
| vLLM | 本地 | 兼容 OpenAI 语法 |
| Ollama | 本地 | ollama:llama3.2:latest |
| LocalAI | 本地 | localai:gpt4all-j |
| llama.cpp | 本地 | llama:7b |
| WebSocket | 基于 WebSocket 的提供商 | ws://example.com/ws |
| Echo | 自定义 - 用于测试目的 | echo |
| Manual Input | 自定义 - CLI 手动输入 | promptfoo:manual-input |
| Go | 自定义 - Go 文件 | file://path/to/your/script.go |
| Web Browser | 自定义 - 自动化网页浏览器交互 | browser |
| Text Generation WebUI | Gradio WebUI | 兼容 OpenAI 语法 |
| WatsonX | IBM 的 WatsonX | watsonx:ibm/granite-13b-chat-v2 |
提供商语法
提供商使用多种语法选项指定:
-
简单字符串格式:
provider_name:model_name示例:
openai:gpt-4o-mini或anthropic:claude-3-sonnet-20240229 -
带配置的对象格式:
- id: provider_name:model_name
config:
option1: value1
option2: value2示例:
- id: openai:gpt-4o-mini
config:
temperature: 0.7
max_tokens: 150 -
基于文件的配置:
- file://path/to/provider_config.yaml
配置提供商
大多数提供商使用环境变量进行身份验证:
export OPENAI_API_KEY=your_api_key_here
export ANTHROPIC_API_KEY=your_api_key_here
您还可以在配置文件中指定 API 密钥:
providers:
- id: openai:gpt-4o-mini
config:
apiKey: your_api_key_here
自定义集成
promptfoo 支持多种类型的自定义集成:
-
基于文件的提供商:
providers:
- file://path/to/provider_config.yaml -
JavaScript 提供商:
providers:
- file://path/to/custom_provider.js -
Python 提供商:
providers:
- id: file://path/to/custom_provider.py -
HTTP/HTTPS API:
providers:
- id: https://api.example.com/v1/chat/completions
config:
headers:
Authorization: 'Bearer your_api_key' -
WebSocket:
providers:
- id: ws://example.com/ws
config:
messageTemplate: '{"prompt": "{{prompt}}"}' -
自定义脚本:
providers:
- 'exec: python chain.py'
常见配置选项
许多提供商支持这些常见配置选项:
temperature:控制随机性(0.0 到 1.0)max_tokens:生成的最大令牌数top_p:核采样参数frequency_penalty:惩罚频繁的令牌presence_penalty:基于文本中存在的令牌进行惩罚stop:API 将停止生成进一步令牌的序列
示例:
providers:
- id: openai:gpt-4o-mini
config:
temperature: 0.7
max_tokens: 150
top_p: 0.9
frequency_penalty: 0.5
presence_penalty: 0.5
stop: ["\n", 'Human:', 'AI:']