Integrating LangChain with Azure Container Apps dynamic sessions

将 LangChain 与 Azure 容器应用动态会话集成

3 分钟阅读

Azure 容器应用动态会话提供安全、低延迟、可靠的 Python REPL API。通过新的动态会话 LangChain 集成,您可以安全地赋予您的 LangChain 链和代理编写和执行 Python 代码的能力。

代码执行的价值

大型语言模型 (LLM) 擅长解决复杂问题,但就像人脑一样,在某些计算任务上会遇到困难。虽然这些当前最先进的模型可以解释像统计力学这样复杂的概念,但它们可能无法执行像正确计算 10 个浮点数的平均值这样的任务。然而,这些模型可以熟练地编写 Python 代码来计算浮点数列表的平均值。

正如计算机通过处理原始计算开启了人类生产力的新时代,使我们能够专注于定义算法和程序逻辑一样,代码执行工具也将增强 LLM 代理的能力,从而提高生产力和性能。

Azure 容器应用动态会话

动态会话是 Azure 容器应用中的一项新功能,允许您在沙箱中安全地运行 LLM 生成的代码。您可以通过在动态会话中安全地运行它们生成的 Python 代码来弥补 LLM 在数学计算方面的局限性,而无需任何容器知识。

会话具有以下属性

  • 强大的隔离性:会话彼此隔离,并与主机环境隔离。每个会话都在其自己的 Hyper-V 沙箱中运行,提供企业级安全性和隔离性。 可选地,您可以启用网络隔离以进一步增强安全性。
  • 完全托管:平台完全管理会话的生命周期。会话在不再使用时会自动清理。
  • 快速启动:新会话的分配大约需要 100 毫秒。快速启动是通过自动维护一个就绪但未分配的会话池来实现的。
  • 可扩展:会话可以高 масштабируемость 运行。您可以同时运行数百或数千个会话。
  • 数据访问:您可以将文件上传到会话,以便您的代码可以与您的数据交互。
  • 私有:文件写入会话的文件系统中的 Hyper-V 隔离边界内。默认情况下,它们不能直接访问。可以使用 API 下载它们。
  • 预装软件包:会话预装了许多最流行的软件包,如 NumPy、pandas 和 scikit-learn。您还可以像在 notebook 单元格中一样运行 !pip install ... 以添加更多软件包(如果启用了出口)。

有关会话 API 的完整文档,请访问 Azure 容器应用文档

使用 LangChain 集成

开始使用 LangChain 集成很简单。您可以执行以下操作

  1. 按照 此处 的说明设置您的 Azure 容器应用服务。确保获取您的会话池管理端点,如 此处 所示。
  2. 安装所需的依赖项

!pip install langchain-azure-dynamic-sessions

  1. 导入并运行
from langchain_azure_dynamic_sessions import SessionsPythonREPLTool

tool = SessionsPythonREPLTool(
	pool_management_endpoing="<<Enter Pool Management Endpoint>>",
)

code = """
import numpy as np

print("sampling 3 datapoints from standard normal distribution")

np.random.normal(size=3).tolist()
"""

# To get string output:
print(tool.invoke(code)))

这将生成一个类似以下的 JSON 字符串

"""{
  "result": [
    0.34904792009397784,
    -2.237593977256981,
    1.2965825537776963,
  ],
  "stdout": "sampling 3 datapoints from standard normal distribution",
  "stderr": ""
}"""

如果我们想要原始输出,而不是字符串形式,我们可以使用 tool.execute()

# To get dict output:
tool.execute(code)

这将返回一个字典,其中包含 “result” 的浮点数列表

{
  "result": [
    0.34904792009397784,
    -2.237593977256981,
    1.2965825537776963,
  ],
  "stdout": "sampling 3 datapoints from standard normal distribution",
  "stderr": ""
}

请访问 LangChain 文档,了解如何将文件上传到会话、将模型生成的代码传递给工具、在代理中使用该工具等等。

使用 LangGraph 的数据分析师代理

会话最令人兴奋的用例之一是构建可以使用代码分析大型数据集的代理。在下面的演练中,我们将展示如何使用 LangGraph 和动态会话构建数据分析师代理

这是代理 代码 的链接。

结论

代码执行工具对于数据分析和软件工程 LLM 应用是不可或缺的。借助新的 LangChain 和 Azure 容器应用动态会话集成,您可以安全且低延迟地编写和执行 Python 代码。

请访问 LangChain 文档开始使用!