View Source LangChain.Function (LangChain v0.1.0)

Defines a "function" that can be provided to an LLM for the LLM to optionally execute and pass argument data to.

A function is defined using a schema.

  • name - The name of the function given to the LLM.
  • description - A description of the function provided to the LLM. This should describe what the function is used for or what it returns. This information is used by the LLM to decide which function to call and for what purpose.
  • parameters_schema - A JSONSchema structure that describes the required data structure format for how arguments are passed to the function.
  • function - An Elixir function to execute when an LLM requests to execute the function.

Example

This example defines a function that an LLM can execute for performing basic math calculations. NOTE: This is a partial implementation of the LangChain.Tools.Calculator.

Function.new(%{
  name: "calculator",
  description: "Perform basic math calculations",
  parameters_schema: %{
    type: "object",
    properties: %{
      expression: %{type: "string", description: "A simple mathematical expression."}
    },
    required: ["expression"]
  },
  function:
    fn(%{"expression" => expr} = _args, _context) ->
      "Uh... I don't know!"
    end)
})

The function attribute is an Elixir function that can be executed when the function is "called" by the LLM.

The args argument is the JSON data passed by the LLM after being parsed to a map.

The context argument is passed through as the context on a LangChain.Chains.LLMChain. This is whatever context data is needed for the function to do it's work.

Context examples may be user_id, account_id, account struct, billing level, etc.

The parameters_schema is an Elixir map that follows a JSONSchema structure. It is used to define the required data structure format for receiving data to the function from the LLM.

Summary

Functions

Execute the function passing in arguments and additional optional context. This is called by a LangChain.Chains.LLMChain when a Function execution is requested by the LLM.

Build a new function.

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

Types

@type t() :: %LangChain.Function{
  description: term(),
  function: term(),
  name: term(),
  parameters_schema: term()
}

Functions

Link to this function

execute(function, arguments, context)

View Source

Execute the function passing in arguments and additional optional context. This is called by a LangChain.Chains.LLMChain when a Function execution is requested by the LLM.

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

Build a new function.

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

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