智能体开发必学的关键技术,让你的应用告别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:基础配置

python
from 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个token
keep_tokens=1500
# 或保留20%的容量
keep_fraction=0.2

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

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

python
summary_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:代码审查助手​​​​​​​

python
code_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)

高级技巧:自定义中间件

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

python
class 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应用的关键技术。

📞 支持与反馈

维护团队: 北京慧测·杭州但问智能技术团队​​​​

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