AI HOT 精选

LangChain 详解 Deep Agents 的上下文工程:如何记住信息而不塞满上下文窗口

6.9内容质量

TL;DR · AI 摘要

LangChain 详解 Deep Agents 的上下文工程:如何记住信息而不塞满上下文窗口 · AIHOT LangChain:Blo...

核心要点

  • 主题聚焦:LangChain 详解 Deep Agents 的上下文工程:如何记住信息而不塞满上下文窗口
  • 来源:AI HOT 精选,建议结合原文判断细节。
  • AI 分析暂不可用,本条为保底评分与摘要。
#AI#后端
打开原文

LangChain 详解 Deep Agents 的上下文工程:如何记住信息而不塞满上下文窗口 · AIHOT

LangChain:Blog

·

2026-10-15 01:00

3 小时前

精选

AI 评分

63

LangChain 详解 Deep Agents 的上下文工程:如何记住信息而不塞满上下文窗口

Context Engineering with Deep Agents: How To Remember Without Keeping Everything In Context

AI 导读

LangChain å‘å¸ƒåšå®¢ï¼Œä»‹ç»å ¶å¼€æº Agent 框架 Deep Agents 如何用 middleware 做上下文工程,应对长任务中的 context rot。

推荐理由

LangChain 以竞争分析 Agent ä¸ºä¾‹ï¼Œè®²æ¸ offloading、summarization、skills、subagents 和长期记忆五类上下文管理技术如何通过 middleware 落地。

正文 · AI 翻译

å¦‚æžœä½ æ›¾åœ¨è€ƒè¯•å‰ä¸€æ™šä¸´æ—¶æŠ±ä½›è„šï¼Œä½ å°±çŸ¥é“é‚£ç§æ„Ÿè§‰ï¼šä½ å­¦å¾—è¶Šå¤šï¼Œå‰é¢å‡ ç« çš„å† å®¹å°±è¶Šå¼€å§‹ä»Žè®°å¿†ä¸­æºœèµ°ã€‚

æ™ºèƒ½ä½“ä¹Ÿæœ‰åŒæ ·çš„é—®é¢˜ã€‚å½“å®ƒä»¬æ‰¿æ‹ æ›´é•¿çš„ä»»åŠ¡æ—¶ï¼Œå®ƒä»¬ä¼šæŽ¥æ”¶è¶Šæ¥è¶Šå¤šçš„ä¿¡æ¯ï¼ˆæŒ‡ä»¤ã€å·¥å ·ç»“æžœã€æ–‡ä»¶ç­‰ï¼‰ï¼›æœ€ç»ˆè¿™ä¼šå˜æˆè¿œè¶ æ¨¡åž‹ 上下文窗口 舒适容纳范围的 上下文 ã€‚æ¨¡åž‹æºå¸¦çš„åŽ†å²è®°å½•ã€å™ªå£°å’Œå·¥å ·è¾“å‡ºè¶Šå¤šï¼Œå ¶å‡†ç¡®æ€§å’ŒæŽ¨ç†èƒ½åŠ›å¾€å¾€å°±è¶Šå·®ã€‚

在智能体工程领域,我们称之为 ä¸Šä¸‹æ–‡è åŒ– 。这篇博客介绍了管理智能体上下文窗口的技术,以及 Deep Agents æ¡†æž¶å¦‚ä½•ä½¿ç”¨ä¸€ç§ç§°ä¸ºä¸­é—´ä»¶çš„æ¦‚å¿µå°†å®ƒä»¬æ³¨å ¥åˆ°æ™ºèƒ½ä½“çš„è¿è¡Œä¸­ã€‚

‍

理解上下文工程技术

ç®€å•æ¥è¯´ï¼Œæ™ºèƒ½ä½“å°±æ˜¯ä¸€ä¸ªè¢«æ¡†æž¶åŒ è£¹èµ·æ¥çš„æ¨¡åž‹ã€‚

