Message model
| 18 | |
| 19 | |
| 20 | class Message(BaseModel): |
| 21 | """Message model""" |
| 22 | |
| 23 | role: str |
| 24 | content: str | list[ContentItem] | None = Field(default=None) |
| 25 | name: str | None = Field(default=None) |
| 26 | tool_calls: list[ToolCall] | None = Field(default=None) |
| 27 | tool_call_id: str | None = Field(default=None) |
| 28 | refusal: str | None = Field(default=None) |
| 29 | reasoning_content: str | None = Field(default=None) |
| 30 | audio: dict[str, Any] | None = Field(default=None) |
| 31 | annotations: list[dict[str, Any]] = Field(default_factory=list) |
| 32 | |
| 33 | @model_validator(mode="after") |
| 34 | def normalize_role(self) -> Message: |
| 35 | """Normalize 'developer' role to 'system' for Gemini compatibility.""" |
| 36 | if self.role == "developer": |
| 37 | self.role = "system" |
| 38 | return self |
| 39 | |
| 40 | |
| 41 | class Choice(BaseModel): |
no outgoing calls
no test coverage detected