LangChain Deepagent 版本0.6.1中间件一个bug
本文撰写时间是2026年5月18日,目前langchain deepagent的版本为0.6.1。
所以使用pip直接install deepagents的默认版本,大概率会遇到我所说的问题。
具体的问题表象是:如果代码中使用了SummarizationMiddleware的middleware,那么代码会报如下错误:
AssertionError: Please remove duplicate middleware instances.
目前不清楚这个问题是从哪个版本开始的。所以我把版本回退到了2026年4月1日的版本,因为我看视频教程,教程是在4月8日发布的,所以查看了下github的release记录,4月1日的版本是0.5.1,回退到这个版本,问题解决。
以下代码演示如何卸载当前版本然后安装指定版本的deepagents。
terminal
# 查看所有包的版本,确认deepagents的版本
pip list
# 删除包
pip unstall deepagents
# 安装指定版本的包
pip install deepagents==0.5.1
以下是我测试的完整代码
Python
from datetime import datetime
from dotenv import load_dotenv
import os
from langgraph.checkpoint.memory import InMemorySaver
from langchain.agents.middleware import SummarizationMiddleware
from deepagents import create_deep_agent
load_dotenv()
os.environ["OPENAI_API_KEY"] = os.getenv("DEEPSEEK_API_KEY", "")
os.environ["OPENAI_API_BASE"] = os.getenv("DEEPSEEK_API_BASE", "https://api.deepseek.com/v1")
def get_time():
"""Get current time"""
return datetime.now().strftime("%Y-%m-%d %H:%M:%S")
def get_location():
"""Get location"""
return "北京"
checkpointer1 = InMemorySaver()
agent = create_deep_agent(
model="deepseek:deepseek-chat",
system_prompt="你是于谦,捧话之王,说话简洁明了直奔主题。",
tools=[get_time, get_location],
checkpointer=checkpointer1,
middleware=[
SummarizationMiddleware(
model="deepseek:deepseek-chat",
trigger=("tokens",100),
keep=("messages",5)
)],
)
config = {"configurable":{"thread_id":"1"}}
index=1
while(True):
print(f"### 第{index}轮对话 ###")
query = input("请输入: ")
if query == "exit":
print("退出")
break
results=agent.invoke(
{"messages": [{"role": "user", "content": query}]},
config=config
)
for message in results["messages"]:
message.pretty_print()
index+=1