just_deepseek/types/chat/
response.rs1use serde::{Deserialize, Serialize};
2
3use super::{
4 ChatCompletionChunkToolCall, ChatCompletionLogprobs, ChatCompletionToolCall, FinishReason,
5 Usage,
6};
7
8#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
10pub struct ChatCompletion {
11 pub id: String,
12 pub choices: Vec<ChatCompletionChoice>,
13 pub created: i64,
14 pub model: String,
15 #[serde(skip_serializing_if = "Option::is_none")]
16 pub system_fingerprint: Option<String>,
17 pub object: String,
18 #[serde(skip_serializing_if = "Option::is_none")]
19 pub usage: Option<Usage>,
20}
21
22#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
23pub struct ChatCompletionChoice {
24 #[serde(skip_serializing_if = "Option::is_none")]
25 pub finish_reason: Option<FinishReason>,
26 pub index: u32,
27 pub message: AssistantMessage,
28 #[serde(skip_serializing_if = "Option::is_none")]
29 pub logprobs: Option<ChatCompletionLogprobs>,
30}
31
32#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
33pub struct AssistantMessage {
34 #[serde(skip_serializing_if = "Option::is_none")]
35 pub content: Option<String>,
36 #[serde(skip_serializing_if = "Option::is_none")]
37 pub reasoning_content: Option<String>,
38 #[serde(skip_serializing_if = "Option::is_none")]
39 pub tool_calls: Option<Vec<ChatCompletionToolCall>>,
40 pub role: AssistantRole,
41}
42
43#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)]
44#[serde(rename_all = "lowercase")]
45pub enum AssistantRole {
46 Assistant,
47}
48
49#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
50pub struct ChatCompletionChunk {
51 pub id: String,
52 pub choices: Vec<ChatCompletionChunkChoice>,
53 pub created: i64,
54 pub model: String,
55 #[serde(skip_serializing_if = "Option::is_none")]
56 pub system_fingerprint: Option<String>,
57 pub object: String,
58 #[serde(skip_serializing_if = "Option::is_none")]
59 pub usage: Option<Usage>,
60}
61
62#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
63pub struct ChatCompletionChunkChoice {
64 pub delta: DeltaMessage,
65 #[serde(skip_serializing_if = "Option::is_none")]
66 pub finish_reason: Option<FinishReason>,
67 pub index: u32,
68 #[serde(skip_serializing_if = "Option::is_none")]
69 pub logprobs: Option<ChatCompletionLogprobs>,
70}
71
72#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
73pub struct DeltaMessage {
74 #[serde(skip_serializing_if = "Option::is_none")]
75 pub content: Option<String>,
76 #[serde(skip_serializing_if = "Option::is_none")]
77 pub reasoning_content: Option<String>,
78 #[serde(skip_serializing_if = "Option::is_none")]
79 pub role: Option<AssistantRole>,
80 #[serde(skip_serializing_if = "Option::is_none")]
81 pub tool_calls: Option<Vec<ChatCompletionChunkToolCall>>,
82}