pub trait CompletionProvider: Send + Sync {
// Required method
fn complete<'life0, 'life1, 'life2, 'life3, 'life4, 'async_trait>(
&'life0 mut self,
messages: &'life1 mut Messages,
tool_declarations: Option<&'life2 dyn ToolDeclarations>,
options: Option<&'life3 ChatOptions>,
structured_output: Option<&'life4 Schema>,
) -> Pin<Box<dyn Future<Output = Result<ChatResponse, ChatFailure>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
'life4: 'async_trait;
// Provided method
fn metadata(&self) -> Option<&ProviderMeta> { ... }
}Expand description
Tool declarations are the one and only view providers have into the
user’s tool collections. The trait intentionally exposes nothing
about execution, metadata, or strategy — providers translate
declarations to their wire format and nothing else. For the
builder-side collection API, see crate::types::tools.
Required Methods§
Sourcefn complete<'life0, 'life1, 'life2, 'life3, 'life4, 'async_trait>(
&'life0 mut self,
messages: &'life1 mut Messages,
tool_declarations: Option<&'life2 dyn ToolDeclarations>,
options: Option<&'life3 ChatOptions>,
structured_output: Option<&'life4 Schema>,
) -> Pin<Box<dyn Future<Output = Result<ChatResponse, ChatFailure>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
'life4: 'async_trait,
fn complete<'life0, 'life1, 'life2, 'life3, 'life4, 'async_trait>(
&'life0 mut self,
messages: &'life1 mut Messages,
tool_declarations: Option<&'life2 dyn ToolDeclarations>,
options: Option<&'life3 ChatOptions>,
structured_output: Option<&'life4 Schema>,
) -> Pin<Box<dyn Future<Output = Result<ChatResponse, ChatFailure>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
'life4: 'async_trait,
Run one completion step.
tool_declarations, when Some, is a view onto every scoped
tool collection the chat loop holds. Call .json() on it to get
the JSON array of function declarations that providers splice
into their native request format.
Provided Methods§
fn metadata(&self) -> Option<&ProviderMeta>
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".