Candil (Candil v2.0.0)

Copy Markdown View Source

Candil — LLM inference and model management for Elixir.

Run local models via llama.cpp or remote models via OpenAI-compatible APIs.

Quick start — local model

engine = %Candil.Engine{alias: :llama_server, use_precompiled: true, host: "127.0.0.1", port: 8080}
model  = %Candil.Model{alias: :llama3, type: :local, model_dir: "/models",
                        filename: "llama-3-8b-q4_k_m.gguf", engine: :llama_server,
                        context_size: 8192, usage: [:chat]}

:ok = Candil.download_engine(engine)
{:ok, _} = Candil.download_model(model)
{:ok, _pid} = Candil.start_engine(engine, model)

{:ok, response} = Candil.chat(:llama3, [%{role: "user", content: "Hello!"}])
IO.puts(response.content)

:ok = Candil.stop_engine(:llama3)

Quick start — remote model

provider = %Candil.Provider{alias: :openai, type: :openai,
                             base_url: "https://api.openai.com",
                             api_key: System.get_env("OPENAI_API_KEY")}
model = %Candil.Model{alias: :gpt4o, type: :remote, name: "gpt-4o",
                       provider: :openai, usage: [:chat]}

{:ok, response} = Candil.chat(model, provider, [%{role: "user", content: "Hello!"}])

Configuration

Candil.Config.register_engine(engine)
Candil.Config.register_model(model)
Candil.Config.register_provider(provider)

Summary

Functions

See Candil.Llm.chat/2.

See Candil.Llm.chat/3.

See Candil.Llm.chat/4.

See Candil.Llm.download_engine/1.

See Candil.Llm.download_model/1.

See Candil.Llm.embed/2.

See Candil.Llm.embed/3.

See Candil.Llm.embed/4.

See Candil.Llm.engine_healthy?/1.

See Candil.Llm.start_engine/2.

See Candil.Llm.stop_engine/1.

See Candil.Llm.stream/3.

Functions

chat(model_alias, messages)

See Candil.Llm.chat/2.

chat(model_alias, messages, opts)

See Candil.Llm.chat/3.

chat(model, provider, messages, opts)

See Candil.Llm.chat/4.

download_engine(engine)

See Candil.Llm.download_engine/1.

download_model(model)

See Candil.Llm.download_model/1.

embed(model_alias, texts)

See Candil.Llm.embed/2.

embed(model_alias, texts, opts)

See Candil.Llm.embed/3.

embed(model, provider, texts, opts)

See Candil.Llm.embed/4.

engine_healthy?(model_alias)

See Candil.Llm.engine_healthy?/1.

start_engine(engine, model)

See Candil.Llm.start_engine/2.

stop_engine(model_alias)

See Candil.Llm.stop_engine/1.

stream(model_alias, messages, callback)

See Candil.Llm.stream/3.

stream(model_alias, messages, callback, opts)

See Candil.Llm.stream/4.

stream(model, provider, messages, callback, opts)

See Candil.Llm.stream/5.