init_tool_calls() — langchain Function Reference
Architecture documentation for the init_tool_calls() function in ai.py from the langchain codebase.
Entity Profile
Dependency Diagram
graph TD 726a98cd_02f0_8098_7b85_64b6c75f7b84["init_tool_calls()"] 0998183a_ee20_cc02_d37b_948998ae74b7["AIMessageChunk"] 726a98cd_02f0_8098_7b85_64b6c75f7b84 -->|defined in| 0998183a_ee20_cc02_d37b_948998ae74b7 style 726a98cd_02f0_8098_7b85_64b6c75f7b84 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
libs/core/langchain_core/messages/ai.py lines 495–587
def init_tool_calls(self) -> Self:
"""Initialize tool calls from tool call chunks.
Returns:
The values with tool calls initialized.
Raises:
ValueError: If the tool call chunks are malformed.
"""
if not self.tool_call_chunks:
if self.tool_calls:
self.tool_call_chunks = [
create_tool_call_chunk(
name=tc["name"],
args=json.dumps(tc["args"]),
id=tc["id"],
index=None,
)
for tc in self.tool_calls
]
if self.invalid_tool_calls:
tool_call_chunks = self.tool_call_chunks
tool_call_chunks.extend(
[
create_tool_call_chunk(
name=tc["name"], args=tc["args"], id=tc["id"], index=None
)
for tc in self.invalid_tool_calls
]
)
self.tool_call_chunks = tool_call_chunks
return self
tool_calls = []
invalid_tool_calls = []
def add_chunk_to_invalid_tool_calls(chunk: ToolCallChunk) -> None:
invalid_tool_calls.append(
create_invalid_tool_call(
name=chunk["name"],
args=chunk["args"],
id=chunk["id"],
error=None,
)
)
for chunk in self.tool_call_chunks:
try:
args_ = parse_partial_json(chunk["args"]) if chunk["args"] else {}
if isinstance(args_, dict):
tool_calls.append(
create_tool_call(
name=chunk["name"] or "",
args=args_,
id=chunk["id"],
)
)
else:
add_chunk_to_invalid_tool_calls(chunk)
except Exception:
add_chunk_to_invalid_tool_calls(chunk)
self.tool_calls = tool_calls
self.invalid_tool_calls = invalid_tool_calls
if (
self.chunk_position == "last"
and self.tool_call_chunks
and self.response_metadata.get("output_version") == "v1"
and isinstance(self.content, list)
):
id_to_tc: dict[str, types.ToolCall] = {
cast("str", tc.get("id")): {
"type": "tool_call",
"name": tc["name"],
"args": tc["args"],
"id": tc.get("id"),
}
for tc in self.tool_calls
if "id" in tc
}
for idx, block in enumerate(self.content):
Domain
Subdomains
Defined In
Source
Frequently Asked Questions
What does init_tool_calls() do?
init_tool_calls() is a function in the langchain codebase, defined in libs/core/langchain_core/messages/ai.py.
Where is init_tool_calls() defined?
init_tool_calls() is defined in libs/core/langchain_core/messages/ai.py at line 495.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free