ragit-api 0.4.5

api utilities for ragit
Documentation
use super::{IntoChatResponse, Response};
use crate::error::Error;
use serde::Deserialize;

#[allow(dead_code)]
#[derive(Deserialize)]
pub struct AnthropicResponse {
    id: String,
    model: String,
    content: Vec<AnthropicContent>,
    role: String,
    stop_reason: String,
    r#type: String,
    usage: AnthropicUsage,
}

#[allow(dead_code)]
#[derive(Deserialize)]
struct AnthropicContent {
    text: String,
    r#type: String,
}

#[allow(dead_code)]
#[derive(Deserialize)]
struct AnthropicUsage {
    input_tokens: usize,
    output_tokens: usize,
}

impl IntoChatResponse for AnthropicResponse {
    fn into_chat_response(&self) -> Result<Response, Error> {
        Ok(Response {
            messages: self.content.iter().map(
                |content| content.text.to_string()
            ).collect(),
            reasonings: self.content.iter().map(|_| None).collect(),
            output_tokens: self.usage.output_tokens,
            prompt_tokens: self.usage.input_tokens,
            total_tokens: self.usage.output_tokens + self.usage.input_tokens,
        })
    }
}