Current section
Files
Jump to
Current section
Files
lib/gen_ai/model/model.ex
defmodule GenAI.Model do
@vsn 1.0
defstruct [
provider: nil,
model: nil,
details: nil,
vsn: @vsn
]
defimpl GenAI.ModelProtocol do
def protocol_supported?(_), do: true
def identifier(model), do: {:ok, model.model}
def provider(model), do: {:ok, model.provider}
def model(model), do: {:ok, model.model}
def register(model, state), do: {:ok, {model, state}}
end
end
defmodule GenAI.ExternalModel do
@vsn 1.0
@enforce_keys [:handle, :manager]
defstruct [
handle: nil,
provider: nil,
manager: nil,
external: nil,
configuration: nil,
details: nil,
vsn: @vsn
]
defimpl GenAI.ModelProtocol do
def protocol_supported?(_), do: true
def identifier(model), do: {:ok, model.handle}
def provider(model), do: {:ok, model.provider}
def model(model) do
IO.puts "TODO: fetch live model from manager"
{:ok, model}
end
def register(model, state), do: {:ok, {model, state}}
end
end