# 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


class UpdateAgentsRequestPropertiesLlm(UncheckedBaseModel):
    """
    Large Language Model (LLM) settings.
    """

    system_messages: typing.Optional[typing.List[typing.Dict[str, typing.Any]]] = pydantic.Field(default=None)
    """
    A set of predefined messages appended to the beginning of each LLM request. These messages help control the LLM's output and can include role definitions, prompts, response examples, and more. This field must be compatible with the OpenAI protocol.
    """

    params: typing.Optional[typing.Dict[str, typing.Any]] = pydantic.Field(default=None)
    """
    Additional LLM information included in the message body, such as the model used, the maximum number of tokens, and more. Supported configurations vary by LLM provider. Refer to the provider's documentation for details. Updating this field overwrites the configuration set when the agent was created. When updating, make sure to pass the complete `params` field.
    """

    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
