Fix panic on multi-byte chars in filter_json buffer truncation
The buffer truncation code was slicing at a raw byte offset which could land in the middle of a multi-byte character (like emojis), causing a panic. Fixed by using char_indices() to find valid character boundaries. Also added stop_reason field to CompletionChunk initializers in tests to complete the stop_reason feature addition. - Fix byte boundary panic in filter_json.rs line 327 - Add test for multi-byte character handling - Update test files with missing stop_reason field
This commit is contained in:
@@ -61,6 +61,22 @@ pub fn make_final_chunk(tool_calls: Vec<ToolCall>, usage: Option<Usage>) -> Comp
|
||||
} else {
|
||||
Some(tool_calls)
|
||||
},
|
||||
stop_reason: None,
|
||||
}
|
||||
}
|
||||
|
||||
/// Create a final completion chunk with stop reason.
|
||||
pub fn make_final_chunk_with_reason(tool_calls: Vec<ToolCall>, usage: Option<Usage>, stop_reason: Option<String>) -> CompletionChunk {
|
||||
CompletionChunk {
|
||||
content: String::new(),
|
||||
finished: true,
|
||||
usage,
|
||||
tool_calls: if tool_calls.is_empty() {
|
||||
None
|
||||
} else {
|
||||
Some(tool_calls)
|
||||
},
|
||||
stop_reason,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -71,6 +87,7 @@ pub fn make_text_chunk(content: String) -> CompletionChunk {
|
||||
finished: false,
|
||||
usage: None,
|
||||
tool_calls: None,
|
||||
stop_reason: None,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -81,5 +98,6 @@ pub fn make_tool_chunk(tool_calls: Vec<ToolCall>) -> CompletionChunk {
|
||||
finished: false,
|
||||
usage: None,
|
||||
tool_calls: Some(tool_calls),
|
||||
stop_reason: None,
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user