框架 = åŒ è£¹æ¨¡åž‹ï¼ˆLLM)

æ™ºèƒ½ä½“å¯ç”¨æ¥åº”å¯¹ä¸Šä¸‹æ–‡è åŒ–çš„ä¸Šä¸‹æ–‡å·¥ç¨‹æŠ€æœ¯ä¸»è¦åˆ†ä¸ºä¸¤ç±»ï¼š

  • é˜²æ­¢ä¸å¿ è¦çš„ä¿¡æ¯ è¿›å ¥ 上下文窗口
  • 管理并过滤 已经存在于 ä¸Šä¸‹æ–‡çª—å£ä¸­çš„å† å®¹

框架会策略性地应用这些方法,以便针对给定任务让模型 在正确的时间获得正确的上下文 。

现在,要搭建一个能 出色 å®Œæˆè¿™ä»¶äº‹çš„æ¡†æž¶ï¼Œè¯´èµ·æ¥å®¹æ˜“åšèµ·æ¥éš¾ï¼Œéœ€è¦å¤§é‡çš„å·¥ä½œï¼ˆå¦‚æžœä½ æ˜¯é‚£ç§è€ƒè¯•å‰ä¸€æ™šä¸´æ—¶æŠ±ä½›è„šçš„äººï¼Œå¯èƒ½å·¥ä½œé‡å¤ªå¤§äº†ï¼‰ã€‚

Deep Agents 是 LangChain çš„å¼€æºæ¡†æž¶ã€‚å®ƒç”¨å„ç§æŠ€æœ¯åŒ è£¹ä½ é€‰æ‹©çš„æ¨¡åž‹ï¼Œå°†ä¸Šä¸‹æ–‡ 移出 æ´»åŠ¨çª—å£ï¼ˆç§»å ¥æ–‡ä»¶ã€æ‘˜è¦æˆ–å•ç‹¬çš„æ™ºèƒ½ä½“ï¼‰ï¼Œè¿™æ ·ä¸»æ™ºèƒ½ä½“åªæºå¸¦å®ƒéœ€è¦çš„å† å®¹ï¼ˆå¹¶ä¸”å¯ä»¥åœ¨ä¹‹åŽéœ€è¦æ—¶æ¢å¤åŽŸå§‹æ•°æ®ï¼‰ï¼š

  • 卸载: å¤§åž‹å·¥å ·ç»“æžœå’Œç”¨æˆ·æ¶ˆæ¯è¢«ä¿å­˜åˆ°æ–‡ä»¶ç³»ç»Ÿï¼Œæ¨¡åž‹åªçœ‹åˆ°é¢„è§ˆã€‚
  • 摘要: 当对话接近上下文限制时,较早的消息被压缩成摘要。
  • 技能: ä»»åŠ¡çŸ¥è¯†åªåœ¨æ¨¡åž‹åˆ¤æ–­å ¶ç›¸å ³æ—¶æ‰åŠ è½½ã€‚
  • 子智能体: 嘈杂的工作在单独的上下文窗口中运行,只返回结果。
  • 长期记忆: 智能体学到的东西被保存到一个文件中,并延续到下一次对话。

将上下文工程应用于常见用例

è®©æˆ‘ä»¬çœ‹çœ‹ä¸Šè¿°æŠ€æœ¯å¦‚ä½•åº”ç”¨äºŽä¸€ä¸ªçœŸå®žä¸–ç•Œçš„ç”¨ä¾‹ï¼šä¸€ä¸ªç«žäº‰åˆ†æžæ™ºèƒ½ä½“ã€‚æ¯å‘¨ä¸€ï¼Œè¿™ä¸ªæ™ºèƒ½ä½“ç ”ç©¶äº”å®¶ç«žäº‰å¯¹æ‰‹ï¼Œå¹¶æŒ‰ç §å›¢é˜Ÿæ¨¡æ¿æ’°å†™ä¸€ä»½æŠ¥å‘Šã€‚å•æ¬¡è¿è¡Œå¤§è‡´å¦‚ä¸‹ï¼š

  • æ‹‰å–å ¬å¸ A 的市场数据导出(数万行)
  • æœç´¢æ–°é—»ï¼Œé˜ è¯»å‡ ç¯‡æ–‡ç« ï¼Œå¹¶åšç¬”è®°
  • å¯¹å ¬å¸ B 到 E 重复上述步骤
  • èµ·è‰æŠ¥å‘Šï¼Œæ ¹æ®ä½ çš„åé¦ˆè¿›è¡Œä¿®æ”¹ï¼Œå¹¶æŽ’ç‰ˆ

