feat(langfuse): 게이트웨이 fabrix 트레이스는 LANGFUSE_TRACE_GATEWAY=1 일 때만 — 질문 하나 = 행 하나 유지

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
lee-hyeon-cheol
2026-09-22 14:08:55 +09:00
co-authored by Claude Fable 5.1
parent c9cc6b7eeb
commit e801ae6a6f
5 changed files with 7 additions and 3 deletions
+2
View File
@@ -67,3 +67,5 @@ ABAP_INDEX_URL=http://127.0.0.1:8100
LANGFUSE_HOST= LANGFUSE_HOST=
LANGFUSE_PUBLIC_KEY= LANGFUSE_PUBLIC_KEY=
LANGFUSE_SECRET_KEY= LANGFUSE_SECRET_KEY=
# 1 이면 FabriX 호출 원문(프롬프트 전체·응답)도 별도 fabrix 트레이스로. 기본 0 — 질문 하나 = 행 하나 유지
LANGFUSE_TRACE_GATEWAY=0
+1 -1
View File
@@ -97,7 +97,7 @@ class _Collect:
def _observe(model_id: str, body: dict, col: _Collect, started: float, status: int, *, kinds: list[str]) -> None: def _observe(model_id: str, body: dict, col: _Collect, started: float, status: int, *, kinds: list[str]) -> None:
if not langfuse.enabled(): if not langfuse.enabled() or not settings.LANGFUSE.get("gateway"):
return return
u = col.usage or {} u = col.usage or {}
tid = str(uuid.uuid4()) tid = str(uuid.uuid4())
+2
View File
@@ -93,6 +93,8 @@ LANGFUSE = {
"host": _env("LANGFUSE_HOST"), "host": _env("LANGFUSE_HOST"),
"public_key": _env("LANGFUSE_PUBLIC_KEY"), "public_key": _env("LANGFUSE_PUBLIC_KEY"),
"secret_key": _env("LANGFUSE_SECRET_KEY"), "secret_key": _env("LANGFUSE_SECRET_KEY"),
# 게이트웨이(FabriX 호출 원문) 트레이스는 기본 끔 — 켜면 질문 하나에 행이 2개(chat + fabrix) 잡힘
"gateway": _env_bool("LANGFUSE_TRACE_GATEWAY", False),
} }
# 세션 컨텍스트 하드 한도 — usage.limit 로 프론트 게이지에 감 # 세션 컨텍스트 하드 한도 — usage.limit 로 프론트 게이지에 감
CONTEXT_LIMIT_TOKENS = int(_env("CONTEXT_LIMIT_TOKENS", "128000") or "128000") CONTEXT_LIMIT_TOKENS = int(_env("CONTEXT_LIMIT_TOKENS", "128000") or "128000")
+1 -1
View File
@@ -126,7 +126,7 @@ async def test_401_retries_other_auth_shape_and_remembers(upstream):
assert len(calls) == n + 1 and calls[-1].headers["x-openapi-token"] == "Bearer tok" assert len(calls) == n + 1 and calls[-1].headers["x-openapi-token"] == "Bearer tok"
@override_settings(FABRIX_ENV=FULL_ENV, LANGFUSE={"host": "http://lf.test", "public_key": "pk", "secret_key": "sk"}) @override_settings(FABRIX_ENV=FULL_ENV, LANGFUSE={"host": "http://lf.test", "public_key": "pk", "secret_key": "sk", "gateway": True})
async def test_stream_reports_generation_to_langfuse(upstream, monkeypatch): async def test_stream_reports_generation_to_langfuse(upstream, monkeypatch):
import asyncio import asyncio
+1 -1
View File
@@ -10,7 +10,7 @@ from django.test import override_settings
from apps.gateway import langfuse from apps.gateway import langfuse
LF = {"host": "http://lf.test", "public_key": "pk-lf-a", "secret_key": "sk-lf-b"} LF = {"host": "http://lf.test", "public_key": "pk-lf-a", "secret_key": "sk-lf-b", "gateway": False}
@pytest.fixture @pytest.fixture