基于函数的流程#

实验性功能

这是一个实验性功能,可能会随时更改。了解更多更多

用户可以直接使用函数作为流程入口。

函数作为流程#

假设我们有一个文件 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中查看。更多信息请查看这里

流程测试#

通过函数调用测试#

由于flow的定义是普通的python函数/可调用类。我们建议用户像运行其他脚本一样直接运行它:

from flow_entry import my_flow

if __name__ == "__main__":
    output = my_flow(question="What's the capital of France?")
    print(output)

转换为流程并进行测试#

还支持将您的函数入口转换为流程,并利用提示流的能力进行测试。

您可以使用以下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

了解更多:部署流程

下一步#