Skip to main content

Crate ai_profile

Crate ai_profile 

Source
Expand description

§ai-profile

桌面应用的 AI 模型服务配置层:provider 预置清单、ai.profile 互通协议、 端点拼接与连通性验证。

§边界:什么进、什么不进

内容归属
✅预置清单、协议、端点拼接、模型清洗、验证与结构化错误、token 限额、历史裁剪本 crate
❌密钥存储与加密留给应用(各家差异极大)
❌数据库 / CRUD / 激活态管理同上

本 crate 不持久化任何密钥明文。验证/调用时接收调用方传入的 key,用完即弃。

§三条数据铁律(都是踩出来的)

  1. base_url 原样使用,绝不推断版本段 —— 各家不统一(多数 /v1、智谱 /v4、 Gemini /v1beta/openai)。推断错的代价是隐性的:用户照文档填对了, 库悄悄加一段,他只看到 404。详见 endpoint。
  2. 默认 model 选「够用档」而非「最强档」 —— 把旗舰塞进默认值, 等于替用户做了一个他没同意的花钱决定。
  3. 模型清单清洗用排除法,不用白名单 —— 厂商上新远快于特征词更新, 白名单必然把新模型误藏,而“藏起来“对用户不可见。详见 model_filter。

§feature

ai-profile = { version = "0.1", features = ["chat"] }              # 仅对话
ai-profile = { version = "0.1", features = ["chat", "client"] }    # + 真实调用

不开 client 时零 HTTP 依赖,纯数据 + 纯函数,可编到 Android / iOS。

Re-exports§

pub use error::VerifyError;
pub use kind::Kind;
pub use kind::Protocol;
pub use limits::LimitSource;
pub use limits::TokenLimits;
pub use preset::preset_by_key;
pub use preset::presets;
pub use preset::presets_for;
pub use preset::vendors;
pub use preset::ProviderPreset;
pub use preset::Vendor;
pub use protocol::parse_profile;
pub use protocol::parse_profiles;
pub use protocol::to_profile;
pub use protocol::ParseError;
pub use protocol::ParsedProfile;
pub use protocol::ParsedProfiles;
pub use client::verify;
pub use client::ServiceConfig;
pub use client::Verifier;
pub use client::VerifyOk;
pub use reqwest;

Modules§

client
真实 HTTP 调用 —— feature = "client" 才编译。
endpoint
端点拼接 —— base_url 原样使用,不做任何版本段推断。
error
结构化错误 —— 调用方「一键修正」的唯一前提。
history
对话历史裁剪 —— 发请求之前把超出上下文窗口的旧消息丢掉,以及超长报错后的被动重试依据。
kind
能力类型(kind)—— 决定一条预置属于对话 / 生图 / 视频 / 配音。
limits
模型的 token 限额 —— 上下文窗口与单次输出上限。
media
生图 / 视频 / 配音的真实调用。要同时开 client 与对应 kind 的 feature。 多模态调用:生图 / 视频 / 配音的各家协议实现。
model_filter
端点 /models 返回值的清洗:去重 + 滤掉不能对话的模型。
preset
Provider 预置清单 —— 本 crate 存在的首要理由。
protocol
ai.profile —— 跨应用的模型服务配置交换格式。