初始化和测试流#
通过本文档,客户可以初始化流并进行测试。
初始化流#
使用代码/提示和流的 yaml 定义创建流文件夹。
从头开始初始化流#
Promptflow 可以创建三种类型的流文件夹
standard(标准):流文件夹的基本结构。
chat(聊天):聊天流专为会话应用程序开发而设计,它以标准流的功能为基础,并为聊天输入/输出和聊天历史记录管理提供增强支持。
evaluation(评估):评估流是特殊类型的流,用于评估流的输出与特定标准和目标的匹配程度。
# Create a flow
pf flow init --flow <flow-name>
# Create a chat flow
pf flow init --flow <flow-name> --type chat
使用 VS Code 资源管理器窗格 > 目录图标 > 右键单击 > “在此目录中新建流”操作。按照弹出的对话框在目标文件夹中初始化您的流。
或者,您可以在提示流窗格 > 快速访问部分使用“创建新流”操作来创建新流
流文件夹的结构
flow.dag.yaml:具有输入/输出、节点、工具和用于创作目的的变体的流定义。
.promptflow/flow.tools.json:包含
flow.dag.yaml
中引用的工具元数据。源代码文件(.py, .jinja2):用户管理,由工具引用的代码脚本。
requirements.txt:此流的 Python 包依赖项。
从现有代码创建#
客户需要将工具脚本的路径传递给 entry
,并且还需要将 promptflow 模板字典传递给 prompt-template
,其中键是工具的输入名称,值是 promptflow 模板的路径。Promptflow CLI 可以使用工具脚本和提示模板从现有文件夹生成 prompt flow 所需的 yaml 定义。
# Create a flow in existing folder
pf flow init --flow <flow-name> --entry <tool-script-path> --function <tool-function-name> --prompt-template <prompt-param-name>=<prompt-tempate-path>
以 customer-intent-extraction 为例,它演示了如何将 langchain 代码转换为 prompt flow。
在这种情况下,promptflow CLI 生成 flow.dag.yaml
、.promptflow/flow.tools.json
和 extract_intent_tool.py
,它是一个流中的 python 工具。
测试流#
注意
测试流将不会创建批处理运行记录,因此无法使用 pf run show-details
等命令获取运行信息。如果要持久化运行记录,请参阅运行和评估流
Promptflow 还提供了测试已初始化流或流节点的方法。它将帮助您快速测试您的流。
VS Code 上用于提示流的视觉编辑器。#
打开流的 flow.dag.yaml 文件。在 yaml 编辑器的顶部,您可以找到“视觉编辑器”操作。使用它来打开具有 GUI 支持的视觉编辑器。
测试流#
客户可以使用 CLI 或 VS Code 扩展来测试流。
# Test flow
pf flow test --flow <flow-name>
# Test flow with specified variant
pf flow test --flow <flow-name> --variant '${<node-name>.<variant-name>}'
流测试的日志和结果将显示在终端中。
Promptflow CLI 将在 .promptflow
中生成测试日志和输出
flow.detail.json:流测试的详细信息,包括每个节点的结果。
flow.log:流测试的日志。
flow.output.json:流测试的结果。
test
函数的返回值是流的输出。
from promptflow.client import PFClient
pf_client = PFClient()
# Test flow
inputs = {"<flow_input_name>": "<flow_input_value>"} # The inputs of the flow.
flow_result = pf_client.test(flow="<flow_folder_path>", inputs=inputs)
print(f"Flow outputs: {flow_result}")
流测试的日志和结果将显示在终端中。
Promptflow CLI 将在 .promptflow
中生成测试日志和输出
flow.detail.json:流测试的详细信息,包括每个节点的结果。
flow.log:流测试的日志。
flow.output.json:流测试的结果。
您可以在默认的 yaml 编辑器或视觉编辑器上使用该操作来触发流测试。请参见下面的快照:
测试流中的单个节点#
客户可以测试流中的单个 python 节点。它将使用客户提供的数据或节点的默认值作为输入。它将仅使用客户指定的节点与输入一起执行。
客户可以执行此命令来测试流。
# Test flow node
pf flow test --flow <flow-name> --node <node-name>
流节点测试的日志和结果将显示在终端中。节点测试的详细信息将生成到 .promptflow/flow-<node-name>.node.detail.json
。
客户可以执行此命令来测试流。test
函数的返回值是节点输出。
from promptflow.client import PFClient
pf_client = PFClient()
# Test not iun the flow
inputs = {<node_input_name>: <node_input_value>} # The inputs of the node.
node_result = pf_client.test(flow=<flow_folder_path>, inputs=inputs, node=<node_name>)
print(f"Node outputs: {node_result}")
流节点测试的日志和结果将显示在终端中。节点测试的详细信息将生成到 .promptflow/flow-<node-name>.node.detail.json
。
提示流扩展在默认的 yaml 编辑器和视觉编辑器中都提供了内联操作来触发单节点运行。
以交互模式测试#
Promptflow CLI 提供了一种为聊天流启动交互式聊天会话的方法。客户可以使用以下命令启动交互式聊天会话
# Chat in the flow
pf flow test --flow <flow-name> --interactive
执行此命令后,客户可以在终端中与聊天流进行交互。客户可以按 Enter 发送消息到聊天流。客户可以通过 ctrl+C 退出。Promptflow CLI 将通过颜色区分不同角色的输出,用户输入、机器人输出、流脚本输出、节点输出。
使用此聊天流来演示如何使用交互模式。
如果流在流接口中包含聊天输入或聊天输出,则在触发流测试时会有选择。如果需要,可以选择交互模式。
当聊天流中连接到流输出的LLM 节点时,Promptflow SDK 会流式传输 LLM 节点的结果。
流结果将按如下所示在终端中流式传输。
LLM 节点 test
函数的返回值是一个生成器,您可以通过这种方式使用结果
from promptflow.client import PFClient
pf_client = PFClient()
# Test flow
inputs = {"<flow_input_name>": "<flow_input_value>"} # The inputs of the flow.
flow_result = pf_client.test(flow="<flow_folder_path>", inputs=inputs)
for item in flow_result["<LLM_node_output_name>"]:
print(item)
调试流中的单个节点#
客户可以通过扩展在 VScode 中调试单个 python 节点。
流中 Python 步骤的断点和调试功能。只需设置断点并使用默认的 yaml 编辑器或视觉编辑器上的调试操作即可。