Mentor.LLM.Adapter behaviour (mentor v0.2.7)
View SourceDefines the behaviour for Large Language Model (LLM) adapters within the Mentor framework.
This module specifies the required callbacks that any LLM adapter must implement to integrate seamlessly with Mentor. It also provides utility functions to assist in verifying and using these adapters.
Callbacks
complete/1: Processes aMentorstruct and returns a result.complete!/1: Similar tocomplete/1but raises an exception in case of an error.
Usage
To create a custom LLM adapter, define a module that implements the Mentor.LLM.Adapter behaviour:
defmodule MyApp.LLM.CustomAdapter do
use Mentor.LLM.Adapter
@impl true
def complete(%Mentor{} = mentor) do
# Implementation for processing the mentor struct
end
endcomplete!/1 is automatic derived and implemented for you, but you can safely override it if needed.
By implementing these callbacks, your custom adapter can be utilized within the Mentor framework to handle LLM interactions.
Summary
Functions
Macro to be used when implementing the Mentor.LLM.Adapter behaviour.
Checks if the given module implements the Mentor.LLM.Adapter behaviour.
Callbacks
Callback to process a Mentor struct and return a result.
Parameters
mentor: AMentorstruct containing the state and configuration for the LLM interaction.
Returns
{:ok, result}: On successful processing.{:error, reason}: If an error occurs during processing.
Implement this callback in your adapter module to define how the LLM interaction should be handled.
Functions
Macro to be used when implementing the Mentor.LLM.Adapter behaviour.
This macro sets up the necessary boilerplate for defining an adapter, including the @behaviour attribute and a default implementation for complete!/1 that raises an exception on error.
Usage
defmodule MyApp.LLM.CustomAdapter do
use Mentor.LLM.Adapter
@impl true
def complete(%Mentor{} = mentor) do
# Implementation for processing the mentor struct
end
endBy using this macro, your module declares adherence to the Mentor.LLM.Adapter behaviour and provides a default implementation for complete!/1.
Checks if the given module implements the Mentor.LLM.Adapter behaviour.
Parameters
module: The module to be checked.
Returns
trueif the module implements the behaviour.falseotherwise.
Examples
iex> Mentor.LLM.Adapter.impl_by?(MyApp.LLM.CustomAdapter)
true
iex> Mentor.LLM.Adapter.impl_by?(String)
false