跳到本文

模型与应用

YaoDel

模型网关与最终用量交付

YaoDel 让多个应用共享模型供应商接入,同时各自保留客户、模型目录与计费规则。控制器固定一次授权的模型目标和执行账户,边缘节点执行单次供应商调用,再分别交付流式输出与最终用量。后续配置变化不会改写已发出请求的原始绑定。

让多个应用共用模型账户,各自保留业务规则 应用按自己的目录和权限授权模型调用,YaoDel 选定供应商账户并转发流式结果。最终用量沿原请求回到该应用,由其按自己的价格与账本规则处理。

一套模型接入,保留各应用的业务规则

一个应用可以经营会员服务,另一个应用可以提供开发者接口,两者共用模型供应商账户,但仍各自决定谁能调用、能看到哪些模型以及如何收费。YaoDel 用入口域名找到对应应用,由应用完成授权,再执行获准的模型请求。

入口由无状态边缘节点承接,控制器维护路由、账户和持久结果。管理员可以维护供应商、应用与账户,查询凭据状态、原请求结果和待通知记录。模型目录来自应用,目录中出现某个模型并不保证当前已有可执行账户。

应用授权后,边缘网关执行一次供应商调用;响应分成客户端输出与持久结果两条路径,保存的结果继续通知原应用。
一次模型调用,分别交付输出与最终结果先固定原应用的授权与执行目标,再区分两条返回路径:增量送往客户端,终态用量交给控制器保存并通知原应用。两条路径可独立推进,位置不表示谁先完成。
一次请求中的责任分工
参与方负责的结果
业务应用客户认证、模型目录、访问政策、定价与最终记账
控制器固定授权目标、选择账户、保存结果并通知原应用
边缘节点校验请求、单次上游调用、转发流式事件
模型供应商执行推理并提供终态响应及用量

接入方提供业务决定,网关完成模型执行

接入一个应用,需要稳定应用 ID、应用服务地址与独立服务凭据,以及要绑定的公开域名。应用服务提供身份检查、模型目录、调用授权和最终结果处理;其中授权与记账共用原请求记录,避免同一请求被重新解析后产生第二次预留或记账。

新建、重新启用或修改接收地址与凭据时,控制器通过 Check 核对候选地址返回的应用 ID。供应商账户另行维护,只有已启用、明确支持目标模型且凭据可用的账户才可被选中。应用目录与供应商可执行性分别成立。

  1. 准备应用接收端

    确定稳定 ID、地址和凭据,实现模型列表、原请求授权与可去重的结果处理。

  2. 登记完整路由与账户

    核对应用接收端后绑定公开域名,并准备供应商目标、模型声明和可用凭据。

  3. 核对一次完整调用

    分别观察上游实际请求、客户端终态、保存的最终结果以及应用账务影响。

调用前固定目标,执行中保留原绑定

每次请求保留应用标识、请求标识、原域名、公开模型和获准的供应商目标。控制器从已启用、声明支持该模型且凭据可用的账户中选择执行者。随后修改域名、账户或路由,只影响后续选择,不能把已有结果改交给另一个应用。

账户支持 API Key 和 OAuth 凭据。凭据维护与模型请求分别推进:轮换中仍然有效的访问令牌可以继续使用;刷新结果不确定时,需要保留已有事实并处理凭据问题。模型执行不因凭据错误、供应商拒绝或丢失回复而自动换账户重试。

清楚说明接收什么,也保留原始内容

网关提供模型列表和流式 Responses 接口,接收文本、PNG/JPEG 图片,以及 PDF、TXT、Markdown、CSV、XLSX、DOCX、PPTX 内联文件;也保留所选函数和自定义工具声明。它采用明确的接口子集,未覆盖音视频、托管工具或完整 Responses API。

每次请求都提交所需完整历史,接收与发往上游的完整 JSON 分别受 64 MiB 限制,附件的 Base64 编码也计入其中。网关做有限的格式和字节检查,保留原文件,不提取、OCR 或转换内容。该限制不代表模型上下文容量,也不是整段生成结果的长度上限。

流式回答与最终用量,沿两条路径交付

边缘节点按次序转发事件,接受第一个完整且匹配同一响应的完成、失败或未完成终态。终态可以立即发给客户端,同时独立提交用量结果。只有该终态中完整有效的输入、缓存输入、输出和推理输出四项计数才会被保存。

终态前断流或取消会产生错误与零计数;终态计数组不完整时也整体归零,中间事件不补缺。零值描述网关取得的结果,不能证明供应商未执行。保存后的同一结果可反复通知,应用核对原授权并原子去重,确认后才结束交付。

最终候选先保存为待通知结果,再进入处理已确认或到期未确认状态;通知重试不改变保存的结果,也不重跑模型。
结果保存与通知确认,分别核对先看结果是否保存,再看通知是否获得确认。重送沿用同一个不可变结果;已确认表示原应用确认处理,到期未确认仍不能推断费用为零。
查询结果时保留不同事实
观察结果可以确认仍不能推断
结果已保存存在不可变结果和四项计数客户端已收到回答
通知已确认原应用已确认持久处理每次网络发送都只发生一次
通知到期未确认截止前未取得处理确认应用未记账或费用为零
未找到结果此次读取没有保留记录供应商从未执行

按原应用与请求查结果,而不是重新生成

一项调查以应用 ID 和请求 ID 为入口,先找已保存的原绑定与最终计数,再看通知是否已经确认或到期。域名或服务地址后来变化,不改变该结果所属的应用;管理员还可查询应用记录删除后仍保留的结果。

查不到最终结果,可能意味着边缘节点尚未保存或在保存前丢失,不能由此证明供应商没有执行。应用已经记账而 ACK 丢失时,应让同一结果再次投递并返回原处理结果;生成一份新的回答只会制造新的执行与费用。

  • 可以确认:应用按原绑定确认已处理

    成功确认要求原应用、请求、域名、模型与供应商目标均匹配,并完成持久处理与请求去重。

  • 不能推断:零计数或结果缺失表示上游未执行

    零计数可以来自不完整终态,结果缺失也可能发生在保存之前;它们都不是供应商无效果的证明。

  • 继续核对:通知到期未确认

    保留已保存结果与到期状态,区别于应用已确认。通知交付状态不改变原模型执行。

围绕原请求核对,不用重跑推理修复通知

结果提交与通知的重试都保留同一绑定和候选。边缘进程丢失可能留下尚未保存的结果,控制器不会凭超时合成一次执行。查询失败仍是无法观察,不能显示成“未找到”;待通知分页也只说明本页范围,不能直接当作全局队列总数。

设计验证应覆盖:切换域名后结果仍交给原应用、终态已输出但保存仍未确认、应用已记账但回执丢失,以及中途断流仅留下错误计数。独立核对上游请求次数、持久结果和应用账务影响,才能分别判断执行、交付与去重是否符合要求。