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:']