Skip to main content

Crate lmkit

Crate lmkit 

Source
Expand description

多厂商 AI API 客户端(按 Cargo feature 裁剪厂商与模态)。

0.2 起:ProviderConfig 使用 Provider 枚举;LlmProvider 更名为 ChatProvidercreate_llm_provider 更名为 create_chat_provider;错误类型为 Error(不再使用 anyhow)。

§Feature 与工厂

厂商(如 openai)与模态(如 chat)需同时在 Cargo.toml 中启用,create_chat_provider 等工厂才会编译进来。 若运行时厂商与 feature 组合不匹配,通常得到 Error::ProviderDisabled;若该厂商在某一模态下未实现,则见 Error::Unsupported。 详见 Error 各变体说明。

§各模态契约摘要

对话(ChatProvider:主入口为 ChatProvider::complete / ChatProvider::complete_streamChatRequest:多轮 ChatMessage、可选 tools / tool_choicetemperature / max_tokens / top_p;未指定 temperature 时默认 0.2)。OpenAI / Aliyun / Ollama / Zhipu 为 OpenAI Chat Completions 兼容 POST {base_url}/chat/completions;流式 SSE 含 delta.tool_callsAnthropic 为 Messages POST {base_url}/messagessystem 提至请求顶层,工具为 input_schema,流式含 tool_use / input_json_delta)。GooglegenerateContent / streamGenerateContentsystemInstructiontools.functionDeclarationsfunctionCall / functionResponse)。ChatProvider::chat / [chat_stream] 为单条 user 的便捷封装(见 chat)。

向量(EmbedProviderOpenAI / Aliyun / Ollama / ZhipuPOST {base_url}/embeddings(非流式 JSON)。Googlegoogle + embed)为 Gemini embedContent / batchEmbedContents(query key),见 embed。创建前须在 ProviderConfig::dimension 中设置维数,否则工厂返回 Error::MissingConfig。约定与文本预处理见 embed

重排序:启用 rerank feature 时,仅 AliyunZhipu 有实现;OpenAI / Ollama / Anthropic / Google 会得到 Error::Unsupportedcapabilityrerank)。HTTP 路径分别为 {base_url}/reranks{base_url}/rerank(阿里云为复数 reranks)。详见 rerank 模块文档(生成文档时需启用该 feature)。

文生图:启用 image feature 时,OpenAI 与阿里云路径见 image 模块;未启用对应厂商 feature 时工厂返回 Error::ProviderDisabledOllama / Zhipu / Anthropic / Google 无实现,返回 Error::Unsupportedcapabilityimage)。

音频:启用 audio feature 后,工厂函数 create_transcription_providercreate_speech_provider 仍返回 Error::Unsupported;trait TranscriptionProviderSpeechProvider 仅占位,尚未对接任何厂商 HTTP。详见 audio 模块(启用 audio feature 后可在文档中打开)。

Re-exports§

pub use chat::ChatChunk;
pub use chat::ChatMessage;
pub use chat::ChatProvider;
pub use chat::ChatRequest;
pub use chat::ChatResponse;
pub use chat::ChatStream;
pub use chat::FinishReason;
pub use chat::FunctionCallResult;
pub use chat::FunctionDefinition;
pub use chat::Role;
pub use chat::ToolCall;
pub use chat::ToolCallDelta;
pub use chat::ToolChoice;
pub use chat::ToolDefinition;
pub use embed::EmbedProvider;

Modules§

chat
对话补全:主 API 为 ChatProvider::complete / ChatProvider::complete_stream(多轮、tools、流式 tool_calls 增量)。
embed
文本向量嵌入:非流式 JSON,默认 HTTP 超时约 30 秒(可用 ProviderConfig::timeout 覆盖)。

Structs§

ProviderConfig
厂商连接与调用参数。model 为透传字符串:不在此 crate 内校验名称是否在云端可用,由上游 HTTP 响应反映错误(常见为 crate::Error::Api)。

Enums§

Error
Provider
已支持的厂商(#[non_exhaustive] 便于后续扩展)

Functions§

create_chat_provider
创建 Chat Provider(ChatProvider::complete / ChatProvider::complete_stream;见 chat)。
create_embed_provider
创建 Embedding Provider(需要 ProviderConfig::dimension;约定见 embed)。

Type Aliases§

Result