虽然大型语言模型(LLM)的工作原理对许多开发者来说可能难以捉摸,但 LLM 应用的工作原理并非如此——它们本质上涉及一系列对外部服务(如 LLM/数据库/搜索引擎)的调用,或中间数据处理,所有这些都被整合在一起。
流#
灵活流 (Flex flow)#
你可以使用 Python 函数或类作为入口点来创建 LLM 应用,它封装了你的应用逻辑。你可以直接用纯代码体验来测试或运行这些应用。或者你可以定义一个指向这些入口的 flow.flex.yaml 文件,这使得你可以通过 Promptflow VS Code 扩展来测试、运行或查看跟踪。
我们的示例也应该能让你了解如何编写 灵活流。
DAG 流#
因此,LLM 应用可以定义为函数调用的有向无环图(DAG)。这些 DAG 就是 Prompt flow 中的流。
Prompt flow 中的 DAG 流 是函数的 DAG(我们称它们为工具)。这些函数/工具通过输入/输出依赖关系连接,并由 Prompt flow 执行器根据拓扑结构执行。
流表示为一个 YAML 文件,并可以使用我们的 Prompt flow for VS Code 扩展进行可视化。这是一个 flow.dag.yaml 示例:

请参阅我们的示例以了解如何编写 DAG 流。
何时使用灵活流或 DAG 流#
DAG 流 提供了一种用户界面友好的方式来开发你的 LLM 应用,具有以下优点:
低代码:用户可以在 UI 中拖放来创建 LLM 应用。
DAG 可视化:用户可以通过 DAG 视图轻松理解应用的逻辑结构。
灵活流 提供了一种代码友好的方式来开发你的 LLM 应用,具有以下优点:
快速启动:用户可以快速测试一个简单的提示,然后使用 Python 代码和追踪可视化 UI 进行定制。
更高级的编排:用户可以使用 Python 内置的控制操作符(if-else, foreach)或其他第三方/开源库来编写复杂的流。
从其他平台轻松上手:用户可能已经使用现有代码在
langchain和semantic kernel等平台上上手。用户只需进行少量代码更改即可轻松上手 Promptflow。
流类型#
Prompt flow 示例将流分为三类:
标准流 或 聊天流:这两种流用于开发你的 LLM 应用。两者之间的主要区别在于“聊天流”为聊天应用提供了额外的支持。例如,你可以为你的流定义
chat_history、chat_input和chat_output。Prompt flow 反过来将在流开发过程中提供类似聊天的体验(包括会话历史记录)。此外,它还为部署目的提供了一个示例聊天应用。评估流 用于测试/评估你的 LLM 应用(标准/聊天流)的质量。它通常在标准/聊天流的输出上运行,并计算一些指标,这些指标可用于确定标准/聊天流是否表现良好。例如,答案是否准确?答案是否基于事实?
灵活流 示例
基本:一个使用函数入口定义的标准流基本示例,它使用存储在环境变量中的连接信息调用 Azure OpenAI。
聊天-基本:一个使用类入口定义的聊天流基本示例。它演示了如何创建一个能够记住以前交互并使用会话历史记录生成下一条消息的聊天机器人。
代码质量评估:一个使用函数入口定义的示例流,演示了如何评估代码片段的质量。
DAG 流 示例