mirror of
https://github.com/khoaliber/khoj.git
synced 2026-03-10 05:39:11 +00:00
Gracefully close thread when there's an exception in the anthropic llm thread. Include full stack traces.
This commit is contained in:
@@ -89,26 +89,29 @@ def anthropic_chat_completion_with_backoff(
|
|||||||
def anthropic_llm_thread(
|
def anthropic_llm_thread(
|
||||||
g, messages, system_prompt, model_name, temperature, api_key, max_prompt_size=None, model_kwargs=None
|
g, messages, system_prompt, model_name, temperature, api_key, max_prompt_size=None, model_kwargs=None
|
||||||
):
|
):
|
||||||
if api_key not in anthropic_clients:
|
try:
|
||||||
client: anthropic.Anthropic = anthropic.Anthropic(api_key=api_key)
|
if api_key not in anthropic_clients:
|
||||||
anthropic_clients[api_key] = client
|
client: anthropic.Anthropic = anthropic.Anthropic(api_key=api_key)
|
||||||
else:
|
anthropic_clients[api_key] = client
|
||||||
client: anthropic.Anthropic = anthropic_clients[api_key]
|
else:
|
||||||
|
client: anthropic.Anthropic = anthropic_clients[api_key]
|
||||||
|
|
||||||
formatted_messages: List[anthropic.types.MessageParam] = [
|
formatted_messages: List[anthropic.types.MessageParam] = [
|
||||||
anthropic.types.MessageParam(role=message.role, content=message.content) for message in messages
|
anthropic.types.MessageParam(role=message.role, content=message.content) for message in messages
|
||||||
]
|
]
|
||||||
|
|
||||||
with client.messages.stream(
|
with client.messages.stream(
|
||||||
messages=formatted_messages,
|
messages=formatted_messages,
|
||||||
model=model_name, # type: ignore
|
model=model_name, # type: ignore
|
||||||
temperature=temperature,
|
temperature=temperature,
|
||||||
system=system_prompt,
|
system=system_prompt,
|
||||||
timeout=20,
|
timeout=20,
|
||||||
max_tokens=DEFAULT_MAX_TOKENS_ANTHROPIC,
|
max_tokens=DEFAULT_MAX_TOKENS_ANTHROPIC,
|
||||||
**(model_kwargs or dict()),
|
**(model_kwargs or dict()),
|
||||||
) as stream:
|
) as stream:
|
||||||
for text in stream.text_stream:
|
for text in stream.text_stream:
|
||||||
g.send(text)
|
g.send(text)
|
||||||
|
except Exception as e:
|
||||||
g.close()
|
logger.error(f"Error in anthropic_llm_thread: {e}", exc_info=True)
|
||||||
|
finally:
|
||||||
|
g.close()
|
||||||
|
|||||||
@@ -131,6 +131,6 @@ def llm_thread(g, messages, model_name, temperature, openai_api_key=None, api_ba
|
|||||||
elif delta_chunk.content:
|
elif delta_chunk.content:
|
||||||
g.send(delta_chunk.content)
|
g.send(delta_chunk.content)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"Error in llm_thread: {e}")
|
logger.error(f"Error in llm_thread: {e}", exc_info=True)
|
||||||
finally:
|
finally:
|
||||||
g.close()
|
g.close()
|
||||||
|
|||||||
Reference in New Issue
Block a user