实用提示:LangChain现已推出托管式深度智能体——你的智能体也可以拥有它
《实用笔记》操作指南:LangChain 已推出托管式深度智能体——适用于采用该模式的团队的合同、检查项及可直接插入的代码模块。
本指南将逐步演示如何从原始材料构建出一个可运行的系统,具体针对的是 LangChain 新推出的托管型深度智能体功能——此时你的智能体实际上就是一个目录。重点在于可操作的步骤、明确的检查点,以及可以直接放入代码仓库的代码,无需猜测其用途。 在概览阶段,应在修改代码之前明确输入参数、该步骤的负责人以及终止标准。操作人员应能够从已知的检查点重新运行该步骤,而无需猜测其中的隐藏状态。 建议使用小型、可测试的单元而非庞大的脚本。当某个步骤失败时,故障应能指向具体的责任模块,而非整个复杂的流程。
托管型深度智能体究竟是什么
在处理“什么是受控深度智能体”这一阶段时,首先需写下相关契约:所需的输入参数、成功标志,以及部分失败时的处理方式。这样的检查清单能确保后续的代码修改保持一致性。 将这一阶段视为输入与验证后输出之间的契约。为相关成果命名,明确成功判定标准,杜绝无声的半完成状态。 在耗时较高的步骤之后设置检查点。当操作员重新尝试后续节点时,恢复流程不应再次调用相同的大型语言模型。
uv tool install managed-deepagents
mda init research-assistant
cd research-assistant
uv sync
mda dev . # run locally in LangSmith Studio
mda deploy . # deploy to LangSmith
你的智能体能力由ls控制
在处理“您的智能体功能”阶段时,首先写下合同条款:所需的输入参数、成功标志以及部分失败时的处理方式。这样的清单能确保后续的代码修改保持一致性。 在功能结果旁记录执行时间以及令牌或查询成本。提前了解成本情况,可避免在从演示环境过渡到共享环境时出现意外账单。 在耗时较高的步骤之后设置检查点。当操作员重新尝试后续节点时,恢复流程不应再次收取相同的LLM调用费用。
my-agent/
├── agent.py # required — the model and core config
├── instructions.md # system prompt, synced to Context Hub
├── skills/
│ └── research/
│ └── SKILL.md # task-specific playbooks
├── tools/ # your LangChain tools
├── middleware/ # logic around model and tool calls
├── connectors/
│ └── mcp.py # remote MCP servers
├── channels/
│ └── slack.py # Slack, GitHub, other entry points
├── schedules/
│ └── daily_digest.py # managed cron jobs
├── sandbox/
│ └── __init__.py # isolated filesystem and shell
├── identity.py # auth and thread scoping
├── memory.py # durable cross-thread memory
├── pyproject.toml
├── .env
└── evals/ # Harbor tasks
执行任务的文件
在处理“The Files That Do”阶段时,首先写下相关契约:所需的输入参数、成功信号以及部分失败时的处理方式。这样的检查清单能确保后续的代码修改不会偏离原定计划。 将配置信息与应用程序代码分开存放。环境文件、密钥存储以及功能开关应集中于一个位置,这样操作人员无需查看整个系统结构即可进行审计。 在耗时较高的步骤之后设置检查点。当操作人员重新执行后续节点时,恢复流程不应再次计费相同的LLM调用。
agent.py — 唯一必需的文件
在开发 agent py 时,唯一需要做的第一步就是先明确合同规范:所需的输入参数、成功信号,以及部分失败时会发生什么。这样的检查清单能确保后续的代码修改始终符合要求。 同时记录正常流程和异常恢复流程。重试机制、人工审核环节以及死信处理都是产品本身的组成部分,而非后续需要补充的功能。 在成本较高的操作之后设置检查点。当操作员重新尝试某个节点时,恢复流程不应再次调用相同的 LLM 接口。
from managed_deepagents import define_deep_agent
from middleware.audit import log_tool_calls
from tools.search import internet_search
agent = define_deep_agent(
name="research-assistant",
model="openai:gpt-5.5",
tools=[internet_search],
middleware=[log_tool_calls],
interrupt_on={"internet_search": True},
)
tools=[{"type": "web_search"}] # OpenAI
tools=[{"google_search": {}}] # Google
tools=[{"type": "web_search_20260209", "name": "web_search"}] # Anthropic
instructions.md 和 skills/ —— 会同步到云端的上下文信息
在完成指令处理与技能训练阶段时,首先写下相关约定:所需输入、成功标志以及部分失败时的处理方式。这样的检查清单能确保后续的代码修改保持一致性。 优先选择小型、可测试的单元,而非庞大的脚本。当某一步骤失败时,故障应指向单一责任模块,而非复杂的流程链。 在成本较高的步骤之后设置检查点。当操作员重新尝试后续节点时,恢复流程不应再次调用相同的大型语言模型。
# Research assistant
You are a careful research assistant. Use internet search to find sources,
keep notes, and return concise answers with citations.
---
name: research
description: Gather and synthesize context before answering complex questions.
---
# Research
Use this skill when a task needs more than a direct answer.
1. Identify what information is missing.
2. Use `query_db` to look up relevant records.
3. Summarize findings before responding to the user.
memory.py ——持久化内存,且为可选功能
在处理内存持久化阶段时,首先写下契约:所需的输入、成功信号以及部分失败时的处理方式。这样的检查清单能确保后续的代码修改保持一致性。 将这一阶段视为输入与经过验证的输出之间的契约。为相关产物命名,定义成功判定标准,并拒绝默许的部分完成。 在耗时较高的步骤之后设置检查点。当操作员重新尝试后续节点时,恢复流程不应再次调用相同的大语言模型。
from managed_deepagents import define_memory
memory = define_memory(scope="agent")
sandbox/ — 一个具有快照功能的隔离环境
在沙箱的独立壳层环境中工作时,首先写下相关规范:所需的输入参数、成功信号以及部分失败时的处理方式。这样的检查清单能确保后续的代码修改始终符合要求。 在功能结果旁记录执行时间以及令牌或查询成本。提前了解成本情况,可避免在从演示环境过渡到共享环境时出现意外费用。 在耗时较高的操作之后设置检查点。当操作员重新执行后续节点时,恢复流程不应再次收取相同的LLM调用费用。
from managed_deepagents import define_sandbox
sandbox = define_sandbox(
idle_ttl_seconds=600,
default_timeout=600,
docker_image="python:3.12-slim",
)
#!/usr/bin/env bash
set -euo pipefail
apt-get update && apt-get install -y jq
mkdir -p /workspace
schedules/ — 带有编译时约束的cron调度
在使用带阶段的 cron 计划时,首先需明确相关规范:所需输入、成功标志以及部分失败时的处理方式。这样的清单能确保后续的代码修改保持一致性。 配置应与应用程序代码分开存放。环境文件、密钥存储以及功能开关应集中于一处,以便操作员无需查看整个流程即可进行审计。 在成本较高的步骤之后设置检查点。当操作员重新尝试后续节点时,恢复流程不应再次调用相同的大型语言模型。
from managed_deepagents import define_schedule
schedule = define_schedule(
cron="0 8 * * 1-5",
timezone="America/Los_Angeles",
prompt="Review durable memory for reusable research rules. List open questions for today.",
)
在使用带阶段的 cron 计划时,首先需明确相关规范:所需输入、成功标志以及部分失败时的处理方式。这样的清单能确保后续的代码修改保持一致性。 相比庞大的脚本,更应采用小型且可测试的单元。当某个步骤失败时,故障应能指向具体的责任模块,而非整个复杂的流程。
channels/与connectors/——入站与出站
在入站阶段的通道和连接器,若能将其视为可度量的对象,则运作效果最佳。在扩大范围之前,先记录一份理想的处理结果、一个故障案例以及回滚说明。 应将此阶段视为输入与经过验证的输出之间的契约。为相关文件命名,明确成功标准,绝不允许出现无声的、不完整的处理过程。 需保持图结构的扁平化与类型化。嵌套的数据块会掩盖哪个节点修改了哪个字段,且在中断后会导致无法继续处理。
# channels/slack.py
from managed_deepagents import channels
channel = channels.slack(
auto_reply=True,
mention_behavior="strip",
conversation={"app_mention": "thread", "direct_message": "conversation"},
)
# connectors/mcp.py
from managed_deepagents import connectors
connector = connectors.mcp(
mcp_servers={
"langchainDocs": {
"transport": "http",
"url": "https://docs.langchain.com/mcp",
"include_tools": ["search_docs_by_lang_chain"],
},
},
)
identity.py——谁有权限调用此文件
将用于阶段测试的 identity py 视为可测量的对象最为有效。在扩大范围之前,先记录一个成功的案例、一个失败案例以及回滚说明。在功能结果旁同时记录执行时间以及令牌或查询成本。提前了解成本情况,就能避免在从演示环境过渡到共享环境时出现意外费用。要保持图结构的层次简单且类型明确,嵌套的数据块会掩盖是哪个节点修改了哪个字段,还会在出现中断后导致流程无法继续。
from managed_deepagents import auth, define_identity
identity = define_identity(auth=auth.langsmith_api_key())
identity = define_identity(auth=auth.supabase(project_ref="your-project-ref"))
运行 mda deploy 时实际会发生什么
“实际发生了什么”阶段作为可度量的对象来处理时效果最佳。在扩大范围之前,需记录一份理想的运行日志、一个故障案例以及回滚说明。 将配置置于应用程序代码之外。环境文件、密钥存储和功能标志应集中存放于一个位置,以便操作人员无需查看整个流程即可进行审计。 保持流程状态的简洁性与类型化。嵌套的数据结构会掩盖哪个节点修改了哪个字段的信息,还会在流程中断后导致无法继续执行。 “实际发生了什么”阶段作为可度量的对象来处理时效果最佳。在扩大范围之前,需记录一份理想的运行日志、一个故障案例以及回滚说明。 相比庞大的脚本,更应采用小型且可测试的单元。当某个步骤出现故障时,故障原因应能指向单一的责任模块,而非复杂的流程链。
它在 LangChain 生态系统中的定位
在“如何适配”阶段,应在修改代码之前明确输入参数、该步骤的负责人以及结束标准。操作人员应能够从已知的检查点重新运行该步骤,而无需猜测隐藏状态。 将此阶段视为输入与已验证输出之间的契约。为相关成果命名,定义成功检测标准,并拒绝默许的半完成状态。 对于涉及资金支出或修改生产数据的操作,必须经过人工审批。编译时的连接方式并不等同于业务上的完整性。
发布前必须确认的一点
在“单一执行阶段”中,修改代码之前需明确输入参数、该步骤的负责人以及结束标准。操作人员应能够从已知的检查点重新运行该步骤,而无需猜测隐藏状态。应在功能结果旁记录执行时间以及令牌或查询成本。提前了解成本情况,可避免在从演示环境过渡到共享环境时出现意外费用。对于会产生费用或更改生产数据的操作,必须经过人工审批。编译时的配置并不等同于业务功能的完整性。
表面仍在变化
在“The Surface Is Still”阶段,修改代码之前需明确输入参数、该步骤的负责人以及终止条件。操作人员应能够从已知的检查点重新运行该步骤,而无需猜测隐藏状态。 配置信息应置于应用程序代码之外。环境文件、密钥存储以及功能开关应集中存放于一个位置,以便操作人员无需查看整个流程即可进行审计。 对于涉及资金支出或修改生产数据的操作,必须经过人工审批。编译时的连接方式并不等同于业务流程的完整性。 在“The Surface Is Still”阶段,修改代码之前需明确输入参数、该步骤的负责人以及终止条件。操作人员应能够从已知的检查点重新运行该步骤,而无需猜测隐藏状态。 相较于庞大的脚本,应优先使用小型且可测试的单元。当某个步骤失败时,故障原因应能明确指向某个具体职责,而非整个复杂的流程。
何时应该(以及不应)使用它
在处理“何时应该”及相应阶段时,首先写下契约:所需的输入、成功信号以及部分失败时的处理方式。这样的清单能确保后续的代码修改保持一致性。 将此阶段视为输入与验证后输出之间的契约。为相关成果命名,明确成功检测标准,并杜绝无声的半完成状态。 在成本较高的步骤之后设置检查点。当操作员重新尝试后续节点时,恢复流程不应再次调用相同的大型语言模型。
入门指南
在完成入门阶段时,首先写下相关约定:所需的输入参数、成功信号以及部分失败时的处理方式。这样的清单能确保后续的代码修改保持一致性。 在功能结果旁记录执行时间以及令牌或查询成本。提前了解成本情况,可避免在从演示环境过渡到共享环境时出现意外费用。 在耗时较高的步骤之后设置检查点。当操作员重新尝试后续节点时,恢复流程不应再次收取相同的LLM调用费用。
uv tool install managed-deepagents
mda init test-agent && cd test-agent
LANGSMITH_API_KEY=<your-key>
OPENAI_API_KEY=<your-key>
参考资料
在处理“参考设计”阶段时,首先需明确合同条款:所需的输入参数、成功标志以及部分失败时的处理方式。这样的检查清单能确保后续的代码修改保持一致性。 应将配置信息与应用程序代码分开存放。环境文件、密钥存储以及功能开关应集中管理,以便操作人员无需查看整个流程就能进行审计。 在耗时较高的步骤之后设置检查点。当操作人员重新执行后续节点时,恢复流程不应再次调用相同的大型语言模型。 在处理“参考设计”阶段时,首先需明确合同条款:所需的输入参数、成功标志以及部分失败时的处理方式。这样的检查清单能确保后续的代码修改保持一致性。 相比庞大的脚本,更应优先使用小型且可测试的单元。当某个步骤失败时,故障应能指向具体的责任模块,而非整个复杂的流程。
操作检查清单
将操作检查清单视为可度量的基准,这样效果最佳。在扩大范围之前,先记录一份完美的操作流程、一个故障案例以及回滚说明。
同时记录正常流程和恢复流程。重试机制、人工审核环节以及错误处理都是产品本身的组成部分,而非后续需要补充的内容。
保持图结构扁平且具有类型约束。嵌套的数据结构会掩盖哪个节点修改了哪个字段的信息,还会导致中断后无法继续执行。
在预算允许的情况下,使用测试桩而非真实的付费 API,在持续集成过程中添加能够检测关键路径的冒烟测试。
优先选择小型、可测试的单元,而非庞大的脚本。当某个步骤失败时,故障应能指向具体的责任模块,而非复杂的流程链。
保持图结构扁平且具有类型约束。嵌套的数据结构会掩盖哪个节点修改了哪个字段的信息,还会导致中断后无法继续执行。
在推广该技术栈之前,应先冻结版本,为关键流程记录标准输出日志,并明确回滚步骤。共享环境需要设置速率限制、租户验证机制,以及负责密钥轮换的明确责任人。与其展示花哨的一次性演示,不如追求扎实可靠的性能。
针对1ccea3d5e297的批量处理说明:不要将提供商密钥放入代码仓库,为每个会话设置令牌使用上限,并将日志存储在评估用示例文件旁边,以便后续模型更换时保持对比性。
在处理强化安全性的第0阶段时,首先要明确相关规范:所需输入、成功标志,以及部分失败时的处理方式。这样的检查清单能确保后续的代码修改始终符合要求。相比庞大的脚本,应优先使用小型且可测试的单元。当某个步骤出现故障时,故障原因应能指向单一责任模块,而非复杂的流程链。
强化细节 0/931:为该记录测量运行时间、错误类型以及代币消耗情况,然后依据固定的问题集而非个人经验来判断是否保留该变更。
将强化笔记的第一阶段视为可测量的对象会更为有效。在扩大范围之前,先记录一份最佳案例、一个故障实例以及回滚说明;同时在功能结果旁记录时间以及代币或查询成本。提前了解成本情况,可避免在从演示环境过渡到共享环境时出现意外费用。
强化细节 1/931:为该记录测量运行时间、错误类型以及代币消耗情况,然后依据固定的问题集而非个人经验来判断是否保留该变更。