crabmate 0.4.0

Rust AI agent: OpenAI-compatible chat/completions, function calling, HTTP serve, ops CLI
Documentation
//! 默认 OpenAI 兼容 HTTP 后端。

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;

/// 默认后端:`POST {api_base}/chat/completions`,Bearer 鉴权,行为见 [`api::stream_chat`]。
#[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
    }
}

/// 进程内默认后端实例(OpenAI 兼容 HTTP)。
pub static OPENAI_COMPAT_BACKEND: OpenAiCompatBackend = OpenAiCompatBackend;

/// 进程内默认后端;与未设置自定义 `llm_backend` 时行为一致。
pub fn default_chat_completions_backend() -> &'static (dyn ChatCompletionsBackend + 'static) {
    &OPENAI_COMPAT_BACKEND
}