You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

LangChain调用LLM遇Token超限RateLimitError,求解决方案

解决GPT-4 Token超限(429错误)的方案

问题根源

你代码里的核心错误是query = f"{hwp_to_txt}to English "——hwp_to_txt是所有分割后的文档对象列表,直接把它拼进查询会一次性把所有文本内容塞进LLM请求,瞬间超过GPT-4每分钟10000Token的限制。

具体解决方法

1. 修正向量数据库的使用逻辑

向量数据库的作用是检索相关文本片段,而非把所有内容丢给LLM。如果你的需求是翻译文档里的特定内容,应该把查询改成明确的翻译指令,让向量DB自动检索对应片段后再翻译:

# 修正查询逻辑:只传翻译指令,向量DB会自动检索相关内容
query = "Translate the retrieved content to English"
result = chain({"question": query, "chat_history": []})

2. 批量翻译整个文档(如果需要全译)

如果目标是翻译完整文档,不要用ChatVectorDBChain,直接遍历每个分割后的文档块,逐个调用LLM翻译,同时添加限流控制:

import time
from langchain.llms import OpenAI

llm = OpenAI(model_name="gpt-4")
translated_results = []

# 遍历每个文档块,逐个翻译
for doc in hwp_to_txt:
    # 构造翻译请求,只传当前文档的内容
    prompt = f"Translate the following text to English:\n{doc.page_content}"
    try:
        translation = llm(prompt)
        translated_results.append(translation)
        # 控制请求频率,避免超TPM限制:按10000Token/分钟估算,每次请求用~1200Token的话,间隔7秒左右
        time.sleep(7)
    except Exception as e:
        print(f"翻译出错:{e}")
        time.sleep(30)  # 出错后延长间隔

# 把翻译结果合并成完整文本
full_translation = "\n".join(translated_results)

3. 额外优化建议

  • 调小文本块大小:把chunk_size从1000降到700-800,减少单次请求的Token占用
  • 切换模型:如果翻译精度要求不高,改用gpt-3.5-turbo,它的TPM限制更高,能大幅降低超限概率
  • 动态限流:可以用tiktoken库统计每次请求的Token数量,精准控制请求间隔,确保每分钟总Token不超过10000

内容的提问来源于stack exchange,提问作者TREVI

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 21:42:35