pub struct OllamaProvider {
pub base_url: String,
pub model: String,
}Expand description
Local chat provider for OpenAI-compatible servers (Ollama, LM Studio,
llama.cpp’s server, vLLM, etc.).
Why: developers increasingly run a local model server during dev to avoid
API costs and latency. The OpenAI-compatible /v1/chat/completions
endpoint with SSE streaming is the de-facto common denominator.
What: stores the server’s base URL and the model id to request.
chat_stream POSTs {model, messages, tools?, stream: true} and parses
SSE data: frames identically to the OpenRouter path.
Test: shape covered by ollama_provider_reports_metadata; streaming and
tool-call accumulation by ollama_provider_streams_sse_deltas and
accumulates_streamed_tool_call_fragments.
Fields§
§base_url: String§model: StringImplementations§
Source§impl OllamaProvider
impl OllamaProvider
Sourcepub fn new(base_url: impl Into<String>, model: impl Into<String>) -> Self
pub fn new(base_url: impl Into<String>, model: impl Into<String>) -> Self
Construct a provider from a base URL and model id.
Why: parallel to OpenRouterProvider::new so callers see a
consistent shape across providers.
What: stores both fields verbatim; the base URL should NOT have a
trailing slash — the implementation appends /v1/chat/completions.
Test: covered by ollama_provider_reports_metadata.
Trait Implementations§
Source§impl ChatProvider for OllamaProvider
impl ChatProvider for OllamaProvider
Source§fn chat_stream<'life0, 'async_trait>(
&'life0 self,
messages: Vec<ChatMessage>,
tools: Vec<ToolDef>,
tx: Sender<ChatEvent>,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn chat_stream<'life0, 'async_trait>(
&'life0 self,
messages: Vec<ChatMessage>,
tools: Vec<ToolDef>,
tx: Sender<ChatEvent>,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
tx. tools empty disables tool use.