diff --git a/apps/worker/worker_app/tasks/vision/fast_path.py b/apps/worker/worker_app/tasks/vision/fast_path.py index f8d3435d8..4ec8d33c3 100644 --- a/apps/worker/worker_app/tasks/vision/fast_path.py +++ b/apps/worker/worker_app/tasks/vision/fast_path.py @@ -23,10 +23,10 @@ logger = logging.getLogger(__name__) # 超时(可通过环境变量覆盖) _IMG_WORKERS = int(os.environ.get("VISION_V2_IMG_WORKERS", "8")) -_FAST_TIMEOUT = float(os.environ.get("VISION_V2_FAST_TIMEOUT", "8")) -_FAST_JSON_TIMEOUT = float(os.environ.get("VISION_V2_FAST_JSON_TIMEOUT", "8")) +_FAST_TIMEOUT = float(os.environ.get("VISION_V2_FAST_TIMEOUT", "12")) +_FAST_JSON_TIMEOUT = float(os.environ.get("VISION_V2_FAST_JSON_TIMEOUT", "12")) _OCR_TIMEOUT = float(os.environ.get("VISION_V2_OCR_TIMEOUT", "6")) -_PRO_TIMEOUT = float(os.environ.get("VISION_V2_PRO_TIMEOUT", "20")) +_PRO_TIMEOUT = float(os.environ.get("VISION_V2_PRO_TIMEOUT", "25")) _FALLBACK_RESULT = { "name": "未识别", diff --git a/apps/worker/worker_app/tasks/vision/vlm_fallback.py b/apps/worker/worker_app/tasks/vision/vlm_fallback.py index c9b9e1d61..ae8276535 100644 --- a/apps/worker/worker_app/tasks/vision/vlm_fallback.py +++ b/apps/worker/worker_app/tasks/vision/vlm_fallback.py @@ -17,7 +17,7 @@ logger = logging.getLogger(__name__) _BASE_URL = "https://dashscope.aliyuncs.com/compatible-mode/v1" _PRO_MODEL = "qwen3.7-plus" -_DEFAULT_TIMEOUT = 20 +_DEFAULT_TIMEOUT = 25 _DEFAULT_MAX_TOKENS = 800 _PRO_SYSTEM = ( @@ -113,6 +113,7 @@ def call_pro_vlm( "max_tokens": _DEFAULT_MAX_TOKENS, "stream": False, "enable_thinking": False, + "response_format": {"type": "json_object"}, } try: r = httpx.post( diff --git a/apps/worker/worker_app/tasks/vision/vlm_fast_json.py b/apps/worker/worker_app/tasks/vision/vlm_fast_json.py index 3de9bba1b..8ad44400f 100644 --- a/apps/worker/worker_app/tasks/vision/vlm_fast_json.py +++ b/apps/worker/worker_app/tasks/vision/vlm_fast_json.py @@ -7,7 +7,7 @@ - enable_thinking=false 关闭推理链(reasoning 是延迟主因) - system prompt 极致精简,只给字段 schema 和强约束(禁止自然语言、禁止 markdown) - max_tokens=350、temperature=0.1(稳定输出 JSON) -- timeout=8s(失败由外层走 pro 兜底) +- timeout=12s(失败由外层走 pro 兜底) - API Key 从环境变量 DASHSCOPE_API_KEY 读取 """ @@ -24,7 +24,7 @@ logger = logging.getLogger(__name__) # DashScope OpenAI 兼容 endpoint _BASE_URL = "https://dashscope.aliyuncs.com/compatible-mode/v1" _FAST_MODEL = "qwen3.8-flash" -_DEFAULT_TIMEOUT = 8 +_DEFAULT_TIMEOUT = 12 _DEFAULT_MAX_TOKENS = 350 # 极简 system prompt:只给字段定义 + 硬性输出要求 @@ -108,6 +108,7 @@ def call_fast_json( "max_tokens": max_tokens, "stream": False, "enable_thinking": False, + "response_format": {"type": "json_object"}, } try: resp = httpx.post(