From 3eacbac96475a4761f2e41d0806543a8e884c6c0 Mon Sep 17 00:00:00 2001 From: Hyungi Ahn Date: Tue, 7 Apr 2026 07:50:14 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20KST=20=EC=8B=9C=EA=B0=84=EB=8C=80=20?= =?UTF-8?q?=EC=A0=81=EC=9A=A9=20=E2=80=94=20UTC=20=EC=84=9C=EB=B2=84=20?= =?UTF-8?q?=E2=86=92=20=ED=95=9C=EA=B5=AD=20=ED=91=9C=EC=A4=80=EC=8B=9C?= =?UTF-8?q?=EB=A1=9C=20=EB=AA=A8=EB=8D=B8=EC=97=90=20=EC=A0=84=EB=8B=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 분류기 input의 [현재 시간]을 KST로 명시 - reasoner system prompt에도 현재 KST 시간 주입 - GPU 서버가 UTC라 모델이 시간 개념을 이상하게 가졌던 문제 해결 Co-Authored-By: Claude Opus 4.6 (1M context) --- nanoclaude/services/worker.py | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/nanoclaude/services/worker.py b/nanoclaude/services/worker.py index 0dd8f21..9dd036e 100644 --- a/nanoclaude/services/worker.py +++ b/nanoclaude/services/worker.py @@ -229,8 +229,10 @@ async def run(job: Job) -> None: logger.info("Job %s pre-routed: %s.%s", job.id, pre.get("tool", ""), pre.get("operation", pre.get("action", ""))) else: # --- EXAONE 분류기 호출 --- - from datetime import datetime - now_str = datetime.now().strftime("%Y-%m-%d %H:%M (%A)") + from datetime import datetime, timezone, timedelta + kst = timezone(timedelta(hours=9)) + now_kst = datetime.now(kst) + now_str = now_kst.strftime("%Y년 %m월 %d일 %H:%M (%A) KST") history = conversation_store.format_for_prompt(user_id) classify_input = f"[현재 시간]\n{now_str}\n\n" if history: @@ -379,8 +381,18 @@ async def run(job: Job) -> None: await state_stream.push(job.id, "processing", {"message": "Gemma 4가 응답을 생성하고 있습니다..."}) + # KST 현재 시간을 system prompt에 주입 + from datetime import datetime, timezone, timedelta + kst = timezone(timedelta(hours=9)) + now_kst = datetime.now(kst).strftime("%Y년 %m월 %d일 %H:%M (%A) KST") + reasoner_system = f"{backend_registry.reasoner.system_prompt}\n\n현재 시간: {now_kst} (한국 표준시)" + reasoner_messages = [ + {"role": "system", "content": reasoner_system}, + {"role": "user", "content": rewritten_message}, + ] + try: - ok = await _stream_with_cancel(backend_registry.reasoner, rewritten_message, job, collected) + ok = await _stream_with_cancel(backend_registry.reasoner, rewritten_message, job, collected, messages=reasoner_messages) if not ok: return except Exception: