From b6779c9a115e9046c09b44b4705852f63608523d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcel=20Wien=C3=B6bst?= Date: Tue, 25 Aug 2026 16:42:22 +0200 Subject: [PATCH 1/2] fix: add reasoning_content field to fix pydantic validation error --- .../gen_ai_hub/orchestration_v2/models/message.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/packages/gen/gen_ai_hub/orchestration_v2/models/message.py b/packages/gen/gen_ai_hub/orchestration_v2/models/message.py index f098c77..5534251 100644 --- a/packages/gen/gen_ai_hub/orchestration_v2/models/message.py +++ b/packages/gen/gen_ai_hub/orchestration_v2/models/message.py @@ -59,6 +59,17 @@ class MessageToolCall(BaseModel): type: typing.Literal["function"] = "function" function: FunctionCall +class ReasoningBlock(BaseModel): + """ + The reasoning content returned by the model. + + Attributes: + content: The reasoning content. + signature: Signature string for hidden reasoning content. + """ + content: str + signature: str + class Role(str, Enum): """ @@ -182,11 +193,14 @@ class ResponseChatMessage(BaseModel): refusal: A string indicating refusal reason. tool_calls: A list of tool call objects. + + reasoning_content: A list of reasoning content blocks. """ role: Role = Role.ASSISTANT content: str refusal: Optional[str] = None tool_calls: Optional[List[MessageToolCall]] = None + reasoning_content: Optional[List[ReasoningBlock]] = None ChatMessage = Union[SystemMessage, UserMessage, AssistantMessage, ToolChatMessage, DeveloperChatMessage, ResponseChatMessage] From 9204c2921c1da840b22de225cfbd24af8644e276 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcel=20Wien=C3=B6bst?= Date: Thu, 27 Aug 2026 14:17:06 +0200 Subject: [PATCH 2/2] add minimal unit testing --- .../tests/orchestration_v2/test_message_v2.py | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 packages/gen/tests/orchestration_v2/test_message_v2.py diff --git a/packages/gen/tests/orchestration_v2/test_message_v2.py b/packages/gen/tests/orchestration_v2/test_message_v2.py new file mode 100644 index 0000000..f4744e7 --- /dev/null +++ b/packages/gen/tests/orchestration_v2/test_message_v2.py @@ -0,0 +1,22 @@ +import unittest + +from gen_ai_hub.orchestration_v2.models.message import ( + ReasoningBlock, + ResponseChatMessage, +) + + +class TestResponseChatMessageValidation(unittest.TestCase): + + def test_reasoning_content_deserialized_from_dict(self): + msg = ResponseChatMessage.model_validate({ + "role": "assistant", + "content": "Hello", + "reasoning_content": [{"content": "I think...", "signature": "sig123"}], + }) + assert msg.reasoning_content is not None + self.assertIsInstance(msg.reasoning_content[0], ReasoningBlock) + + def test_reasoning_content_optional(self): + msg = ResponseChatMessage.model_validate({"role": "assistant", "content": "Hello"}) + self.assertIsNone(msg.reasoning_content)