summaryrefslogtreecommitdiffstats
path: root/src/client/qianwen.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/client/qianwen.rs')
-rw-r--r--src/client/qianwen.rs19
1 files changed, 10 insertions, 9 deletions
diff --git a/src/client/qianwen.rs b/src/client/qianwen.rs
index a3ee988..fb97964 100644
--- a/src/client/qianwen.rs
+++ b/src/client/qianwen.rs
@@ -111,7 +111,7 @@ impl QianwenClient {
async fn send_message(builder: RequestBuilder, is_vl: bool) -> Result<String> {
let data: Value = builder.send().await?.json().await?;
- check_error(&data)?;
+ catch_error(&data)?;
let output = if is_vl {
data["output"]["choices"][0]["message"]["content"][0]["text"].as_str()
@@ -137,7 +137,7 @@ async fn send_message_streaming(
Ok(Event::Open) => {}
Ok(Event::Message(message)) => {
let data: Value = serde_json::from_str(&message.data)?;
- check_error(&data)?;
+ catch_error(&data)?;
if is_vl {
let text =
data["output"]["choices"][0]["message"]["content"][0]["text"].as_str();
@@ -165,13 +165,6 @@ async fn send_message_streaming(
Ok(())
}
-fn check_error(data: &Value) -> Result<()> {
- if let (Some(code), Some(message)) = (data["code"].as_str(), data["message"].as_str()) {
- bail!("{code}: {message}");
- }
- Ok(())
-}
-
fn build_body(data: SendData, model: &Model, is_vl: bool) -> Result<(Value, bool)> {
let SendData {
messages,
@@ -243,6 +236,14 @@ fn build_body(data: SendData, model: &Model, is_vl: bool) -> Result<(Value, bool
Ok((body, has_upload))
}
+fn catch_error(data: &Value) -> Result<()> {
+ if let (Some(code), Some(message)) = (data["code"].as_str(), data["message"].as_str()) {
+ debug!("Invalid response: {}", data);
+ bail!("{message} (code: {code})");
+ }
+ Ok(())
+}
+
/// Patch messsages, upload embedded images to oss
async fn patch_messages(model: &str, api_key: &str, messages: &mut Vec<Message>) -> Result<()> {
for message in messages {