如何避免LangChain中的Agent超出Token长度限制?
解决LangChain Agent超出Token长度限制的问题
问题分析
你遇到的InvalidRequestError是因为加载的WolframAlpha AI插件元数据(包含工具描述、参数说明等)内容过长,加上设置的max_tokens=1000,导致输入消息与请求的完成token总和超过了GPT-3.5-turbo模型4097的token上限。
具体解决方法
降低完成token上限:减少
ChatOpenAI的max_tokens参数值,确保输入消息+完成token的总和不超过模型上限。修改代码如下:llm = ChatOpenAI(temperature=0, streaming=True, max_tokens=500)精简工具描述:手动裁剪
AIPluginTool的工具描述,只保留核心功能说明,大幅减少token占用:tool = AIPluginTool.from_plugin_url("https://www.wolframalpha.com/.well-known/ai-plugin.json") # 替换为精简的核心描述 tool.description = "用于求解数学问题(如微分方程)的计算工具"切换大上下文模型:如果业务需要保留较长的完成token或工具描述,可以更换为支持更大上下文的模型,比如GPT-3.5-turbo-16k(支持16384 tokens):
llm = ChatOpenAI(model_name="gpt-3.5-turbo-16k", temperature=0, streaming=True, max_tokens=1000)使用上下文压缩工具:利用LangChain的上下文压缩能力,自动精简工具描述等文本内容:
from langchain.retrievers.document_compressors import LLMChainExtractor from langchain.schema import Document llm = ChatOpenAI(temperature=0, streaming=True, max_tokens=1000) compressor = LLMChainExtractor.from_llm(llm) tool = AIPluginTool.from_plugin_url("https://www.wolframalpha.com/.well-known/ai-plugin.json") # 压缩工具描述 compressed_doc = compressor.compress_documents([Document(page_content=tool.description)])[0] tool.description = compressed_doc.page_content
内容的提问来源于stack exchange,提问作者tobias
相关产品推荐
相关产品推荐

