Expand description
多厂商 AI API 客户端(按 Cargo feature 裁剪厂商与模态)。
0.2 起:ProviderConfig 使用 Provider 枚举;LlmProvider 更名为 ChatProvider,
create_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_stream(ChatRequest:多轮 ChatMessage、可选 tools / tool_choice、temperature / max_tokens / top_p;未指定 temperature 时默认 0.2)。OpenAI / Aliyun / Ollama / Zhipu 为 OpenAI Chat Completions 兼容 POST {base_url}/chat/completions;流式 SSE 含 delta.tool_calls。Anthropic 为 Messages POST {base_url}/messages(system 提至请求顶层,工具为 input_schema,流式含 tool_use / input_json_delta)。Google 为 generateContent / streamGenerateContent(systemInstruction、tools.functionDeclarations、functionCall / functionResponse)。ChatProvider::chat / [chat_stream] 为单条 user 的便捷封装(见 chat)。
向量(EmbedProvider):OpenAI / Aliyun / Ollama / Zhipu 为 POST {base_url}/embeddings(非流式 JSON)。Google(google + embed)为 Gemini embedContent / batchEmbedContents(query key),见 embed。创建前须在 ProviderConfig::dimension 中设置维数,否则工厂返回 Error::MissingConfig。约定与文本预处理见 embed。
重排序:启用 rerank feature 时,仅 Aliyun 与 Zhipu 有实现;OpenAI / Ollama / Anthropic / Google 会得到 Error::Unsupported(capability 为 rerank)。HTTP 路径分别为 {base_url}/reranks 与 {base_url}/rerank(阿里云为复数 reranks)。详见 rerank 模块文档(生成文档时需启用该 feature)。
文生图:启用 image feature 时,OpenAI 与阿里云路径见 image 模块;未启用对应厂商 feature 时工厂返回 Error::ProviderDisabled。Ollama / Zhipu / Anthropic / Google 无实现,返回 Error::Unsupported(capability 为 image)。
音频:启用 audio feature 后,工厂函数 create_transcription_provider 与 create_speech_provider 仍返回
Error::Unsupported;trait TranscriptionProvider 与 SpeechProvider 仅占位,尚未对接任何厂商 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§
- Provider
Config - 厂商连接与调用参数。
model为透传字符串:不在此 crate 内校验名称是否在云端可用,由上游 HTTP 响应反映错误(常见为crate::Error::Api)。
Enums§
Functions§
- create_
chat_ provider - 创建 Chat Provider(
ChatProvider::complete/ChatProvider::complete_stream;见chat)。 - create_
embed_ provider - 创建 Embedding Provider(需要
ProviderConfig::dimension;约定见embed)。