Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions src/llama_stack_client/lib/agents/agent.py
Original file line number Diff line number Diff line change
Expand Up @@ -60,8 +60,7 @@ def _process_chunk(self, chunk: AgentTurnResponseStreamChunk) -> None:
message = chunk.event.payload.turn.output_message

if self.output_parser:
parsed_message = self.output_parser.parse(message)
message = parsed_message
self.output_parser.parse(message)

def _has_tool_call(self, chunk: AgentTurnResponseStreamChunk) -> bool:
if chunk.event.payload.event_type != "turn_complete":
Expand Down
6 changes: 3 additions & 3 deletions src/llama_stack_client/lib/agents/output_parser.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,10 +39,10 @@ def parse(self, output_message: CompletionMessage) -> CompletionMessage:
Args:
output_message (CompletionMessage): The response message from agent turn

Returns:
CompletionMessage: The processed/transformed response message
Returns: None
Modifies the output_message in place
"""

@abstractmethod
def parse(self, output_message: CompletionMessage) -> CompletionMessage:
def parse(self, output_message: CompletionMessage) -> None:
raise NotImplementedError
8 changes: 4 additions & 4 deletions src/llama_stack_client/lib/agents/react/output_parser.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,16 +25,16 @@ class ReActOutput(BaseModel):


class ReActOutputParser(OutputParser):
def parse(self, output_message: CompletionMessage) -> CompletionMessage:
def parse(self, output_message: CompletionMessage) -> None:
response_text = str(output_message.content)
try:
react_output = ReActOutput.model_validate_json(response_text)
except ValidationError as e:
print(f"Error parsing action: {e}")
return output_message
return

if react_output.answer:
return output_message
return

if react_output.action:
tool_name = react_output.action.tool_name
Expand All @@ -43,4 +43,4 @@ def parse(self, output_message: CompletionMessage) -> CompletionMessage:
call_id = str(uuid.uuid4())
output_message.tool_calls = [ToolCall(call_id=call_id, tool_name=tool_name, arguments=tool_params)]

return output_message
return