在Azure中运行DAG流程#
要求 - 为了从本教程中受益,您需要:
学习目标 - 在本教程结束时,您应该能够:
从 Python SDK 连接到您的 Azure AI 工作区
创建并开发一个新的promptflow运行
使用评估流程评估运行
动机 - 本指南将引导您完成提示流代码优先体验的主要用户旅程。您将学习如何创建和开发您的第一个提示流,测试和评估它。
0. 安装依赖包#
%pip install -r ../../requirements.txt
1. 连接到 Azure 机器学习工作区#
workspace 是 Azure 机器学习的顶级资源,提供了一个集中化的地方来处理您在使用 Azure 机器学习时创建的所有工件。在本节中,我们将连接到将运行作业的工作区。
1.1 导入所需的库#
import json
# Import required libraries
from azure.identity import DefaultAzureCredential, InteractiveBrowserCredential
# azure version promptflow apis
from promptflow.azure import PFClient
1.2 配置凭证#
我们正在使用DefaultAzureCredential来获取对工作区的访问权限。
DefaultAzureAzureCredential应该能够处理大多数Azure SDK认证场景。
如果这对您不起作用,请参考更多可用的凭据:configure credential example, azure-identity reference doc.
try:
credential = DefaultAzureCredential()
# Check if given credential can get token successfully.
credential.get_token("https://management.azure.com/.default")
except Exception as ex:
# Fall back to InteractiveBrowserCredential in case DefaultAzureCredential not work
credential = InteractiveBrowserCredential()
1.3 获取工作区的句柄#
我们使用配置文件连接到工作区。Azure ML 工作区应配置计算机集群。查看此笔记本以配置工作区
# Get a handle to workspace
pf = PFClient.from_config(credential=credential)
1.4 创建必要的连接#
连接帮助安全地存储和管理与LLM和其他外部工具(例如Azure内容安全)交互所需的密钥或其他敏感凭证。
在这个笔记本中,我们将使用流 web-classification,它在内部使用了连接 azure_open_ai_connection,如果之前没有添加过,我们需要设置这个连接。
按照此说明准备您的Azure OpenAI资源,并获取您的api_key(如果您还没有)。
请前往工作区门户,点击Prompt flow -> Connections -> Create,然后按照指示创建您自己的连接。
了解更多关于connections的信息。
2. 创建一个新的运行#
web-classification 是一个展示使用LLM进行多类别分类的流程。给定一个URL,它将通过少量示例、简单的摘要和分类提示将URL分类到一个网页类别中。
设置流程路径和输入数据#
# load flow
flow = "../../flows/standard/web-classification"
data = "../../flows/standard/web-classification/data.jsonl"
提交运行#
# create run
base_run = pf.run(
flow=flow,
data=data,
column_mapping={
"url": "${data.url}",
},
)
print(base_run)
pf.stream(base_run)
details = pf.get_details(base_run)
details.head(10)
pf.visualize(base_run)
3. 评估你的流程运行结果#
然后你可以使用评估方法来评估你的流程。评估方法也是使用Python或LLM等的流程,用于计算诸如准确性、相关性分数等指标。
在本笔记本中,我们使用eval-classification-accuracy流程进行评估。这是一个展示如何评估分类系统性能的流程。它涉及将每个预测与真实值进行比较,并分配“正确”或“错误”的等级,然后汇总结果以生成诸如准确率等指标,这些指标反映了系统在数据分类方面的表现。
eval_run = pf.run(
flow="../../flows/evaluation/eval-classification-accuracy",
data=data,
run=base_run,
column_mapping={
"groundtruth": "${data.answer}",
"prediction": "${run.outputs.category}",
},
)
pf.stream(eval_run)
details = pf.get_details(eval_run)
details.head(10)
metrics = pf.get_metrics(eval_run)
print(json.dumps(metrics, indent=4))
pf.visualize([base_run, eval_run])
使用不同的变体节点创建另一个运行#
在这个例子中,web-classification的节点summarize_text_content有两个变体:variant_0和variant_1。它们之间的区别在于输入参数:
变体_0:
- inputs:
- deployment_name: gpt-35-turbo
- max_tokens: '128'
- temperature: '0.2'
- text: ${fetch_text_content_from_url.output}
变体_1:
- inputs:
- deployment_name: gpt-35-turbo
- max_tokens: '256'
- temperature: '0.3'
- text: ${fetch_text_content_from_url.output}
你可以在flow.dag.yaml查看整个流程定义
# use the variant1 of the summarize_text_content node.
variant_run = pf.run(
flow=flow,
data=data,
column_mapping={
"url": "${data.url}",
},
variant="${summarize_text_content.variant_1}", # here we specify node "summarize_text_content" to use variant 1 version.
)
pf.stream(variant_run)
details = pf.get_details(variant_run)
details.head(10)
对变体运行进行评估#
eval_flow = "../../flows/evaluation/eval-classification-accuracy"
eval_run_variant = pf.run(
flow=eval_flow,
data="../../flows/standard/web-classification/data.jsonl", # path to the data file
run=variant_run, # use run as the variant
column_mapping={
# reference data
"groundtruth": "${data.answer}",
# reference the run's output
"prediction": "${run.outputs.category}",
},
)
pf.stream(eval_run_variant)
details = pf.get_details(eval_run_variant)
details.head(10)
metrics = pf.get_metrics(eval_run_variant)
print(json.dumps(metrics, indent=4))
pf.visualize([eval_run, eval_run_variant])
下一步#
了解更多关于如何:
在azureml管道中作为组件运行流程:flow in pipeline。