Open-source LLM engineering platform: observability (traces / generations), prompt management, evaluation (datasets + scores), cost tracking. Для BloodGPT — основной observability layer всего LLM-стека.

У нас — cloud-hosted на HIPAA region: https://hipaa.cloud.langfuse.com. Единый project cmf45hvow002xad07numppcux на всю org.

Compliance — почему HIPAA region

Langfuse Cloud HIPAA region — отдельный instance, специально для healthcare-customer’ов которые обрабатывают PHI. BAA применяется автоматически при двух conditions (source):

  1. Account hosted на https://hipaa.cloud.langfuse.com (не на стандартном cloud.langfuse.com)
  2. Subscription на Pro, Teams, или Enterprise plan

«Accounts that do not meet both conditions are not covered by this BAA and may not process Protected Health Information (‘PHI’) with Langfuse.»

PHI stored в США. Langfuse обязуется implement administrative, physical, technical safeguards.

Это означает: PHI в наших prompts/responses (анализы крови, диагнозы пациентов) могут проходить через Langfuse legally — но только потому что мы на HIPAA region endpoint. Если кто-то сконфигурирует service на standard cloud.langfuse.com — это compliance violation. Hard requirement: LANGFUSE_HOST=https://hipaa.cloud.langfuse.com в env vars всегда.

Это был flagging point в client review февраля 2026 (Lab Dr. Berghold inquiry): subprocessor’s location → ответ был «Langfuse в HIPAA region».

Deployment — где живёт у нас

Не self-hosted. Cloud-hosted на Langfuse Inc. infra (HIPAA region). У нас нет соответствующего argocd-applications/common/langfuse deployment — нет своего instance, мы клиенты их Cloud.

Auth: per-service Public+Secret keys. Хранятся в 1Password как:

GCP_APP_<SERVICE>_LANGFUSE_PUBLIC_KEY
GCP_APP_<SERVICE>_LANGFUSE_SECRET_KEY

Из 1Password → синхронизируются в k8s через externalsecrets (см. CLAUDE.md или соответствующие values.yaml).

Env vars (одинаково во всех сервисах):

LANGFUSE_HOST: https://hipaa.cloud.langfuse.com
LANGFUSE_ENABLED: true
LANGFUSE_PUBLIC_KEY: <from secret>
LANGFUSE_SECRET_KEY: <from secret>

Сервисы которые трейсят в Langfuse

Per INFRA argocd-applications/common/*/values.yaml (state май 2026):

  • analysis-worker
  • blood-gpt-dotnet (.NET API), blood-gpt-dotnet-af (Africa variant)
  • loinc-harmonization-api, loinc-harmonization-validator
  • questionnaire
  • fhir-services
  • litellm-proxy — proxy сам шлёт traces для всех проходящих через него LLM-вызовов
  • normalization-pipeline
  • b2b-api

Bifrost-proxy явно LANGFUSE_* env vars не имеет в values.yaml (stage-only deployment) — нужно verify как именно Bifrost интегрирован (built-in callback? через otel? отдельный flow?). Open question.

Что используем

Traces (observability)

Все LLM calls трейсятся. Структура: tracegeneration / span / event объекты с input / output / metadata / timing / cost.

Sample URL pattern (из Slack):

https://hipaa.cloud.langfuse.com/project/cmf45hvow002xad07numppcux/traces?search=<trace-id>&peek=<trace-id>

Pattern: ERROR-level marking — .NET API помечает Gemini generation как level=ERROR если finishReason != STOP (т.е. MAX_TOKENS, SAFETY, и т.д.). До этой правки эти cases считались success в трейсах. См. gemini-doom-loop для контекста + deploy notification 30 марта 2026.

Стоит проверять что этот pattern применяется и в Node.js сервисах (open question).

Prompt registry

Prompts управляются в Langfuse Studio (versioning, переменные, references по name). Pattern: code references prompt by name + optional version, Langfuse возвращает compiled template.

Datasets + scores (evaluation)

Datasets — наборы input/expected output для evaluation. Scores — числовые или категориальные оценки на trace/generation. Используется для:

Cost / spend tracking

Langfuse считает токены и cost по provider+model. Pricing берётся из их own pricing table.

Cross-cutting nuance с vertex-gemini-quotas: Langfuse видит per-trace cost, но не знает наш Vertex Standard PayGo tier (org-level в GCP, не visible из Langfuse). Для tier detection используем Billing Reports (см. как-проверить-свой-тир-vertex-ai).

Известные issues / Открытые вопросы

  • Трейсинг доработка планируется — Ildar в #dev 21 апреля 2026: «трейсинг в LangFuse пора доработать. Давайте тоже как задачку с миграцией связанной возьмем, подумаем, как нам сделать это, исходя из опыта предыдущего.» Конкретные gaps не зафиксированы.
  • Bifrost ↔ Langfuse integration — Bifrost-proxy в argocd-applications/common/bifrost-proxy/values.yaml не имеет LANGFUSE_* env vars. Как именно проходят traces через Bifrost? Built-in callback / OpenTelemetry / отдельный side-channel? TBD.
  • ERROR-marking pattern в Node.js сервисах — реализовано в .NET API (mar 30 deploy). Проверить применяется ли тот же pattern в analysis-worker / algo-hub / etc.
  • EU-region requirement vs US-region Langfuse — Langfuse HIPAA region хостит данные в США. Для GDPR-чувствительных клиентов (Lab Dr. Berghold etc.) это потенциальный subprocessor concern. Mitigation TBD.

Связанные решения

Связано

  • bifrost — main LLM proxy, traces в Langfuse (механизм integration — open question)
  • litellm — LiteLLM имеет built-in Langfuse callback (через config); deployed в prod EU
  • llm-routing — общая routing topology, где Langfuse — общая observability точка
  • llm-proxy-choice — proxy decision, где Langfuse упоминается как observability layer
  • vertex-gemini-quotas — cost/spend cross-view (Langfuse vs Vertex Billing)
  • gemini-doom-loop — pattern ERROR-marking generations с finishReason != STOP
  • Multiple technical/ pages cross-reference Langfuse — practical entity, не abstract concept

Источники

Источники: 1 2.

Сноски

  1. Langfuse HIPAA docs, accessed 2026-05-17, https://langfuse.com/security/hipaa.

  2. Slack examples: