refactor: improve error message for some clients

pull/418/head
sigoden 5 months ago
parent 13bd2fe299
commit a0b4f344ee

@ -118,13 +118,19 @@ async fn send_message_streaming(builder: RequestBuilder, handler: &mut ReplyHand
match err { match err {
EventSourceError::StreamEnded => {} EventSourceError::StreamEnded => {}
EventSourceError::InvalidStatusCode(code, res) => { EventSourceError::InvalidStatusCode(code, res) => {
let data: Value = res.json().await?; let text = res.text().await?;
let data: Value = match text.parse() {
Ok(data) => data,
Err(_) => {
bail!("Request failed, {code}, {text}");
}
};
check_error(&data)?; check_error(&data)?;
bail!("Invalid status code: {code}"); bail!("Request failed, {code}, {text}");
} }
EventSourceError::InvalidContentType(_, res) => { EventSourceError::InvalidContentType(_, res) => {
let text = res.text().await?; let text = res.text().await?;
bail!("The endpoint is invalid as the response content-type is not 'text/event-stream', {text}"); bail!("The API server should return data as 'text/event-stream', but it isn't. Check the client config. {text}");
} }
_ => { _ => {
bail!("{}", err); bail!("{}", err);

@ -106,20 +106,26 @@ pub async fn openai_send_message_streaming(
} }
Err(err) => { Err(err) => {
match err { match err {
EventSourceError::InvalidStatusCode(_, res) => { EventSourceError::InvalidStatusCode(code, res) => {
let data: Value = res.json().await?; let text = res.text().await?;
let data: Value = match text.parse() {
Ok(data) => data,
Err(_) => {
bail!("Request failed, {code}, {text}");
}
};
if let Some(err_msg) = data["error"]["message"].as_str() { if let Some(err_msg) = data["error"]["message"].as_str() {
bail!("{err_msg}"); bail!("{err_msg}");
} else if let Some(err_msg) = data["message"].as_str() { } else if let Some(err_msg) = data["message"].as_str() {
bail!("{err_msg}"); bail!("{err_msg}");
} else { } else {
bail!("Request failed, {data}"); bail!("Request failed, {code}, {text}");
} }
} }
EventSourceError::StreamEnded => {} EventSourceError::StreamEnded => {}
EventSourceError::InvalidContentType(_, res) => { EventSourceError::InvalidContentType(_, res) => {
let text = res.text().await?; let text = res.text().await?;
bail!("The endpoint is invalid as the response content-type is not 'text/event-stream', {text}"); bail!("The API server should return data as 'text/event-stream', but it isn't. Check the client config. {text}");
} }
_ => { _ => {
bail!("{}", err); bail!("{}", err);

Loading…
Cancel
Save