Release Notes: - N/A --------- Co-authored-by: Ben Kunkle <ben@zed.dev> Co-authored-by: Max Brunsfeld <maxbrunsfeld@gmail.com>
32 lines
1.0 KiB
Rust
32 lines
1.0 KiB
Rust
pub fn text_from_response(mut res: open_ai::Response) -> Option<String> {
|
|
let choice = res.choices.pop()?;
|
|
let output_text = match choice.message {
|
|
open_ai::RequestMessage::Assistant {
|
|
content: Some(open_ai::MessageContent::Plain(content)),
|
|
..
|
|
} => content,
|
|
open_ai::RequestMessage::Assistant {
|
|
content: Some(open_ai::MessageContent::Multipart(mut content)),
|
|
..
|
|
} => {
|
|
if content.is_empty() {
|
|
log::error!("No output from Baseten completion response");
|
|
return None;
|
|
}
|
|
|
|
match content.remove(0) {
|
|
open_ai::MessagePart::Text { text } => text,
|
|
open_ai::MessagePart::Image { .. } => {
|
|
log::error!("Expected text, got an image");
|
|
return None;
|
|
}
|
|
}
|
|
}
|
|
_ => {
|
|
log::error!("Invalid response message: {:?}", choice.message);
|
|
return None;
|
|
}
|
|
};
|
|
Some(output_text)
|
|
}
|