LangGraph Studio¶
LangGraph Studio 提供了一种新的方式来开发 LLM 应用程序,通过提供一个专门的代理 IDE,使复杂的代理应用程序的可视化、交互和调试成为可能。
借助可视化图形和编辑状态的能力,您可以更好地理解代理工作流并更快地迭代。LangGraph Studio 与 LangSmith 集成,允许您与团队成员合作调试故障模式。

特性¶
LangGraph Studio 的主要特性包括:
- 可视化您的图形
- 通过用户界面运行图形进行测试
- 通过修改它的状态并重新运行来调试您的代理
- 创建和管理助手
- 查看和管理线程
- 查看和管理长期记忆
- 将节点输入/输出添加到LangSmith 数据集以进行测试
类型¶
桌面应用¶
LangGraph Studio 作为 桌面应用 提供给 MacOS 用户。
在 beta 期间,LangGraph Studio 对所有任何套餐级别的 LangSmith 用户免费开放。
云工作室¶
如果您已在 LangGraph 平台 (Cloud) 上部署了您的 LangGraph 应用程序,您可以作为其一部分访问该工作室。
开发服务器¶
LangGraph CLI 还包含一个命令,用于运行一个内存中的开发服务器,可以用来将本地 LangGraph 应用与工作室连接。 有关更多信息,请参见此处的说明。
其工作原理是它在您的本地环境内部运行。 它会启动一个内存中的开发服务器来部署图形。 然后,您可以通过 LangGraph 平台的云托管版本连接到工作室。 需要明确的是,网络工作室将连接到您本地运行的服务器 - 您的代理仍然在本地运行,且永远不会离开您的设备。
工作室常见问题¶
为什么我的项目无法启动?¶
您的项目无法启动可能有几个原因,这里是一些最常见的原因。
Docker 问题(仅限桌面)¶
LangGraph Studio(桌面)需要 Docker Desktop 版本 4.24 或更高版本。请确保您安装的 Docker 版本符合该要求,并在尝试使用 LangGraph Studio 之前确保 Docker Desktop 应用程序正在运行。此外,请确保您已经将 docker-compose 更新到 2.22.0 或更高版本。
配置或环境问题¶
您的项目无法启动的另一个原因可能是您配置文件定义不正确,或者缺少所需的环境变量。
中断是如何工作的?¶
当您选择 Interrupts 下拉菜单并选择一个节点进行中断时,图形将在该节点运行之前和之后暂停执行(除非该节点直接进入 END)。这意味着您将能够在节点运行之前和运行之后编辑状态。这旨在允许开发人员对节点的行为进行更细粒度的控制,并更容易观察节点的行为。如果节点是图中的最后一个节点,您将无法在节点运行之后编辑状态。
如何重新加载应用?(仅限桌面)¶
如果您想要重新加载应用程序,请不要像通常那样使用 Command+R。相反,请关闭并重新打开应用程序以进行全面刷新。
自动重建是如何工作的?(仅限桌面)¶
LangGraph Studio 的一个关键特性是,当您更改源代码时,它会自动重建您的映像。这允许进行超快速的开发和测试周期,使您能够轻松迭代图形。LangGraph 重建您的映像有两种不同的方法:通过编辑映像或完全重建它。
从源代码更改重建¶
如果您仅修改了源代码(没有配置或依赖项更改!),则映像不需要完全重建,LangGraph Studio 将仅更新相关部分。底左的 UI 状态会暂时从 Online 切换到 Stopping,同步编辑映像。在此过程进行时,日志将显示出来,而在映像编辑完成后,状态将恢复为 Online,您将能够运行包含修改代码的图形!
从配置或依赖项更改重建¶
如果您编辑了图形配置文件 (langgraph.json) 或依赖项(pyproject.toml 或 requirements.txt),则整个映像将被重建。这将导致 UI 切换离开图形视图,开始显示新映像构建过程的日志。这个过程可能需要一到两分钟,一旦完成,您更新的映像将准备好使用!
为什么我的图形启动如此缓慢?(仅限桌面)¶
LangGraph Studio 与本地 LangGraph API 服务器交互。为了与持续更新保持一致,LangGraph API 需要定期重建。因此,您在启动项目时可能会偶尔经历轻微延迟。
为什么我的图形中显示了额外的边?¶
如果您没有仔细定义您的条件边,您可能会注意到图中出现了额外的边。这是因为没有正确的定义,LangGraph Studio 假定条件边可以访问所有其他节点。为了避免这种情况,您需要明确如何定义条件边路由到的节点。您可以通过两种方式做到这一点:
解决方案 1:包括路径映射¶
解决此问题的第一种方法是为您的条件边添加路径映射。路径映射只是一个字典或数组,它将路由函数的可能输出与对应于每个输出的节点名称映射。路径映射作为第三个参数传递给 add_conditional_edges 函数,如下所示:
在这种情况下,路由函数返回 True 或 False,分别映射到 node_b 和 node_c。
解决方案 2:更新路由器的类型(仅限 Python)¶
您还可以通过使用 Literal python 定义明确指定路由函数可以映射到的节点类型,而不是传递路径映射。以下是如何以这种方式定义路由函数的示例:
def routing_function(state: GraphState) -> Literal["node_b","node_c"]:
if state['some_condition'] == True:
return "node_b"
else:
return "node_c"
相关¶
有关更多信息,请参见以下内容: