pub struct Verifier { /* private fields */ }Expand description
持有一个可复用的 HTTP 客户端。
§为什么要有这个类型
reqwest::Client 内部持有连接池,官方明确要求复用。每次验证都现建一个,
连接池就永远是空的 —— 每次都要重新做 TCP + TLS 握手,跨境端点尤其贵。
「全部验证」这种一次点四下的按钮会连做四次完整握手。
建一次、存起来、反复用:
let verifier = Verifier::new()?; // 应用启动时建一次
let cfg = ServiceConfig::new(Protocol::OpenAiCompatible, "https://api.deepseek.com/v1");
let ok = verifier.verify(cfg).await?; // 之后反复用Implementations§
Source§impl Verifier
impl Verifier
Sourcepub fn new() -> Result<Self, VerifyError>
pub fn new() -> Result<Self, VerifyError>
用默认配置建一个。
Sourcepub fn from_builder(builder: ClientBuilder) -> Result<Self, VerifyError>
pub fn from_builder(builder: ClientBuilder) -> Result<Self, VerifyError>
从调用方自备的 builder 建 —— 代理、自定义证书、UA 都在这里配。
存在的理由:代理配置各家差异很大。sigil 用的是
reqwest::Proxy::custom(闭包) 做按 URL 动态路由,不是一个静态代理地址,
任何「传一个代理 URL 字符串」的简化 API 都覆盖不了它。
§🔴 安全默认值由本函数强制施加,调用方覆盖不掉
超时与禁重定向是在你的配置之后加的(reqwest 的 builder 后写覆盖先写)。
禁重定向不容商量:跨 host 跳转时 reqwest 只剥 Authorization 等标准头,
不剥自定义头 —— Anthropic 的 x-api-key 会被原样发往跳转目标。
用本 crate 重导出的 crate::reqwest 来建 builder,版本必然匹配:
let v = Verifier::from_builder(apply_proxy(ai_profile::reqwest::Client::builder()))?;Sourcepub async fn verify(
&self,
cfg: ServiceConfig<'_>,
) -> Result<VerifyOk, VerifyError>
pub async fn verify( &self, cfg: ServiceConfig<'_>, ) -> Result<VerifyOk, VerifyError>
零成本验证:只打端点的模型列表接口,不产生任何生成费用。
四种 kind 都可调 —— 与 dry_run(真实调用,产生费用)分开正是因为
四者的调用成本差几个数量级。
本方法只借用 &self,可以并发调用(reqwest::Client 自身是 Send + Sync
且内部共享连接池),批量验证多家服务商时直接 join_all 即可。
§错误
每个 VerifyError 变体都对应一个调用方应当给出的动作,见该类型文档。
Trait Implementations§
Auto Trait Implementations§
impl !RefUnwindSafe for Verifier
impl !UnwindSafe for Verifier
impl Freeze for Verifier
impl Send for Verifier
impl Sync for Verifier
impl Unpin for Verifier
impl UnsafeUnpin for Verifier
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more