Current section

Files

Jump to
planck_ai lib planck ai req_llm_behaviour.ex
Raw

lib/planck/ai/req_llm_behaviour.ex

defmodule Planck.AI.ReqLLMBehaviour do
@moduledoc """
Behaviour wrapping the `req_llm` streaming call.
Exists so that `Planck.AI.Adapter` can be tested without making real HTTP
requests. In production, Planck.AI.ReqLLM (internal) delegates directly to
`ReqLLM.stream_text/3`. In tests, `Planck.AI.MockReqLLM` is injected via
application config.
"""
@callback stream_text(model_spec :: term(), messages :: term(), opts :: keyword()) ::
{:ok, term()} | {:error, term()}
end
defmodule Planck.AI.ReqLLM do
@moduledoc false
@behaviour Planck.AI.ReqLLMBehaviour
@impl true
def stream_text(model_spec, messages, opts) do
ReqLLM.stream_text(model_spec, messages, opts)
end
end