评测一个简单的 LLM 应用
本指南旨在说明用 ragas 测试并评测 LLM 应用的简单工作流。假定你对 AI 应用构建与评测仅有最少了解。安装 ragas 请参阅我们的安装说明
获取可运行示例
要最快看到这些概念实际运作,可用 quickstart 命令创建一个项目:
uvx ragas quickstart rag_eval
cd rag_eval
uv sync
pip install ragas
ragas quickstart rag_eval
cd rag_eval
uv sync
这会生成一个带有示例代码的完整项目。跟着本指南走,就能理解生成代码里发生了什么。开始吧!
项目结构
下面是为你创建的内容:
rag_eval/
├── README.md # Project documentation and setup instructions
├── pyproject.toml # Project configuration for uv and pip
├── evals.py # Your evaluation workflow
├── rag.py # Your RAG/LLM application
├── __init__.py # Makes this a Python package
└── evals/ # Evaluation artifacts
├── datasets/ # Test data files (optional)
├── experiments/ # Results from running evaluations (CSV files saved here)
└── logs/ # Evaluation execution logs
重点关注的文件:
evals.py- 你的评测工作流,包含数据集加载与评测逻辑rag.py- 你的 RAG/LLM 应用代码(查询引擎、检索等)
理解代码
在生成项目的 evals.py 文件中,你会看到主要工作流模式:
- 加载数据集 - 用
SingleTurnSample定义测试用例 - 查询 RAG 系统 - 从你的应用获取响应
- 评测响应 - 对照标准答案验证响应
- 展示结果 - 在控制台显示评测摘要
- 保存结果 - 自动保存为
evals/experiments/目录下的 CSV
模板提供了可自定义的模块化函数:
from ragas.dataset_schema import SingleTurnSample
from ragas import EvaluationDataset
def load_dataset():
"""Load test dataset for evaluation."""
data_samples = [
SingleTurnSample(
user_input="What is Ragas?",
response="", # Will be filled by querying RAG
reference="Ragas is an evaluation framework for LLM applications",
retrieved_contexts=[],
),
# Add more test cases...
]
return EvaluationDataset(samples=data_samples)
你可以用指标和更复杂的评测逻辑扩展它。了解更多关于 Ragas 中的评测。
选择 LLM 提供商
你的 quickstart 项目默认在 _init_clients() 函数中初始化 OpenAI LLM。你可以通过 llm_factory 轻松换成任意提供商:
设置你的 OpenAI API key:
export OPENAI_API_KEY="your-openai-key"
在你的 evals.py 的 _init_clients() 函数中:
from ragas.llms import llm_factory
llm = llm_factory("gpt-4o")
这已经在你的 quickstart 项目中设置好了!
设置你的 Anthropic API key:
export ANTHROPIC_API_KEY="your-anthropic-key"
在你的 evals.py 的 _init_clients() 函数中:
from ragas.llms import llm_factory
llm = llm_factory("claude-3-5-sonnet-20241022", provider="anthropic")
设置你的 Google 凭证:
export GOOGLE_API_KEY="your-google-api-key"
在你的 evals.py 的 _init_clients() 函数中:
from ragas.llms import llm_factory
llm = llm_factory("gemini-1.5-pro", provider="google")
在本地安装并运行 Ollama,然后在你的 evals.py 的 _init_clients() 函数中:
from ragas.llms import llm_factory
llm = llm_factory(
"mistral",
provider="ollama",
base_url="http://localhost:11434" # Default Ollama URL
)
对于任何具备 OpenAI 兼容 API 的 LLM:
from ragas.llms import llm_factory
llm = llm_factory(
"model-name",
api_key="your-api-key",
base_url="https://your-api-endpoint"
)
更多细节,请了解 LLM 集成。
使用预置指标
ragas 提供了面向常见评测任务的预置指标。例如,Aspect Critique(方面批判) 使用 DiscreteMetric 评测输出的任意方面:
from ragas.metrics import DiscreteMetric
from ragas.llms import llm_factory
# Setup your evaluator LLM
evaluator_llm = llm_factory("gpt-4o")
# Create a custom aspect evaluator
metric = DiscreteMetric(
name="summary_accuracy",
allowed_values=["accurate", "inaccurate"],
prompt="""Evaluate if the summary is accurate and captures key information.
Response: {response}
Answer with only 'accurate' or 'inaccurate'.""",
llm=evaluator_llm
)
# Score your application's output
score = await metric.ascore(
response="The summary of the text is..."
)
print(f"Score: {score.value}") # 'accurate' or 'inaccurate'
print(f"Reason: {score.reason}")
像这样的预置指标让你不必从零定义评测逻辑。浏览全部可用指标。
信息
ragas 中还有许多其他类型的指标(带或不带 reference),如果都不适合你的场景,你也可以创建自己的指标。要进一步了解,请查看更多关于指标的内容。
在数据集上评测
在你的 quickstart 项目中,你会在 load_dataset() 函数里看到如何用多个样本创建测试数据:
from ragas import Dataset
# Create a dataset with multiple test samples
dataset = Dataset(
name="test_dataset",
backend="local/csv", # Can also use JSONL, Google Drive, or in-memory
root_dir=".",
)
# Add samples to the dataset
data_samples = [
{
"user_input": "What is ragas?",
"response": "Ragas is an evaluation framework...",
"expected": "Ragas provides objective metrics..."
},
{
"user_input": "How do metrics work?",
"response": "Metrics score your application...",
"expected": "Metrics evaluate performance..."
},
]
for sample in data_samples:
dataset.append(sample)
# Save to disk
dataset.save()
这样你就有了多个测试用例,而不是一次只评测一个示例。了解更多关于数据集与实验。
生成的项目在 evals/datasets/ 文件夹中包含示例数据——你可以编辑这些文件以添加更多测试用例。
想借助评测改进你的 AI 应用?
过去 2 年里,我们见过并用评测帮助改进了许多 AI 应用。
我们正在把这些知识压缩进一个产品,用评测循环取代凭感觉检查,让你能专注于打造出色的 AI 应用。
如果你想借助评测改进并规模化你的 AI 应用。
🔗 预约一个时段,或写信给我们:founders@vibrantlabs.com。