大数跨境

LangChain核心技巧:优雅解决大模型上下文限制

LangChain核心技巧:优雅解决大模型上下文限制 慧测
2026-01-17
0

·  ·  ·

图片

但问智能出品

图片
  • 免费获取源码

    huice666/danwen668

  • 原创课程大纲

    https://huicewang.com/testing

  • B 站系列视频

    https://space.bilibili.com/1037858964

内容很长,收藏起来,未来可能用得上哦  

智能体开发必学的关键技术,让你的应用告别token超限烦恼

今天是智能体应用实战系列公开课的第六讲,我们带大家深入探讨LangChain中一个至关重要的技术——Summarization Middleware(总结中间件)。

一、问题的本质:上下文窗口的局限

所有大模型都有一个固有的限制:上下文窗口。

• GPT-4:128K token

DeepSeek:64K token

• 国内多数模型:通常更少

在现实应用中,这个限制很快就会成为瓶颈:

• UI自动化测试:整个HTML页面+截图base64编码,轻松超限

• 长文档处理:几万字的文章生成需要多次交互

• 智能客服:上百轮对话需要保持连贯记忆

粗暴的截断方案行不通,因为会破坏上下文的连贯性。我们需要更智能的解决方案。

二、Summarization Middleware:智能的上下文管理者

核心思想:智能压缩,而非简单截断

总结中间件的工作原理类似于人脑的记忆机制:记住要点,忘掉细节。

它会在发送给大模型之前,对历史对话进行智能分析:

1. 实时监控token数量

2. 触发总结当达到预设阈值

3. 生成摘要保留关键信息

4. 替换历史用摘要+最近对话继续

技术架构:像Spring AOP一样的切面编程

在LangChain中,中间件可以在多个位置介入:

• before_agent / after_agent:智能体执行前后

• before_tool / after_tool:工具调用前后

• before_model / after_model:模型调用前后

总结中间件主要在before_model阶段工作,确保输入不超过限制。

三、实战配置:三步搭建智能上下文管理

步骤1:基础配置

pythonfrom langchain.middleware import SummarizationMiddleware# 创建中间件summarization_middleware = SummarizationMiddleware(    llm=ChatOpenAI(model="gpt-4o-mini"),  # 总结专用模型    trigger="tokens",      # 触发条件类型    trigger_value=3000,    # 3000token时触发    keep_messages=5,       # 保留最近5条消息)

步骤2:高级配置选项

触发条件灵活选择:

• trigger="tokens":精确控制成本(如5000token)

• trigger="messages":简单场景(如20条消息)

• trigger="fraction":自适应(如容量的60%)

保留策略按需调整:

python# 保留最近5条消息keep_messages=5# 或保留1500个tokenkeep_tokens=1500# 或保留20%的容量keep_fraction=0.2

步骤3:优化总结提示词(最关键!)

默认提示词可能不够精准,自定义提示词能大幅提升效果:

pythonsummary_prompt = """请总结对话历史,特别注意:1. 核心问题与用户的核心需求2. 已提供的解决方案和达成的结论3. 待处理的后续任务和未解决的问题4. 所有重要的事实、数据、ID、日期等信息要求:- 保留所有关键决策点- 用简洁的语言表达- 结构化输出关键信息"""

四、实际应用案例

案例1:智能客服系统

例如在电商智能客服项目中,我们实现了:

python# 电商客服中间件配置customer_service_middleware = SummarizationMiddleware(    llm=ChatOpenAI(model="gpt-4o-mini"),    trigger="tokens",    trigger_value=6000,    keep_messages=6,    summary_prompt="总结客户问题、已提供的帮助、待处理事项...")# 集成用户确认中间件(重要操作前需要用户确认)agent_executor = AgentExecutor(    agent=agent,    tools=tools,    middlewares=[customer_service_middleware, user_confirmation_middleware])

实际效果:

• 用户查询订单 → 显示11个历史订单

• 修改收货地址 → 调用修改接口,用户确认后生效

• 长时间对话 → 自动总结历史,保持连贯性

案例2:代码审查助手

pythoncode_review_middleware = SummarizationMiddleware(    llm=ChatOpenAI(model="gpt-4o-mini"),    trigger="fraction",    trigger_value=0.6,  # 达到容量60%时触发    keep_tokens=3000,    summary_prompt="请总结代码审查的关键信息:代码模块、主要问题、建议、待处理事项...")

五、避免的坑与优化技巧

常见问题1:总结会丢失重要信息吗?

会的,但可以通过以下方式最小化影响:

1. 使用更强的总结模型:如果预算允许,用更好的模型做总结

2. 优化提示词:明确要求保留哪些信息

3. 保留更多最近消息:适当增加keep_messages的值

常见问题2:如何选择触发阈值?

• 成本敏感型:使用trigger="tokens",精确控制(如5000)

• 简单对话:使用trigger="messages",易于理解(如20条)

• 自适应场景:使用trigger="fraction",按比例触发(如0.7)

高级技巧:自定义中间件

如果默认中间件不满足需求,可以继承并自定义:

pythonclass CustomSummarizationMiddleware(SummarizationMiddleware):    async def before_model(self, run_manager, **kwargs):        # 获取消息        messages = kwargs.get("messages", [])        # 执行总结逻辑        if self._should_summarize(messages):            summary = await self._create_summary(messages)            # 自定义验证逻辑            if self._validate_key_info(summary, messages):                kwargs["messages"] = self._format_output(summary, messages)        return kwargs

六、性能与成本优化

1. 多模型策略

• 主对话模型:高性能模型(如GPT-4)

• 总结模型:便宜模型(如GPT-4o-mini)

2. 缓存优化

对频繁出现的对话模式进行缓存,避免重复总结。

3. 批量与并行处理

对于大量历史消息,可以使用批量总结和并行处理提升效率。

七、完整实战项目结构

客服项目的核心架构:

python# 1. 工具定义(MCP服务对接电商系统)tools = [    search_products_tool,    query_order_status_tool,    update_address_tool,    create_ticket_tool]# 2. 中间件配置middlewares = [    SummarizationMiddleware(...),  # 总结中间件    LongTermMemoryMiddleware(...), # 长期记忆    DynamicPromptMiddleware(...)   # 动态提示词]# 3. 智能体执行器agent_executor = AgentExecutor(    agent=create_react_agent(llm, tools),    tools=tools,    middlewares=middlewares,    verbose=True)

八、总结

Summarization Middleware是LangChain中解决长上下文问题的核心工具,它通过:

✅ 智能压缩历史对话,而非简单截断

✅ 保持连贯性,让大模型"长期记忆"关键信息

✅ 大幅降低成本,减少不必要的token消耗

✅ 灵活配置,适应各种应用场景

关键收获:

1. 总结中间件是智能体开发中的必备组件

2. 自定义提示词是优化效果的关键

3. 结合长期记忆存储可以构建更强大的智能体

4. 多中间件组合能实现复杂的控制逻辑

在AI应用开发中,管理好上下文不仅是一个技术问题,更是成本控制和用户体验的核心。掌握了Summarization Middleware,你就掌握了构建高效、经济、智能的AI应用的关键技术。

联系下方微信获取案例完整源码

图片
huice666
图片
danwen668



【声明】内容源于网络
0
0
慧测
专注人工智能前沿技术落地企业实战应用
内容 0
粉丝 0
慧测 专注人工智能前沿技术落地企业实战应用
总阅读0
粉丝0
内容0