Packages

Generative AI Wrapper: access multiple apis through single standardized interface.

Current section

Files

Jump to
genai lib gen_ai provider provider_behaviour.ex
Raw

lib/gen_ai/provider/provider_behaviour.ex

defmodule GenAI.ProviderBehaviour do
@callback run(state :: any) :: {:ok, completion :: any, state :: any} | {:error, term}
@callback format_tool(tool :: any, state :: any) :: {:ok, tool :: any, state :: any} | {:error, term}
@callback format_message(message :: any, state :: any) :: {:ok, message :: any, state :: any} | {:error, term}
def run(%{provider: handler}, state), do: run(handler, state)
def run(handler, state), do: apply(handler, :run, [state])
def format_tool(%{provider: handler}, tool, state), do: format_tool(handler, tool, state)
def format_tool(handler, tool, state), do: apply(handler, :format_tool, [tool, state])
def format_message(%{provider: handler}, message, state), do: format_message(handler, message, state)
def format_message(handler, message, state), do: apply(handler, :format_message, [message, state])
end