use async_trait::async_trait;
use futures::stream::BoxStream;
use super::base::{BaseLLM, ChatCompletion, ChatCompletionChunk, LlmOpts, Message};
use super::config::AzureConfig;
use crate::core::exceptions::OperonError;
pub struct AzureLlm {
pub config: AzureConfig,
}
impl AzureLlm {
pub fn new(config: AzureConfig) -> Self {
Self { config }
}
}
#[async_trait]
impl BaseLLM for AzureLlm {
async fn generate(
&self,
_messages: Vec<Message>,
_opts: &LlmOpts,
) -> Result<ChatCompletion, OperonError> {
Err(OperonError::Provider(format!(
"AzureLlm::generate not yet implemented (Phase 5b) — model={}, endpoint={}",
self.config.model, self.config.azure_endpoint
)))
}
async fn stream(
&self,
_messages: Vec<Message>,
_opts: &LlmOpts,
) -> Result<BoxStream<'static, Result<ChatCompletionChunk, OperonError>>, OperonError> {
Err(OperonError::Provider(
"AzureLlm::stream not yet implemented (Phase 5b)".into(),
))
}
}