与 LangChain 集成

提示流还可与 LangChain python 库一起使用,这个库是用于开发由 LLM、代理和依赖项工具提供支持的应用程序的框架。 本文档介绍如何在提示流上增强 LangChain 开发。

使用 LangChain python 库的流的屏幕截图。

我们将介绍以下部分:

LangChain 集成的优势

我们认为 LangChain 和提示流集成是一个强大的组合,可帮助你轻松生成和测试自定义语言模型,尤其是当你可能想要使用 LangChain 模块来开始生成你的流,然后使用我们的提示流轻松缩放试验来进行批量测试、评估,再最终部署时。

  • 为更大规模的试验 - 数秒内转换现有 LangChain 开发。如果已基于 LangChain 代码在本地开发了演示提示流,那么通过提示流中的简化集成,你可轻松地将其转换为流来进行进一步试验,例如,你可根据更大的数据集进行更大规模的试验。
  • 对于更熟悉的流工程,基于熟悉的 Python SDK 轻松生成提示流。 如果你已经熟悉 LangChain SDK,并且更喜欢直接使用其类和函数,那么通过直观的流生成 python 节点,你能够基于自定义 Python 代码轻松生成流。

如何将 LangChain 代码转换为流

假设你已在本地拥有自己的 LangChain 代码,并且该代码已经过适当测试并做好部署准备。 若要将该代码转换为平台上可运行的流,需要按照以下步骤操作。

环境和计算会话的先决条件

可以通过在流文件夹中的 requirements.txt 文件中添加包来自定义用于运行此流的环境。 详细了解计算会话

将凭据转换为提示流连接

开发 LangChain 代码时,可能使用定义环境变量来存储凭据,例如 AzureOpenAI API 密钥,这是调用 AzureOpenAI 模型所必需的。

LangChain 中的 Azuure OpenAI 示例图。

建议在提示流中将凭据从环境变量转换为连接,而不是在代码中直接编码凭据,并在云中运行 LangChain 代码时将其公开为环境变量。 这样就可以安全地将凭据和代码分开存储和管理。

创建连接

创建用于安全存储 LLM API 密钥或其他必需凭据的连接。

  1. 转到工作区中的提示流,然后转到“连接”选项卡。
  2. 选择“创建”,然后选择用于存储凭据的连接类型。 (以自定义连接为例)“连接”选项卡上的流的屏幕截图,其中突出显示“创建”下拉菜单中的“自定义”按钮。
  3. 在右侧面板中,可定义连接名称,还可选择“添加键值对”,添加多个键值对来存储凭据和密钥。 该屏幕截图显示了“添加自定义连接”转到“添加键值对”按钮。

注意

  • 可通过勾选“是机密”来将一个键值对设置为机密,该机密将被加密并存储在键值中。
  • 请确保至少将一个键值对设置为机密,否则将无法成功创建连接。

然后,此自定义连接用于替换在 LangChain 代码中显式定义的密钥和凭据;如果已有 LangChain 集成提示流,可跳转到配置连接、输入和输出

LangChain 代码转换为可运行的流

只要计算会话包含依赖项包,所有 LangChain 代码就都可以直接在流中的 Python 工具中运行。你可以按照以下步骤轻松地将 LangChain 代码转换为流。

将 LangChain 代码转换为流结构

注意

可通过两种方法将 LangChain 代码转换为流。

  • 为了简化转换过程,可使用 LangChain 集成的 LLM 库直接初始化 LLM 模型,以便在 Python 节点中调用。
  • 另一种方法是将 LLM 使用 LangChain 代码转换为在流中使用 LLM 工具,以便更好地进行进一步的实验性管理。

为了快速将 LangChain 代码转换为流,建议根据用例使用两种类型的流结构:

类型 Desc 案例
类型 A 既包含“提示节点”,又包含“python 节点”的流 可以将提示模板从代码提取到提示节点,然后将剩余代码合并到单个 Python 节点或多个 Python 工具中。 如果用户希望通过运行流变体轻松优化提示,然后根据评估结果选择最佳提示,那么非常适合使用这种结构。
类型 B 仅包含“python 节点”的流 可以创建仅包含 python 节点的新流,所有包含提示定义的代码都将在 python 节点上运行。 如果用户不需要在工作区中显式优化提示,但需要基于更大规模的数据集进行更快的批处理测试,那么非常适合使用这种结构。

例如,图表中的 A 类型流如下所示:

流的屏幕截图,其中突出显示了提示按钮和系统模板。

系统模板的屏幕截图,其中显示变量 1 和 0,且“完成雨哦话”按钮突出显示。

而 B 类型流如下所示:

流的屏幕截图,其中显示 LangChain 代码节点和图。

若要在 Azure 机器学习中创建流,可转到工作区,在左侧导航栏中选择“提示流”,然后选择“创建”来创建新流。 有关如何创建流的更详细指南,请参阅创建流

配置连接、输入和输出

完成创建结构正确的流并将代码移动到特定工具节点之后,需要将原始环境变量替换为连接中的相应密钥,并配置流的输入和输出。

配置连接

若要利用替换最初在 LangChain 代码中定义的环境变量的连接,需要在 python 节点中导入 promptflow 连接库 promptflow.connections

对于自定义连接,需要执行以下步骤:

  1. 导入库 from promptflow.connections import CustomConnection,并在工具函数中定义 CustomConnection 类型的输入参数。 文档搜索链节点的屏幕截图,其中突出显示了自定义连接。
  2. 将输入分析到输入部分,然后在值下拉列表中选择目标自定义连接。 链节点的屏幕截图,其中突出显示了连接。
  3. 将最初定义密钥和凭据的环境变量替换为连接中添加的相应密钥。
  4. 保存并返回到创作页,并在节点输入中配置连接参数。

配置输入和输出

在运行流之前,请配置节点输入和输出,以及整个流输入和输出。 若要确保在流中正确传递所有必需的数据并获取所需结果,此步骤至关重要。

后续步骤