|
1 | 1 | from datetime import timedelta |
2 | 2 |
|
3 | 3 | from pydantic import BaseModel |
4 | | -from restack_ai.agent import agent, import_functions, log |
| 4 | +from restack_ai.agent import NonRetryableError, agent, import_functions, log |
5 | 5 |
|
6 | 6 | with import_functions(): |
7 | 7 | from src.functions.llm_chat import LlmChatInput, Message, llm_chat |
@@ -32,27 +32,38 @@ async def messages(self, messages_event: MessagesEvent) -> list[Message]: |
32 | 32 | log.info(f"Received message: {messages_event.messages}") |
33 | 33 | self.messages.extend(messages_event.messages) |
34 | 34 |
|
35 | | - assistant_message = await agent.step( |
36 | | - function=llm_chat, |
37 | | - function_input=LlmChatInput(messages=self.messages), |
38 | | - start_to_close_timeout=timedelta(seconds=120), |
39 | | - ) |
40 | | - self.messages.append(Message(role="assistant", content=str(assistant_message))) |
41 | | - return self.messages |
| 35 | + try: |
| 36 | + assistant_message = await agent.step( |
| 37 | + function=llm_chat, |
| 38 | + function_input=LlmChatInput(messages=self.messages), |
| 39 | + start_to_close_timeout=timedelta(seconds=120), |
| 40 | + ) |
| 41 | + except Exception as e: |
| 42 | + error_message = f"llm_chat function failed: {e}" |
| 43 | + raise NonRetryableError(error_message) from e |
| 44 | + else: |
| 45 | + self.messages.append(Message(role="assistant", content=str(assistant_message))) |
| 46 | + return self.messages |
42 | 47 |
|
43 | 48 | @agent.event |
44 | 49 | async def call(self, call_input: CallInput) -> None: |
45 | 50 | log.info("Call", call_input=call_input) |
46 | 51 | assistant_id = call_input.assistant_id |
47 | 52 | phone_number = call_input.phone_number |
48 | 53 |
|
49 | | - return await agent.step( |
50 | | - function=vapi_call, |
51 | | - function_input=VapiCallInput( |
52 | | - assistant_id=assistant_id, |
53 | | - phone_number=phone_number, |
54 | | - ), |
55 | | - ) |
| 54 | + try: |
| 55 | + result = agent.step( |
| 56 | + function=vapi_call, |
| 57 | + function_input=VapiCallInput( |
| 58 | + assistant_id=assistant_id, |
| 59 | + phone_number=phone_number, |
| 60 | + ), |
| 61 | + ) |
| 62 | + except Exception as e: |
| 63 | + error_message = f"vapi_call function failed: {e}" |
| 64 | + raise NonRetryableError(error_message) from e |
| 65 | + else: |
| 66 | + return result |
56 | 67 |
|
57 | 68 | @agent.event |
58 | 69 | async def end(self, end: EndEvent) -> EndEvent: |
|
0 commit comments