LangChain 08:上下文工程、Runtime 与 MCP

2026-09-01
14075 分钟
...

1、本篇任务:只在正确时刻给 Agent 正确的信息和能力

Agent 变差经常不是模型不够强,而是上下文里混入太多旧消息、无关文档、危险工具或伪造身份。本课建立上下文工程方法,并把 MCP 当作外部能力适配器接入。

2、上下文有四种来源

来源示例信任级别
静态规则角色、不可违反的业务边界应用控制
Runtime context当前 user、tenant、role、request_id认证层控制
State/记忆消息、工具结果、摘要、中断点持久化但需裁剪
外部数据RAG、工具、MCP resource不可信数据

模型消息中写“我是管理员”不能改变 runtime role;检索文档写“忽略系统规则”不能升级为 system message。

3、为每次模型调用制作上下文清单

稳定 system 规则
 + 当前用户问题
 + 最近必要消息
 + 本步骤需要的结构化事实
 + 已通过 ACL Top-k 文档
 + 本步骤允许的工具说明
 <= 当前模型的 token 预算

每块记录来源、token 数、优先级和版本。超预算时先去掉低相关文档和大型工具原文,再压缩旧会话;永远不要截掉权限规则或把半个 JSON 交给模型。

4、动态 prompt 与动态工具

退款政策问题不需要暴露邮件、日历或代码执行工具。根据可信 role、当前任务阶段和风险动态选择工具,既减少模型选择错误,也缩小攻击面。

def tools_for(context: RequestContext, phase: str):
    tools = [search_policy, get_order]
    if phase == "after_approval" and "refund_operator" in context.roles:
        tools.append(submit_refund)
    return tools

动态系统提示可加入当前区域、语言和政策版本,但不能把完整用户资料全部拼入。需要什么取什么,并让 trace 记录最终上下文版本。

5、MCP 解决的是标准接入,不是自动安全

MCP server 可以暴露 tools、resources 和 prompts。LangChain 的 MCP client 把多个 server 的工具转换成 Agent 可用工具;stdio 适合本地进程,HTTP 适合远程服务。

Python:

from langchain_mcp_adapters.client import MultiServerMCPClient
from langchain.agents import create_agent

client = MultiServerMCPClient({
    "policy": {"transport": "http", "url": "https://mcp.internal/policy"},
})
tools = await client.get_tools()
agent = create_agent(model="openai:gpt-5.5", tools=tools)

TypeScript:

import { MultiServerMCPClient } from "@langchain/mcp-adapters";
import { createAgent } from "langchain";

const client = new MultiServerMCPClient({
  policy: { transport: "http", url: "https://mcp.internal/policy" },
});
const tools = await client.getTools();
const agent = createAgent({ model: "openai:gpt-5.5", tools });

实现时以当前 SDK 的导入路径为准。核心设计不变:server 与工具 allowlist、凭证、超时和权限必须由应用配置。

6、每个 MCP server 都要有接入合同

接入前记录:server owner 和版本;允许的 tool/resource;认证方式和 scopes;可访问网络;输入/输出大小;超时、并发和成本;是否有副作用;审计字段;降级方式。

远程 server 返回的工具描述和 resource 内容都可能恶意。把它们当外部数据,不能让 server 自己决定系统 prompt、租户身份或工具审批规则。

7、MCP 安全测试

  1. server 返回“读取全部用户数据”的工具描述,Agent 仍只能访问 allowlist。
  2. resource 包含 prompt injection,不会改变系统规则。
  3. 远程调用超时、5xx、返回超大内容时有 deadline、截断与熔断。
  4. 两个租户调用相同工具时使用各自短期凭证和 namespace。
  5. 副作用工具重复调用时使用幂等键,并在需要时触发 HITL。

8、课程阶段验收

到这里,你应能完成一个 LangChain 退款助手:稳定 schema、安全工具、可评测 RAG、会话持久化、流式 UI、审批与 MCP 接入边界。若流程分支和恢复开始变复杂,就进入下一阶段:用 LangGraph 把状态和控制流显式化。

