feat: start on AI integration
This commit is contained in:
64
lib/bds/ai/model.ex
Normal file
64
lib/bds/ai/model.ex
Normal file
@@ -0,0 +1,64 @@
|
||||
defmodule BDS.AI.Model do
|
||||
@moduledoc false
|
||||
|
||||
use Ecto.Schema
|
||||
import Ecto.Changeset
|
||||
|
||||
@primary_key false
|
||||
|
||||
schema "ai_models" do
|
||||
field :provider, :string, primary_key: true
|
||||
field :model_id, :string, primary_key: true
|
||||
field :name, :string
|
||||
field :family, :string
|
||||
field :supports_attachment, :boolean, source: :attachment, default: false
|
||||
field :supports_reasoning, :boolean, source: :reasoning, default: false
|
||||
field :supports_tool_calls, :boolean, source: :tool_call, default: false
|
||||
field :supports_structured_output, :boolean, source: :structured_output, default: false
|
||||
field :supports_temperature, :boolean, source: :temperature, default: false
|
||||
field :knowledge, :string
|
||||
field :release_date, :string
|
||||
field :last_updated_date, :string
|
||||
field :open_weights, :boolean, default: false
|
||||
field :input_price, :integer
|
||||
field :output_price, :integer
|
||||
field :cache_read_price, :integer
|
||||
field :cache_write_price, :integer
|
||||
field :context_window, :integer
|
||||
field :max_input_tokens, :integer
|
||||
field :max_output_tokens, :integer
|
||||
field :interleaved, :string
|
||||
field :status, :string
|
||||
field :updated_at, :integer
|
||||
end
|
||||
|
||||
def changeset(model, attrs) do
|
||||
model
|
||||
|> cast(attrs, [
|
||||
:provider,
|
||||
:model_id,
|
||||
:name,
|
||||
:family,
|
||||
:supports_attachment,
|
||||
:supports_reasoning,
|
||||
:supports_tool_calls,
|
||||
:supports_structured_output,
|
||||
:supports_temperature,
|
||||
:knowledge,
|
||||
:release_date,
|
||||
:last_updated_date,
|
||||
:open_weights,
|
||||
:input_price,
|
||||
:output_price,
|
||||
:cache_read_price,
|
||||
:cache_write_price,
|
||||
:context_window,
|
||||
:max_input_tokens,
|
||||
:max_output_tokens,
|
||||
:interleaved,
|
||||
:status,
|
||||
:updated_at
|
||||
], empty_values: [nil])
|
||||
|> validate_required([:provider, :model_id, :name, :context_window, :max_input_tokens, :max_output_tokens, :updated_at])
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user