惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

T
Tailwind CSS Blog
C
CERT Recently Published Vulnerability Notes
P
Proofpoint News Feed
Vercel News
Vercel News
博客园 - 三生石上(FineUI控件)
IT之家
IT之家
Help Net Security
Help Net Security
月光博客
月光博客
N
News and Events Feed by Topic
Cloudbric
Cloudbric
博客园 - 司徒正美
L
LangChain Blog
Recent Commits to openclaw:main
Recent Commits to openclaw:main
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
T
Tenable Blog
The Register - Security
The Register - Security
The Hacker News
The Hacker News
I
InfoQ
The Last Watchdog
The Last Watchdog
MyScale Blog
MyScale Blog
Schneier on Security
Schneier on Security
WordPress大学
WordPress大学
小众软件
小众软件
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
宝玉的分享
宝玉的分享
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
K
Kaspersky official blog
L
LINUX DO - 热门话题
N
News | PayPal Newsroom
F
Fortinet All Blogs
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
S
Security @ Cisco Blogs
Recorded Future
Recorded Future
大猫的无限游戏
大猫的无限游戏
H
Help Net Security
Google Online Security Blog
Google Online Security Blog
S
Schneier on Security
C
Cisco Blogs
N
News and Events Feed by Topic
V2EX - 技术
V2EX - 技术
Latest news
Latest news
PCI Perspectives
PCI Perspectives
T
The Blog of Author Tim Ferriss
P
Palo Alto Networks Blog
T
Tor Project blog
Project Zero
Project Zero
云风的 BLOG
云风的 BLOG
Webroot Blog
Webroot Blog
Attack and Defense Labs
Attack and Defense Labs
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org

博客园 - AlfredZhao

一人公司OPC理念探索:如何把Agent业务做成闭环 DB升级 23.26.2:/opt 空间临界导致 OPatch 失败的处理记录 Docker 容器不写代理,临时用 OS 变量解决网络问题 impdp 遇到 TSTZ Version 报错:ORA-39405 处理实践 数据乱成一锅粥,还能先做本体吗? SQL*Plus 执行中文 SQL 文件,如何避开乱码坑 Podman 报错:普通用户无法运行 rootless Podman 怎么办 语义层构建:企业级AI落地绕不开的关键 AI时代最扎心的真相:人类在打杂,AI在做决策 Win7老系统登录报错怎么解?PuTTY这次真能救急 Linux 主机防火墙如何同时开启 80 和 443? AI 编程变更记录:知识加工模块与博客工厂模块的状态重新定义 一篇搞定:用 curl 测试私有部署模型联通性 DBA除了修库,还能把经验变成更大的价值 原本3GB+ 的 Docker 镜像直接缩成500M RAG技术从1.0到4.0,系统为何越来越“会想” 生产环境里,为什么不建议把普通端口直接暴露到公网? ORACLE默默地搞了个免费的智能体工厂 GPT 省钱,不是别用最新模型,而是别浪费缓存 Docker 容器时区不对,`timedatectl` 不存在怎么办? AI 编程工作总结:从体验问题到模块能力建设 OCI 明明分配了 200G 系统盘,为什么 df 只看到 30G? vi 删除指定范围的行,不用再反复按 dd AI编程系列02:合并知识功能,给 AI 问数和 RAG 场景打基础 AI编程系列01:裸 API 账单场景下,如何自建 LLM 用量可视化看板 氛围编程实战系列:先规划清楚学习路径 入门:我的第一个Vibe Coding实践程序 Linux时区修改为CST 如何在Oracle Agent Factory中配置国内厂商的LLM? Oracle Deep Data Security (Deep Sec) 初体验 APEX实战第13篇:全套开发环境的本地配置与恢复实践 Codex 和 OpenClaw,到底差在哪? 微信对接OpenClaw的常见问题和解决方案 在群晖NAS上配置OpenClaw:一次踩坑后的保姆级教程(完整修订版) 用Docker安全驯服OpenClaw,并打通社交软件 RAG 时代的“破壁人”:为什么你的大模型应用急需 Docling? 为什么 AI 服务器首选 Ubuntu?难道 OEL 和 RHEL 不香吗? APEX实战第12篇:Oracle APEX 工作区密码忘记了怎么办? AI开发者如何无痛部署Oracle AI Database 26ai环境 Oracle 26ai 本地通用版这次是真的来了 Docker 快速入门:手把手教你打包 Python 应用 APEX实战第11篇:图形界面轻松解锁工作区账户 APEX实战第10篇:手把手教你给APEX打补丁 APEX实战第9篇:手把手教你集成RAS轻松实现真正的数据安全 小白学AI开发01:创建第一个示例Agent LangChain、LangFlow、LangGraph:一文讲清三大 LLM 框架的定位与差异 使用 Oracle 官方 HR Demo 快速验证 RAS 功能(小白实战指南) Oracle RAS:AI时代企业数据安全核心 新版MOS(My Oracle Support)主要变化 APEX实战第8篇:ORDS连库报错574?一招根治用户过期问题 为什么 Iceberg 在数据湖领域这么火
kbot3测试Model报500:一次app_id参数排查记录
AlfredZhao · 2026-07-26 · via 博客园 - AlfredZhao

