11from datetime import timedelta
22
33from pydantic import BaseModel
4- from restack_ai .agent import agent , import_functions , log
4+ from restack_ai .agent import agent , import_functions , log , NonRetryableError
55
66with import_functions ():
77 from src .functions .llm_chat import LlmChatInput , Message , llm_chat
@@ -26,30 +26,36 @@ def __init__(self) -> None:
2626 async def messages (self , messages_event : MessagesEvent ) -> list [Message ]:
2727 log .info (f"Received messages: { messages_event .messages } " )
2828 self .messages .extend (messages_event .messages )
29-
30- sales_info = await agent .step (
31- function = lookup_sales , start_to_close_timeout = timedelta (seconds = 120 )
32- )
33-
34- system_content = f"You are a helpful assistant that can help with sales data. Here is the sales information: { sales_info } "
35-
36- completion = await agent .step (
37- function = llm_chat ,
38- function_input = LlmChatInput (
39- messages = self .messages , system_content = system_content
40- ),
41- start_to_close_timeout = timedelta (seconds = 120 ),
42- )
43-
44- log .info (f"completion: { completion } " )
45-
46- self .messages .append (
47- Message (
48- role = "assistant" , content = completion .choices [0 ].message .content or ""
29+ try :
30+ sales_info = await agent .step (
31+ function = lookup_sales , start_to_close_timeout = timedelta (seconds = 120 )
4932 )
50- )
51-
52- return self .messages
33+ except Exception as e :
34+ error_message = f"Error during lookup_sales: { e } "
35+ raise NonRetryableError (error_message ) from e
36+ else :
37+ system_content = f"You are a helpful assistant that can help with sales data. Here is the sales information: { sales_info } "
38+
39+ try :
40+ completion = await agent .step (
41+ function = llm_chat ,
42+ function_input = LlmChatInput (
43+ messages = self .messages , system_content = system_content
44+ ),
45+ start_to_close_timeout = timedelta (seconds = 120 ),
46+ )
47+ except Exception as e :
48+ error_message = f"Error during llm_chat: { e } "
49+ raise NonRetryableError (error_message ) from e
50+ else :
51+ log .info (f"completion: { completion } " )
52+ self .messages .append (
53+ Message (
54+ role = "assistant" , content = completion .choices [0 ].message .content or ""
55+ )
56+ )
57+
58+ return self .messages
5359
5460 @agent .event
5561 async def end (self ) -> EndEvent :
0 commit comments