Skip to main content

HuggingFace

promptfoo 支持 HuggingFace Inference API,用于文本生成、分类和嵌入相关任务。

要运行模型,请指定任务类型和模型名称。支持的模型包括:

  • huggingface:text-generation:<模型名称>
  • huggingface:text-classification:<模型名称>
  • huggingface:token-classification:<模型名称>
  • huggingface:feature-extraction:<模型名称>
  • huggingface:sentence-similarity:<模型名称>

示例

例如,使用 GPT-2 进行自动补全:

huggingface:text-generation:gpt2

使用 Mistral 生成文本:

huggingface:text-generation:mistralai/Mistral-7B-v0.1

使用 sentence-transformers 进行嵌入相似度计算:

# 模型支持句子相似度 API
huggingface:sentence-similarity:sentence-transformers/all-MiniLM-L6-v2

# 模型支持特征提取 API
huggingface:feature-extraction:sentence-transformers/paraphrase-xlm-r-multilingual-v1

配置

支持以下常见的 HuggingFace 配置参数:

参数类型描述
top_k数字通过 top-k 采样策略控制多样性。
top_p数字通过核采样控制多样性。
temperature数字控制生成中的随机性。
repetition_penalty数字重复惩罚。
max_new_tokens数字要生成的最大新标记数。
max_time数字模型响应的最大时间(秒)。
return_full_text布尔值是否返回完整文本或仅返回新文本。
num_return_sequences数字要返回的序列数量。
do_sample布尔值是否对输出进行采样。
use_cache布尔值是否使用缓存。
wait_for_model布尔值是否等待模型准备就绪。这对于解决“模型当前正在加载”错误很有用

此外,config 对象上的任何其他键都会直接传递给 HuggingFace。请确保检查您使用的模型支持的特定参数。

该提供程序还支持以下内置的 promptfoo 参数:

参数类型描述
apiKey字符串您的 HuggingFace API 密钥。
apiEndpoint字符串模型的自定义 API 端点。

支持的环境变量:

  • HF_API_TOKEN - 您的 HuggingFace API 密钥

该提供程序可以将配置参数传递给 API。请参阅 文本生成参数特征提取参数

以下是该提供程序可能出现在您的 promptfoo 配置中的示例:

providers:
- id: huggingface:text-generation:mistralai/Mistral-7B-v0.1
config:
temperature: 0.1
max_length: 1024

推理端点

HuggingFace 提供了付费的私有托管推理端点。首先,前往 创建新端点 并选择模型和托管设置。

huggingface 推理端点创建

端点创建后,获取页面显示的 端点 URL

huggingface 推理端点 URL

然后像这样设置您的 promptfoo 配置:

description: 'HF 私有推理端点'

prompts:
- '写一条关于{{topic}}的推文:'

providers:
- id: huggingface:text-generation:gemma-7b-it
config:
apiEndpoint: https://v9igsezez4ei3cq4.us-east-1.aws.endpoints.huggingface.cloud
# apiKey: abc123 # 或者设置 HF_API_TOKEN 环境变量

tests:
- vars:
topic: 香蕉
- vars:
topic: 土豆

本地推理

如果你在本地运行 Huggingface 文本生成推理 服务器,请覆盖 apiEndpoint

providers:
- id: huggingface:text-generation:my-local-model
config:
apiEndpoint: http://127.0.0.1:8080/generate