Skip to main content

Provider

Trait Provider 

Source
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§

Source

fn complete( &self, request: CompletionRequest, ) -> impl Future<Output = Result<CompletionResponse, ProviderError>> + WasmCompatSend

Send a completion request and get a full response.

Source

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.

Implementors§