From 5a32685b196529a7849d0ce68492975b1d3ae217 Mon Sep 17 00:00:00 2001 From: Eric Gustin <34000337+EricGustin@users.noreply.github.com> Date: Wed, 25 Sep 2024 15:55:35 -0700 Subject: [PATCH] `arcade chat` catch OpenAIErrors (#69) Instead of `arcade chat` crashing, we just prompt the user again ![image](https://github.com/user-attachments/assets/34aaed14-13af-4ab0-aae2-9734b34cf7ba) --- arcade/arcade/cli/main.py | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/arcade/arcade/cli/main.py b/arcade/arcade/cli/main.py index 9090fb59..476d3f1a 100644 --- a/arcade/arcade/cli/main.py +++ b/arcade/arcade/cli/main.py @@ -8,6 +8,7 @@ from typing import Any, Optional from urllib.parse import urlencode import typer +from openai import OpenAIError from rich.console import Console from rich.markup import escape from rich.table import Table @@ -244,7 +245,12 @@ def chat( history.append({"role": "user", "content": user_input}) - chat_result = handle_chat_interaction(client, model, history, user_email, stream) + try: + chat_result = handle_chat_interaction(client, model, history, user_email, stream) + except OpenAIError as e: + console.print(f"❌ Arcade Chat failed with error: {e!s}", style="bold red") + continue + history = chat_result.history tool_messages = chat_result.tool_messages tool_authorization = chat_result.tool_authorization @@ -254,7 +260,14 @@ def chat( with console.status("Waiting for you to authorize the action...", spinner="dots"): wait_for_authorization_completion(client, tool_authorization) # re-run the chat request now that authorization is complete - chat_result = handle_chat_interaction(client, model, history, user_email, stream) + try: + chat_result = handle_chat_interaction( + client, model, history, user_email, stream + ) + except OpenAIError as e: + console.print(f"❌ Arcade Chat failed with error: {e!s}", style="bold red") + continue + history = chat_result.history tool_messages = chat_result.tool_messages