当前位置: 首页 > news >正文

开源免费的WPS AI 软件 察元AI文档助手:# 链路 023:getChatApiConfigByProvider 与 /chat/completions 路径

链路 023:getChatApiConfigByProvider 与 /chat/completions 路径

总体链路图

下图在全系列各篇保持一致,仅通过高亮样式标示本篇所覆盖的环节;箭头表示主成功路径,点线为异常或可选路径。阅读任意一篇时都应能回到本图定位,避免在单文件里「钻太深」而失去上下游语境。

plain

structured

multimodal

1 入口: Ribbon/对话框 → assistantId

2 startAssistantTask 占位任务

3 launchInfo 与 resolveDocumentInput

4 resolveModel 与模型清单

5 提示词拼装与 launchGuard

6 分流 plain / structured / multimodal

7a chatCompletion 文本链路 plain

7b chatCompletion 结构化批次

8a applyDocumentAction

8b executionPlan → applyDocumentProcessingPlan

7c generateMultimodalAsset

9 评测持久化与任务完成态

异常路径 normalizeError → 安全弹窗

本篇在总体链路中的位置

对应图中 N8a 与 N8b 之下的「网络出口」层:chatApi 对两类分支共用。 高亮节点:N8a、N8b。若本篇同时引用 chatApi 与任务运行器,通常意味着该逻辑处于「编排层与网络层交界」:修改时要同时考虑任务取消与 UI 快照。

深度说明(工程视角)

从工程维护角度看,本篇讨论的对象应当被视为「可替换实现」:只要对外的任务状态、HTTP 契约与文档写回语义保持不变,内部可以重构函数拆分或调整日志字段。阅读时建议始终抓住三个锚点:一是数据从哪来(PluginStorage、localStorage、COM 选区还是全文);二是数据何时离开本机(进入 fetch 之前是否已完成脱敏与快照);三是失败时用户可见的文本由谁归一(chatApi 与助手错误弹窗两条路径)。

就「链路 023:getChatApiConfigByProvider 与 /chat/completions 路径」而言,源码位置可概括为:chatApi.js。这与摘要中的判断一致:在 provider 配置的 apiUrl 上去除尾部斜杠后,根据是否已含 /vN、是否千帆域名等规则拼接 chat/completions。错误配置 base URL 会导致 404 而非模型逻辑错误。关键词「apiUrl、v1、chat/completions」提示你在仓库内做全文检索时应优先锁定这些符号,而不是仅依赖界面文案。

与网络请求相关的修改,务必在本地用开发者工具或代理核对:请求体中的 model 字段是否与设置页保存的 modelId 一致;Authorization 是否只取 apiKey 列表的第一段(部分网关对多密钥格式敏感);stream 为 true 时宿主是否稳定消费 SSE。若你引入新的 provider,应对照 getChatApiConfigByProvider 的 URL 拼接分支补充单元测试或手测用例,避免「路径已含 v1 却又重复拼接」类错误。

与文档写回相关的修改,应优先在无界面的纯函数层复现:例如仅调用 applyDocumentAction 或 applyDocumentProcessingPlan 的入参快照,观察 Range 坐标是否在 CRLF 归一化前后发生漂移。WPS 与 Word 在选区、批注锚点上的差异会放大这类问题,因此本篇若在讲坐标或分段,请同时阅读 documentPositionUtils 与 chunk 相关教程篇目。

阅读顺序上,本篇之后建议继续看:旧 ribbon 单 id 走 getChatApiConfig(024)。若在总体图中定位,对应图中 N8a 与 N8b 之下的「网络出口」层:chatApi 对两类分支共用。 遇到与教程系列术语不一致时,以源码标识符为准:教程侧重导航与概念,本系列侧重调用次序与失败面。

最后说明写作立场:本系列不对任何云厂商或模型服务做优劣评价,也不暗示「必须开通」某类账号;所述配置项仅反映当前仓库为打通 OpenAI 兼容协议而需要的最小字段集合。若组织策略禁止外联,应在网关或 hosts 层拦截,而不是在加载项内写死假地址。

与教程系列文档的对照

下列文档来自docs/chayuan-tutorial-series,侧重「如何阅读仓库」与界面侧概念,与本链路系列互补:不重复推销功能,仅帮助建立目录与模块边界。

  • chayuan-tutorial-series/05-shezhi-moxing-yu-gongyingshang-lianlu.md:与本篇链路相邻的工程说明,可对照变量命名与文件职责。
  • chayuan-tutorial-series/18-moxing-fuhe-id-yu-provider-chouxiang.md:与本篇链路相邻的工程说明,可对照变量命名与文件职责。

