ToApp
15.35M · 2026-03-23
一个标准的、准备好接入 Studio 的项目目录应该是这样的:
my_agent_project/
├── .env # 1. 环境变量配置(密钥)
├── langgraph.json # 2. Studio 核心配置文件(导航图)
└── agent.py # 3. 你的图逻辑代码(引擎)
.env 文件)在使用 Studio 时,强烈建议把密钥抽离出来,Studio 在启动时会自动读取它们。
在项目根目录新建一个名为 .env 的文本文件,填入你的配置:
# .env 文件内容
DEEPSEEK_API_KEY=sk-da217ba... (你的真实密钥)
# LangSmith 追踪配置 (强烈建议开启,Studio 严重依赖它)
LANGSMITH_TRACING=true
LANGSMITH_API_KEY=lsv2_pt_... (你的真实密钥)
(在 Python 代码里,可以把 os.environ["..."] = "..." 那些硬编码删掉了。)
langgraph.json)这是启动 Studio 最核心的配置文件。它告诉 Studio 该去哪里加载代码、加载哪些依赖。 (强烈建议就取名为Langgraph.json,大小写无所谓。这样LangStudio就会自动识别到)
在项目根目录新建 langgraph.json,复制以下标准模板:
{
"dependencies": ["."],
"graphs": {
"math_agent": "./agent.py:agent"
},
"env": ".env"
}
配置项深度解析:
"dependencies": ["."]:告诉 Studio,项目运行所需的依赖就在当前目录。"graphs":这是核心。你可以把它理解为一个注册表。
"math_agent":这是你的图在 Studio 左上角下拉菜单里显示的UI 名称(你可以随便起,比如 DeepSeek_Calculator)。"./agent.py:agent":这是物理路径映射。冒号前面是 Python 文件相对路径,冒号后面是你代码中 builder.compile() 赋值的那个变量名。"env": ".env":明确告诉 Studio 去读取刚才第一步配置的密钥文件。agent.py)为了让 Studio 接管可视化和时光倒流功能,你的代码在导出给 Studio 使用时,必须是“裸编译”的。
确保你的 agent.py 文件底部是这样配置的:
# ... 前面的 Nodes 和 Edges 逻辑保持不变 ...
builder = StateGraph(MessagesState)
builder.add_node("llm_node", llm_node)
# ... 其他连线 ...
# 【关键配置】:不要加 checkpointer=MemorySaver()
agent = builder.compile()
# 上面这个叫 "agent" 的变量,必须和 langgraph.json 里冒号后面的名字完全一致!
1. 启动服务 在项目根目录打开终端(进入到当前项目的父目录),输入:
langgraph dev
参考示例如下:输入cd graph_api
2. 进入界面
在终端打印出的图案下方,找到 Studio UI 的链接:
按住 Ctrl (或 Cmd) 点击它,浏览器就会自动打开。
当你打开 Studio,整个界面大致分为左、中、右三个核心工作区:
MemorySaver 实现的记忆,在这里被具象化了。每次新建一个 Thread,就相当于开了一个全新的干净对话上下文。在还没开始对话前,先看右侧的 Graph 标签页。
llm_node 是否有一条条件边指向 tool_node,tool_node 是否又指回了 llm_node)。MessagesState)。
{"messages": [{"role": "user", "content": "3乘以5等于多少?"}]}START 节点闪烁,数据流入 llm_node,接着条件边触发跳转到 tool_node,最后再回到 llm_node 输出结果。如果大模型胡言乱语,或者工具报错了,怎么办?
print() 要高效一万倍。由于是带着 [inmem] 启动的,这个 Studio 是着你的本地文件的。
当在 Python 代码里修改了一个节点的逻辑,或者加了一个新的连线,只要按下 Ctrl+S 保存,浏览器里的 Graph 拓扑图会瞬间自动刷新