Cyclium.Synthesizer.Interactive (Cyclium v0.1.13)

Copy Markdown View Source

Default synthesizer for interactive actors.

Handles the full prompt-building, LLM calling, and JSON-parsing loop so that consuming apps only need to provide an LLM client module.

LLM Client behaviour

The LLM client must implement Cyclium.Synthesizer.Interactive.LLM.chat/3:

defmodule MyApp.Anthropic do
  @behaviour Cyclium.Synthesizer.Interactive.LLM

  @impl true
  def chat(system_prompt, user_message, opts) do
    # call your LLM provider
    {:ok, response_text}
  end
end

Configuration

Set the LLM client in the actor definition or application config:

# Per-actor (in actor module):
synthesizer({Cyclium.Synthesizer.Interactive, llm: MyApp.Anthropic})

# Or globally:
config :cyclium, :interactive_llm, MyApp.Anthropic