promptflow.evals.evaluators 模块#

class promptflow.evals.evaluators.BleuScoreEvaluator#

基础类: object

评估器,用于计算两个字符串之间的BLEU分数。

BLEU(双语评估替代)分数通常用于自然语言处理(NLP)和机器翻译。它广泛应用于文本摘要和文本生成的使用场景中。它评估生成的文本与参考文本的匹配程度。BLEU分数的范围从0到1,分数越高表示质量越好。

用法

eval_fn = BleuScoreEvaluator()
result = eval_fn(
    answer="Tokyo is the capital of Japan.",
    ground_truth="The capital of Japan is Tokyo.")

输出格式

{
    "bleu_score": 0.22
}
__call__(*, answer: str, ground_truth: str, **kwargs)#

评估答案与真实值之间的BLEU分数。

Parameters:
  • answer (str) – 要评估的答案。

  • ground_truth (str) – 用于比较的真实值。

Returns:

BLEU分数。

Return type:

字典

class promptflow.evals.evaluators.ChatEvaluator(model_config: Union[AzureOpenAIModelConfiguration, OpenAIModelConfiguration], eval_last_turn: bool = False, parallel: bool = True)#

基础类: object

初始化一个为特定Azure OpenAI模型配置的聊天评估器。

Parameters:
  • model_config (Union[AzureOpenAIModelConfiguration, OpenAIModelConfiguration]) – Azure OpenAI 模型的配置。

  • eval_last_turn (bool) – 设置为True以仅评估对话中的最近一次交流,重点关注最新的用户查询和助手的相应响应。默认为False

  • parallel (bool) – 如果为True,则使用并行执行评估器。否则,使用顺序执行。 默认值为True。

Returns:

一个用于评估和生成“聊天”场景指标的函数。

Return type:

可调用的

用法

chat_eval = ChatEvaluator(model_config)
conversation = [
    {"role": "user", "content": "What is the value of 2 + 2?"},
    {"role": "assistant", "content": "2 + 2 = 4", "context": {
        "citations": [
                {"id": "math_doc.md", "content": "Information about additions: 1 + 2 = 3, 2 + 2 = 4"}
                ]
        }
    }
]
result = chat_eval(conversation=conversation)

输出格式

{
    "evaluation_per_turn": {
        "gpt_retrieval": [1.0, 2.0],
        "gpt_groundedness": [5.0, 2.0],
        "gpt_relevance": [3.0, 5.0],
        "gpt_coherence": [1.0, 2.0],
        "gpt_fluency": [3.0, 5.0]
    }
    "gpt_retrieval": 1.5,
    "gpt_groundedness": 3.5,
    "gpt_relevance": 4.0,
    "gpt_coherence": 1.5,
    "gpt_fluency": 4.0
}
__call__(*, conversation, **kwargs)#

评估聊天场景。

Parameters:

对话 (列表[字典]) – 需要评估的对话。每个回合应包含“角色”和“内容”键。 对于助手的回合,“上下文”键是可选的,并且应包含带有引用列表的“引用”键。

Returns:

聊天场景的分数。

Return type:

字典

class promptflow.evals.evaluators.CoherenceEvaluator(model_config: Union[AzureOpenAIModelConfiguration, OpenAIModelConfiguration])#

基础类: object

初始化一个为特定Azure OpenAI模型配置的一致性评估器。

Parameters:

model_config (Union[AzureOpenAIModelConfiguration, OpenAIModelConfiguration]) – Azure OpenAI 模型的配置。

用法

eval_fn = CoherenceEvaluator(model_config)
result = eval_fn(
    question="What is the capital of Japan?",
    answer="The capital of Japan is Tokyo.")

输出格式

{
    "gpt_coherence": 1.0
}
__call__(*, question: str, answer: str, **kwargs)#

评估一致性。

Parameters:
  • question (str) – 要评估的问题。

  • answer (str) – 要评估的答案。

Returns:

一致性得分。

Return type:

Dict[str, float]

class promptflow.evals.evaluators.ContentSafetyChatEvaluator(project_scope: dict, eval_last_turn: bool = False, parallel: bool = True, credential=None)#

基础类: object

初始化一个内容安全聊天评估器,配置用于评估聊天场景中的内容安全指标。

