Crate prefrontal

Source
Expand description

A thread-safe text classifier library using ONNX models for embedding and classification.

§Basic Usage

use prefrontal::{Classifier, BuiltinModel, ClassDefinition};
 
let classifier = Classifier::builder()
    .with_model(BuiltinModel::MiniLM)?
    .add_class(
        ClassDefinition::new("positive", "Content with positive sentiment")
            .with_examples(vec!["great", "awesome", "excellent"])
    )?
    .add_class(
        ClassDefinition::new("negative", "Content with negative sentiment")
            .with_examples(vec!["bad", "terrible", "awful"])
    )?
    .build()?;
 
let (label, scores) = classifier.predict("This is a great movie!")?;
println!("Predicted class: {}", label);

§Thread Safety

The classifier is thread-safe and can be shared across threads using Arc:

use prefrontal::{Classifier, BuiltinModel, ClassDefinition};
use std::sync::Arc;
use std::thread;
 
let classifier = Arc::new(Classifier::builder()
    .with_model(BuiltinModel::MiniLM)?
    .add_class(
        ClassDefinition::new("example", "Example class")
            .with_examples(vec!["sample text"])
    )?
    .build()?);
 
let mut handles = vec![];
for _ in 0..3 {
    let classifier = Arc::clone(&classifier);
    handles.push(thread::spawn(move || {
        classifier.predict("test text").unwrap();
    }));
}
 
for handle in handles {
    handle.join().unwrap();
}

Re-exports§

pub use classifier::Classifier;
pub use classifier::ClassifierBuilder;
pub use classifier::ClassifierError;
pub use classifier::ClassifierInfo;
pub use classifier::ClassDefinition;
pub use model_manager::ModelManager;
pub use model_manager::ModelError;

Modules§

classifier
model_manager

Structs§

ModelCharacteristics
Characteristics of a model, including its capabilities and resource requirements
RuntimeConfig

Enums§

BuiltinModel
Built-in models that can be used with the classifier

Functions§

create_session_builder
init_logger