到第 4 æ­¥æ—¶ï¼Œæ™ºèƒ½ä½“åœ¨æ¯æ¬¡æ¨¡åž‹è°ƒç”¨ä¸­éƒ½æºå¸¦äº†äº”ä»½åŽŸå§‹å¯¼å‡ºæ•°æ®ã€æ•°åæ¡æœç´¢ç»“æžœå’Œä¸¤ä»½è¿‡æ—¶çš„è‰ç¨¿ã€‚å ¶ä¸­å¤§éƒ¨åˆ†å† å®¹ä¸Žæœ€ç»ˆæŠ¥å‘Šçš„æŽ’ç‰ˆæ— å ³ã€‚

检索方法( RAG 或文件系统搜索)帮助智能体 只 æ‹‰å–å®ƒéœ€è¦çš„å† å®¹ï¼Œä½†è¿™ä»ç„¶åªè§£å†³äº†ä¸€åŠé—®é¢˜ã€‚å³ä½¿æ˜¯ä¸€ä¸ªç²¾å‡†çš„æ™ºèƒ½ä½“ä¹Ÿä¼šç§¯ç´¯ä¸å¿ è¦çš„æ¶ˆæ¯ã€å·¥å ·ç»“æžœå’Œä¸­é—´å·¥ä½œï¼Œå› æ­¤æ¡†æž¶è¿˜å¿ é¡»ç®¡ç†å·²ç»å­˜åœ¨äºŽä¸Šä¸‹æ–‡çª—å£å† åŠå ¶å‘¨å›´çš„å† å®¹ã€‚

如何实现这些技术:中间件

Agent åœ¨ä¸€ä¸ªå¾ªçŽ¯ä¸­è¿è¡Œï¼šæ¨¡åž‹å†³å®šè¦åšä»€ä¹ˆã€è°ƒç”¨å·¥å ·ã€è¯»å–ç»“æžœï¼Œç„¶åŽé‡å¤ï¼Œç›´åˆ°ä»»åŠ¡å®Œæˆã€‚ 中间件 æ˜¯æŽ¥å ¥è¯¥å¾ªçŽ¯ä¸­ç‰¹å®šä½ç½®çš„ä»£ç ï¼šä¾‹å¦‚åœ¨ Agent å¯åŠ¨ä¹‹å‰ã€æ¯æ¬¡æ¨¡åž‹è°ƒç”¨å‰åŽï¼Œæˆ–æ¯æ¬¡å·¥å ·è°ƒç”¨å‰åŽã€‚

  • 在每个位置,它都可以读取上下文,并在下一步运行之前修改上下文。
  • Every context engineering technique in this post is a piece of middleware hooked into one of those points. å ¶ä¸­å¤§éƒ¨åˆ†éƒ½æ˜¯å† ç½®çš„ï¼Œå› æ­¤ä½ æ— éœ€ç¼–å†™ä»»ä½•ä¸­é—´ä»¶å³å¯ä½¿ç”¨è¿™äº›æŠ€æœ¯ï¼ˆé™¤éžä½ æƒ³è‡ªå®šä¹‰æŸäº›ç‰¹å®šå† å®¹ï¼‰ã€‚

