Skip to content

Commit 6e136b7

Browse files
committed
Update ChatCompletionChoice with optional finish_reason and finish_details
1 parent 282e7cb commit 6e136b7

File tree

3 files changed

+28
-12
lines changed

3 files changed

+28
-12
lines changed

examples/function_call.rs

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -50,21 +50,25 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
5050
}])
5151
.function_call(FunctionCallType::Auto);
5252

53-
// debug reuqest json
53+
// debug request json
5454
// let serialized = serde_json::to_string(&req).unwrap();
5555
// println!("{}", serialized);
5656

5757
let result = client.chat_completion(req)?;
5858

5959
match result.choices[0].finish_reason {
60-
chat_completion::FinishReason::stop => {
60+
None => {
61+
println!("No finish_reason");
62+
println!("{:?}", result.choices[0].message.content);
63+
}
64+
Some(chat_completion::FinishReason::stop) => {
6165
println!("Stop");
6266
println!("{:?}", result.choices[0].message.content);
6367
}
64-
chat_completion::FinishReason::length => {
68+
Some(chat_completion::FinishReason::length) => {
6569
println!("Length");
6670
}
67-
chat_completion::FinishReason::function_call => {
71+
Some(chat_completion::FinishReason::function_call) => {
6872
println!("FunctionCall");
6973
#[derive(Serialize, Deserialize)]
7074
struct Currency {
@@ -80,10 +84,10 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
8084
println!("{} price: {}", coin, price);
8185
}
8286
}
83-
chat_completion::FinishReason::content_filter => {
87+
Some(chat_completion::FinishReason::content_filter) => {
8488
println!("ContentFilter");
8589
}
86-
chat_completion::FinishReason::null => {
90+
Some(chat_completion::FinishReason::null) => {
8791
println!("Null");
8892
}
8993
}

examples/function_call_role.rs

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -52,14 +52,18 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
5252
let result = client.chat_completion(req)?;
5353

5454
match result.choices[0].finish_reason {
55-
chat_completion::FinishReason::stop => {
55+
None => {
56+
println!("No finish_reason");
57+
println!("{:?}", result.choices[0].message.content);
58+
}
59+
Some(chat_completion::FinishReason::stop) => {
5660
println!("Stop");
5761
println!("{:?}", result.choices[0].message.content);
5862
}
59-
chat_completion::FinishReason::length => {
63+
Some(chat_completion::FinishReason::length) => {
6064
println!("Length");
6165
}
62-
chat_completion::FinishReason::function_call => {
66+
Some(chat_completion::FinishReason::function_call) => {
6367
println!("FunctionCall");
6468
#[derive(Serialize, Deserialize)]
6569
struct Currency {
@@ -94,10 +98,10 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
9498
let result = client.chat_completion(req)?;
9599
println!("{:?}", result.choices[0].message.content);
96100
}
97-
chat_completion::FinishReason::content_filter => {
101+
Some(chat_completion::FinishReason::content_filter) => {
98102
println!("ContentFilter");
99103
}
100-
chat_completion::FinishReason::null => {
104+
Some(chat_completion::FinishReason::null) => {
101105
println!("Null");
102106
}
103107
}

src/v1/chat_completion.rs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,8 @@ pub struct ChatCompletionMessageForResponse {
119119
pub struct ChatCompletionChoice {
120120
pub index: i64,
121121
pub message: ChatCompletionMessageForResponse,
122-
pub finish_reason: FinishReason,
122+
pub finish_reason: Option<FinishReason>,
123+
pub finish_details: Option<FinishDetails>,
123124
}
124125

125126
#[derive(Debug, Deserialize)]
@@ -187,6 +188,13 @@ pub enum FinishReason {
187188
null,
188189
}
189190

191+
#[derive(Debug, Serialize, Deserialize)]
192+
#[allow(non_camel_case_types)]
193+
pub struct FinishDetails {
194+
pub r#type: FinishReason,
195+
pub stop: String,
196+
}
197+
190198
#[derive(Debug, Serialize, Deserialize, Clone)]
191199
pub struct FunctionCall {
192200
#[serde(skip_serializing_if = "Option::is_none")]

0 commit comments

Comments
 (0)