promptflow.evals.evaluate 模块#

promptflow.evals.evaluate.evaluate(*, evaluation_name: Optional[str] = None, target: Optional[Callable] = None, data: Optional[str] = None, evaluators: Optional[Dict[str, Callable]] = None, evaluator_config: Optional[Dict[str, Dict[str, str]]] = None, azure_ai_project: Optional[Dict] = None, output_path: Optional[str] = None, **kwargs)#
使用内置或自定义评估器评估目标或数据。如果同时提供目标和数据,

数据将通过目标函数运行,然后评估结果。

参数:
  • evaluation_name (可选[str]) – 评估的显示名称。

  • target (可选[Callable]) – 要评估的目标。targetdata 不能都为 None

  • data (可选[str]) – 要评估的数据路径,或者如果设置了目标,则传递给目标的路径。仅支持 .jsonl 格式文件。targetdata 不能都为 None

  • evaluators (可选[Dict[str, Callable]) – 用于评估的评估器。它应该是一个字典,其中键是评估器的别名,值是评估器函数。

  • evaluator_config (可选[Dict[str, Dict[str, str]]) – 评估器的配置。配置应该是一个字典,其中键是评估器名称,值是列映射的字典。列映射应该是一个字典,其中键是评估器输入中的列名,值是输入数据或目标生成的数据中的列名。

  • output_path (可选[str]) – 如果设置,将评估结果保存到的本地文件夹或文件路径。如果提供了文件夹路径,结果将保存到该文件夹中名为 evaluation_results.json 的文件中。

  • azure_ai_project (可选[Dict]) – 如果设置,将评估结果记录到 AI Studio。

返回:

评估结果。

返回类型:

dict

示例:

Evaluate API 可以按如下方式使用

from promptflow.core import AzureOpenAIModelConfiguration
from promptflow.evals.evaluate import evaluate
from promptflow.evals.evaluators import RelevanceEvaluator, CoherenceEvaluator


model_config = AzureOpenAIModelConfiguration(
    azure_endpoint=os.environ.get("AZURE_OPENAI_ENDPOINT"),
    api_key=os.environ.get("AZURE_OPENAI_KEY"),
    azure_deployment=os.environ.get("AZURE_OPENAI_DEPLOYMENT")
)

coherence_eval = CoherenceEvaluator(model_config=model_config)
relevance_eval = RelevanceEvaluator(model_config=model_config)

path = "evaluate_test_data.jsonl"
result = evaluate(
    data=path,
    evaluators={
        "coherence": coherence_eval,
        "relevance": relevance_eval,
    },
    evaluator_config={
        "coherence": {
            "answer": "${data.answer}",
            "question": "${data.question}"
        },
        "relevance": {
            "answer": "${data.answer}",
            "context": "${data.context}",
            "question": "${data.question}"
        }
    }
)