Parameters:
  • project_scope (dict) – Azure AI 项目的范围。 它包含订阅 ID、资源组和项目名称。

  • eval_last_turn (bool) – 设置为True以仅评估对话中的最近一次交流,重点关注最新的用户查询和助手的相应响应。默认为False

  • parallel (bool) – 如果为True,则使用并行执行评估器。否则,使用顺序执行。 默认值为True。

  • credential (TokenCredential) – 用于连接到 Azure AI 项目的凭证。

Returns:

一个用于评估和生成“聊天”场景指标的函数。

Return type:

可调用的

用法

eval_fn = ContentSafetyChatEvaluator(model_config)
conversation = [
    {"role": "user", "content": "What is the value of 2 + 2?"},
    {"role": "assistant", "content": "2 + 2 = 4"}
]
result = ContentSafetyChatEvaluator(conversation=conversation)

输出格式

{
    "evaluation_per_turn": {
        "violence": ["High", "Low"],
        "violence_score": [7.0, 3.0],
        "violence_reason": "Some reason",
        "sexual": ["High", "Low"],
        "sexual_score": [7.0, 3.0],
        "sexual_reason": "Some reason",
        "self_harm": ["High", "Low"],
        "self_harm_score": [7.0, 3.0],
        "self_harm_reason": "Some reason",
        "hate_unfairness": ["High", "Low"],
        "hate_unfairness_score": [7.0, 3.0],
        "hate_unfairness_reason": "Some reason"
    },
    "violence": "Medium",
    "violence_score": 5.0,
    "sexual": "Medium",
    "sexual_score": 5.0,
    "self_harm": "Medium",
    "self_harm_score": 5.0,
    "hate_unfairness": "Medium",
    "hate_unfairness_score": 5.0,
}
__call__(*, conversation, **kwargs)#

评估“聊天”场景的内容安全指标。

Parameters:

对话 (列表[字典]) – 需要评估的对话。每个回合应包含“角色”和“内容”键。

Returns:

聊天场景的分数。

Return type:

字典

class promptflow.evals.evaluators.ContentSafetyEvaluator(project_scope: dict, parallel: bool = True, credential=None)#

基础类: object

初始化一个内容安全评估器,配置用于评估QA场景中的内容安全指标。

Parameters:
  • project_scope (dict) – Azure AI 项目的范围。 它包含订阅 ID、资源组和项目名称。

  • parallel – 如果为True,则使用并行执行评估器。否则,使用顺序执行。 默认值为True。

  • credential (TokenCredential) – 用于连接到 Azure AI 项目的凭证。

Returns:

一个用于评估“问答”场景内容安全指标的函数。

Return type:

可调用的

用法

project_scope = {
    "subscription_id": "<subscription_id>",
    "resource_group_name": "<resource_group_name>",
    "project_name": "<project_name>",
}
eval_fn = ContentSafetyEvaluator(project_scope)
result = eval_fn(
    question="What is the capital of France?",
    answer="Paris.",
)

输出格式

{
    "violence": "Medium",
    "violence_score": 5.0,
    "violence_reason": "Some reason",
    "sexual": "Medium",
    "sexual_score": 5.0,
    "sexual_reason": "Some reason",
    "self_harm": "Medium",
    "self_harm_score": 5.0,
    "self_harm_reason": "Some reason",
    "hate_unfairness": "Medium",
    "hate_unfairness_score": 5.0,
    "hate_unfairness_reason": "Some reason"
}
__call__(*, question: str, answer: str, **kwargs)#

评估“问答”场景的内容安全指标。

Parameters:
  • question (str) – 要评估的问题。

  • answer (str) – 要评估的答案。

  • parallel (bool) – 是否并行评估。

Returns:

内容安全性的分数。

Return type:

字典

class promptflow.evals.evaluators.F1ScoreEvaluator#

基础类: object

初始化一个f1分数评估器,用于计算F1分数。

用法

eval_fn = F1ScoreEvaluator()
result = eval_fn(
    answer="The capital of Japan is Tokyo.",
    ground_truth="Tokyo is Japan's capital, known for its blend of traditional culture                 and technological advancements.")

输出格式

{
    "f1_score": 0.42
}
__call__(*, answer: str, ground_truth: str, **kwargs)#

评估F1分数。

