Packages
langchain
0.2.0
0.9.2
0.9.1
0.9.0
0.8.14
0.8.13
0.8.12
0.8.11
0.8.10
0.8.9
0.8.8
0.8.7
0.8.6
0.8.5
0.8.4
0.8.3
0.8.2
0.8.1
0.8.0
0.7.0
0.6.3
0.6.2
0.6.1
0.6.0
0.5.2
0.5.1
0.5.0
0.4.1
0.4.0
0.4.0-rc.3
0.4.0-rc.2
0.4.0-rc.1
0.4.0-rc.0
0.3.3
0.3.2
0.3.1
0.3.0
0.3.0-rc.2
0.3.0-rc.1
0.3.0-rc.0
0.2.0
0.1.10
0.1.9
0.1.8
0.1.7
0.1.6
0.1.5
0.1.4
0.1.3
0.1.2
0.1.1
0.1.0
Elixir implementation of a LangChain style framework that lets Elixir projects integrate with and leverage LLMs.
Current section
Files
Jump to
Current section
Files
lib/message/tool_result.ex
defmodule LangChain.Message.ToolResult do
@moduledoc """
Represents a the result of running a requested tool. The LLM's requests a tool
use through a `ToolCall`. A `ToolResult` returns the answer or result from the
application back to the AI.
"""
use Ecto.Schema
import Ecto.Changeset
require Logger
alias __MODULE__
alias LangChain.LangChainError
@primary_key false
embedded_schema do
field :type, Ecto.Enum, values: [:function], default: :function
# When a unique ID is given for a ToolCall, the same ID is used in the
# return to the a response to a specific request.
field :tool_call_id, :string
# the name of the tool that was run.
field :name, :string
# the content returned to the LLM/AI.
field :content, :string
# Text to display in a UI for the result. Optional.
field :display_text, :string
# flag if the result is an error
field :is_error, :boolean, default: false
end
@type t :: %ToolResult{}
@update_fields [:type, :tool_call_id, :name, :content, :display_text, :is_error]
@create_fields @update_fields
@required_fields [:type, :tool_call_id, :content]
@doc """
Build a new ToolResult and return an `:ok`/`:error` tuple with the result.
"""
@spec new(attrs :: map()) :: {:ok, t()} | {:error, Ecto.Changeset.t()}
def new(attrs \\ %{}) do
%ToolResult{}
|> cast(attrs, @create_fields)
|> common_validations()
|> apply_action(:insert)
end
@doc """
Build a new ToolResult and return it or raise an error if invalid.
"""
@spec new!(attrs :: map()) :: t() | no_return()
def new!(attrs \\ %{}) do
case new(attrs) do
{:ok, message} ->
message
{:error, changeset} ->
raise LangChainError, changeset
end
end
defp common_validations(changeset) do
validate_required(changeset, @required_fields)
end
end