From 07d733ea301667c6c12763f417baae0ab28632dd Mon Sep 17 00:00:00 2001 From: lee-hyeon-cheol Date: Tue, 22 Sep 2026 14:01:05 +0900 Subject: [PATCH] =?UTF-8?q?fix(langfuse):=20=ED=85=8C=EC=8A=A4=ED=8A=B8?= =?UTF-8?q?=EA=B0=80=20=EB=A1=9C=EC=BB=AC=20.env=20=EC=9D=98=20LANGFUSE=5F?= =?UTF-8?q?HOST=20=EB=A1=9C=20=EC=A7=84=EC=A7=9C=20=EC=A0=84=EC=86=A1?= =?UTF-8?q?=ED=95=98=EB=8D=98=20=EA=B2=83=20=EC=B0=A8=EB=8B=A8(autouse)=20?= =?UTF-8?q?+=20=EA=B2=8C=EC=9D=B4=ED=8A=B8=EC=9B=A8=EC=9D=B4=20=EB=A3=A8?= =?UTF-8?q?=ED=8A=B8=20span=20=EC=97=90=20=EC=A7=88=EB=AC=B8/=EB=8B=B5=20?= =?UTF-8?q?=EC=8B=A4=EC=9D=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Fable 5.1 --- 5_django_backend/apps/gateway/views.py | 4 +++- 5_django_backend/tests/conftest.py | 6 ++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/5_django_backend/apps/gateway/views.py b/5_django_backend/apps/gateway/views.py index 09612e5..9da7e05 100644 --- a/5_django_backend/apps/gateway/views.py +++ b/5_django_backend/apps/gateway/views.py @@ -102,7 +102,9 @@ def _observe(model_id: str, body: dict, col: _Collect, started: float, status: i u = col.usage or {} tid = str(uuid.uuid4()) t0 = datetime.fromtimestamp(started, timezone.utc).isoformat() - root = langfuse.trace(tid, "fabrix", tags=["gateway"], metadata={"parts": kinds}, start=t0, end=langfuse.now_iso()) + last_user = next((m.get("content") for m in reversed(body.get("messages") or []) if m.get("role") == "user"), None) + root = langfuse.trace(tid, "fabrix", tags=["gateway"], metadata={"parts": kinds}, start=t0, end=langfuse.now_iso(), + input=last_user, output="".join(col.text)) # 목록에서 뭘 물었는지 바로 보이게 langfuse.send_later([ root, langfuse.generation( diff --git a/5_django_backend/tests/conftest.py b/5_django_backend/tests/conftest.py index 0c5e83e..ec7ee64 100644 --- a/5_django_backend/tests/conftest.py +++ b/5_django_backend/tests/conftest.py @@ -24,3 +24,9 @@ def auth_api(api, user): api.credentials(HTTP_AUTHORIZATION=f"Bearer {tokens['token']}") api.tokens = tokens return api + + +@pytest.fixture(autouse=True) +def _no_langfuse(settings): + """테스트가 로컬 .env 의 LANGFUSE_HOST 로 진짜 전송하는 사고 방지. 보내는 테스트는 override_settings 로 켬.""" + settings.LANGFUSE = {"host": "", "public_key": "", "secret_key": ""}