Parameters:
  • answer (str) – 要评估的答案。

  • ground_truth (str) – 要评估的真实值。

Returns:

F1分数。

Return type:

字典

class promptflow.evals.evaluators.FluencyEvaluator(model_config: Union[AzureOpenAIModelConfiguration, OpenAIModelConfiguration])#

基础类: object

初始化一个为特定Azure OpenAI模型配置的流畅度评估器。

Parameters:

model_config (Union[AzureOpenAIModelConfiguration, OpenAIModelConfiguration]) – Azure OpenAI 模型的配置。

用法

eval_fn = FluencyEvaluator(model_config)
result = eval_fn(
    question="What is the capital of Japan?",
    answer="The capital of Japan is Tokyo.")

输出格式

{
    "gpt_fluency": 4.0
}
__call__(*, question: str, answer: str, **kwargs)#

评估流畅性。

Parameters:
  • question (str) – 要评估的问题。

  • answer (str) – 要评估的答案。

Returns:

流畅度分数。

Return type:

字典

class promptflow.evals.evaluators.GleuScoreEvaluator#

基础类: object

评估器,用于计算两个字符串之间的BLEU分数。

GLEU(Google-BLEU)评分评估器通过评估n-gram重叠来衡量生成文本和参考文本之间的相似性,同时考虑精确率和召回率。这种为句子级别评估设计的平衡评估方法,使其成为翻译质量详细分析的理想选择。GLEU非常适合用于机器翻译、文本摘要和文本生成等用例。

用法

eval_fn = GleuScoreEvaluator()
result = eval_fn(
    answer="Tokyo is the capital of Japan.",
    ground_truth="The capital of Japan is Tokyo.")

输出格式

{
    "gleu_score": 0.41
}
__call__(*, ground_truth: str, answer: str, **kwargs)#

评估答案与真实答案之间的GLEU分数。

Parameters:
  • answer (str) – 要评估的答案。

  • ground_truth (str) – 用于比较的真实值。

Returns:

GLEU分数。

Return type:

字典

class promptflow.evals.evaluators.GroundednessEvaluator(model_config: Union[AzureOpenAIModelConfiguration, OpenAIModelConfiguration])#

基础类: object

初始化一个为特定Azure OpenAI模型配置的groundedness评估器。

Parameters:

model_config (Union[AzureOpenAIModelConfiguration, OpenAIModelConfiguration]) – Azure OpenAI 模型的配置。

用法

eval_fn = GroundednessEvaluator(model_config)
result = eval_fn(
    answer="The capital of Japan is Tokyo.",
    context="Tokyo is Japan's capital, known for its blend of traditional culture                 and technological advancements.")

输出格式

{
    "gpt_groundedness": 5
}
__call__(*, answer: str, context: str, **kwargs)#

评估答案在上下文中的基础性。

Parameters:
  • answer (str) – 要评估的答案。

  • context (str) – 评估答案的上下文。

Returns:

基础性评分。

Return type:

字典

class promptflow.evals.evaluators.HateUnfairnessEvaluator(project_scope: dict, credential=None)#

基础类: object

初始化一个用于仇恨不公平分数的仇恨不公平评估器。

Parameters:
  • project_scope (dict) – Azure AI 项目的范围。 它包含订阅 ID、资源组和项目名称。

  • credential (TokenCredential) – 用于连接到 Azure AI 项目的凭证。

用法

project_scope = {
    "subscription_id": "<subscription_id>",
    "resource_group_name": "<resource_group_name>",
    "project_name": "<project_name>",
}
eval_fn = HateUnfairnessEvaluator(project_scope)
result = eval_fn(question="What is the capital of France?", answer="Paris.")

输出格式

{
    "hate_unfairness": "High",
    "hate_unfairness_score": 6.5,
    "hate_unfairness_reason": "Some reason"
}
__call__(*, question: str, answer: str, **kwargs)#

评估仇恨不公平内容。

Parameters:
  • question (str) – 要评估的问题。

  • answer (str) – 要评估的答案。

Returns:

仇恨不公平分数。

Return type:

字典

class promptflow.evals.evaluators.IndirectAttackEvaluator(project_scope: dict, eval_last_turn: bool = False, credential=None)#

基础类: object

初始化一个XPIA(跨域提示注入攻击)越狱评估器,以检测您的AI系统响应中是否存在跨域注入攻击。

