Skip to main content

Conversation

Struct Conversation 

Source
pub struct Conversation { /* private fields */ }
Expand description

Stateful conversation that accumulates chat history across turns

Implementations§

Source§

impl Conversation

Source

pub fn new(client: HttpClient) -> Self

Create a new conversation using the given HTTP client

§Example
use wauldo::{HttpClient, Conversation};
let client = HttpClient::localhost().unwrap();
let conv = Conversation::new(client);
Source

pub fn with_system(self, system: &str) -> Self

Add a system message to the conversation history

The system message is always inserted at position 0 so it precedes all user and assistant turns.

§Example
let conv = Conversation::new(client)
    .with_system("You are a helpful Rust expert");
Source

pub fn with_model(self, model: &str) -> Self

Set the model to use for chat completions

Defaults to "default" (server-selected) if not called.

§Example
let conv = Conversation::new(client).with_model("llama3");
Source

pub async fn say(&mut self, message: &str) -> Result<String>

Send a user message, receive the assistant reply, and store both in history

The full accumulated history (system + prior turns) is sent with each request so the LLM has complete conversational context.

§Example
let mut conv = Conversation::new(client).with_system("Be concise");
let reply = conv.say("What is Rust?").await?;
println!("{}", reply);
Source

pub fn history(&self) -> &[ChatMessage]

Read-only access to the accumulated history

§Example
let conv = Conversation::new(client).with_system("sys");
assert_eq!(conv.history().len(), 1);
Source

pub fn clear(&mut self)

Clear conversation history (keeps model setting and system prompt)

Removes all user and assistant messages but preserves the system prompt (if any) so subsequent say() calls retain the same persona.

§Example
let mut conv = Conversation::new(client).with_system("sys");
conv.clear();
assert_eq!(conv.history().len(), 1); // system prompt preserved

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more