Skip to content

Commit e344b9f

Browse files
feat: Phase 2 — reasoning_effort on ChatRequest + enriched PROVIDER_ERROR events
- reasoning_effort: reads from config, sets on ChatRequest before provider call - PROVIDER_ERROR enrichment: LLMError fields (error_type, provider, status_code, retryable) added to error events - Graceful fallback for non-LLMError exceptions 🤖 Generated with [Amplifier](https://github.com/microsoft/amplifier) Co-Authored-By: Amplifier <240397093+microsoft-amplifier@users.noreply.github.com>
1 parent 4f794ad commit e344b9f

File tree

3 files changed

+608
-2
lines changed

3 files changed

+608
-2
lines changed

amplifier_module_loop_basic/__init__.py

Lines changed: 40 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
from amplifier_core.events import TOOL_ERROR
2323
from amplifier_core.events import TOOL_POST
2424
from amplifier_core.events import TOOL_PRE
25+
from amplifier_core.llm_errors import LLMError
2526
from amplifier_core.message_models import ChatRequest
2627
from amplifier_core.message_models import Message
2728
from amplifier_core.message_models import ToolSpec
@@ -218,7 +219,11 @@ async def execute(
218219
for t in tools.values()
219220
]
220221

221-
chat_request = ChatRequest(messages=messages_objects, tools=tools_list)
222+
chat_request = ChatRequest(
223+
messages=messages_objects,
224+
tools=tools_list,
225+
reasoning_effort=self.config.get("reasoning_effort"),
226+
)
222227
logger.debug(
223228
f"Created ChatRequest with {len(messages_objects)} messages"
224229
)
@@ -592,6 +597,17 @@ async def execute_single_tool(
592597
logger.warning("Provider returned neither content nor tool calls")
593598
iteration += 1
594599

600+
except LLMError as e:
601+
await hooks.emit(
602+
PROVIDER_ERROR,
603+
{
604+
"provider": provider_name,
605+
"error": {"type": type(e).__name__, "msg": str(e)},
606+
"retryable": e.retryable,
607+
"status_code": e.status_code,
608+
},
609+
)
610+
raise
595611
except Exception as e:
596612
await hooks.emit(
597613
PROVIDER_ERROR,
@@ -673,7 +689,11 @@ async def execute_single_tool(
673689
for t in tools.values()
674690
]
675691

676-
chat_request = ChatRequest(messages=messages_objects, tools=tools_list)
692+
chat_request = ChatRequest(
693+
messages=messages_objects,
694+
tools=tools_list,
695+
reasoning_effort=self.config.get("reasoning_effort"),
696+
)
677697

678698
kwargs = {}
679699
if self.extended_thinking:
@@ -705,7 +725,25 @@ async def execute_single_tool(
705725
assistant_msg["metadata"] = response.metadata
706726
await context.add_message(assistant_msg)
707727

728+
except LLMError as e:
729+
await hooks.emit(
730+
PROVIDER_ERROR,
731+
{
732+
"provider": provider_name,
733+
"error": {"type": type(e).__name__, "msg": str(e)},
734+
"retryable": e.retryable,
735+
"status_code": e.status_code,
736+
},
737+
)
738+
logger.error(f"Error getting final response after max iterations: {e}")
708739
except Exception as e:
740+
await hooks.emit(
741+
PROVIDER_ERROR,
742+
{
743+
"provider": provider_name,
744+
"error": {"type": type(e).__name__, "msg": str(e)},
745+
},
746+
)
709747
logger.error(f"Error getting final response after max iterations: {e}")
710748

711749
await hooks.emit(

0 commit comments

Comments
 (0)