ReqLLM.ToolCall
(ReqLLM v1.5.1)
View Source
Represents a single tool call from an assistant message.
This struct matches the OpenAI Chat Completions API wire format:
{
"id": "call_abc123",
"type": "function",
"function": {
"name": "get_weather",
"arguments": "{"location":"Paris"}"
}
}Fields
id- Unique call identifier (auto-generated if nil)type- Always "function" (reserved for future extensibility)function- Map withname(string) andarguments(JSON string)
Examples
iex> ToolCall.new("call_abc", "get_weather", ~s({"location":"Paris"}))
%ReqLLM.ToolCall{
id: "call_abc",
type: "function",
function: %{name: "get_weather", arguments: ~s({"location":"Paris"})}
}
iex> ToolCall.new(nil, "get_time", "{}")
%ReqLLM.ToolCall{
id: "call_..." # auto-generated
type: "function",
function: %{name: "get_time", arguments: "{}"}
}
Summary
Functions
Extract the arguments JSON string from a ToolCall.
Extract and decode the arguments as a map from a ToolCall. Returns nil if decoding fails.
Find the first tool call matching the given name and return its decoded arguments. Returns nil if no match found or if arguments cannot be decoded.
Normalize a map or ToolCall to the standard %{id, name, arguments} format.
Check if a ToolCall matches the given function name.
Extract the function name from a ToolCall.
Create a new ToolCall with OpenAI-compatible structure.
Returns the Zoi schema for this module
Convert a ToolCall to a flat map with decoded arguments.
Types
Functions
Extract the arguments JSON string from a ToolCall.
Extract and decode the arguments as a map from a ToolCall. Returns nil if decoding fails.
Find the first tool call matching the given name and return its decoded arguments. Returns nil if no match found or if arguments cannot be decoded.
Normalize a map or ToolCall to the standard %{id, name, arguments} format.
Accepts ToolCall structs or plain maps with atom/string keys. Arguments are decoded from JSON if provided as a string.
Examples
iex> ToolCall.from_map(%{"id" => "call_123", "name" => "get_weather", "arguments" => ~s({"location":"Paris"})})
%{id: "call_123", name: "get_weather", arguments: %{"location" => "Paris"}}
iex> tc = ToolCall.new("call_456", "get_time", "{}")
iex> ToolCall.from_map(tc)
%{id: "call_456", name: "get_time", arguments: %{}}
Check if a ToolCall matches the given function name.
Extract the function name from a ToolCall.
Create a new ToolCall with OpenAI-compatible structure.
Parameters
id- Unique identifier (generates "call_<uuid>" if nil)name- Function namearguments_json- Arguments as JSON-encoded string
Examples
ToolCall.new("call_123", "get_weather", ~s({"location":"SF"}))
ToolCall.new(nil, "get_time", "{}")
Returns the Zoi schema for this module
Convert a ToolCall to a flat map with decoded arguments.
Returns a map with :id, :name, and :arguments keys.
Arguments are decoded from JSON; returns empty map if decoding fails.
Examples
iex> tc = ToolCall.new("call_123", "get_weather", ~s({"location":"Paris"}))
iex> ToolCall.to_map(tc)
%{id: "call_123", name: "get_weather", arguments: %{"location" => "Paris"}}
iex> tc = ToolCall.new("call_456", "get_time", "{}")
iex> ToolCall.to_map(tc)
%{id: "call_456", name: "get_time", arguments: %{}}