use crate::models;
use serde::{Deserialize, Serialize};
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct CompletionResponseStreamChoice {
#[serde(rename = "index")]
pub index: i32,
#[serde(rename = "delta")]
pub delta: Box<models::DeltaMessage>,
#[serde(rename = "finish_reason", deserialize_with = "Option::deserialize")]
pub finish_reason: Option<FinishReason>,
}
impl CompletionResponseStreamChoice {
pub fn new(index: i32, delta: models::DeltaMessage, finish_reason: Option<FinishReason>) -> CompletionResponseStreamChoice {
CompletionResponseStreamChoice {
index,
delta: Box::new(delta),
finish_reason,
}
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum FinishReason {
#[serde(rename = "stop")]
Stop,
#[serde(rename = "length")]
Length,
#[serde(rename = "error")]
Error,
#[serde(rename = "tool_calls")]
ToolCalls,
}
impl Default for FinishReason {
fn default() -> FinishReason {
Self::Stop
}
}