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
endConfiguration
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