llm_api_rs/core/
mod.rs

1pub mod client;
2
3use serde::{Deserialize, Serialize};
4use thiserror::Error;
5
6#[derive(Debug, Serialize, Deserialize)]
7pub struct ChatMessage {
8    pub role: String,
9    pub content: String,
10}
11
12#[derive(Debug, Serialize)]
13pub struct ChatCompletionRequest {
14    pub model: String,
15    pub messages: Vec<ChatMessage>,
16    pub temperature: Option<f32>,
17    pub max_tokens: Option<u32>,
18}
19
20#[derive(Debug, Deserialize)]
21pub struct ChatCompletionResponse {
22    pub id: String,
23    pub model: String,
24    pub choices: Vec<ChatChoice>,
25    pub usage: Option<ChatUsage>,
26}
27
28#[derive(Debug, Deserialize)]
29pub struct ChatChoice {
30    pub message: ChatMessage,
31    pub finish_reason: String,
32}
33
34#[derive(Debug, Deserialize)]
35pub struct ChatUsage {
36    pub input_tokens: Option<u32>,  // Anthropic only
37    pub output_tokens: Option<u32>, // Anthropic only
38}
39
40#[derive(Debug, Error)]
41pub enum CoreError {
42    #[error("Serialization error: {0}")]
43    SerializationError(String),
44
45    #[error("Deserialization error: {0}")]
46    DeserializationError(String),
47}