# This file was auto-generated by Fern from our API Definition.

import typing

import pydantic
from ..core.pydantic_utilities import IS_PYDANTIC_V2
from ..core.unchecked_base_model import UncheckedBaseModel
from .agent_revision_update_model import AgentRevisionUpdateModel
from .agent_revision_update_response_style import AgentRevisionUpdateResponseStyle
from .agent_revision_update_tool_config_value import AgentRevisionUpdateToolConfigValue
from .agentic_model import AgenticModel
from .model_provider import ModelProvider


class AgentRevisionUpdate(UncheckedBaseModel):
    model_provider: typing.Optional[ModelProvider] = None
    model: AgentRevisionUpdateModel
    system: str
    temperature: typing.Optional[float] = None
    response_style: typing.Optional[AgentRevisionUpdateResponseStyle] = None
    max_tokens: typing.Optional[int] = None
    max_turns: typing.Optional[int] = None
    tool_config: typing.Optional[typing.Dict[str, typing.Optional[AgentRevisionUpdateToolConfigValue]]] = None
    conversation_starters: typing.Optional[typing.List[str]] = None
    dynamic_fallbacks: typing.Optional[typing.List[AgenticModel]] = None

    if IS_PYDANTIC_V2:
        model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True)  # type: ignore # Pydantic v2
    else:

        class Config:
            frozen = True
            smart_union = True
            extra = pydantic.Extra.allow
