Skip to content

评估样本

评估样本是用于评估和衡量LLM应用程序在特定场景下性能的单个结构化数据实例。它代表AI应用程序预期处理的单个交互单元或特定用例。在Ragas中,评估样本使用SingleTurnSampleMultiTurnSample类表示。

SingleTurnSample

SingleTurnSample表示用户、LLM和预期结果之间的一次性交互。它适用于涉及单个问答对,可能带有额外上下文或参考信息的评估。

示例

以下示例展示了如何为基于RAG的应用程序中的单次交互创建SingleTurnSample实例。在此场景中,用户提出一个问题,AI提供答案。我们将创建一个SingleTurnSample实例来表示此交互,包括任何检索到的上下文、参考答案和评估标准。

from ragas import SingleTurnSample

# 用户的问题
user_input = "法国的首都是什么?"

# 检索到的上下文(例如,从知识库或搜索引擎)
retrieved_contexts = ["巴黎是法国的首都和人口最多的城市。"]

# AI的响应
response = "法国的首都是巴黎。"

# 参考答案(真实情况)
reference = "巴黎"

# 评估标准
rubric = {
    "准确性": "正确",
    "完整性": "高",
    "流畅性": "优秀"
}

# 创建SingleTurnSample实例
sample = SingleTurnSample(
    user_input=user_input,
    retrieved_contexts=retrieved_contexts,
    response=response,
    reference=reference,
    rubric=rubric
)

MultiTurnSample

MultiTurnSample表示人、AI和可选工具之间的多轮交互以及预期的评估结果。它适用于表示在更复杂交互中进行评估的对话代理。在MultiTurnSample中,user_input属性表示一系列消息,这些消息共同构成了人机用户与AI系统之间的多轮对话。这些消息是HumanMessageAIMessageToolMessage类的实例。

示例

以下示例展示了如何为多轮交互创建MultiTurnSample实例。在此场景中,用户想知道纽约市的当前天气。AI助手将使用天气API工具获取信息并回复用户。

from ragas.messages import HumanMessage, AIMessage, ToolMessage, ToolCall

# 用户询问纽约市的天气
user_message = HumanMessage(content="今天纽约市的天气怎么样?")

# AI决定使用天气API工具获取信息
ai_initial_response = AIMessage(
    content="让我为您查看纽约市的当前天气。",
    tool_calls=[ToolCall(name="WeatherAPI", args={"location": "New York City"})]
)

# 工具提供天气信息
tool_response = ToolMessage(content="纽约市阳光明媚,气温为75°F。")

# AI向用户提供最终回复
ai_final_response = AIMessage(content="今天纽约市阳光明媚,气温为75华氏度。")

# 将所有消息组合成列表以表示对话
conversation = [
    user_message,
    ai_initial_response,
    tool_response,
    ai_final_response
]

现在,使用对话创建MultiTurnSample对象,包括任何参考回复和评估标准。

from ragas import MultiTurnSample
# 用于评估的参考回复
reference_response = "向用户提供纽约市的当前天气。"

# 创建MultiTurnSample实例
sample = MultiTurnSample(
    user_input=conversation,
    reference=reference_response,
)