neuron-types 0.3.0

Core traits for AI agents in Rust — Provider, Tool, and ContextStrategy without the framework buy-in
Documentation
use neuron_types::{EmbeddingRequest, EmbeddingResponse, EmbeddingUsage};

#[test]
fn embedding_request_default() {
    let req = EmbeddingRequest::default();
    assert!(req.model.is_empty());
    assert!(req.input.is_empty());
    assert_eq!(req.dimensions, None);
    assert!(req.extra.is_empty());
}

#[test]
fn embedding_response_serde_roundtrip() {
    let original = EmbeddingResponse {
        model: "text-embedding-3-small".to_string(),
        embeddings: vec![vec![0.1, 0.2, 0.3], vec![0.4, 0.5, 0.6]],
        usage: EmbeddingUsage {
            prompt_tokens: 10,
            total_tokens: 10,
        },
    };

    let json = serde_json::to_string(&original).expect("serialize");
    let deserialized: EmbeddingResponse = serde_json::from_str(&json).expect("deserialize");

    assert_eq!(original, deserialized);
    assert_eq!(deserialized.model, "text-embedding-3-small");
    assert_eq!(deserialized.embeddings.len(), 2);
    assert_eq!(deserialized.embeddings[0], vec![0.1, 0.2, 0.3]);
    assert_eq!(deserialized.usage.prompt_tokens, 10);
    assert_eq!(deserialized.usage.total_tokens, 10);
}

#[test]
fn embedding_usage_default() {
    let usage = EmbeddingUsage::default();
    assert_eq!(usage.prompt_tokens, 0);
    assert_eq!(usage.total_tokens, 0);
}