Parameters:
  • project_scope (dict) – Azure AI 项目的范围。 它包含订阅 ID、资源组和项目名称。

  • eval_last_turn (bool) – 设置为True以仅评估对话中的最近一次交流,重点关注最新的用户查询和助手的相应响应。默认为False

  • credential (TokenCredential) – 用于连接到 Azure AI 项目的凭证。

Returns:

一个用于评估和生成XPIA聊天场景指标的函数。指标包括整体评估标签和Q/A对的原因,以及操纵内容、入侵和信息的子标签。

Return type:

可调用的

用法

eval_fn = IndirectAttackEvaluator(model_config)
result = eval_fn(question="What is the capital of France?", answer="Paris.")

问答对的输出格式

{
    'xpia_label': False,
    'xpia_reason': 'The conversation does not contain any manipulated content, intrusion or
                  information gathering.'
    'xpia_information_gathering': False,
    'xpia_intrusion': False
    'xpia_manipulated_content': False
}
__call__(*, question: Optional[str], answer: Optional[str], **kwargs)#

根据对话上下文中是否存在注入的攻击来评估内容,这些攻击旨在通过引发操纵内容、入侵和尝试收集超出您AI系统范围的信息来中断正常的预期功能。

Parameters:
  • 问题 (可选[str]) – 需要评估的问题。与‘conversation’互斥。

  • answer (可选[str]) – 要评估的答案。与‘conversation’互斥。

Returns:

评估分数和推理。

Return type:

字典

class promptflow.evals.evaluators.MeteorScoreEvaluator(alpha: float = 0.9, beta: float = 3.0, gamma: float = 0.5)#

基础类: object

评估器,计算两个字符串之间的METEOR分数。

METEOR(用于评估翻译的显式排序指标)评分器通过将生成的文本与参考文本进行比较来评估生成的文本,重点关注精确度、召回率和内容对齐。它通过考虑同义词、词干和释义来解决其他指标(如BLEU)的局限性。METEOR评分考虑同义词和词干,以更准确地捕捉意义和语言变化。除了机器翻译和文本摘要外,释义检测是METEOR评分的最佳用例。

Parameters:
  • alpha (float) – METEOR 分数的 alpha 参数。默认值为 0.9。

  • beta (float) – METEOR 分数的 beta 参数。默认值为 3.0。

  • gamma (float) – METEOR 分数的 gamma 参数。默认值为 0.5。

用法

eval_fn = MeteorScoreEvaluator(
    alpha=0.9,
    beta=3.0,
    gamma=0.5
)
result = eval_fn(
    answer="Tokyo is the capital of Japan.",
    ground_truth="The capital of Japan is Tokyo.")

输出格式

{
    "meteor_score": 0.62
}
__call__(*, ground_truth: str, answer: str, **kwargs)#

评估答案与真实值之间的METEOR分数。

Parameters:
  • answer (str) – 要评估的答案。

  • ground_truth (str) – 用于比较的真实值。

Returns:

METEOR分数。

Return type:

字典

class promptflow.evals.evaluators.ProtectedMaterialEvaluator(project_scope: dict, credential=None)#

基础类: object

初始化一个受保护材料评估器,以检测您的AI系统的响应中是否存在受保护材料。输出True或False,并附带AI生成的推理。

Parameters:
  • project_scope (dict) – Azure AI 项目的范围。 它包含订阅 ID、资源组和项目名称。

  • credential (TokenCredential) – 用于连接到 Azure AI 项目的凭证。

Returns:

是否在响应中发现了受保护的材料,并附有AI生成的推理。

Return type:

字典[字符串, 字符串]

用法

project_scope = {
    "subscription_id": "<subscription_id>",
    "resource_group_name": "<resource_group_name>",
    "project_name": "<project_name>",
}
eval_fn = ProtectedMaterialEvaluator(project_scope)
result = eval_fn(question="What is the capital of France?", answer="Paris.")

输出格式

{
    "protected_material_label": "False",
    "protected_material_reason": "This question does not contain any protected material."
}
__call__(*, question: str, answer: str, **kwargs)#

评估受保护材料内容。

Parameters:
  • question (str) – 要评估的问题。

  • answer (str) – 要评估的答案。

Returns:

包含布尔标签和推理的字典。

Return type:

字典

class promptflow.evals.evaluators.QAEvaluator(model_config: Union[AzureOpenAIModelConfiguration, OpenAIModelConfiguration], parallel: bool = True)#

基础类: object

初始化一个为特定Azure OpenAI模型配置的问题-答案评估器。

Parameters:

model_config (Union[AzureOpenAIModelConfiguration, OpenAIModelConfiguration]) – Azure OpenAI 模型的配置。

Returns:

一个用于评估和生成“问答”场景指标的函数。

Return type:

可调用的

用法

eval_fn = QAEvaluator(model_config)
result = qa_eval(
    question="Tokyo is the capital of which country?",
    answer="Japan",
    context="Tokyo is the capital of Japan.",
    ground_truth="Japan"
)

输出格式

{
    "gpt_groundedness": 3.5,
    "gpt_relevance": 4.0,
    "gpt_coherence": 1.5,
    "gpt_fluency": 4.0,
    "gpt_similarity": 3.0,
    "f1_score": 0.42
}
__call__(*, question: str, answer: str, context: str, ground_truth: str, **kwargs)#

评估问答场景。

Parameters:
  • question (str) – 要评估的问题。

  • answer (str) – 要评估的答案。

  • context (str) – 要评估的上下文。

  • ground_truth (str) – 要评估的真实值。

  • parallel (bool) – 是否并行评估。默认为 True。

Returns:

QA场景的分数。

Return type:

字典

class promptflow.evals.evaluators.RelevanceEvaluator(model_config: Union[AzureOpenAIModelConfiguration, OpenAIModelConfiguration])#

基础类: object

初始化一个为特定Azure OpenAI模型配置的相关性评估器。

Parameters:

model_config (Union[AzureOpenAIModelConfiguration, OpenAIModelConfiguration]) – Azure OpenAI 模型的配置。

用法

eval_fn = RelevanceEvaluator(model_config)
result = eval_fn(
    question="What is the capital of Japan?",
    answer="The capital of Japan is Tokyo.",
    context="Tokyo is Japan's capital, known for its blend of traditional culture                 and technological advancements.")

输出格式

{
    "gpt_relevance": 3.0
}
__call__(*, question: str, answer: str, context: str, **kwargs)#

评估相关性。

Parameters:
  • question (str) – 要评估的问题。

  • answer (str) – 要评估的答案。

  • context (str) – 要评估的上下文。

Returns:

相关性得分。

Return type:

字典

class promptflow.evals.evaluators.RougeScoreEvaluator(rouge_type: RougeType)#

基础类: object

评估器用于计算两个字符串之间的ROUGE分数。

ROUGE(面向召回的评价替代指标)是一组用于评估自动摘要和机器翻译的指标。它衡量生成文本与参考摘要之间的重叠程度。ROUGE侧重于面向召回的指标,以评估生成文本覆盖参考文本的程度。文本摘要和文档比较是ROUGE的最佳应用场景,特别是在文本连贯性和相关性至关重要的场景中。

用法

eval_fn = RougeScoreEvaluator(rouge_type=RougeType.ROUGE_1)
result = eval_fn(
    answer="Tokyo is the capital of Japan.",
    ground_truth="The capital of Japan is Tokyo.")

输出格式

{
    "rouge_precision": 1.0,
    "rouge_recall": 1.0,
    "rouge_f1_score": 1.0
}
__call__(*, ground_truth: str, answer: str, **kwargs)#

评估答案与真实情况之间的ROUGE分数。

Parameters:
  • answer (str) – 要评估的答案。

  • ground_truth (str) – 用于比较的真实值。

Returns:

ROUGE分数。

Return type:

字典

class promptflow.evals.evaluators.RougeType(value)#

基础:str, Enum

ROUGE(面向召回的评价替代)类型的枚举。

ROUGE_1 = 'rouge1'#

生成文本和参考文本之间的单字重叠(单个单词)。

ROUGE_2 = 'rouge2'#

生成文本和参考文本之间的二元组(两个连续的词)重叠。

ROUGE_3 = 'rouge3'#

生成文本和参考文本之间的三元组(三个连续单词)的重叠。

ROUGE_4 = 'rouge4'#

生成文本和参考文本之间的四元组(四个连续单词)的重叠。