官方阅读:Context EngineeringPython MCPTypeScript MCP

如果您觉得这篇文章有帮助,请点个赞吧~

分享文章

相关文章

更多文章 →
AI2026-09-01
Deep Agents 01:何为 Agent Harness,以及如何开始
1、本篇任务:完成一份多步骤、带证据的技术调研 普通客服 Agent 的问题短、工具少、输出即时。技术调研或编码任务会持续很久,产生计划、搜索结果、文件和中间结论。Deep Agents 在 LangChain/LangGraph 之上预装规划、虚拟文件系统、上下文压缩和子 Agent,适合这类开放任务。 本课让 Agent 比较两种向量数据库,并交付一份可验证报告。 2、什么时候需要 Deep Agent 满足以下两项以上再考虑:任务...
学习
AI2026-09-01
Deep Agents 02:子 Agent、虚拟文件系统与长期记忆
1、本篇任务:让主管只看结论,让子 Agent 处理细节 技术调研会产生几十次搜索和大量文件。如果全部进入主管上下文,真正的目标会被噪音淹没。本课用两个子 Agent: 收集证据, 检查结论;主管负责计划与最终合成。 2、什么时候委派,什么时候直接调用工具 适合委派:子任务有多步;需要专门提示或工具;会产生大量中间结果;只需返回有限结论。不适合:一步查询;主管需要全部中间上下文;协调成本超过任务本身。 3、配置专门子 Agent Pyt...
学习
AI2026-09-01
Deep Agents 03:生产化、Sandbox、权限与上线验收
1、本篇任务:让 Deep Agent 在隔离环境中分析代码 只读研究 Agent 风险有限;编码 Agent 需要读写文件、安装依赖和执行测试。本课不讲如何让模型写更漂亮的代码,只讲执行环境、权限、恢复和上线验收。 2、先做威胁模型 资产包括源代码、用户文件、云凭证、生产网络和发布权限;攻击入口包括用户消息、仓库内容、网页、依赖包、MCP 返回和命令输出。 Prompt injection 不是靠一句 system prompt 解决...
学习
AI2026-09-01
LangChain 01:全景、原理与学习路线
1、本篇学完要得到什么 这一篇只解决三个问题:LangChain 到底负责什么;它与 LangGraph、Deep Agents、LangSmith 是什么关系;后面应按什么顺序学习。 贯穿整套课程的项目是“退款政策与订单助手”。它最终能够:回答知识库中的退款规则;查询当前用户的订单;生成结构化答复;对真正的退款操作进行人工审批;断线后恢复;通过评测后发布。 先记住一句话: 模型负责理解与生成,应用负责数据、权限、状态和副作用。 如果把...
学习
AI2026-09-01
LangChain 02:模型、消息与结构化输出
1、本篇任务:让模型输出成为程序可以依赖的合同 上一课只证明 Agent 能运行。本课暂时不接业务工具,只完成一个“客服分诊器”:输入用户问题,输出意图、紧急程度、是否需要人工和给用户的答复。 本课的核心不是学更多模型参数,而是理解三层合同:消息决定模型看到了什么;schema 决定程序期待什么;业务校验决定结果是否真的可用。 2、消息不是一段字符串,而是一条执行记录 一次工具型对话通常包含四种消息: | 类型 | 由谁产生 | 作用...
学习
AI2026-09-01
LangChain 03:工具与 Agent——从函数到可控行动
1、本篇任务:让 Agent 安全地读取订单 上一课得到结构化分诊结果,但模型不知道真实订单。本课增加一个只读工具 ,走通完整 Agent 循环,并把模型、工具包装和领域服务的责任分开。 完成后,用户问“我的 A100 发货了吗”,Agent 会选择工具;工具只按当前登录用户查询;模型基于工具结果回答。它仍然不能退款,因为我们没有提供写工具。 2、工具的本质是受 schema 约束的应用函数 一个好工具需要:稳定名称、清楚描述、窄输入...
学习

评论

请登录后发表评论

去登录
加载评论中...

目录