Ragas Ragas
stable · 中文译文
中文译文 · 原文:https://docs.ragas.io/en/stable/tutorials/prompt/ · 许可证 Apache-2.0

Prompt 评测

在本教程中,我们将编写一个简单的评测流水线,来评测 AI 系统中的一个 prompt,这里是电影评论情感分类器。教程结束时,你将学会如何用评测驱动开发来评测并迭代单个 prompt。

flowchart LR
    A["'This movie was amazing!<br/>Great acting and plot.'"] --> B["Classifier Prompt"]
    B --> C["Positive"]

我们将从一个把电影评论分类为正面或负面的简单 prompt 开始测试。

首先,确保你已经安装了 ragas examples 并设置了 OpenAI API key:

pip install ragas[examples]
export OPENAI_API_KEY = "your_openai_api_key"

现在测试该 prompt:

python -m ragas_examples.prompt_evals.prompt

这会测试输入 "The movie was fantastic and I loved every moment of it!",并应输出 "positive"。

💡 快速开始:如果你想直接看到完整评测的效果,可以跳到端到端命令,它会运行全部流程并自动生成 CSV 结果。

接下来,我们会为 prompt 写下若干样本输入和期望输出,然后把它们转换成 CSV 文件。

import pandas as pd

samples = [{"text": "I loved the movie! It was fantastic.", "label": "positive"},
    {"text": "The movie was terrible and boring.", "label": "negative"},
    {"text": "It was an average film, nothing special.", "label": "positive"},
    {"text": "Absolutely amazing! Best movie of the year.", "label": "positive"}]
pd.DataFrame(samples).to_csv("datasets/test_dataset.csv", index=False)

现在我们需要一种方法来衡量 prompt 在这项任务上的表现。我们将定义一个指标,把 prompt 的输出与期望输出比较,并据此输出 pass/fail。

from ragas.metrics import discrete_metric
from ragas.metrics.result import MetricResult

@discrete_metric(name="accuracy", allowed_values=["pass", "fail"])
def my_metric(prediction: str, actual: str):
    """Calculate accuracy of the prediction."""
    return MetricResult(value="pass", reason="") if prediction == actual else MetricResult(value="fail", reason="")

接下来,我们将编写实验循环:在测试数据集上运行 prompt,用该指标评测,并把结果存到 csv 文件中。

from ragas import experiment

@experiment()
async def run_experiment(row):

    response = run_prompt(row["text"])
    score = my_metric.score(
        prediction=response,
        actual=row["label"]
    )

    experiment_view = {
        **row,
        "response":response,
        "score":score.value,
    }
    return experiment_view

现在无论何时你改了 prompt,都可以运行实验,看看它如何影响 prompt 的表现。

传入额外参数

你可以把模型或配置等额外参数传给实验函数:

@experiment()
async def run_experiment(row, model):
    response = run_prompt(row["text"], model=model)
    score = my_metric.score(
        prediction=response,
        actual=row["label"]
    )

    experiment_view = {
        **row,
        "response": response,
        "score": score.value,
    }
    return experiment_view

# Run with specific parameters
run_experiment.arun(dataset, "gpt-4")

# Or use keyword arguments
run_experiment.arun(dataset, model="gpt-4o")

端到端运行示例

  1. 设置你的 OpenAI API key

bash export OPENAI_API_KEY = "your_openai_api_key"

  1. 运行评测

bash python -m ragas_examples.prompt_evals.evals

这将会:

  • 用示例电影评论创建测试数据集
  • 在每个样本上运行情感分类 prompt
  • 用 accuracy 指标评测结果
  • 把全部内容连同结果导出到 CSV 文件

搞定!你已经成功用 Ragas 跑完第一次评测。现在可以通过打开 experiments/experiment_name.csv 文件来查看结果。