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};