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>, pub output_tokens: Option<u32>, }
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}