Packages
dagger
0.18.2
0.21.7
0.21.6
0.21.5
0.21.4
0.21.3
0.21.2
0.21.1
0.21.0
0.20.8
0.20.7
0.20.6
0.20.5
0.20.4
0.20.3
0.20.2
0.20.1
0.20.0
0.19.11
0.19.10
0.19.9
0.19.8
0.19.7
0.19.6
0.19.5
0.19.4
0.19.3
0.19.2
0.19.1
0.19.0
0.18.19
0.18.18
0.18.17
0.18.16
0.18.15
0.18.14
0.18.13
0.18.12
0.18.11
0.18.10
0.18.9
0.18.8
0.18.7
0.18.5
0.18.4
0.18.3
0.18.2
0.18.1
0.18.0
0.17.2
0.17.1
0.17.0
0.16.3
0.16.2
0.16.1
0.16.0
0.15.4
0.15.3
0.15.2
0.15.1
0.15.0
0.14.0
0.13.7
0.13.6
0.13.5
0.13.4
0.13.3
0.13.2
0.13.1
0.13.0
0.12.7
0.12.6
0.12.5
0.12.4
0.12.3
0.12.2
0.12.1
0.12.0
0.11.9
0.11.8
0.11.7
0.11.6
0.11.5
0.11.4
0.11.3
0.11.2
0.11.1
0.11.0
0.10.3
0.10.2
0.10.1
0.10.0
0.9.11
0.9.10
0.9.9
0.9.8
0.9.7
0.9.6
0.9.5
0.9.4
0.9.3
0.9.2
0.9.1
0.9.0
0.8.8
0.8.7
0.8.6
0.8.5
0.8.4
0.8.2
0.0.0
retired
Dagger SDK for Elixir
Current section
Files
Jump to
Current section
Files
lib/dagger/gen/llm.ex
# This file generated by `dagger_codegen`. Please DO NOT EDIT.
defmodule Dagger.LLM do
@moduledoc "Dagger.LLM"
alias Dagger.Core.Client
alias Dagger.Core.QueryBuilder, as: QB
@derive Dagger.ID
@derive Dagger.Sync
defstruct [:query_builder, :client]
@type t() :: %__MODULE__{}
@doc "create a branch in the LLM's history"
@spec attempt(t(), integer()) :: Dagger.LLM.t()
def attempt(%__MODULE__{} = llm, number) do
query_builder =
llm.query_builder |> QB.select("attempt") |> QB.put_arg("number", number)
%Dagger.LLM{
query_builder: query_builder,
client: llm.client
}
end
@doc "returns the type of the current state"
@spec bind_result(t(), String.t()) :: Dagger.Binding.t() | nil
def bind_result(%__MODULE__{} = llm, name) do
query_builder =
llm.query_builder |> QB.select("bindResult") |> QB.put_arg("name", name)
%Dagger.Binding{
query_builder: query_builder,
client: llm.client
}
end
@doc "return the LLM's current environment"
@spec env(t()) :: Dagger.Env.t()
def env(%__MODULE__{} = llm) do
query_builder =
llm.query_builder |> QB.select("env")
%Dagger.Env{
query_builder: query_builder,
client: llm.client
}
end
@doc "return the llm message history"
@spec history(t()) :: {:ok, [String.t()]} | {:error, term()}
def history(%__MODULE__{} = llm) do
query_builder =
llm.query_builder |> QB.select("history")
Client.execute(llm.client, query_builder)
end
@doc "return the raw llm message history as json"
@spec history_json(t()) :: {:ok, String.t()} | {:error, term()}
def history_json(%__MODULE__{} = llm) do
query_builder =
llm.query_builder |> QB.select("historyJSON")
Client.execute(llm.client, query_builder)
end
@doc "A unique identifier for this LLM."
@spec id(t()) :: {:ok, Dagger.LLMID.t()} | {:error, term()}
def id(%__MODULE__{} = llm) do
query_builder =
llm.query_builder |> QB.select("id")
Client.execute(llm.client, query_builder)
end
@doc "return the last llm reply from the history"
@spec last_reply(t()) :: {:ok, String.t()} | {:error, term()}
def last_reply(%__MODULE__{} = llm) do
query_builder =
llm.query_builder |> QB.select("lastReply")
Client.execute(llm.client, query_builder)
end
@doc "synchronize LLM state"
@spec loop(t()) :: Dagger.LLM.t()
def loop(%__MODULE__{} = llm) do
query_builder =
llm.query_builder |> QB.select("loop")
%Dagger.LLM{
query_builder: query_builder,
client: llm.client
}
end
@doc "return the model used by the llm"
@spec model(t()) :: {:ok, String.t()} | {:error, term()}
def model(%__MODULE__{} = llm) do
query_builder =
llm.query_builder |> QB.select("model")
Client.execute(llm.client, query_builder)
end
@doc "return the provider used by the llm"
@spec provider(t()) :: {:ok, String.t()} | {:error, term()}
def provider(%__MODULE__{} = llm) do
query_builder =
llm.query_builder |> QB.select("provider")
Client.execute(llm.client, query_builder)
end
@doc "synchronize LLM state"
@spec sync(t()) :: {:ok, Dagger.LLM.t()} | {:error, term()}
def sync(%__MODULE__{} = llm) do
query_builder =
llm.query_builder |> QB.select("sync")
with {:ok, id} <- Client.execute(llm.client, query_builder) do
{:ok,
%Dagger.LLM{
query_builder:
QB.query()
|> QB.select("loadLLMFromID")
|> QB.put_arg("id", id),
client: llm.client
}}
end
end
@doc "returns the token usage of the current state"
@spec token_usage(t()) :: Dagger.LLMTokenUsage.t()
def token_usage(%__MODULE__{} = llm) do
query_builder =
llm.query_builder |> QB.select("tokenUsage")
%Dagger.LLMTokenUsage{
query_builder: query_builder,
client: llm.client
}
end
@doc "print documentation for available tools"
@spec tools(t()) :: {:ok, String.t()} | {:error, term()}
def tools(%__MODULE__{} = llm) do
query_builder =
llm.query_builder |> QB.select("tools")
Client.execute(llm.client, query_builder)
end
@doc "allow the LLM to interact with an environment via MCP"
@spec with_env(t(), Dagger.Env.t()) :: Dagger.LLM.t()
def with_env(%__MODULE__{} = llm, env) do
query_builder =
llm.query_builder |> QB.select("withEnv") |> QB.put_arg("env", Dagger.ID.id!(env))
%Dagger.LLM{
query_builder: query_builder,
client: llm.client
}
end
@doc "swap out the llm model"
@spec with_model(t(), String.t()) :: Dagger.LLM.t()
def with_model(%__MODULE__{} = llm, model) do
query_builder =
llm.query_builder |> QB.select("withModel") |> QB.put_arg("model", model)
%Dagger.LLM{
query_builder: query_builder,
client: llm.client
}
end
@doc "append a prompt to the llm context"
@spec with_prompt(t(), String.t()) :: Dagger.LLM.t()
def with_prompt(%__MODULE__{} = llm, prompt) do
query_builder =
llm.query_builder |> QB.select("withPrompt") |> QB.put_arg("prompt", prompt)
%Dagger.LLM{
query_builder: query_builder,
client: llm.client
}
end
@doc "append the contents of a file to the llm context"
@spec with_prompt_file(t(), Dagger.File.t()) :: Dagger.LLM.t()
def with_prompt_file(%__MODULE__{} = llm, file) do
query_builder =
llm.query_builder |> QB.select("withPromptFile") |> QB.put_arg("file", Dagger.ID.id!(file))
%Dagger.LLM{
query_builder: query_builder,
client: llm.client
}
end
@doc "Add a system prompt to the LLM's environment"
@spec with_system_prompt(t(), String.t()) :: Dagger.LLM.t()
def with_system_prompt(%__MODULE__{} = llm, prompt) do
query_builder =
llm.query_builder |> QB.select("withSystemPrompt") |> QB.put_arg("prompt", prompt)
%Dagger.LLM{
query_builder: query_builder,
client: llm.client
}
end
end
defimpl Jason.Encoder, for: Dagger.LLM do
def encode(llm, opts) do
{:ok, id} = Dagger.LLM.id(llm)
Jason.Encode.string(id, opts)
end
end
defimpl Nestru.Decoder, for: Dagger.LLM do
def decode_fields_hint(_struct, _context, id) do
{:ok, Dagger.Client.load_llm_from_id(Dagger.Global.dag(), id)}
end
end