pub trait Provider: WasmCompatSend + WasmCompatSync {
// Required methods
fn complete(
&self,
request: CompletionRequest,
) -> impl Future<Output = Result<CompletionResponse, ProviderError>> + WasmCompatSend;
fn complete_stream(
&self,
request: CompletionRequest,
) -> impl Future<Output = Result<StreamHandle, ProviderError>> + WasmCompatSend;
}Expand description
LLM provider trait. Implement this for each provider (Anthropic, OpenAI, Ollama, etc.).
Uses RPITIT (return position impl trait in trait) — Rust 2024 native async.
Not object-safe by design; use generics <P: Provider> to compose.
§Example
use std::future::Future;
use neuron_types::*;
struct MyProvider;
impl Provider for MyProvider {
fn complete(&self, request: CompletionRequest)
-> impl Future<Output = Result<CompletionResponse, ProviderError>> + Send
{
async { todo!() }
}
fn complete_stream(&self, request: CompletionRequest)
-> impl Future<Output = Result<StreamHandle, ProviderError>> + Send
{
async { todo!() }
}
}Required Methods§
Sourcefn complete(
&self,
request: CompletionRequest,
) -> impl Future<Output = Result<CompletionResponse, ProviderError>> + WasmCompatSend
fn complete( &self, request: CompletionRequest, ) -> impl Future<Output = Result<CompletionResponse, ProviderError>> + WasmCompatSend
Send a completion request and get a full response.
Sourcefn complete_stream(
&self,
request: CompletionRequest,
) -> impl Future<Output = Result<StreamHandle, ProviderError>> + WasmCompatSend
fn complete_stream( &self, request: CompletionRequest, ) -> impl Future<Output = Result<StreamHandle, ProviderError>> + WasmCompatSend
Send a completion request and get a stream of events.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.