GenAI.ThreadProtocol protocol (GenAI Core v0.3.0)

Copy Markdown

Summary

Types

t()

All the types that implement this protocol.

Functions

Specify an API key for a provider.

Specify an API org for a provider.

Add a message to the conversation.

Add a list of messages to the conversation.

Specify a specific model or model picker.

Set a hyperparameter option.

Types

t()

@type t() :: term()

All the types that implement this protocol.

Functions

append_directive(thread_context, directive, context, options)

effective_messages(thread_context, model, context, options)

effective_model(thread_context, context, options)

effective_model_settings(thread_context, model, context, options)

effective_provider_settings(thread_context, model, context, options)

effective_safety_settings(thread_context, context, options)

effective_settings(thread_context, context, options)

effective_tools(thread_context, model, context, options)

execute(session, command, context, options \\ nil)

get_artifact(thread_context, artifact)

set_artifact(thread_context, artifact, value)

with_api_key(context, provider, api_key)

Specify an API key for a provider.

with_api_org(context, provider, api_org)

Specify an API org for a provider.

with_message(context, message, options)

Add a message to the conversation.

with_messages(context, messages, options)

Add a list of messages to the conversation.

with_model(context, model)

Specify a specific model or model picker.

This function allows you to define the model to be used for inference. You can either provide a specific model, like Model.smartest(), or a model picker function that dynamically selects the best model based on the context and available providers.

Examples:

  • Model.smartest() - This will select the "smartest" available model at inference time, based on factors like performance and capabilities.
  • Model.cheapest(params: :best_effort) - This will select the cheapest available model that can handle the given parameters and context size.
  • CustomProvider.custom_model - This allows you to use a custom model from a user-defined provider.

with_model_setting(context, node)

with_model_setting(context, model, setting, value)

with_model_settings(context, entries)

with_model_settings(context, model, entries)

with_provider_setting(context, node)

with_provider_setting(context, provider, setting, value)

with_provider_settings(context, entries)

with_provider_settings(context, provider, entries)

with_safety_setting(context, safety_setting_object)

with_safety_setting(context, safety_setting, threshold)

with_safety_settings(context, entries)

with_setting(context, setting_object)

with_setting(context, setting, value)

Set a hyperparameter option.

Some options are model-specific. The value can be a literal or a picker function that dynamically determines the best value based on the context and model.

Examples:

  • Parameter.required(name, value) - This sets a required parameter with the specified name and value.
  • Gemini.best_temperature_for(:chain_of_thought) - This uses a picker function to determine the best temperature for the Gemini provider when using the "chain of thought" prompting technique.

with_settings(context, settings)

with_stream_handler(context, handler, options \\ nil)

with_tool(context, tool)

with_tools(context, tools)