NornsSdk.Tool behaviour (norns_sdk v0.1.0)

Copy Markdown View Source

Defines a tool that an agent can call.

Usage

defmodule MyTools.SearchDocs do
  use NornsSdk.Tool,
    name: "search_docs",
    description: "Search product documentation",
    side_effect: false

  @impl true
  def input_schema do
    %{
      "type" => "object",
      "properties" => %{
        "query" => %{"type" => "string", "description" => "Search query"}
      },
      "required" => ["query"]
    }
  end

  @impl true
  def execute(%{"query" => query}) do
    results = MyApp.Docs.search(query)
    {:ok, results}
  end
end

Summary

Callbacks

execute(input)

@callback execute(input :: map()) :: {:ok, String.t()} | {:error, String.t()}

input_schema()

@callback input_schema() :: map()