chore: import upstream snapshot with attribution
Validate YAML Workflows / Validate YAML Configuration Files (push) Has been cancelled
Validate YAML Workflows / Validate YAML Configuration Files (push) Has been cancelled
This commit is contained in:
Executable
+39
@@ -0,0 +1,39 @@
|
||||
"""Normalized provider response dataclasses."""
|
||||
|
||||
from dataclasses import dataclass
|
||||
from typing import Any
|
||||
|
||||
from entity.messages import Message
|
||||
|
||||
|
||||
@dataclass
|
||||
class ModelResponse:
|
||||
"""Represents a provider response with normalized message payload."""
|
||||
|
||||
message: Message
|
||||
raw_response: Any | None = None
|
||||
|
||||
def has_tool_calls(self) -> bool:
|
||||
return bool(self.message.tool_calls)
|
||||
|
||||
def to_dict(self) -> dict:
|
||||
"""Return a simple dict representation for compatibility."""
|
||||
payload = {
|
||||
"role": self.message.role.value,
|
||||
}
|
||||
if isinstance(self.message.content, list):
|
||||
payload["content"] = [
|
||||
block.to_dict() if hasattr(block, "to_dict") else block for block in self.message.content # type: ignore[arg-type]
|
||||
]
|
||||
else:
|
||||
payload["content"] = self.message.content
|
||||
if self.message.tool_calls:
|
||||
payload["tool_calls"] = [call.to_openai_dict() for call in self.message.tool_calls]
|
||||
if self.message.tool_call_id:
|
||||
payload["tool_call_id"] = self.message.tool_call_id
|
||||
if self.message.name:
|
||||
payload["name"] = self.message.name
|
||||
return payload
|
||||
|
||||
def str_raw_response(self):
|
||||
return self.raw_response.__str__()
|
||||
Reference in New Issue
Block a user