GenAI.Model.EncoderBehaviour behaviour (GenAI Core v0.3.0)

Copy Markdown

Summary

Types

completion()

@type completion() :: any()

context()

@type context() :: any()

headers()

@type headers() :: list()

json()

@type json() :: any()

message()

@type message() :: any()

messages()

@type messages() :: list()

method()

@type method() :: :get | :post | :put | :delete | :option | :patch

model()

@type model() :: any()

options()

@type options() :: any()

request_body()

@type request_body() :: any()

session()

@type session() :: any()

settings()

@type settings() :: map()

tool()

@type tool() :: any()

tools()

@type tools() :: list() | nil

uri()

@type uri() :: url()

url()

@type url() :: String.t()

Callbacks

completion_response(json, model, settings, session, context, options)

@callback completion_response(
  json(),
  model(),
  settings(),
  session(),
  context(),
  options()
) ::
  {:ok, completion()} | {:error, term()}

default_hyper_params(model, settings, session, context, options)

@callback default_hyper_params(model(), settings(), session(), context(), options()) ::
  {:ok, {settings(), session()}} | {:error, term()}

encode_message(message, model, session, context, options)

@callback encode_message(message(), model(), session(), context(), options()) ::
  {:ok, {message(), session()}} | {:error, term()}

Format message for provider/model type.

encode_tool(tool, model, session, context, options)

@callback encode_tool(tool(), model(), session(), context(), options()) ::
  {:ok, {tool(), session()}} | {:error, term()}

Format tool for provider/model type.

endpoint(model, settings, session, context, options)

@callback endpoint(model(), settings(), session(), context(), options()) ::
  {:ok, {method(), uri()}}
  | {:ok, {{method(), uri()}, session()}}
  | {:error, term()}

Prepare endpoint and method to make inference call to

headers(model, settings, session, context, options)

@callback headers(model(), settings(), session(), context(), options()) ::
  {:ok, headers()} | {:ok, {headers(), session()}} | {:error, term()}

Prepare request headers

hyper_params(model, settings, session, context, options)

@callback hyper_params(model(), settings(), session(), context(), options()) ::
  {:ok, {settings(), session()}} | {:error, term()}

Obtain list of hyper params supported by given model including mapping and conditional rules/alterations

normalize_messages(messages, model, session, context, options)

@callback normalize_messages(messages(), model(), session(), context(), options()) ::
  {:ok, {any(), any()}} | {:error, any()}

request_body(model, messages, tools, settings, session, context, options)

@callback request_body(
  model(),
  messages(),
  tools(),
  settings(),
  session(),
  context(),
  options()
) ::
  {:ok, headers()} | {:ok, {headers(), session()}} | {:error, term()}

Prepare request body to be passed to inference call.

with_dynamic_setting(body, setting, model, settings)

@callback with_dynamic_setting(
  body :: term(),
  setting :: term(),
  model :: term(),
  settings :: term()
) ::
  term()

Set setting with dynamic model based logic.

with_dynamic_setting(body, setting, model, settings, default)

@callback with_dynamic_setting(
  body :: term(),
  setting :: term(),
  model :: term(),
  settings :: term(),
  default :: term()
) :: term()

with_dynamic_setting_as(body, as_setting, setting, model, settings)

@callback with_dynamic_setting_as(
  body :: term(),
  as_setting :: term(),
  setting :: term(),
  model :: term(),
  settings :: term()
) :: term()

Set setting as_setting with dynamic model based logic.

with_dynamic_setting_as(body, as_setting, setting, model, settings, default)

@callback with_dynamic_setting_as(
  body :: term(),
  as_setting :: term(),
  setting :: term(),
  model :: term(),
  settings :: term(),
  default :: term()
) :: term()