ai.py — langchain Source File
Architecture documentation for ai.py, a python file in the langchain codebase. 17 imports, 0 dependents.
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)
Domain
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
Source
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