Python: added generic types to ChatOptions and ChatResponse/AgentResponse for Response Format (#3305)

* added generic types to ChatOptions and ChatResponse/AgentResponse for response format

* fix typevar import

* fix for older python versions

* fix missing import

* fixed imports

* fixed mypy

* mypy fix
This commit is contained in:
Eduard van Valkenburg
2026-01-28 22:23:02 +01:00
committed by GitHub
Unverified
parent 1f8463f9bb
commit 1226828ec2
42 changed files with 486 additions and 281 deletions
@@ -11,7 +11,7 @@ from collections.abc import (
Sequence,
)
from itertools import chain
from typing import Any, ClassVar, Generic, TypedDict
from typing import Any, ClassVar, Generic
from agent_framework import (
BaseChatClient,
@@ -40,26 +40,32 @@ from ollama import AsyncClient
# Rename imported types to avoid naming conflicts with Agent Framework types
from ollama._types import ChatResponse as OllamaChatResponse
from ollama._types import Message as OllamaMessage
from pydantic import ValidationError
from pydantic import BaseModel, ValidationError
if sys.version_info >= (3, 13):
from typing import TypeVar
from typing import TypeVar # type: ignore # pragma: no cover
else:
from typing_extensions import TypeVar
from typing_extensions import TypeVar # type: ignore # pragma: no cover
if sys.version_info >= (3, 12):
from typing import override # type: ignore # pragma: no cover
else:
from typing_extensions import override # type: ignore[import] # pragma: no cover
from typing_extensions import override # type: ignore # pragma: no cover
if sys.version_info >= (3, 11):
from typing import TypedDict # type: ignore # pragma: no cover
else:
from typing_extensions import TypedDict # type: ignore # pragma: no cover
__all__ = ["OllamaChatClient", "OllamaChatOptions"]
TResponseModel = TypeVar("TResponseModel", bound=BaseModel | None, default=None)
# region Ollama Chat Options TypedDict
class OllamaChatOptions(ChatOptions, total=False):
class OllamaChatOptions(ChatOptions[TResponseModel], Generic[TResponseModel], total=False):
"""Ollama-specific chat options dict.
Extends base ChatOptions with Ollama-specific parameters.