lc_chains/lib.rs
1// lc-chains/src/lib.rs
2//! Chain system for composing operations.
3//!
4//! Chain is LangChain's core abstraction, representing a sequence of operations.
5//!
6//! # Core Concepts
7//!
8//! - **BaseChain**: Base trait for chains.
9//! - **LLMChain**: Most basic chain (Prompt + LLM).
10//! - **SequentialChain**: Execute multiple chains sequentially.
11//!
12//! # Example
13//!
14//! ```ignore
15//! use lc_chains::{LLMChain, SequentialChain};
16//!
17//! let chain1 = LLMChain::new(llm.clone(), "Generate a word about {topic}");
18//! let chain2 = LLMChain::new(llm, "Make a sentence with word: {word}");
19//!
20//! let seq_chain = SequentialChain::new()
21//! .add_chain(Arc::new(chain1), vec!["topic"], vec!["word"])
22//! .add_chain(Arc::new(chain2), vec!["word"], vec!["sentence"]);
23//!
24//! let inputs = HashMap::from([("topic".into(), "programming".into())]);
25//! let result = seq_chain.invoke(inputs).await?;
26//! ```
27
28pub mod base;
29pub mod conversation_chain;
30pub mod conversation_retrieval;
31pub mod document_chains;
32pub mod llm_chain;
33pub mod retrieval_qa;
34pub mod router_chain;
35pub mod sequential_chain;
36
37pub use base::{BaseChain, ChainError, ChainResult, ChainStream, StreamToken};
38pub use conversation_chain::{ConversationChain, ConversationChainBuilder};
39pub use conversation_retrieval::ConversationRetrievalChain;
40pub use document_chains::{
41 MapReduceDocumentsChain, MapRerankDocumentsChain, RefineDocumentsChain, StuffDocumentsChain,
42};
43pub use llm_chain::{LLMChain, LLMChainBuilder};
44pub use retrieval_qa::RetrievalQA;
45pub use router_chain::{LLMRouterChain, RouteDestination, RouterChain};
46pub use sequential_chain::SequentialChain;