å¸è½½ï¼šå°†å ¶ç§»å‡ºä¸Šä¸‹æ–‡çª—å£

我们的 Agent å¹¶ä¸æ€»æ˜¯éœ€è¦çœ‹åˆ°æ¯æ¬¡å·¥å ·è°ƒç”¨æˆ–äººç±»æ¶ˆæ¯è¿”å›žçš„ 所有 æ•°æ®ï¼Œå°¤å ¶æ˜¯åœ¨æ•°æ®é‡å¾ˆå¤§çš„æƒ å†µä¸‹ã€‚

例如,每次 pull_market_report å·¥å ·è°ƒç”¨éƒ½ä¼šè¿”å›žä¸€ä»½å®Œæ•´çš„æ•°æ®å¯¼å‡ºï¼ˆæ•°åƒè¡Œï¼‰ï¼›ç„¶è€Œï¼ŒAgent åªéœ€è¦å ¶ä¸­çš„å‡ ä¸ªæ•°å­—ï¼Œå› æ­¤å¯ä»¥é™åˆ¶æ¨¡åž‹åªçœ‹åˆ°è¿™äº›è¡Œã€‚

å·¥å ·ç»“æžœå¸è½½è¿‡ç¨‹ï¼ˆåŠ¨ç”»ï¼‰

FilesystemMiddleware åœ¨æ¯æ¬¡è°ƒç”¨å·¥å ·æ—¶éƒ½ä¼šè¿è¡Œï¼š

  • å½“å·¥å ·ç»“æžœè¶ è¿‡çº¦ 20,000 个 token æ—¶ï¼Œå®Œæ•´ç»“æžœä¼šåœ¨è¿›å ¥å¯¹è¯ä¹‹å‰è¢«å†™å ¥ /large_tool_results/{tool_call_id}。
  • æ¨¡åž‹åªä¼šçœ‹åˆ°ä¸€ä¸ªç®€çŸ­çš„é¢„è§ˆï¼ˆå¼€å¤´å’Œç»“å°¾çš„å‡ è¡Œï¼‰ä»¥åŠæ–‡ä»¶è·¯å¾„ã€‚
  • 当 Agent 之后需要 Company B 的季度营收时,它会用 read_file 逐页读取该文件。

