pub struct BasicStreamedRAGChain<T, U>where
T: AsyncStreamedChatClient,
U: AsyncRetriever,{ /* private fields */ }
Expand description
§BasicStreamedRAGChain
This struct allows for easily executing RAG given a single user prompt. the current implementation relies on async streamed chat clients and async retrievers. we use generics in order to preserve error types via associated types.
T
- The type of the streamed chat client to be usedU
- The type of the retriever to be used
§Examples
use rag_toolchain::clients::*;
use rag_toolchain::retrievers::*;
use rag_toolchain::chains::*;
use rag_toolchain::stores::*;
use rag_toolchain::common::*;
use std::num::NonZeroU32;
async fn run_chain() {
const SYSTEM_MESSAGE: &'static str =
"You are to give straight forward answers using the supporting information you are provided";
let store: PostgresVectorStore =
PostgresVectorStore::try_new("embeddings", OpenAIEmbeddingModel::TextEmbeddingAda002)
.await
.unwrap();
let embedding_client: OpenAIEmbeddingClient =
OpenAIEmbeddingClient::try_new(OpenAIEmbeddingModel::TextEmbeddingAda002).unwrap();
let retriever: PostgresVectorRetriever<OpenAIEmbeddingClient> =
store.as_retriever(embedding_client, DistanceFunction::Cosine);
let chat_client: OpenAIChatCompletionClient =
OpenAIChatCompletionClient::try_new(OpenAIModel::Gpt3Point5Turbo).unwrap();
let system_prompt: PromptMessage = PromptMessage::SystemMessage(SYSTEM_MESSAGE.into());
let chain: BasicStreamedRAGChain<OpenAIChatCompletionClient, PostgresVectorRetriever<_>> =
BasicStreamedRAGChain::builder()
.system_prompt(system_prompt)
.chat_client(chat_client)
.retriever(retriever)
.build();
let user_message: PromptMessage =
PromptMessage::HumanMessage("what kind of alcohol does Morwenna drink".into());
let stream = chain
.invoke_chain(user_message, NonZeroU32::new(2).unwrap())
.await
.unwrap();
}
Implementations§
Source§impl<T, U> BasicStreamedRAGChain<T, U>where
T: AsyncStreamedChatClient,
U: AsyncRetriever,
impl<T, U> BasicStreamedRAGChain<T, U>where
T: AsyncStreamedChatClient,
U: AsyncRetriever,
Sourcepub fn builder() -> BasicStreamedRAGChainBuilder<T, U, ((), (), ())>
pub fn builder() -> BasicStreamedRAGChainBuilder<T, U, ((), (), ())>
Create a builder for building BasicStreamedRAGChain
.
On the builder, call .system_prompt(...)
(optional), .chat_client(...)
, .retriever(...)
to set the values of the fields.
Finally, call .build()
to create the instance of BasicStreamedRAGChain
.
Source§impl<T, U> BasicStreamedRAGChain<T, U>where
T: AsyncStreamedChatClient,
U: AsyncRetriever,
impl<T, U> BasicStreamedRAGChain<T, U>where
T: AsyncStreamedChatClient,
U: AsyncRetriever,
pub async fn invoke_chain( &self, user_message: PromptMessage, top_k: NonZeroU32, ) -> Result<T::Item, RagChainError<T::ErrorType, U::ErrorType>>
Trait Implementations§
Source§impl<T, U> Clone for BasicStreamedRAGChain<T, U>
impl<T, U> Clone for BasicStreamedRAGChain<T, U>
Source§fn clone(&self) -> BasicStreamedRAGChain<T, U>
fn clone(&self) -> BasicStreamedRAGChain<T, U>
Returns a copy of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moreSource§impl<T, U> Debug for BasicStreamedRAGChain<T, U>
impl<T, U> Debug for BasicStreamedRAGChain<T, U>
Source§impl<T, U> PartialEq for BasicStreamedRAGChain<T, U>
impl<T, U> PartialEq for BasicStreamedRAGChain<T, U>
impl<T, U> Eq for BasicStreamedRAGChain<T, U>
impl<T, U> StructuralPartialEq for BasicStreamedRAGChain<T, U>where
T: AsyncStreamedChatClient,
U: AsyncRetriever,
Auto Trait Implementations§
impl<T, U> Freeze for BasicStreamedRAGChain<T, U>
impl<T, U> RefUnwindSafe for BasicStreamedRAGChain<T, U>where
T: RefUnwindSafe,
U: RefUnwindSafe,
impl<T, U> Send for BasicStreamedRAGChain<T, U>
impl<T, U> Sync for BasicStreamedRAGChain<T, U>
impl<T, U> Unpin for BasicStreamedRAGChain<T, U>
impl<T, U> UnwindSafe for BasicStreamedRAGChain<T, U>where
T: UnwindSafe,
U: UnwindSafe,
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to
key
and return true
if they are equal.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 more