ROUGE_5 = 'rouge5'#

生成文本和参考文本之间的五元组(五个连续单词)的重叠。

ROUGE_L = 'rougeL'#

生成文本和参考文本之间L-grams(L个连续单词)的重叠。

class promptflow.evals.evaluators.SelfHarmEvaluator(project_scope: dict, credential=None)#

基础类: object

初始化一个自残评估器以获取自残分数。

Parameters:
  • project_scope (dict) – Azure AI 项目的范围。 它包含订阅 ID、资源组和项目名称。

  • credential (TokenCredential) – 用于连接到 Azure AI 项目的凭证。

用法

project_scope = {
    "subscription_id": "<subscription_id>",
    "resource_group_name": "<resource_group_name>",
    "project_name": "<project_name>",
}
eval_fn = SelfHarmEvaluator(project_scope)
result = eval_fn(question="What is the capital of France?", answer="Paris.")

输出格式

{
    "self_harm": "High",
    "self_harm_score": 6.5,
    "self_harm_reason": "Some reason"
}
__call__(*, question: str, answer: str, **kwargs)#

评估自残内容。

Parameters:
  • question (str) – 要评估的问题。

  • answer (str) – 要评估的答案。

Returns:

自残分数。

Return type:

字典

class promptflow.evals.evaluators.SexualEvaluator(project_scope: dict, credential=None)#

基础类: object

初始化一个用于性评分的性评估器。

Parameters:
  • project_scope (dict) – Azure AI 项目的范围。 它包含订阅 ID、资源组和项目名称。

  • credential (TokenCredential) – 用于连接到 Azure AI 项目的凭证。

用法

project_scope = {
    "subscription_id": "<subscription_id>",
    "resource_group_name": "<resource_group_name>",
    "project_name": "<project_name>",
}
eval_fn = SexualEvaluator(project_scope)
result = eval_fn(question="What is the capital of France?", answer="Paris.")

输出格式

{
    "sexual": "High",
    "sexual_score": 6.5,
    "sexual_reason": "Some reason"
}
__call__(*, question: str, answer: str, **kwargs)#

评估性内容。

Parameters:
  • question (str) – 要评估的问题。

  • answer (str) – 要评估的答案。

Returns:

性评分。

Return type:

字典

class promptflow.evals.evaluators.SimilarityEvaluator(model_config: Union[AzureOpenAIModelConfiguration, OpenAIModelConfiguration])#

基础类: object

初始化一个为特定Azure OpenAI模型配置的相似度评估器。

Parameters:

model_config (Union[AzureOpenAIModelConfiguration, OpenAIModelConfiguration]) – Azure OpenAI 模型的配置。

用法

eval_fn = SimilarityEvaluator(model_config)
result = eval_fn(
    question="What is the capital of Japan?",
    answer="The capital of Japan is Tokyo.",
    ground_truth="Tokyo is Japan's capital.")

输出格式

{
    "gpt_similarity": 3.0
}
__call__(*, question: str, answer: str, ground_truth: str, **kwargs)#

评估相似性。

Parameters:
  • question (str) – 要评估的问题。

  • answer (str) – 要评估的答案。

  • ground_truth (str) – 要评估的真实值。

Returns:

相似度分数。

Return type:

字典

class promptflow.evals.evaluators.ViolenceEvaluator(project_scope: dict, credential=None)#

基础类: object

初始化一个暴力评估器以获取暴力评分。

Parameters:
  • project_scope (dict) – Azure AI 项目的范围。 它包含订阅 ID、资源组和项目名称。

  • credential (TokenCredential) – 用于连接到 Azure AI 项目的凭证。

用法

project_scope = {
    "subscription_id": "<subscription_id>",
    "resource_group_name": "<resource_group_name>",
    "project_name": "<project_name>",
}
eval_fn = ViolenceEvaluator(project_scope)
result = eval_fn(question="What is the capital of France?", answer="Paris.")

输出格式

{
    "violence": "High",
    "violence_score": 6.5,
    "violence_reason": "Some reason"
}
__call__(*, question: str, answer: str, **kwargs)#

评估暴力内容。

Parameters:
  • question (str) – 要评估的问题。

  • answer (str) – 要评估的答案。

Returns:

暴力分数。

Return type:

字典