From 1e1aa3f64a3752a08d82a89fd2d75d7b19241fe3 Mon Sep 17 00:00:00 2001 From: ThearchyHelios Date: Tue, 13 Oct 2026 20:28:58 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B5=B7=E8=8D=89=E5=BC=95=E6=93=8E=EF=BC=9A?= =?UTF-8?q?=E6=8F=90=E9=86=92=E7=AC=AC=E4=B8=80=E6=AC=A1=E5=87=BA=E7=8E=B0?= =?UTF-8?q?=E6=97=B6=E8=AE=B0=E4=B8=80=E6=9D=A1=E6=97=A5=E5=BF=97=EF=BC=88?= =?UTF-8?q?=E6=9C=80=E8=BF=91=E5=87=A0=E6=AC=A1=E8=B0=83=E7=94=A8=E6=9C=89?= =?UTF-8?q?=E5=87=A0=E6=AC=A1=E6=B2=A1=E5=86=99=E5=87=BA=E6=9D=A5=E3=80=81?= =?UTF-8?q?=E5=8E=9F=E5=9B=A0=EF=BC=89=EF=BC=9B=E6=A8=A1=E5=9D=97=E8=AF=B4?= =?UTF-8?q?=E6=98=8E=E8=A1=A5=E4=B8=8A=E8=A1=A5=E9=97=AE=E6=97=B6=E6=89=8D?= =?UTF-8?q?=E5=88=97=E5=87=BA=E3=80=81=E5=AD=97=E6=AE=B5=E7=95=99=E7=A9=BA?= =?UTF-8?q?=E7=9A=84=E5=88=97=E4=B9=9F=E7=AE=97=E6=8B=BF=E4=B8=8D=E5=87=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/app/data/catalog_draft.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/backend/app/data/catalog_draft.py b/backend/app/data/catalog_draft.py index 90c6b33e..6d35d132 100644 --- a/backend/app/data/catalog_draft.py +++ b/backend/app/data/catalog_draft.py @@ -28,8 +28,8 @@ 的参数),提示词里又没有格式说明,模型就写成了说明文字。这次起草后面改走纯文本,这一段换纯文本问一次。有思考 不等于额度用完:只有停在额度上、或者正文为空而有思考才算。 - 被截断的 JSON:先把已经完整的表、列对象捡回来,只补剩下的。 -- 一段里缺了的表、列只补缺的,补一次。补问之后:模型列出了、字段留空的列是拿不准,不算没写出来;整列没列出来的 - 算没写出来(这张表是 partial,旧的模型起草项不删);整张表还一项都没有的,照只给空壳处理(拆小、换纯文本)。 +- 一段里缺了的表、列只补缺的,补一次。补问之后:模型列出了、字段留空的列是拿不准(补问时才列出来的也一样),不算 + 没写出来;整列没列出来的算没写出来(这张表是 partial);整张表还一项都没有的,照只给空壳处理(拆小、再问一次)。 - 结构化输出这个接口不支持(400 / 422 提到 response_format、json_schema、tool……,或者模型类不支持):这次起草 后面改走纯文本、从正文取 JSON(纯文本那条路另外说清 JSON 的格式)。 - 服务方嫌额度太大:退回 MODEL_FALLBACK_MAX_TOKENS 重来,这次起草后面都用它(catalog.DraftModel.shrink)。 @@ -1169,6 +1169,8 @@ class _Run: if len(failed) >= int(C.MODEL_NOTICE_ON) or (self.notice is not None and len(failed) >= int(C.MODEL_NOTICE_OFF)): counts = collections.Counter(failed) kinds = "、".join(f"{label} {counts[kind]} 次" for kind, label in FAILURE_LABEL.items() if counts[kind]) + if self.notice is None: + logger.warning("起草数据目录:最近 %d 次调用有 %d 次没写出来(%s)", len(self.recent), len(failed), kinds) self.notice = NOTICE.format(calls=len(self.recent), failed=len(failed), kinds=kinds, place=DRAFT_MODEL_PLACE) else: self.notice = None