LangGraph Studio 通过提供专门的代理 IDE,实现复杂代理应用程序的可视化、交互和调试,提供了一种开发 LLM 应用程序的新方法
借助可视化图表和编辑状态的功能,您可以更好地了解代理工作流程并更快地进行迭代。 LangGraph Studio 与 LangSmith 集成,因此您可以与团队成员协作调试故障模式。
在测试版期间,LangGraph Studio 可供任何套餐级别的所有 LangSmith 用户免费使用。在此注册 LangSmith。
单击此处或访问发布页面,下载 LangGraph Studio 的最新.dmg
文件。
目前仅支持 macOS。 Windows 和 Linux 支持即将推出。我们还依赖 Docker Engine 来运行,目前我们仅支持以下运行时:
LangGraph Studio 需要 docker-compose 版本 2.22.0+ 或更高版本。请确保您已安装并运行 Docker Desktop 或 Orbstack,然后再继续。
要使用 LangGraph Studio,请确保您有一个设置了 LangGraph 应用程序的项目。
对于此示例,我们将在此处使用此示例存储库,该存储库使用requirements.txt
文件作为依赖项:
git clone https://github.com/langchain-ai/langgraph-example.git
如果您想使用pyproject.toml
文件来管理依赖项,则可以使用此示例存储库。
git clone https://github.com/langchain-ai/langgraph-example-pyproject.git
然后,您需要创建一个包含相关环境变量的.env
文件:
cp .env.example .env
然后,您应该打开.env
文件并填写相关的 OpenAI、Anthropic 和 Tavily API 密钥。
如果您已在环境中设置它们,则可以使用以下命令将它们保存到此 .env 文件:
echo " OPENAI_API_KEY= " $OPENAI_API_KEY " " > .env
echo " ANTHROPIC_API_KEY= " $ANTHROPIC_API_KEY " " >> .env
echo " TAVILY_API_KEY= " $TAVILY_API_KEY " " >> .env
注意:请勿将 LANGSMITH_API_KEY 添加到 .env 文件中。当您进行身份验证时,我们会自动为您执行此操作,手动设置可能会导致错误。
设置项目后,您可以在 LangGraph Studio 中使用它。让我们深入了解一下吧!
当您第一次打开 LangGraph Studio 桌面应用程序时,您需要通过 LangSmith 登录。
成功验证后,您可以选择要使用的 LangGraph 应用程序文件夹 - 您可以拖放或在文件选择器中手动选择它。如果您使用的是示例项目,则该文件夹将为langgraph-example
。
重要的
您选择的应用程序目录需要包含正确配置的langgraph.json
文件。请在此处查看有关如何配置它以及如何在此处设置 LangGraph 应用程序的更多信息。
选择有效的项目后,LangGraph Studio 将启动 LangGraph API 服务器,您应该会看到一个呈现图形的 UI。
现在我们可以运行图表了! LangGraph Studio 允许您使用不同的输入和配置运行图形。
要开始新的运行:
agent
。图表列表对应于langgraph.json
配置中的graphs
键。Input
部分。Submit
以调用所选图表。以下视频展示了如何开始新的运行:
要更改给定图形运行的配置,请按Input
部分中的Configurable
按钮。然后单击Submit
以调用该图。
重要的
为了使Configurable
菜单可见,请确保在创建StateGraph
时指定配置模式。您可以在此处阅读有关如何将配置架构添加到图表的更多信息。
以下视频展示了如何编辑配置并开始新的运行:
当您打开 LangGraph Studio 时,您将自动进入一个新的线程窗口。如果您已打开现有线程,请按照以下步骤创建新线程:
+
打开新的线程菜单。以下视频展示了如何创建线程:
要选择一个线程:
New Thread
/ Thread
标签,打开线程列表下拉列表。以下视频演示了如何选择线程:
LangGraph Studio 允许您编辑线程状态并分叉线程以使用更新的状态创建替代图形执行。要做到这一点:
Fork
以更新状态并使用更新后的状态创建新的图形执行。以下视频展示了如何在工作室中编辑线程:
您可能希望逐步执行图形,或者在特定节点执行之前/之后停止图形执行。您可以通过添加中断来做到这一点。可以为所有节点(即逐步执行代理程序)或特定节点设置中断。 LangGraph Studio 中的中断意味着图形执行在给定节点运行之前和之后都会被中断。
要逐步完成代理执行,您可以向图中的所有或部分节点添加中断:
Interrupt
。Interrupt on all
。以下视频展示了如何向所有节点添加中断:
+
按钮。+
调用所选图表。Input
/配置并单击Submit
来运行图表以下视频展示了如何向特定节点添加中断:
要消除中断,只需执行相同的步骤并按节点左侧的x
按钮即可。
除了中断节点和编辑图形状态之外,您可能还希望支持人机交互工作流程并能够手动更新状态。这是带有agent
和human
节点的agent.py
的修改版本,其中图形执行将在human
节点上中断。这将允许您作为human
节点的一部分发送输入。当您希望代理获取用户输入时,这会很有用。如果您从命令行运行input()
这基本上取代了您可能使用的方式。
from typing import TypedDict , Annotated , Sequence , Literal
from langchain_core . messages import BaseMessage , HumanMessage
from langchain_anthropic import ChatAnthropic
from langgraph . graph import StateGraph , END , add_messages
class AgentState ( TypedDict ):
messages : Annotated [ Sequence [ BaseMessage ], add_messages ]
model = ChatAnthropic ( temperature = 0 , model_name = "claude-3-sonnet-20240229" )
def call_model ( state : AgentState ) -> AgentState :
messages = state [ "messages" ]
response = model . invoke ( messages )
return { "messages" : [ response ]}
# no-op node that should be interrupted on
def human_feedback ( state : AgentState ) -> AgentState :
pass
def should_continue ( state : AgentState ) -> Literal [ "agent" , "end" ]:
messages = state [ 'messages' ]
last_message = messages [ - 1 ]
if isinstance ( last_message , HumanMessage ):
return "agent"
return "end"
workflow = StateGraph ( AgentState )
workflow . set_entry_point ( "agent" )
workflow . add_node ( "agent" , call_model )
workflow . add_node ( "human" , human_feedback )
workflow . add_edge ( "agent" , "human" )
workflow . add_conditional_edges (
"human" ,
should_continue ,
{
"agent" : "agent" ,
"end" : END ,
},
)
graph = workflow . compile ( interrupt_before = [ "human" ])
以下视频展示了如何在中断时手动发送状态更新(即我们示例中的消息):
LangGraph Studio 允许您以交互方式修改项目配置 ( langgraph.json
)。
要从工作室修改配置,请按照下列步骤操作:
Configure
。这将打开一个交互式配置菜单,其中包含与现有langgraph.json
相对应的值。Save and Restart
以使用更新后的配置重新加载 LangGraph API 服务器。以下视频展示了如何从工作室编辑项目配置:
使用 LangGraph Studio,您可以修改图形代码并将更改实时同步到交互式图形。
要从工作室修改图表,请按照下列步骤操作:
Open in VS Code
。这将打开当前在 LangGraph studio 中打开的项目。.py
文件进行更改。以下视频展示了如何从工作室打开代码编辑器:
修改底层代码后,您还可以重放图中的节点。例如,如果代理响应不佳,您可以在代码编辑器中更新代理节点实现并重新运行它。这可以使长期运行的代理的迭代变得更加容易。
LangGraph Studio 依靠 Docker Compose 来运行 API、Redis 和 Postgres,后者又创建了自己的网络。因此,要访问本地服务,您需要使用host.docker.internal
作为主机名而不是localhost
。有关更多详细信息,请参阅#112。
默认情况下,我们尝试使映像尽可能小,因此基础映像中缺少一些依赖项,例如gcc
或build-essentials
。如果需要安装其他依赖项,可以通过在langgraph.json
文件的dockerfile_lines
部分添加其他 Dockerfile 指令来实现:
{
"dockerfile_lines": [
"RUN apt-get update && apt-get install -y gcc"
]
}
有关更多详细信息,请参阅如何自定义 Dockerfile。