mistral_openapi_client/models/
chat_completion_choice.rs1use crate::models;
12use serde::{Deserialize, Serialize};
13
14#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
15pub struct ChatCompletionChoice {
16 #[serde(rename = "index")]
17 pub index: i32,
18 #[serde(rename = "message")]
19 pub message: Box<models::AssistantMessage>,
20 #[serde(rename = "finish_reason")]
21 pub finish_reason: FinishReason,
22}
23
24impl ChatCompletionChoice {
25 pub fn new(index: i32, message: models::AssistantMessage, finish_reason: FinishReason) -> ChatCompletionChoice {
26 ChatCompletionChoice {
27 index,
28 message: Box::new(message),
29 finish_reason,
30 }
31 }
32}
33#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
35pub enum FinishReason {
36 #[serde(rename = "stop")]
37 Stop,
38 #[serde(rename = "length")]
39 Length,
40 #[serde(rename = "model_length")]
41 ModelLength,
42 #[serde(rename = "error")]
43 Error,
44 #[serde(rename = "tool_calls")]
45 ToolCalls,
46}
47
48impl Default for FinishReason {
49 fn default() -> FinishReason {
50 Self::Stop
51 }
52}
53