Skip to main content

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
AnthropicClaude 模型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 LabsJurassic 和 Jamba 模型ai21:jamba-1.5-mini
AWS BedrockAWS 托管的来自各提供商的模型bedrock:us.meta.llama3-2-90b-instruct-v1:0
Azure OpenAIAzure 托管的 OpenAI 模型azureopenai:gpt-4o-custom-deployment-name
Cloudflare AICloudflare 的 AI 平台cloudflare-ai:@cf/meta/llama-3-8b-instruct
CohereCohere 的语言模型cohere:command
fal.ai图像生成提供商fal:image:fal-ai/fast-sdxl
Google AI Studio (PaLM)Gemini 和 PaLM 模型google:gemini-pro
Google Vertex AIGoogle Cloud 的 AI 平台vertex:gemini-pro
Groq高性能推理 APIgroq:llama3-70b-8192-tool-use-preview
Hugging Face访问数千种模型huggingface:text-generation:gpt2
IBM BAMIBM 的基础模型bam:chat:ibm/granite-13b-chat-v2
LiteLLM多提供商的统一接口兼容 OpenAI 语法
Mistral AIMistral 的语言模型mistral:open-mistral-nemo
OpenLLMBentoML 的模型服务框架兼容 OpenAI 语法
OpenRouter多提供商的统一 APIopenrouter: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 WebUIGradio WebUI兼容 OpenAI 语法
WatsonXIBM 的 WatsonXwatsonx:ibm/granite-13b-chat-v2

提供商语法

提供商使用多种语法选项指定:

  1. 简单字符串格式:

    provider_name:model_name

    示例:openai:gpt-4o-minianthropic:claude-3-sonnet-20240229

  2. 带配置的对象格式:

    - id: provider_name:model_name
    config:
    option1: value1
    option2: value2

    示例:

    - id: openai:gpt-4o-mini
    config:
    temperature: 0.7
    max_tokens: 150
  3. 基于文件的配置:

    - 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 支持多种类型的自定义集成:

  1. 基于文件的提供商:

    providers:
    - file://path/to/provider_config.yaml
  2. JavaScript 提供商:

    providers:
    - file://path/to/custom_provider.js
  3. Python 提供商:

    providers:
    - id: file://path/to/custom_provider.py
  4. HTTP/HTTPS API:

    providers:
    - id: https://api.example.com/v1/chat/completions
    config:
    headers:
    Authorization: 'Bearer your_api_key'
  5. WebSocket:

    providers:
    - id: ws://example.com/ws
    config:
    messageTemplate: '{"prompt": "{{prompt}}"}'
  6. 自定义脚本:

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