fix(backend): 补 directive/instruction 文本上界——LLM 入参防超长(CR-H9 收尾)
This commit is contained in:
@@ -23,6 +23,7 @@ from ww_api.schemas.generation import CharacterGenerateRequest, WorldGenerateReq
|
||||
from ww_api.schemas.projects import (
|
||||
AcceptRequest,
|
||||
DraftSaveRequest,
|
||||
DraftStreamRequest,
|
||||
ProjectCreateRequest,
|
||||
ReviewRequest,
|
||||
)
|
||||
@@ -64,6 +65,8 @@ _STR_CASES: list[_StrCase] = [
|
||||
_StrCase(DraftSaveRequest, "text", 200_000, "draft-text<=200000"),
|
||||
_StrCase(ReviewRequest, "draft", 200_000, "review-draft<=200000"),
|
||||
_StrCase(RefineRequest, "segment", 20_000, "segment<=20000"),
|
||||
_StrCase(RefineRequest, "instruction", 2_000, "refine-instruction<=2000", {"segment": "s"}),
|
||||
_StrCase(DraftStreamRequest, "directive", 20_000, "directive<=20000"),
|
||||
_StrCase(ForeshadowRegisterRequest, "code", 100, "code<=100", {"title": "t"}),
|
||||
_StrCase(ForeshadowRegisterRequest, "title", 500, "foreshadow-title<=500", {"code": "c"}),
|
||||
_StrCase(RuleCreateRequest, "content", 10_000, "rule-content<=10000", {"level": "project"}),
|
||||
|
||||
@@ -14,6 +14,7 @@ from pydantic import BaseModel, Field
|
||||
# 请求文本长度上界(CR-H9:防超长入参 DoS/成本)。标题=标签级;章正文=整章级。
|
||||
_TITLE_MAX = 200
|
||||
_CHAPTER_TEXT_MAX = 200_000
|
||||
_DIRECTIVE_MAX = 20_000 # CR-H9 收尾:本章指令喂 LLM,加上界(正文级 body 中间件仍兜底)
|
||||
|
||||
|
||||
class ProjectCreateRequest(BaseModel):
|
||||
@@ -121,7 +122,7 @@ class DraftStreamRequest(BaseModel):
|
||||
后端只入 volatile(守缓存前缀不变量 #9)。无 body 时退化为纯按大纲生成(向后兼容)。
|
||||
"""
|
||||
|
||||
directive: str | None = None
|
||||
directive: str | None = Field(default=None, max_length=_DIRECTIVE_MAX)
|
||||
|
||||
|
||||
# 整章重写输入上界(守 DoS/成本,CR-H9 方向):意见短、整章草稿大(复用章正文上界,DRY)。
|
||||
|
||||
@@ -59,7 +59,8 @@ class RefineRequest(BaseModel):
|
||||
"""回炉:重写选中段(可选改写指令)。"""
|
||||
|
||||
segment: str = Field(min_length=1, max_length=_SEGMENT_MAX)
|
||||
instruction: str | None = None
|
||||
# CR-H9 收尾:再沟通意见喂 LLM,加上界(与 clarify instruction 同口径 2000)。
|
||||
instruction: str | None = Field(default=None, max_length=_MAX_CLARIFY_INSTRUCTION_LEN)
|
||||
|
||||
|
||||
class RefineResponse(BaseModel):
|
||||
|
||||
Reference in New Issue
Block a user