pub struct OpenRouter { /* private fields */ }Implementations§
Source§impl OpenRouter
impl OpenRouter
pub fn from_key_auto(key: String) -> Self
pub fn openrouter_flavor(key: String) -> Self
pub fn openai(key: String) -> Self
pub fn opencode_go(key: String) -> Self
pub fn openai_codex(key: String) -> Self
pub const fn backend_tag(&self) -> BackendTag
Sourcepub fn is_openrouter(&self) -> bool
pub fn is_openrouter(&self) -> bool
Video gen is OpenRouter-only (not OpenAI/Codex/OpenCode).
Sourcepub async fn generate_video(&self, req: VideoRequest) -> Result<(Vec<u8>, f64)>
pub async fn generate_video(&self, req: VideoRequest) -> Result<(Vec<u8>, f64)>
Generate a video via OpenRouter’s /api/v1/videos endpoint.
Submits the job, polls every 10s (up to 6 min), downloads on completion.
Returns (mp4_bytes, cost_in_usd).
pub const fn default_utility_model(&self) -> &'static str
pub const fn default_research_model(&self) -> &'static str
pub const fn default_embedding_model(&self) -> &'static str
pub const fn default_video_gen_model(&self) -> &'static str
pub const fn default_image_gen_model(&self) -> &'static str
Sourcepub async fn list_models(&self) -> Result<Vec<Model>>
pub async fn list_models(&self) -> Result<Vec<Model>>
Fetch the live model catalog. No hardcoded list except Codex, whose
subscription endpoint does not expose the normal OpenAI models catalog.
Sourcepub async fn complete(
&self,
model: &str,
messages: Vec<ChatMessage>,
) -> Result<String>
pub async fn complete( &self, model: &str, messages: Vec<ChatMessage>, ) -> Result<String>
One-shot, non-streaming completion. Used for short utility calls like generating a session topic/slug. Returns the assistant’s message text.
Sourcepub async fn complete_with_usage(
&self,
model: &str,
messages: Vec<ChatMessage>,
) -> Result<Completion>
pub async fn complete_with_usage( &self, model: &str, messages: Vec<ChatMessage>, ) -> Result<Completion>
One-shot completion with the provider’s usage object when available. Keeping usage attached to the text lets background workflow stages use the same cache accounting as the interactive stream.
Sourcepub async fn complete_with_params(
&self,
model: &str,
messages: Vec<ChatMessage>,
params: &ChatParams,
) -> Result<Completion>
pub async fn complete_with_params( &self, model: &str, messages: Vec<ChatMessage>, params: &ChatParams, ) -> Result<Completion>
One-shot completion with request parameters and usage accounting.
Sourcepub async fn describe_image(
&self,
model: &str,
image_data_url: &str,
) -> Result<String>
pub async fn describe_image( &self, model: &str, image_data_url: &str, ) -> Result<String>
One-shot, non-streaming vision call: describe image_data_url with model.
Sourcepub async fn generate_image(
&self,
model: &str,
prompt: &str,
size: &str,
image_data: Option<&[u8]>,
) -> Result<(Vec<u8>, String)>
pub async fn generate_image( &self, model: &str, prompt: &str, size: &str, image_data: Option<&[u8]>, ) -> Result<(Vec<u8>, String)>
Generate an image via OpenRouter’s dedicated /api/v1/images endpoint.
Returns (decoded_bytes, file_extension) — the caller should use the
returned extension (e.g. "png", "jpg", "webp") for the saved file.
Sourcepub async fn ocr_page(
&self,
model: &str,
image_data_url: &str,
) -> Result<String>
pub async fn ocr_page( &self, model: &str, image_data_url: &str, ) -> Result<String>
One-shot, non-streaming vision call: transcribe a scanned page image.
Sourcepub async fn embed(
&self,
model: &str,
inputs: Vec<String>,
) -> Result<Vec<Vec<f32>>>
pub async fn embed( &self, model: &str, inputs: Vec<String>, ) -> Result<Vec<Vec<f32>>>
Embed inputs with model (OpenAI-format /embeddings endpoint);
returns one vector per input, in order.
Sourcepub fn stream_chat(
&self,
model: String,
messages: Vec<ChatMessage>,
params: ChatParams,
tools: Vec<ToolDef>,
toolbox: Arc<dyn ToolExecutor>,
max_tool_iters: usize,
) -> (UnboundedReceiver<StreamEvent>, AbortHandle)
pub fn stream_chat( &self, model: String, messages: Vec<ChatMessage>, params: ChatParams, tools: Vec<ToolDef>, toolbox: Arc<dyn ToolExecutor>, max_tool_iters: usize, ) -> (UnboundedReceiver<StreamEvent>, AbortHandle)
Start a streaming completion. Spawns a task that pushes tokens over the
returned channel; the UI loop drains it alongside keypresses. If the
model calls a tool, the task runs it via toolbox and continues the
conversation, bounded by max_tool_iters round-trips.
Trait Implementations§
Source§impl Clone for OpenRouter
impl Clone for OpenRouter
Source§fn clone(&self) -> OpenRouter
fn clone(&self) -> OpenRouter
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl !RefUnwindSafe for OpenRouter
impl !UnwindSafe for OpenRouter
impl Freeze for OpenRouter
impl Send for OpenRouter
impl Sync for OpenRouter
impl Unpin for OpenRouter
impl UnsafeUnpin for OpenRouter
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.