LangChain.Message.ToolCall (LangChain v0.5.1)

Copy Markdown View Source

Represents an LLM's request to use tool. It specifies the tool to execute and may provide arguments for the tool to use.

Example

ToolCall.new!(%{
  call_id: "call_123",
  name: "give_greeting"
  arguments: %{"name" => "Howard"}
})

Summary

Functions

Ensure the ToolCall's status is set to :complete. The process of completing it parses the tool arguments, which may be invalid. Any problems parsing are returned as a changeset error.

The left side, or primary, is the ToolCall that is being accumulated. The call_part is being merged into the primary.

Build a new ToolCall and return an :ok/:error tuple with the result.

Build a new ToolCall and return it or raise an error if invalid.

Types

t()

@type t() :: %LangChain.Message.ToolCall{
  arguments: term(),
  call_id: term(),
  index: term(),
  metadata: term(),
  name: term(),
  status: term(),
  type: term()
}

Functions

complete(tool_call)

@spec complete(t()) :: {:ok, t()} | {:error, Ecto.Changeset.t()}

Ensure the ToolCall's status is set to :complete. The process of completing it parses the tool arguments, which may be invalid. Any problems parsing are returned as a changeset error.

merge(primary, call_part)

@spec merge(nil | t(), t()) :: t()

The left side, or primary, is the ToolCall that is being accumulated. The call_part is being merged into the primary.

Used to process streamed deltas where a single tool call can be split over many smaller parts.

new(attrs \\ %{})

@spec new(attrs :: map()) :: {:ok, t()} | {:error, Ecto.Changeset.t()}

Build a new ToolCall and return an :ok/:error tuple with the result.

new!(attrs \\ %{})

@spec new!(attrs :: map()) :: t() | no_return()

Build a new ToolCall and return it or raise an error if invalid.