async_dashscope/operation/multi_modal_conversation/
output.rs

1use 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    /// 调用结果信息。
40    #[serde(rename = "output")]
41    pub output: Output,
42
43    /// 本次调用的唯一标识符。
44    #[serde(rename = "request_id")]
45    pub request_id: String,
46
47    /// 本次chat请求使用的token信息。
48    #[serde(rename = "usage")]
49    pub usage: Option<Usage>,
50}
51
52pub type MultiModalConversationOutputStream =
53    Pin<Box<dyn Stream<Item = Result<MultiModalConversationOutput, DashScopeError>> + Send>>;