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,EnumROUGE(面向召回的评价替代)类型的枚举。
- 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:
字典