摘要

在 provider 配置的 apiUrl 上去除尾部斜杠后,根据是否已含 /vN、是否千帆域名等规则拼接 chat/completions。错误配置 base URL 会导致 404 而非模型逻辑错误。

关键词

apiUrl;v1;chat/completions

链路位置(源码索引)

chatApi.js。

正文

1. URL 规则

chatUrl 三元表达式与返回对象字段。

维护时建议把本节涉及的符号在 IDE 里「查找引用」:确认是否还有对话框专用服务、拼写检查服务或评测脚本以拷贝粘贴方式重复了相似逻辑。若发现重复,优先抽到 chatApi 之上的薄封装,而不是在业务层再次拼接 URL 或 Authorization,以降低安全审查时的遗漏面。

// src/utils/chatApi.js 第104-119行exportfunctiongetChatApiConfigByProvider(providerId,modelId){if(!providerId||!modelId)returnnullconstconfig=getModelConfig(providerId)if(!config||!config.apiUrl?.trim())returnnullconstapiUrl=config.apiUrl.trim().replace(/\/+$/,'')// 百度千帆 qianfan.baidubce.com/v2 等已含版本路径,直接追加 /chat/completionsconstchatUrl=/\/v\d+$/.test(apiUrl)||apiUrl.includes('qianfan.baidubce.com')?`${apiUrl}/chat/completions`:apiUrl.endsWith('/v1')?`${apiUrl}/chat/completions`:`${apiUrl}/v1/chat/completions`return{apiKey:(config.apiKey||'').trim(),apiUrl:chatUrl,model:modelId}

上下游衔接

旧 ribbon 单 id 走 getChatApiConfig(024)。

http://www.jsqmd.com/news/1380772/

相关文章:

  • C++异常处理实战指南:从RAII到noexcept的完整避坑手册
  • Docker 运行时加固清单:权限、凭据与镜像签名
  • GEO 培训哪家口碑好:【沐晞甄选】誉不绝口 - 17728098551
  • 2026精密仪器出口东南亚物流哪家靠谱?福要恒温气垫特种物流零货损保障 - 滚动商讯
  • 设计师必备:高效筛选统一风格素材的4个维度与实战技巧
  • 如何解决现代设计中的字体选择困境?Montserrat开源字体家族的完整指南
  • ABB变频器 AINT-02C 主回路光纤接口板详解
  • 2026年精选重庆诚信的会议室音响品牌有哪些 - 装修教育财税推荐2026
  • 引文与参考一致性核查助手的使用:察元AI文档助手
  • 上海靠谱小程序开发公司有哪些特征?内行人告诉你 - 上海观智网络
  • Grok Image 2.0本地部署指南:基于深度学习的图像修复实战
  • SpringMVC拦截器深度解析:从核心原理到动态权限控制实战
  • 免费开源AI软件.桌面单机版,可移动的AI知识库,察元 AI桌面版:本地离线知识库的最小依赖 Linux下不联外网装包跑通
  • JuiceFS 1.4深度解析:云原生存储如何实现低成本、高性能与强可控
  • 广州 GEO 培训哪家好:【沐晞甄选】深耕细研 - 18102756859
  • AI 生成题解的三个坑:上下文堆叠、复杂度猜测与缓存污染
  • 《和平精英》地铁逃生隐藏装备获取指南:从验证到实战的完整探索流程
  • 为什么你需要一个跨平台的QSP游戏引擎?
  • 甘肃省封闭式武校安全吗|玉门市、敦煌市、临夏市、合作市文武学校校园管理盘点 - 圣龙武术朱老师
  • 【LLM】第一章:知识体系框架概览
  • STM32上拉下拉电阻原理与实战:从内部配置到外部选型
  • JDK 8安装与环境配置全攻略:从下载到多版本管理
  • 构建健壮业务循环:从设计模式到生产级实践
  • 数据结构关键路径别交给 AI:把预测放在控制面
  • AI-7D-SATS平台的harness engineering设计:让 AI Agent 从“工具堆叠”长成“工程制品”
  • 2026年佛山标书代写机构精选推荐|智能制造家电家居电子标全流程服务 - 安华招标
  • C语言文件操作全解析:从文本/二进制读写到实战学生管理系统
  • 免费获取官方教材PDF:国家中小学智慧教育平台电子课本下载器完全指南
  • 告别模糊!Real-ESRGAN:让AI图像超分辨率技术重塑你的视觉体验
  • Python datetime 核心用法与实战:从基础到时区处理