过大的用户/人类消息,例如粘贴的通话记录,也会以更高的阈值(50,000 个 tokenï¼‰å¾—åˆ°åŒæ ·çš„å¤„ç†ï¼Œå¹¶è¢«ä¿å­˜åˆ° /conversation_history/。

æ‘˜è¦ï¼šåŽ‹ç¼©å·²æœ‰å† å®¹

å°½ç®¡æˆ‘ä»¬å°½åŠ›å¸è½½å†—é•¿çš„å·¥å ·è°ƒç”¨ï¼Œä½†åœ¨é•¿æ—¶é—´è¿è¡Œä¸­ï¼Œä¸Šä¸‹æ–‡ä»ä¼šé€æ¸å †ç§¯ï¼ˆä¾‹å¦‚äº”å®¶å ¬å¸çš„æœç´¢ã€ç¬”è®°å’Œè‰ç¨¿ï¼‰ã€‚æ‘˜è¦å¯ç”¨äºŽå°†æˆ‘ä»¬ Agent çš„æ•´ä¸ªä¸Šä¸‹æ–‡çª—å£æµ“ç¼©ä¸ºå¯¹ç›®å‰ä¸ºæ­¢æ‰€å‘ç”Ÿæƒ å†µçš„æ€»ç»“ï¼Œä½¿å ¶èƒ½å¤Ÿç»§ç»­è¿›è¡Œç ”ç©¶ä»»åŠ¡ã€‚

卸载阻止了小的尖峰,而摘要则“重置”了整体的攀升

  • å°–å³°æ˜¯å¤§åž‹å·¥å ·ç»“æžœ/äººç±»æ¶ˆæ¯åˆ°è¾¾ï¼›å¸è½½ä¼šåœ¨æ¨¡åž‹çœ‹åˆ°ä¹‹å‰å°†æ¯ä¸€ä¸ªæ›¿æ¢ä¸ºç®€çŸ­é¢„è§ˆï¼Œå› æ­¤ä¸Šä¸‹æ–‡åªä¼šå°å¹ å¢žé•¿ã€‚
  • æ‘˜è¦å¤„ç†ç¼“æ ¢çš„æ”€å‡ï¼šä¸€æ—¦ä½¿ç”¨é‡è¾¾åˆ° 85%,较早的消息会被浓缩为摘要,上下文随之回落。

SummarizationMiddleware 在每次模型调用之前检查 token 使用量:

  • 一旦使用量越过阈值(默认是模型上下文窗口的 85%),就会进行一次单独的 LLM 调用,将较早的消息浓缩为单个摘要
  • 较早的消息会从上下文窗口中移除,而最近的消息则逐字保留。
  • æ¨¡åž‹çŽ°åœ¨ä¼šå ˆçœ‹åˆ°æ‘˜è¦ï¼Œç„¶åŽçœ‹åˆ°æœ€è¿‘çš„æ¶ˆæ¯ï¼ˆå› æ­¤æœ€è¿‘çš„å† å®¹ä¸ä¼šè¢«æ”¹å†™ï¼‰ã€‚

两个重要细节:

  • 它是可恢复的。 è¢«æ‘˜è¦çš„æ¶ˆæ¯ä¼šå†™å ¥ /conversation_history/{session_id}.md。如果 Agent 在起草时需要 Company A ç ”ç©¶ä¸­çš„æŸä¸ªç»†èŠ‚ï¼Œå®ƒå¯ä»¥å°†å ¶è¯»å›žã€‚
  • 它会循环进行。 éšç€è¿è¡Œç»§ç»­ï¼Œä½¿ç”¨é‡ä¼šå†æ¬¡æ”€å‡ï¼Œä¸‹ä¸€æ¬¡æ‘˜è¦ä¼šåŒ å«ä¸Šä¸€æ¬¡çš„æ‘˜è¦ã€‚

ä½ ä¹Ÿå¯ä»¥åœ¨ä¸»é¢˜å˜åŒ–æ—¶è¿›è¡Œæ‘˜è¦ ï¼Œè€Œä¸ä» ä» æ˜¯åœ¨æŸä¸ª token 阈值时。自定义摘要提示词可能会有所帮助。

æˆ‘ä»¬å ³äºŽ Deep Agents 上下文管理 çš„æ–‡ç« æ›´è¯¦ç»†åœ°ä»‹ç»äº†è¿™ä¸¤è€ ã€‚

æŠ€èƒ½ï¼šä» åœ¨éœ€è¦æ—¶åŠ è½½ä¿¡æ¯

å‡è®¾ä½ çš„é”€å”®å›¢é˜Ÿæœ‰ä¸€å¥—å›ºå®šçš„å­£åº¦ä¸šåŠ¡å›žé¡¾æ ¼å¼ã€‚æ™ºèƒ½ä½“æ¯å­£åº¦åªéœ€è¦è¿™äº›æŒ‡ä»¤ä¸€æ¬¡ï¼Œæ‰€ä»¥æŠŠå®ƒä»¬æ”¾åœ¨ç³»ç»Ÿæç¤ºé‡Œæ„å‘³ç€æ¯æ¬¡è°ƒç”¨éƒ½è¦ä¸ºå®ƒä»¬ä»˜è´¹ï¼ˆæ¶ˆè€— token å’Œå“åº”æ—¶é—´ï¼‰ã€‚ç›¸åï¼Œä½ å¯ä»¥æŠŠè¿™äº›ä¿¡æ¯æ‰“åŒ æˆä¸€ä¸ª skill。

skill æ˜¯ä¸€ä¸ªæŒ‡ä»¤æ–‡ä»¶å¤¹ï¼ˆå¯é€‰åŒ å«è„šæœ¬å’Œå‚è€ƒæ–‡æ¡£ï¼‰ï¼Œä¸ºæ™ºèƒ½ä½“æä¾›å®ŒæˆæŸé¡¹ä¸“é—¨ä»»åŠ¡æ‰€éœ€çš„å† å®¹ã€‚

skill 文件夹的结构

智能体一开始只看到一段简短描述,只有当 QBR å‡ºçŽ°æ—¶æ‰åŠ è½½ qbr-report çš„å®Œæ•´æŒ‡ä»¤ï¼ˆå ¶ä»–ä»»åŠ¡æ°¸è¿œä¸ä¼šæºå¸¦å®ƒä»¬ï¼‰ã€‚

Skill åˆ†å±‚åŠ è½½ä¸Šä¸‹æ–‡ï¼Œå› æ­¤çª—å£ä¼šä¸€ç›´ä¿æŒå¾ˆå°ï¼Œç›´åˆ°æŸäº›å† å®¹çœŸæ­£ç›¸å ³æ—¶æ‰åŠ è½½ã€‚è¿™è¢«ç§°ä¸ºæ¸è¿›å¼æŠ«éœ²ï¼šæ¨¡åž‹ä¸€å¼€å§‹åªçœ‹åˆ°ä¸€ä»½â€œèœå•â€ï¼Œåœ¨éœ€è¦æ—¶æ‰æ‹‰å–å®Œæ•´é æ–¹ï¼Œå› æ­¤åä¸ª skill 消耗的上下文大约相当于十条单行说明。

渐进式披露(动画)

ä½ æŠŠæ™ºèƒ½ä½“æŒ‡å‘ä½ çš„ skill,SkillsMiddleware 使用两个钩子:

  • 在智能体启动前,它扫描 skills 文件夹,只读取每个 SKILL.md 的头部。
  • åœ¨æ¯æ¬¡æ¨¡åž‹è°ƒç”¨æ—¶ï¼Œå®ƒæŠŠè¿™äº›åç§°å’Œæè¿°æ·»åŠ åˆ°ç³»ç»Ÿæç¤ºä¸­ã€‚

完整指令只有在模型判断某个 skill ç›¸å ³æ—¶æ‰ä¼šè¿›å ¥ä¸Šä¸‹æ–‡ï¼ˆå¹¶é€šè¿‡ read_file å·¥å ·è¯»å–å®ƒï¼‰ï¼Œå› æ­¤æˆ‘ä»¬çš„æ™ºèƒ½ä½“åœ¨æ²¡æœ‰æ¨¡æ¿çš„æƒ å†µä¸‹è¿›è¡Œç ”ç©¶ï¼Œåªåœ¨éœ€è¦æ ¼å¼åŒ– QBR æ—¶æ‰åŠ è½½å®ƒã€‚

子智能体:隔离嘈杂的工作

å¸è½½èƒ½æœ‰æ•ˆåº”å¯¹è¿‡å¤§çš„ç»“æžœï¼Œä½†å¯¹äºŽä½ å·²çŸ¥ ä¼šå¾ˆå˜ˆæ‚çš„å·¥ä½œï¼ˆæ¯”å¦‚é€šè¿‡æ•°åæ¬¡æœç´¢å’Œé¡µé¢ç ”ç©¶ä¸€å®¶å ¬å¸ï¼‰ï¼Œå­æ™ºèƒ½ä½“æ˜¯ä¸€ä¸ªå¾ˆå¥½çš„è®¾è®¡é€‰æ‹©ã€‚å­æ™ºèƒ½ä½“åœ¨è‡ªå·±çš„ä¸Šä¸‹æ–‡çª—å£ä¸­å®Œæˆè¿™äº›å·¥ä½œï¼Œåªè¿”å›žæœ€ç»ˆç»“æžœï¼Œè¿™æ ·ä¸»æ™ºèƒ½ä½“æ°¸è¿œä¸ä¼šçœ‹åˆ°â€œå™ªéŸ³â€ã€‚

SubAgentMiddleware å è®¸æˆ‘ä»¬ä¸ºå­æ™ºèƒ½ä½“è‡ªå®šä¹‰ç³»ç»Ÿæç¤ºå’Œå¯ç”¨å·¥å ·ã€‚

code
market_researcher = {
"name"
:
"market-researcher"
,
"description"
:
"Researches a company and returns the 3 most notable developments."
,
"system_prompt"
:
"Use pull_market_report, then return 3 short bullet points. Do not return the raw report."
,
"tools"
: [pull_market_report],
}
agent = create_deep_agent(model=model, subagents=[market_researcher])

åœ¨æˆ‘ä»¬çš„åœºæ™¯ä¸­ï¼Œä¸»æ™ºèƒ½ä½“æŠŠæ¯å®¶å ¬å¸äº¤ç»™ market-researcher 子智能体。

ç ”ç©¶å­æ™ºèƒ½ä½“åœ¨è‡ªå·±çš„ä¸Šä¸‹æ–‡ä¸­è¯»å–å®Œæ•´æŠ¥å‘Šï¼Œåªè¿”å›žä¸‰æ¡è¦ç‚¹ï¼Œå› æ­¤ä¸»æ™ºèƒ½ä½“åªçœ‹åˆ°è¿™ä¸‰æ¡è¦ç‚¹ï¼ˆç”šè‡³çœ‹ä¸åˆ°åŽŸå§‹æŠ¥å‘Šçš„é¢„è§ˆï¼‰ã€‚æ­¤å¤–ï¼Œç”±äºŽå­æ™ºèƒ½ä½“ä»»åŠ¡å¾€å¾€è§„æ¨¡å°ä¸”èŒƒå›´æ˜Žç¡®ï¼Œå®ƒä»¬é€šå¸¸å¯ä»¥è¿è¡Œåœ¨æ›´ä¾¿å®œçš„æ¨¡åž‹ä¸Šå¹¶å¹¶è¡Œæ‰§è¡Œã€‚

é•¿æœŸè®°å¿†ï¼šè·¨å¯¹è¯æŒä¹ ä¿å­˜

åˆ°æœ€åŽï¼Œä½ çš„æ™ºèƒ½ä½“ä¼šå­¦åˆ°å¾ˆå¤šä¸œè¥¿ã€‚æœ‰äº›æœ‰ç”¨ï¼Œæœ‰äº›æ²¡ç”¨ã€‚

å‡è®¾ä½ å‘Šè¯‰æ™ºèƒ½ä½“ï¼šâ€œæ‘˜è¦é‡Œç”¨è¦ç‚¹ï¼Œä¸è¦ç”¨æ®µè½ã€‚â€å¦‚æžœæ²¡æœ‰è®°å¿†ï¼Œä½ å¯èƒ½æ¯å‘¨éƒ½è¦é‡å¤è¿™å¥è¯ã€‚åœ¨ Deep Agents 中,长期记忆就是一个 markdown æ–‡ä»¶ã€‚ä½ ç”¨ä¸€ä¸ªå‚æ•°æŠŠæ™ºèƒ½ä½“æŒ‡å‘å®ƒï¼ŒMemoryMiddleware ä¼šå¤„ç†å ¶ä½™çš„äº‹æƒ ï¼š

  • åŠ è½½ï¼š 在运行开始时读取该文件。
  • æ³¨å ¥ï¼š åœ¨æ¯æ¬¡æ¨¡åž‹è°ƒç”¨æ—¶æŠŠå ¶å† å®¹æ·»åŠ åˆ°ç³»ç»Ÿæç¤ºä¸­ã€‚
  • 更新: å½“æ™ºèƒ½ä½“å­¦åˆ°å€¼å¾—ä¿ç•™çš„å† å®¹ï¼ˆæ¯”å¦‚ä½ çš„æ ¼å¼åå¥½ï¼‰æ—¶ï¼Œå®ƒä¼šæ›´æ–°è¯¥æ–‡ä»¶ã€‚

更换模型,保留记忆

Deep Agents ä¸Žæä¾›å•†æ— å ³ï¼Œè¿™ä¸€ç‚¹ä¹Ÿå»¶ç»­åˆ°äº†è®°å¿†ä¸Šã€‚å› ä¸ºè®°å¿†æ˜¯ä½ è‡ªå·±å­˜å‚¨ä¸­çš„ä¸€ä¸ªæ™®é€šæ–‡ä»¶ï¼ˆè€Œä¸æ˜¯ç”±æŸä¸ªæä¾›å•†æŒæœ‰çš„ä¸œè¥¿ï¼‰ï¼Œä½ å¯ä»¥æŠŠåŒä¸€ä¸ªåŽç«¯æŒ‡å‘ä¸åŒçš„æ¨¡åž‹ï¼š

code
agent = create_deep_agent(
model=
"openai:gpt-6"
,
# different provider, same memory
memory=[
"/memories/AGENTS.md"
],
backend=backend,
store=store,
)

下周,另一个模型可以读取同一个文件,并且仍然用要点写摘要。

需要牢记的上下文工程策略

æ— è®ºä½ æ˜¯åŸºäºŽ Deep Agents æž„å»ºã€ä½¿ç”¨å ¶ä»–æ¡†æž¶ï¼Œè¿˜æ˜¯è‡ªå·±æž„å»ºä¸€ä¸ªï¼Œä»¥ä¸‹æ˜¯ä¸€äº›éœ€è¦æ³¨æ„çš„äº‹é¡¹ï¼š

  • å¤§è¾“å ¥åº”è¯¥è¢«å¸è½½ï¼Œè€Œä¸æ˜¯è¢«æˆªæ–­ã€‚ æˆªæ–­æ˜¯æœ‰æŸçš„ï¼›å¸è½½åˆ™ä¿æŒå ¶å¯æ£€ç´¢æ€§ã€‚
  • 压缩应该是可恢复的。 在摘要之后,智能体仍然可以取回它所需的细节。
  • çŸ¥è¯†åº”è¯¥æŒ‰éœ€åŠ è½½ã€‚ 系统提示中为每项任务准备的指令会在每次调用时消耗上下文。
  • 嘈杂的工作应该被隔离。 拥有自己上下文的子智能体能让主智能体保持专注。
  • ä½ åº”è¯¥æ‹¥æœ‰è®°å¿†ã€‚ å­˜å‚¨åœ¨ä½ æ‰€æŽ§åˆ¶çš„å­˜å‚¨ä¸­çš„è®°å¿†ï¼Œèƒ½åœ¨æ¨¡åž‹æˆ–æä¾›å•†åˆ‡æ¢åŽä¾ç„¶å­˜æ´»ã€‚
  • 默认值应该是可自定义的。 适合某一项任务的阈值很少能适合每一项任务。

试一试

code
uv add deepagents

æƒ³å‘çœŸäººè®²å¸ˆå­¦ä¹ æ›´å¤šï¼Ÿæˆ‘å°†åœ¨11月3æ—¥è®²è§£è¿™ä¸ªå† å®¹ï¼šç‚¹å‡» 这里 注册!

è¦æ·±å ¥äº†è§£ä¸Šä¸‹æ–‡å·¥ç¨‹ï¼Œè¯·æŸ¥çœ‹æˆ‘ä»¬å è´¹çš„ã€è‡ªå®šè¿›åº¦çš„ LangChain Academy 上的 Deep Agents 课程。

来源: LangChain:Blog · langchain.com

Agent 智能体

教程实践

#

教程/实践

Agent

RAG