ai_sdk_provider/language_model/
finish_reason.rs1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
5#[serde(rename_all = "kebab-case")]
6pub enum FinishReason {
7 Stop,
9 Length,
11 ContentFilter,
13 ToolCalls,
15 Error,
17 Other,
19 Unknown,
21}
22
23#[cfg(test)]
24mod tests {
25 use super::*;
26
27 #[test]
28 fn test_finish_reason_serialization() {
29 assert_eq!(
30 serde_json::to_string(&FinishReason::ToolCalls).unwrap(),
31 r#""tool-calls""#
32 );
33 assert_eq!(
34 serde_json::to_string(&FinishReason::Stop).unwrap(),
35 r#""stop""#
36 );
37 assert_eq!(
38 serde_json::to_string(&FinishReason::ContentFilter).unwrap(),
39 r#""content-filter""#
40 );
41 }
42
43 #[test]
44 fn test_finish_reason_deserialization() {
45 let reason: FinishReason = serde_json::from_str(r#""tool-calls""#).unwrap();
46 assert_eq!(reason, FinishReason::ToolCalls);
47 }
48}