Sycophant.WireProtocol behaviour
(sycophant v0.4.2)
Copy Markdown
Behaviour for chat wire protocol adapters.
Wire protocol adapters encode Sycophant.Request structs into
provider-specific JSON payloads and decode provider responses back
into Sycophant.Response structs. Dispatch is by wire protocol
metadata from LLMDB, not by provider identity.
Built-in Adapters
Sycophant.WireProtocol.OpenAICompletions- OpenAI Chat Completions APISycophant.WireProtocol.OpenAIResponses- OpenAI Responses APISycophant.WireProtocol.AnthropicMessages- Anthropic Messages APISycophant.WireProtocol.GoogleGemini- Google Gemini APISycophant.WireProtocol.BedrockConverse- AWS Bedrock Converse API
Summary
Callbacks
@callback decode_response(map()) :: {:ok, Sycophant.Response.t()} | {:error, Splode.Error.t()}
@callback decode_stream_chunk(state :: term(), event :: map()) :: {:ok, term(), [Sycophant.StreamChunk.t()]} | {:done, Sycophant.Response.t()} | {:done, Sycophant.Response.t(), [Sycophant.StreamChunk.t()]} | {:terminate, :failed | :incomplete | :cancelled, Splode.Error.t()} | {:error, Splode.Error.t()}
@callback encode_request(Sycophant.Request.t()) :: {:ok, map()} | {:error, Splode.Error.t()}
@callback encode_response_schema(map()) :: {:ok, map()} | {:error, Splode.Error.t()}
@callback encode_tools([Sycophant.Tool.t()]) :: {:ok, [map()]} | {:error, Splode.Error.t()}
@callback init_stream() :: term()
@callback param_schema() :: Zoi.schema()
@callback request_path(Sycophant.Request.t()) :: String.t()
@callback stream_transport() :: :sse | :event_stream