use async_trait::async_trait;
use futures_util::stream::BoxStream;
use crate::{
error::ProviderError,
provider::types::{ChatRequest, ChatResponse, ChatStreamChunk},
};
#[async_trait]
pub trait LlmProvider: Send + Sync {
async fn chat(&self, request: ChatRequest) -> Result<ChatResponse, ProviderError>;
fn stream_chat(
&self,
_request: ChatRequest,
) -> Result<BoxStream<'static, Result<ChatStreamChunk, ProviderError>>, ProviderError> {
Err(ProviderError::Message(
"stream_chat not supported".to_string(),
))
}
}