# cel-summarizer
[](https://crates.io/crates/cel-summarizer)
[](https://docs.rs/cel-summarizer)
[](https://github.com/dimpagk92/cel-summarizer/actions/workflows/ci.yml)
LLM-backed [`Summarizer`](https://docs.rs/cel-memory/latest/cel_memory/trait.Summarizer.html)
implementations for [`cel-memory`](https://crates.io/crates/cel-memory).
Wire a summarizer into [`BasicMemoryProvider::with_summarizer`](https://docs.rs/cel-memory/latest/cel_memory/struct.BasicMemoryProvider.html#method.with_summarizer)
or [`SqliteMemoryProvider::with_summarizer`](https://docs.rs/cel-memory-sqlite/latest/cel_memory_sqlite/struct.SqliteMemoryProvider.html#method.with_summarizer)
to enable session summaries and rollups.
## Providers
| [`AnthropicSummarizer`] | Claude Messages API | `claude-haiku-4-5` |
| [`OllamaSummarizer`] | Local Ollama | `llama3.2:3b-instruct-q4_K_M` |
## Environment
| `CEL_SUMMARIZER_PROVIDER` | `anthropic` (default) or `ollama` |
| `ANTHROPIC_API_KEY` | Required for Anthropic |
| `CEL_SUMMARIZER_MODEL` | Override default model |
| `OLLAMA_BASE_URL` | Ollama base URL (default `http://127.0.0.1:11434`) |
[`build_default`] reads these variables and falls back to Ollama when Anthropic
is unavailable.
## Example
```rust
use std::sync::Arc;
use cel_memory::{BasicMemoryProvider, Summarizer};
use cel_summarizer::build_default;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let summarizer: Arc<dyn Summarizer> = build_default()?;
let memory = BasicMemoryProvider::new().with_summarizer(summarizer);
let _ = memory;
Ok(())
}
```
## License
Apache-2.0 — see [LICENSE-APACHE](LICENSE-APACHE).
[`AnthropicSummarizer`]: https://docs.rs/cel-summarizer/latest/cel_summarizer/struct.AnthropicSummarizer.html
[`OllamaSummarizer`]: https://docs.rs/cel-summarizer/latest/cel_summarizer/struct.OllamaSummarizer.html
[`build_default`]: https://docs.rs/cel-summarizer/latest/cel_summarizer/fn.build_default.html