基于函数的流#
实验性功能
这是一个实验性功能,随时可能更改。了解更多。
用户可以直接使用函数作为流的入口。
函数作为流#
假设我们有一个文件 flow_entry.py
from promptflow.tracing import trace
class Reply(TypedDict):
output: str
@trace
def my_flow(question: str) -> Reply:
# flow logic goes here
pass
注意 使用 @trace
装饰的函数将发出可在 PromptFlow 提供的 UI 中查看的跟踪。有关更多信息,请查看此处。
流测试#
通过函数调用进行测试#
由于流的定义是正常的 Python 函数/可调用类。我们建议用户直接像运行其他脚本一样运行它
from flow_entry import my_flow
if __name__ == "__main__":
output = my_flow(question="What's the capital of France?")
print(output)
转换为流并测试#
还支持将您的函数入口转换为流并使用 Prompt Flow 的能力进行测试。
您可以使用以下 CLI 进行测试
# flow entry syntax: path.to.module:function_name
pf flow test --flow flow_entry:my_flow --inputs question="What's the capital of France?"
注意:目前此命令将在您的工作目录中生成一个 flow.flex.yaml。这将成为流的入口。
在此处查看完整示例:basic
与流聊天#
启动 UI 以与流聊天
pf flow test --flow flow_entry:my_flow --inputs question="What's the capital of France?" --ui
有关更多信息,请查看此处。
批量运行#
用户还可以批量运行流。
pf run create --flow "path.to.module:function_name" --data "./data.jsonl"
from path.to.module import my_flow
# Note directly run function in `pf.run` is only supported in local PFClient for now
pf.run(flow=my_flow, data="./data.jsonl")
# user can also directly use entry in `flow` param for batch run
pf.run(flow="path.to.module:function_name", data="./data.jsonl")
在此主题上了解更多信息:运行和评估流
定义流 YAML#
用户可以手动编写一个名为 flow.flex.yaml
的 YAML 文件,或将函数/可调用入口保存到 YAML 文件中。这是高级场景(如部署或在云中运行)所必需的。流 YAML 可能如下所示
$schema: https://azuremlschemas.azureedge.net/promptflow/latest/Flow.schema.json
entry: path.to.module:function_name
sample:
inputs:
question: "what's the capital of France?"
使用 YAML 批量运行#
用户可以使用 YAML 批量运行流。
# against flow file
pf run create --flow "path/to/flow/flow.flex.yaml" --data "./data.jsonl"
# against a folder if it has a flow.flex.yaml file
pf run create --flow "path/to/flow" --data "./data.jsonl"
pf = PFClient()
pf.run(flow="./flow.flex.yaml", data="./data.jsonl")
部署流#
用户可以将流作为 HTTP 端点在本地提供服务,或将其部署到多个平台。
# serve locally from a folder if it has a flow.flex.yaml file
pf flow serve --source "path/to/flow/dir" --port 8088 --host localhost
# serve locally from certain file
pf flow serve --source "./flow.flex.yaml" --port 8088 --host localhost
了解更多:部署流。