Skip to content

自定义 LLM Provider

实现 LlmProvider trait,支持任意模型后端。

LlmProvider trait

rust
#[async_trait]
pub trait LlmProvider: Send + Sync {
    async fn complete(
        &self,
        messages: &[Message],
        tools: Option<&[ToolDef]>,
    ) -> Result<Message, RecursiveError>;
}

内置 Provider

Provider说明
OpenAiProviderOpenAI 兼容 HTTP(OpenAI、DeepSeek、Ollama 等)
AnthropicProviderAnthropic 原生 API(需要 anthropic feature)
MockProvider用于测试的脚本化响应

实现自定义 Provider

rust
use recursive::llm::LlmProvider;
use recursive::message::Message;
use recursive::tools::ToolDef;
use recursive::error::RecursiveError;
use async_trait::async_trait;

pub struct MyCustomProvider {
    client: MyApiClient,
}

#[async_trait]
impl LlmProvider for MyCustomProvider {
    async fn complete(
        &self,
        messages: &[Message],
        tools: Option<&[ToolDef]>,
    ) -> Result<Message, RecursiveError> {
        // 将 messages 转换为你的 API 格式
        // 调用你的 API
        // 将响应转换回 Message
        todo!()
    }
}

Released under the MIT License.