pub struct PaddockProvider { /* private fields */ }Implementations§
Trait Implementations§
Source§impl LlmProvider for PaddockProvider
impl LlmProvider for PaddockProvider
Source§fn chat_json<'life0, 'life1, 'life2, 'life3, 'life4, 'async_trait>(
&'life0 self,
system: &'life1 str,
msgs: &'life2 [Msg],
schema: &'life3 Value,
name: &'life4 str,
) -> Pin<Box<dyn Future<Output = Result<Option<Value>, String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
'life4: 'async_trait,
fn chat_json<'life0, 'life1, 'life2, 'life3, 'life4, 'async_trait>(
&'life0 self,
system: &'life1 str,
msgs: &'life2 [Msg],
schema: &'life3 Value,
name: &'life4 str,
) -> Pin<Box<dyn Future<Output = Result<Option<Value>, String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
'life4: 'async_trait,
Constrain decoding to schema via the OpenAI-compatible response_format.
Ollama, llama.cpp’s server, vLLM and LM Studio all accept this and compile the schema into a decoding grammar internally, so the model can only emit tokens the schema permits. That is why this works on models with no tool-calling ability at all: nothing is being asked of the model except to continue, and the sampler does the rest.
Two degradations, because not every server implements the whole thing:
- a server that rejects
json_schemais retried withjson_object, which constrains the output to some JSON and leaves the shape to the prompt; - a server that rejects
response_formatentirely returnsOk(None), so the caller falls back rather than seeing an error it cannot act on.
fn name(&self) -> &str
Source§fn chat<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
system: &'life1 str,
msgs: &'life2 [Msg],
tools: &'life3 [ToolSpec],
) -> Pin<Box<dyn Future<Output = Result<Turn, String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
fn chat<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
system: &'life1 str,
msgs: &'life2 [Msg],
tools: &'life3 [ToolSpec],
) -> Pin<Box<dyn Future<Output = Result<Turn, String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
One turn: given the system prompt, conversation, and available tools, return the model’s reply
(assistant text and/or tool calls).
Source§fn synthesizes(&self) -> bool
fn synthesizes(&self) -> bool
Whether this provider produces trustworthy natural-language synthesis of tool results. Large
models (Bedrock, big OpenAI-compatible) do; small on-device tool-callers (Needle, the native
1.7B) do NOT — for those the agent renders a deterministic template from the program result
instead of trusting the model to phrase the numbers. Default
true.Auto Trait Implementations§
impl !Freeze for PaddockProvider
impl !RefUnwindSafe for PaddockProvider
impl !UnwindSafe for PaddockProvider
impl Send for PaddockProvider
impl Sync for PaddockProvider
impl Unpin for PaddockProvider
impl UnsafeUnpin for PaddockProvider
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
Mutably borrows from an owned value. Read more
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
impl<T> ErasedDestructor for Twhere
T: 'static,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreCreates a shared type from an unshared type.