1pub fn text_from_response(mut res: open_ai::Response) -> Option<String> {
2 let choice = res.choices.pop()?;
3 let output_text = match choice.message {
4 open_ai::RequestMessage::Assistant {
5 content: Some(open_ai::MessageContent::Plain(content)),
6 ..
7 } => content,
8 open_ai::RequestMessage::Assistant {
9 content: Some(open_ai::MessageContent::Multipart(mut content)),
10 ..
11 } => {
12 if content.is_empty() {
13 log::error!("No output from Baseten completion response");
14 return None;
15 }
16
17 match content.remove(0) {
18 open_ai::MessagePart::Text { text } => text,
19 open_ai::MessagePart::Image { .. } => {
20 log::error!("Expected text, got an image");
21 return None;
22 }
23 }
24 }
25 _ => {
26 log::error!("Invalid response message: {:?}", choice.message);
27 return None;
28 }
29 };
30 Some(output_text)
31}