Merge pull request #65 from luojiyin1987/fix/extract-toc-infinite-loop

fix: prevent infinite loop in extract_toc_content
This commit is contained in:
Bukely_ 2026-03-16 13:34:05 +08:00 committed by GitHub
commit 599d2ce497
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -180,19 +180,22 @@ def extract_toc_content(content, model=None):
response = response + new_response
if_complete = check_if_toc_transformation_is_complete(content, response, model)
attempt = 0
max_attempts = 5
while not (if_complete == "yes" and finish_reason == "finished"):
attempt += 1
if attempt > max_attempts:
raise Exception('Failed to complete table of contents after maximum retries')
chat_history = [
{"role": "user", "content": prompt},
{"role": "assistant", "content": response},
{"role": "user", "content": prompt},
{"role": "assistant", "content": response},
]
prompt = f"""please continue the generation of table of contents , directly output the remaining part of the structure"""
new_response, finish_reason = ChatGPT_API_with_finish_reason(model=model, prompt=prompt, chat_history=chat_history)
response = response + new_response
if_complete = check_if_toc_transformation_is_complete(content, response, model)
# Optional: Add a maximum retry limit to prevent infinite loops
if len(chat_history) > 5: # Arbitrary limit of 10 attempts
raise Exception('Failed to complete table of contents after maximum retries')
return response