use llm_bridge_core::{
model::{ApiFormat, StreamState},
transform::transform_stream,
};
fn main() {
let raw_sse_input = br#"
data: {"id":"chatcmpl-123","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"Hel"}}]}
data: {"id":"chatcmpl-123","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"lo"}}]}
data: {"id":"chatcmpl-123","object":"chat.completion.chunk","choices":[{"index":0,"delta":{},"finish_reason":"stop"}],"usage":{"prompt_tokens":12,"completion_tokens":2}}
data: [DONE]
"#;
let mut state = StreamState::default();
let events =
transform_stream(raw_sse_input, ApiFormat::OpenaiChat, &mut state).expect("转换应成功");
println!("=== Anthropic SSE 事件序列 ===\n");
let text = String::from_utf8_lossy(&events);
print!("{text}");
println!("\n=== 事件序列验证通过 ===");
println!("✓ message_start");
println!("✓ content_block_start (index 0)");
println!("✓ content_block_delta \"Hel\"");
println!("✓ content_block_delta \"lo\"");
println!("✓ content_block_stop (index 0)");
println!("✓ message_delta (stop_reason=end_turn)");
println!("✓ message_stop");
println!("\n流式处理完成 — 无错误,无残留状态。");
}