From 2ecdd6324ee8973d512dc98fcf4f577391a121ca Mon Sep 17 00:00:00 2001 From: SuveenE Date: Thu, 9 Jan 2025 22:50:47 -0800 Subject: [PATCH] Add langfuse for tracing --- .env.example | 3 +++ app/api/gpt/route.ts | 9 ++++++--- package-lock.json | 34 ++++++++++++++++++++++++++++++++++ package.json | 1 + 4 files changed, 44 insertions(+), 3 deletions(-) diff --git a/.env.example b/.env.example index 51960bd..bd41852 100644 --- a/.env.example +++ b/.env.example @@ -1,2 +1,5 @@ OPENAI_API_KEY= ENVIRONMENT=development +LANGFUSE_SECRET_KEY="sk-lf-..." +LANGFUSE_PUBLIC_KEY="pk-lf-..." +LANGFUSE_BASEURL="https://us.cloud.langfuse.com" diff --git a/app/api/gpt/route.ts b/app/api/gpt/route.ts index 5631867..7a11b1b 100644 --- a/app/api/gpt/route.ts +++ b/app/api/gpt/route.ts @@ -5,10 +5,13 @@ import { getSystemPrompt, generatePrompt } from "@/utils/prompts"; import { ClueResponseSchema, GuessResponseSchema } from "@/types/requests"; import { zodResponseFormat } from "openai/helpers/zod"; import { delay } from "@/utils/gameUtils"; +import { observeOpenAI } from "langfuse"; -const openai = new OpenAI({ - apiKey: process.env.OPENAI_API_KEY, -}); +const openai = observeOpenAI( + new OpenAI({ + apiKey: process.env.OPENAI_API_KEY, + }), +); const MAX_RETRIES = 2; diff --git a/package-lock.json b/package-lock.json index 95d5568..fa9bbf1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,6 +13,7 @@ "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "fs": "^0.0.1-security", + "langfuse": "^3.32.0", "lucide-react": "^0.469.0", "next": "14.2.16", "openai": "^4.77.0", @@ -3726,6 +3727,30 @@ "json-buffer": "3.0.1" } }, + "node_modules/langfuse": { + "version": "3.32.0", + "resolved": "https://registry.npmjs.org/langfuse/-/langfuse-3.32.0.tgz", + "integrity": "sha512-Qto8+CW8ZulNaZ/gn4JgVe5v/yeKbvMyvQ/s2DXO5bP5o1PmqE6YOCHQ3Uep6W94B8kpXUgOHg7ZS5Wg8Xljsw==", + "license": "MIT", + "dependencies": { + "langfuse-core": "^3.32.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/langfuse-core": { + "version": "3.32.0", + "resolved": "https://registry.npmjs.org/langfuse-core/-/langfuse-core-3.32.0.tgz", + "integrity": "sha512-8wWnPtmhMBBgVicLR9SjQ1O29fgvTJyRDE5kaF8b908TvE0PXZmxs068GGhLCCdTMUGpU6WXqKRHTZfXAuIzXA==", + "license": "MIT", + "dependencies": { + "mustache": "^4.2.0" + }, + "engines": { + "node": ">=18" + } + }, "node_modules/language-subtag-registry": { "version": "0.3.23", "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz", @@ -3919,6 +3944,15 @@ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "license": "MIT" }, + "node_modules/mustache": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/mustache/-/mustache-4.2.0.tgz", + "integrity": "sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==", + "license": "MIT", + "bin": { + "mustache": "bin/mustache" + } + }, "node_modules/mz": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", diff --git a/package.json b/package.json index c1b021a..1030e7f 100644 --- a/package.json +++ b/package.json @@ -14,6 +14,7 @@ "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "fs": "^0.0.1-security", + "langfuse": "^3.32.0", "lucide-react": "^0.469.0", "next": "14.2.16", "openai": "^4.77.0",