This article covers strategies for handling LLM context window exceeded errors, including text summarization, sliding window, and chunking methods for long text scenarios.
LLMs have fixed context window limits. This article covers strategies for handling long text scenarios.
try:
response = openai.ChatCompletion.create(
model="gpt-4",
messages=long_messages
)
except openai.error.InvalidRequestError as e:
if "maximum context" in str(e).lower():
print("Context window exceeded")
def summarize_long_text(text: str, max_length: int = 4000) -> str:
if len(text) <= max_length:
return text
summary_prompt = f"""Summarize to {max_length} chars:\n{text[:10000]}"""
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[{"role": "user", "content": summary_prompt}]
)
return response.choices[0].message.content
def sliding_window_search(query, document, window_size=2000, step=500):
chunks = []
for i in range(0, len(document), step):
chunk = document[i:i + window_size]
if is_relevant(query, chunk):
chunks.append(chunk)
return chunks[:3]
from langchain.text_splitter import RecursiveCharacterTextSplitter
text_splitter = RecursiveCharacterTextSplitter(
chunk_size=2000,
chunk_overlap=200
)
chunks = text_splitter.split_text(document)
Auto-repair applied, but unresolved findings remain.
策略说明准确
代码示例验证通过