LangChain Reference home pageLangChain ReferenceLangChain Reference
  • GitHub
  • Main Docs
Deep Agents
LangChain
LangGraph
Integrations
LangSmith
  • Overview
    • Overview
    • Caches
    • Callbacks
    • Documents
    • Document loaders
    • Embeddings
    • Exceptions
    • Language models
    • Serialization
    • Output parsers
    • Prompts
    • Rate limiters
    • Retrievers
    • Runnables
    • Utilities
    • Vector stores
    MCP Adapters
    Standard Tests
    Text Splitters
    ⌘I

    LangChain Assistant

    Ask a question to get started

    Enter to send•Shift+Enter new line

    Menu

    OverviewCachesCallbacksDocumentsDocument loadersEmbeddingsExceptionsLanguage modelsSerializationOutput parsersPromptsRate limitersRetrieversRunnablesUtilitiesVector stores
    MCP Adapters
    Standard Tests
    Text Splitters
    Language
    Theme
    Pythonlangchain-corecallbacksbaseAsyncCallbackHandleron_chat_model_start
    Method●Since v0.1

    on_chat_model_start

    Copy
    on_chat_model_start(
      self,
      serialized: dict[str, Any],
      messages: list[list
    View source on GitHub
    [
    BaseMessage
    ]
    ]
    ,
    *
    ,
    run_id
    :
    UUID
    ,
    parent_run_id
    :
    UUID
    |
    None
    =
    None
    ,
    tags
    :
    list
    [
    str
    ]
    |
    None
    =
    None
    ,
    metadata
    :
    dict
    [
    str
    ,
    Any
    ]
    |
    None
    =
    None
    ,
    **
    kwargs
    :
    Any
    =
    {
    }
    )
    ->
    Any

    Parameters

    NameTypeDescription
    serialized*dict[str, Any]

    The serialized chat model.

    messages*list[list[BaseMessage]]

    The messages. Must be a list of message lists — this is a required positional argument and must be present in any override.

    run_id*UUID
    parent_run_idUUID | None
    Default:None
    tagslist[str] | None
    Default:None
    metadatadict[str, Any] | None
    Default:None
    **kwargsAny
    Default:{}

    Run when a chat model starts running.

    Warning

    This method is called for chat models. If you're implementing a handler for a non-chat model, you should use on_llm_start instead.

    Note

    When overriding this method, the signature must include the two required positional arguments serialized and messages. Avoid using *args in your override — doing so causes an IndexError in the fallback path when the callback system converts messages to prompt strings for on_llm_start. Always declare the signature explicitly:

    .. code-block:: python

    async def on_chat_model_start(
        self,
        serialized: dict[str, Any],
        messages: list[list[BaseMessage]],
        **kwargs: Any,
    ) -> None:
        raise NotImplementedError  # triggers fallback to on_llm_start
    

    The ID of the current run.

    The ID of the parent run.

    The tags.

    The metadata.

    Additional keyword arguments.