文档 / LLM 提示词的 A/B 测试
LLM 提示词的 A/B 测试
Langfuse 提示词管理通过允许你为提示词的不同版本打标签(例如 prod-a 和 prod-b)来支持 A/B 测试。你的应用可以在这些版本之间随机交替,而 Langfuse 会追踪每个版本的性能指标,如响应延迟、成本、token 用量和评估指标。
何时使用 A/B 测试?
A/B 测试帮助你看到不同提示词版本在真实场景中的表现,作为数据集测试之外的补充。它在以下情况效果最好:
- 你的应用有良好的成功度量方式,能处理多种不同的用户输入,并能承受一定的性能波动。这通常适用于错误影响不大的消费级应用。
- 你已经在测试数据上充分测试过,想在向所有用户推出之前,先在一小部分用户身上试用你的变更(也称为金丝雀部署)。
实现
1. 标记提示词版本
为你的提示词版本打标签(例如 prod-a 和 prod-b),以标识用于测试的不同变体。
2. 获取提示词并运行 A/B 测试
python
from langfuse import get_client
import random
from langfuse.openai import openai
# Requires environment variables for initialization
from langfuse import get_client
langfuse = get_client()
# Fetch prompt versions
prompt_a = langfuse.get_prompt("my-prompt-name", label="prod-a")
prompt_b = langfuse.get_prompt("my-prompt-name", label="prod-b")
# Randomly select version
selected_prompt = random.choice([prompt_a, prompt_b])
# Use in LLM call
response = openai.chat.completions.create(
model="gpt-3.5-turbo",
messages=[{"role": "user", "content": selected_prompt.compile(variable="value")}],
# Link prompt to generation for analytics
langfuse_prompt=selected_prompt
)
result_text = response.choices[0].message.content
js
import { LangfuseClient } from "@langfuse/client";
import { observeOpenAI } from "@langfuse/openai";
import OpenAI from "openai";
// Requires environment variables for initialization
const langfuse = new LangfuseClient();
// Create and wrap OpenAI client
const openai = observeOpenAI(new OpenAI());
// Fetch prompt versions
const promptA = await langfuse.prompt.get("my-prompt-name", {
label: "prod-a",
});
const promptB = await langfuse.prompt.get("my-prompt-name", {
label: "prod-b",
});
// Randomly select version
const selectedPrompt = Math.random() < 0.5 ? promptA : promptB;
// Use in LLM call
const completion = await openai.chat.completions.create({
model: "gpt-3.5-turbo",
messages: [
{
role: "user",
content: selectedPrompt.compile({ variable: "value" }),
},
],
// Link prompt to generation for analytics
langfusePrompt: selectedPrompt,
});
const resultText = completion.choices[0].message.content;
关于如何获取和使用提示词的更多示例,请参阅提示词管理文档。
3. 分析结果
在 Langfuse UI 中对比每个提示词版本的指标:
可用于对比的关键指标:
- 响应延迟和 token 用量
- 每次请求的成本
- 质量评估分数
- 你定义的自定义指标
相关资源
- 要在数据集上对完整应用行为做基准测试(而不仅是提示词选择),请使用实验。