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}
13#[derive(Serialize, Deserialize, Debug, Clone)]
14pub struct Message {
15    #[serde(rename = "content")]
16    pub content: Vec<Content>,
17
18    #[serde(rename = "role")]
19    pub role: String,
20}
21#[derive(Serialize, Deserialize, Debug, Clone)]
22pub struct Choices {
23    #[serde(rename = "finish_reason")]
24    pub finish_reason: Option<String>,
25
26    #[serde(rename = "message")]
27    pub message: Message,
28}
29#[derive(Serialize, Deserialize, Debug, Clone)]
30pub struct Output {
31    #[serde(rename = "choices")]
32    pub choices: Vec<Choices>,
33}
34
35#[derive(Serialize, Deserialize, Debug, Clone)]
36pub struct MultiModalConversationOutput {
37    /// 调用结果信息。
38    #[serde(rename = "output")]
39    pub output: Output,
40
41    /// 本次调用的唯一标识符。
42    #[serde(rename = "request_id")]
43    pub request_id: String,
44
45    /// 本次chat请求使用的token信息。
46    #[serde(rename = "usage")]
47    pub usage: Option<Usage>,
48}
49
50pub type MultiModalConversationOutputStream =
51    Pin<Box<dyn Stream<Item = Result<MultiModalConversationOutput, DashScopeError>> + Send>>;