Skip to main content

sapient_generate/
lib.rs

1#![allow(
2    unused_imports,
3    unused_variables,
4    unused_mut,
5    dead_code,
6    clippy::derivable_impls
7)]
8
9//! `sapient-generate` — LLM text generation pipeline.
10//!
11//! The main entry point is [`Pipeline`], which provides a dead-simple API
12//! for running any HuggingFace LLM:
13//!
14//! ```no_run
15//! use sapient_generate::Pipeline;
16//!
17//! #[tokio::main]
18//! async fn main() -> anyhow::Result<()> {
19//!     let pipeline = Pipeline::from_pretrained("microsoft/phi-2").await?;
20//!
21//!     // Simple completion
22//!     let text = pipeline.generate("The meaning of life is").await?;
23//!     println!("{text}");
24//!
25//!     // Chat (for instruct models)
26//!     use sapient_tokenizers::ChatMessage;
27//!     let reply = pipeline.chat(&[
28//!         ChatMessage::system("You are a helpful assistant."),
29//!         ChatMessage::user("Explain quantum computing in simple terms."),
30//!     ]).await?;
31//!     println!("{reply}");
32//!
33//!     // Streaming
34//!     use futures::StreamExt;
35//!     let mut stream = pipeline.generate_stream("Once upon a time").await;
36//!     while let Some(token) = stream.next().await {
37//!         print!("{token}");
38//!     }
39//!     Ok(())
40//! }
41//! ```
42
43pub mod kv_cache;
44pub mod pipeline;
45pub mod sampler;
46
47pub use kv_cache::KVCache;
48pub use pipeline::{GenerationConfig, LoadOptions, Pipeline};
49pub use sampler::{Sampler, SamplingStrategy};
50pub use sapient_models::{mac_gpu_support, LlmBackendKind as GenerationBackend, MacGpuSupport};