Azure 中的 flex flow 入门#

作者:  Open on GitHub Open on GitHubOpen on GitHub

学习目标 - 完成本教程后,您应该能够:

  • 使用笔记本编写一个LLM应用程序,并可视化应用程序的跟踪。

  • 将应用程序转换为流程,并针对多行数据进行批量运行。

0. 安装依赖包#

%%capture --no-stderr
%pip install -r ./requirements-azure.txt

1. 连接到工作区#

配置凭证#

我们正在使用DefaultAzureCredential来访问工作区。 DefaultAzureCredential应该能够处理大多数Azure SDK认证场景。

如果这对您不起作用,请参考其他凭据:configure credential example, azure-identity reference doc.

from azure.identity import DefaultAzureCredential, InteractiveBrowserCredential

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 does not work
    credential = InteractiveBrowserCredential()

连接到工作区#

我们使用配置文件连接到工作区。Azure ML 工作区应配置有计算机集群。查看此笔记本以了解如何配置工作区

from promptflow.azure import PFClient

# Connect to the workspace
pf = PFClient.from_config(credential=credential)

创建必要的连接#

连接有助于安全地存储和管理与LLM和其他外部工具(例如Azure内容安全)交互所需的密钥或其他敏感凭证。

在本笔记本中,我们将使用basiceval-code-quality的flex flow,它使用连接open_ai_connection。如果之前没有添加过,我们需要设置这个连接。

要准备您的 Azure OpenAI 资源,请按照这些说明操作,并在没有的情况下获取您的api_key

前往工作区门户,点击提示 -> 连接 -> 创建,然后按照指示创建您自己的连接。 了解更多关于连接的信息。

2. 使用多行数据作为流程批量运行函数。#

创建一个flow.flex.yaml文件来定义一个流程,其入口指向我们定义的python函数。

# Show the flow.flex.yaml content
with open("flow.flex.yaml") as fin:
    print(fin.read())

使用数据文件进行批量运行(包含多行测试数据)#

flow = "."  # Path to the flow directory
data = "./data.jsonl"  # Path to the data file

# Create a run with the flow and data
base_run = pf.run(
    flow=flow,
    data=data,
    column_mapping={
        "text": "${data.text}",
    },
    environment_variables={
        "AZURE_OPENAI_API_KEY": "${open_ai_connection.api_key}",
        "AZURE_OPENAI_ENDPOINT": "${open_ai_connection.api_base}",
    },
    stream=True,
)
details = pf.get_details(base_run)
details.head(10)

3. 评估你的流程#

然后你可以使用一个评估方法来评估你的流程。评估方法也是流程,通常使用LLM来验证生成的输出是否与预期输出匹配。

使用连接设置模型配置#

在Azure中使用Promptflow时,使用连接名称创建一个模型配置对象。 模型配置将在运行流程时连接到云托管的Promptflow实例。

from promptflow.core import AzureOpenAIModelConfiguration

model_config = AzureOpenAIModelConfiguration(
    connection="open_ai_connection",
    azure_deployment="gpt-4o",
)

评估上一批次的运行#

base_run 是我们在上述步骤2中完成的批量运行,用于以“data.jsonl”作为输入的web分类流程。评估过程会获取该base_run的输出,并使用LLM将其与您期望的输出进行比较,然后可视化结果。

eval_flow = "../eval-code-quality/flow.flex.yaml"

eval_run = pf.run(
    flow=eval_flow,
    init={"model_config": model_config},
    data="./data.jsonl",  # path to the data file
    run=base_run,  # specify the base_run as the run you want to evaluate
    column_mapping={
        "code": "${run.outputs.output}",
    },
    stream=True,
)
details = pf.get_details(eval_run)
details.head(10)
import json

metrics = pf.get_metrics(eval_run)
print(json.dumps(metrics, indent=4))
pf.visualize([base_run, eval_run])

下一步#

您已成功运行并评估了您的第一个flex flow。这太棒了!

你可以查看更多示例:

  • Basic Chat: 演示如何创建一个能够记住之前交互并使用对话历史生成下一条消息的聊天机器人。