尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
开源免费的WPS AI 软件 察元AI文档助手:# 链路 023:getChatApiConfigByProvider 与 /chat/completions 路径
链路 023getChatApiConfigByProvider 与 /chat/completions 路径总体链路图下图在全系列各篇保持一致仅通过高亮样式标示本篇所覆盖的环节箭头表示主成功路径点线为异常或可选路径。阅读任意一篇时都应能回到本图定位避免在单文件里「钻太深」而失去上下游语境。plainstructuredmultimodal1 入口: Ribbon/对话框 → assistantId2 startAssistantTask 占位任务3 launchInfo 与 resolveDocumentInput4 resolveModel 与模型清单5 提示词拼装与 launchGuard6 分流 plain / structured / multimodal7a chatCompletion 文本链路 plain7b chatCompletion 结构化批次8a applyDocumentAction8b executionPlan → applyDocumentProcessingPlan7c generateMultimodalAsset9 评测持久化与任务完成态异常路径 normalizeError → 安全弹窗本篇在总体链路中的位置对应图中 N8a 与 N8b 之下的「网络出口」层chatApi 对两类分支共用。 高亮节点N8a、N8b。若本篇同时引用 chatApi 与任务运行器通常意味着该逻辑处于「编排层与网络层交界」修改时要同时考虑任务取消与 UI 快照。深度说明工程视角从工程维护角度看本篇讨论的对象应当被视为「可替换实现」只要对外的任务状态、HTTP 契约与文档写回语义保持不变内部可以重构函数拆分或调整日志字段。阅读时建议始终抓住三个锚点一是数据从哪来PluginStorage、localStorage、COM 选区还是全文二是数据何时离开本机进入 fetch 之前是否已完成脱敏与快照三是失败时用户可见的文本由谁归一chatApi 与助手错误弹窗两条路径。就「链路 023getChatApiConfigByProvider 与 /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 走 getChatApiConfig024。若在总体图中定位对应图中 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)returnnullconstconfiggetModelConfig(providerId)if(!config||!config.apiUrl?.trim())returnnullconstapiUrlconfig.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/completionsreturn{apiKey:(config.apiKey||).trim(),apiUrl:chatUrl,model:modelId}上下游衔接旧 ribbon 单 id 走 getChatApiConfig024。
RELATED

相关推荐

第三章:GEM分析:3.2 drm_gem_object——GPU 内存对象的核心抽象(静态字段视角)

第三章:GEM分析:3.2 drm_gem_object——GPU 内存对象的核心抽象(静态字段视角)

3.1 节提出了 GEM 的四大设计目标,本节聚焦需求一:统一的 GPU 内存对象抽象,深入分析 drm_gem_object 如何作为所有 GPU 内存对象的基类,解决驱动间代码碎片化的问题。 drm_gem_object 的核心定位是:它不是一个完整的内存管理方案,而是驱动间公共代码的提取物。理解它,…

📅 2026/9/24 2:26:08
【硬核计算】只靠阳光和水,一辆氢能车到底能不能日常代步?——光伏制氢 + 纯氢内燃机短途闭环的能量账与技术剖析

【硬核计算】只靠阳光和水,一辆氢能车到底能不能日常代步?——光伏制氢 + 纯氢内燃机短途闭环的能量账与技术剖析

CC BY-NC-SA 4.0本文是历经数十轮能量核算、行业资料查证后的严肃技术复盘与论证,坦诚修正原帖核心漏洞,同时针对“短途出行彻底脱离石油、电网、锂电依赖”这一方向,展开全维度技术拆解、数据验算与工程可行性分析,欢迎硬件工程师…

📅 2026/9/17 3:58:25
链路开源免费的WPS AI 软件 察元AI文档助手: 058:runPlainDocumentAssistantExecution 末尾 applyDocumentAction

链路开源免费的WPS AI 软件 察元AI文档助手: 058:runPlainDocumentAssistantExecution 末尾 applyDocumentAction

链路 058:runPlainDocumentAssistantExecution 末尾 applyDocumentAction 总体链路图 下图在全系列各篇保持一致,仅通过高亮样式标示本篇所覆盖的环节;箭头表示主成功路径,点线为异常或可选路径。阅读任意一篇时都应能回到本图定…

📅 2026/8/23 7:29:00
MORE NEWS

更多资讯

📰

鸿蒙串口直连:Flutter+libserialport FFI适配指南

1. 为什么工业串口通讯在鸿蒙上绕不开“物理层直连” 做物联网硬件接入的人,几乎每天都要和串口打交道。RS232、RS485、TTL电平,这些在应用层开发者眼里快被遗忘的老家伙,却是工业现场最可靠的“默认语言”。我在一个基于Flutter的物联网网关…

📰

OSINT情报分析中的进制转换实战:从日志到线索

刚开始接触开源网络情报的时候,我也是从一份乱糟糟的日志开始。那次分析任务里有一串看起来像是随机字符的东西: 5052494e54455354 。旁边还跟着一个IP段,一个MAC地址前缀。当时我盯了半天,脑子里全是浆糊——直到我把那串十六进…

📰

SSM实战:智慧社区缴费报修平台的设计与开发

刚拿到"智慧社区缴费报修服务平台"这个需求时,我心里其实有点复杂。SSM(Spring SpringMVC MyBatis)这套组合在今天的Java生态里已经算老古董了,身边不少同事已经换上Spring Boot全家桶。但项目背景摆在那里&#xff1…

📰

SpringBoot家政服务管理系统:订单状态机与连锁门店分账设计实战

做家政服务管理系统这类项目,很多人第一反应是“这不就是一个订单加用户的 CRUD 项目吗”。等真正动手才会发现,前面的判断只对了一半:单看功能入口,确实是下单、派单、完成、结算这条线;但把标题里“一站式家政服务运…

📰

从C语言到Redis:深度解析数据类型的存储、转换与工程陷阱

1. "0000"背后的四个维度:看懂数据类型的本质1.1 一个数字的不同身份"0000"这个字符串,几乎是每个程序员最早敲进编辑器的东西。但你有没有想过:同样的四个零,在C语言里是int,在Python里是int但背…

📰

Oracle存储过程中显示游标(cursor)的使用:从声明到循环取数的完整实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