Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions async-openai/src/client.rs
Original file line number Diff line number Diff line change
Expand Up @@ -485,7 +485,7 @@ where
while let Some(ev) = event_source.next().await {
match ev {
Err(e) => {
if let Err(_e) = tx.send(Err(OpenAIError::StreamError(e.to_string()))) {
if let Err(_e) = tx.send(Err(OpenAIError::StreamError(e.into()))) {
// rx dropped
break;
}
Expand Down Expand Up @@ -530,7 +530,7 @@ where
while let Some(ev) = event_source.next().await {
match ev {
Err(e) => {
if let Err(_e) = tx.send(Err(OpenAIError::StreamError(e.to_string()))) {
if let Err(_e) = tx.send(Err(OpenAIError::StreamError(e.into()))) {
// rx dropped
break;
}
Expand Down
12 changes: 11 additions & 1 deletion async-openai/src/error.rs
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ pub enum OpenAIError {
FileReadError(String),
/// Error on SSE streaming
#[error("stream failed: {0}")]
StreamError(String),
StreamError(StreamError),
/// Error from client side validation
/// or when builder fails to build request before making API call
#[error("invalid args: {0}")]
Expand Down Expand Up @@ -61,6 +61,16 @@ impl std::fmt::Display for ApiError {
}
}

#[derive(Debug, thiserror::Error)]
pub enum StreamError {
/// Underlying error from reqwest_eventsource library when reading the stream
#[error("{0}")]
ReqwestEventSource(#[from] reqwest_eventsource::Error),
/// Error when a stream event does not match one of the expected values
#[error("Unrecognized event: {0:#?}")]
UnrecognizedEvent(eventsource_stream::Event),
}

/// Wrapper to deserialize the error object nested in "error" JSON key
#[derive(Debug, Deserialize, Serialize)]
pub struct WrappedError {
Expand Down
4 changes: 2 additions & 2 deletions async-openai/src/types/assistant_stream.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ use std::pin::Pin;
use futures::Stream;
use serde::Deserialize;

use crate::error::{map_deserialization_error, ApiError, OpenAIError};
use crate::error::{map_deserialization_error, ApiError, OpenAIError, StreamError};

use super::{
MessageDeltaObject, MessageObject, RunObject, RunStepDeltaObject, RunStepObject, ThreadObject,
Expand Down Expand Up @@ -208,7 +208,7 @@ impl TryFrom<eventsource_stream::Event> for AssistantStreamEvent {
"done" => Ok(AssistantStreamEvent::Done(value.data)),

_ => Err(OpenAIError::StreamError(
"Unrecognized event: {value:?#}".into(),
StreamError::UnrecognizedEvent(value),
)),
}
}
Expand Down