async_dashscope/operation/multi_modal_conversation/
output.rs1use std::pin::Pin;
2
3use serde::{Deserialize, Serialize};
4use tokio_stream::Stream;
5
6use crate::{error::DashScopeError, operation::common::Usage};
7
8#[derive(Serialize, Deserialize, Debug, Clone)]
9pub struct Content {
10 #[serde(rename = "text")]
11 pub text: Option<String>,
12 #[serde(rename = "image")]
13 pub image: Option<String>,
14}
15#[derive(Serialize, Deserialize, Debug, Clone)]
16pub struct Message {
17 #[serde(rename = "content")]
18 pub content: Vec<Content>,
19
20 #[serde(rename = "role")]
21 pub role: String,
22}
23#[derive(Serialize, Deserialize, Debug, Clone)]
24pub struct Choices {
25 #[serde(rename = "finish_reason")]
26 pub finish_reason: Option<String>,
27
28 #[serde(rename = "message")]
29 pub message: Message,
30}
31#[derive(Serialize, Deserialize, Debug, Clone)]
32pub struct Output {
33 #[serde(rename = "choices")]
34 pub choices: Vec<Choices>,
35}
36
37#[derive(Serialize, Deserialize, Debug, Clone)]
38pub struct MultiModalConversationOutput {
39 #[serde(rename = "output")]
41 pub output: Output,
42
43 #[serde(rename = "request_id")]
45 pub request_id: String,
46
47 #[serde(rename = "usage")]
49 pub usage: Option<Usage>,
50}
51
52pub type MultiModalConversationOutputStream =
53 Pin<Box<dyn Stream<Item = Result<MultiModalConversationOutput, DashScopeError>> + Send>>;