2026-07-26 09:38  AlfredZhao  阅读(0)  评论()    收藏  举报

kbot3是一款支持以oracle为底座的知识库产品。前端APEX,后端Python。

本文分享一次常见的问题诊断,kbot3 中新增的模型开始进入测试阶段。但在 APEX 前端点击 LLM 配置的 Test 按钮时,请求 /api/model/test 返回 500,前端提示:AxiosError: Request failed with status code 500

这类问题表面是接口 500,实际往往要顺着前端请求、主服务查询、下游服务查询一路看参数是否一致。

01 | 问题现象

APEX 前端点击 LLM 配置的 Test 按钮,请求 /api/model/test,返回 500。

image.png

已确认 APEX 侧鉴权正常,如果前后端联通有问题,会报错 401,此外,前后端没问题,页面右上角的锁头会是绿色。

继续排查500问题,发现当前请求体只发送了两个字段:

  • model_id
  • model_category

也就是说,APEX page 43 的 JS 没有发送 app_id

后端主服务会先按 model_id 查询 kbot_md_models,这一步是正常的。随后 llm-service 会继续按 display_name + app_id 查询模型配置。

v$sql_bind_capture 抓到的实际绑定值是:

  • display_name = deepseek-v4-flash
  • app_id = 1

但数据库中这条模型记录实际为:

  • app_id = 1001
  • category = 1

当同名模型被临时复制一份到 app_id = 1 后,测试不再报 “not found”。

02 | 根因判断与排查方向

和后端研发同事确认:数据库没有找到记录,本质是因为 base 配置文件中需要配置 APEX 的应用程序 ID 才可以读到,例如:

app_id=1001

结合实际链路中的参数表现,还可以看到一个明显信号:llm-service 查询时拿到的 app_id=1,正好说明需要参数指定这个apex应用程序ID值。

DB中捕获到的 SQL 形态如下:

SELECT ... FROM kbot_md_models
WHERE kbot_md_models.display_name = :display_name_1
AND kbot_md_models.app_id = :app_id_1

绑定值为:

:DISPLAY_NAME_1 = deepseek-v4-flash
:APP_ID_1 = 1

这次排查的关键点是:不要只看 500 本身,而要把接口请求体、数据库记录、SQL 绑定值放在一起对齐。当前问题的核心不是模型不存在,而是后续查询使用了错误的 app_id,导致同名模型在目标应用下查不到。而正确的ID只需要设置一个后端的参数来指定即可,笔者认为,这也是合理的设计,因为apex程序导入支持指定不同的ID,后端需要适配实际的app_id,这样反而更灵活。

关注我,和AI一起成长~