Home / File/ ai.py — langchain Source File

ai.py — langchain Source File

Architecture documentation for ai.py, a python file in the langchain codebase. 17 imports, 0 dependents.

File python CoreAbstractions MessageSchema 17 imports 3 functions 5 classes

Entity Profile

Dependency Diagram

graph LR
  49c04e35_a53c_8d1b_eb09_1203ad7cdacf["ai.py"]
  436f77bc_653d_0edb_555c_c2679d5a59ac["itertools"]
  49c04e35_a53c_8d1b_eb09_1203ad7cdacf --> 436f77bc_653d_0edb_555c_c2679d5a59ac
  7025b240_fdc3_cf68_b72f_f41dac94566b["json"]
  49c04e35_a53c_8d1b_eb09_1203ad7cdacf --> 7025b240_fdc3_cf68_b72f_f41dac94566b
  2a7f66a7_8738_3d47_375b_70fcaa6ac169["logging"]
  49c04e35_a53c_8d1b_eb09_1203ad7cdacf --> 2a7f66a7_8738_3d47_375b_70fcaa6ac169
  7aaf52d4_ee88_411e_980e_bc4beeeb30ad["operator"]
  49c04e35_a53c_8d1b_eb09_1203ad7cdacf --> 7aaf52d4_ee88_411e_980e_bc4beeeb30ad
  cfe2bde5_180e_e3b0_df2b_55b3ebaca8e7["collections.abc"]
  49c04e35_a53c_8d1b_eb09_1203ad7cdacf --> cfe2bde5_180e_e3b0_df2b_55b3ebaca8e7
  8e2034b7_ceb8_963f_29fc_2ea6b50ef9b3["typing"]
  49c04e35_a53c_8d1b_eb09_1203ad7cdacf --> 8e2034b7_ceb8_963f_29fc_2ea6b50ef9b3
  6e58aaea_f08e_c099_3cc7_f9567bfb1ae7["pydantic"]
  49c04e35_a53c_8d1b_eb09_1203ad7cdacf --> 6e58aaea_f08e_c099_3cc7_f9567bfb1ae7
  91721f45_4909_e489_8c1f_084f8bd87145["typing_extensions"]
  49c04e35_a53c_8d1b_eb09_1203ad7cdacf --> 91721f45_4909_e489_8c1f_084f8bd87145
  d758344f_537f_649e_f467_b9d7442e86df["langchain_core.messages"]
  49c04e35_a53c_8d1b_eb09_1203ad7cdacf --> d758344f_537f_649e_f467_b9d7442e86df
  a1369c93_b21f_2edb_d15c_ec3e09ac1e42["langchain_core.messages.base"]
  49c04e35_a53c_8d1b_eb09_1203ad7cdacf --> a1369c93_b21f_2edb_d15c_ec3e09ac1e42
  67d9204c_49ef_a623_53ad_d78199dd66bc["langchain_core.messages.content"]
  49c04e35_a53c_8d1b_eb09_1203ad7cdacf --> 67d9204c_49ef_a623_53ad_d78199dd66bc
  552bc7bf_c1ac_965d_e157_ee750ab1993c["langchain_core.messages.tool"]
  49c04e35_a53c_8d1b_eb09_1203ad7cdacf --> 552bc7bf_c1ac_965d_e157_ee750ab1993c
  053c6d65_7a74_9819_7c2a_c7357c95d2b8["langchain_core.utils._merge"]
  49c04e35_a53c_8d1b_eb09_1203ad7cdacf --> 053c6d65_7a74_9819_7c2a_c7357c95d2b8
  78c5ca66_f675_3ca1_fdb7_d5a994dcf4bf["langchain_core.utils.json"]
  49c04e35_a53c_8d1b_eb09_1203ad7cdacf --> 78c5ca66_f675_3ca1_fdb7_d5a994dcf4bf
  style 49c04e35_a53c_8d1b_eb09_1203ad7cdacf fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

"""AI message."""

import itertools
import json
import logging
import operator
from collections.abc import Sequence
from typing import Any, Literal, cast, overload

from pydantic import Field, model_validator
from typing_extensions import NotRequired, Self, TypedDict, override

from langchain_core.messages import content as types
from langchain_core.messages.base import (
    BaseMessage,
    BaseMessageChunk,
    _extract_reasoning_from_additional_kwargs,
    merge_content,
)
from langchain_core.messages.content import InvalidToolCall
from langchain_core.messages.tool import (
    ToolCall,
    ToolCallChunk,
    default_tool_chunk_parser,
    default_tool_parser,
)
from langchain_core.messages.tool import invalid_tool_call as create_invalid_tool_call
from langchain_core.messages.tool import tool_call as create_tool_call
from langchain_core.messages.tool import tool_call_chunk as create_tool_call_chunk
from langchain_core.utils._merge import merge_dicts, merge_lists
from langchain_core.utils.json import parse_partial_json
from langchain_core.utils.usage import _dict_int_op
from langchain_core.utils.utils import LC_AUTO_PREFIX, LC_ID_PREFIX

logger = logging.getLogger(__name__)


class InputTokenDetails(TypedDict, total=False):
    """Breakdown of input token counts.

    Does *not* need to sum to full input token count. Does *not* need to have all keys.

    Example:
        ```python
        {
            "audio": 10,
            "cache_creation": 200,
            "cache_read": 100,
        }
        ```

    May also hold extra provider-specific keys.

    !!! version-added "Added in `langchain-core` 0.3.9"
    """

    audio: int
    """Audio input tokens."""

    cache_creation: int
// ... (781 more lines)

Subdomains

Dependencies

  • collections.abc
  • itertools
  • json
  • langchain_core.messages
  • langchain_core.messages.base
  • langchain_core.messages.block_translators
  • langchain_core.messages.content
  • langchain_core.messages.tool
  • langchain_core.utils._merge
  • langchain_core.utils.json
  • langchain_core.utils.usage
  • langchain_core.utils.utils
  • logging
  • operator
  • pydantic
  • typing
  • typing_extensions

Frequently Asked Questions

What does ai.py do?
ai.py is a source file in the langchain codebase, written in python. It belongs to the CoreAbstractions domain, MessageSchema subdomain.
What functions are defined in ai.py?
ai.py defines 3 function(s): add_ai_message_chunks, add_usage, subtract_usage.
What does ai.py depend on?
ai.py imports 17 module(s): collections.abc, itertools, json, langchain_core.messages, langchain_core.messages.base, langchain_core.messages.block_translators, langchain_core.messages.content, langchain_core.messages.tool, and 9 more.
Where is ai.py in the architecture?
ai.py is located at libs/core/langchain_core/messages/ai.py (domain: CoreAbstractions, subdomain: MessageSchema, directory: libs/core/langchain_core/messages).

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free