use async_trait::async_trait;
use crate::cm_types::{ChatRequest, Message};
use crate::cm_llm::api;
use crate::cm_llm::backend::ChatCompletionsBackend;
use crate::cm_llm::chat_params::StreamChatParams;
#[derive(Debug, Copy, Clone, Default)]
pub struct OpenAiCompatBackend;
#[async_trait]
impl ChatCompletionsBackend for OpenAiCompatBackend {
async fn stream_chat(
&self,
params: &StreamChatParams<'_>,
req: &mut ChatRequest,
) -> Result<(Message, String), Box<dyn std::error::Error + Send + Sync>> {
api::stream_chat(params, req).await
}
}
pub static OPENAI_COMPAT_BACKEND: OpenAiCompatBackend = OpenAiCompatBackend;
pub fn default_chat_completions_backend() -> &'static (dyn ChatCompletionsBackend + 'static) {
&OPENAI_COMPAT_BACKEND
}