From dcd0ab41881a9bf137e44ebf8135ad29c3e7aea8 Mon Sep 17 00:00:00 2001 From: Marios Antonoudiou Date: Sat, 19 Jul 2025 12:35:41 +0300 Subject: [PATCH] Switch to og openai client --- package-lock.json | 8 +++--- package.json | 2 +- server/utils/create-content.ts | 45 ++++++++++++++-------------------- server/utils/openai-client.ts | 12 +++------ 4 files changed, 28 insertions(+), 39 deletions(-) diff --git a/package-lock.json b/package-lock.json index db9e124..01088d3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -20,7 +20,7 @@ "drizzle-orm": "^0.41.0", "nuxt": "^3.16.2", "nuxt-auth-utils": "0.5.18", - "openai": "^4.95.1", + "openai": "^4.104.0", "posthog-js": "^1.256.2", "posthog-node": "^5.1.1", "radash": "^12.1.0", @@ -9558,9 +9558,9 @@ } }, "node_modules/openai": { - "version": "4.95.1", - "resolved": "https://registry.npmjs.org/openai/-/openai-4.95.1.tgz", - "integrity": "sha512-IqJy+ymeW+k/Wq+2YVN3693OQMMcODRtHEYOlz263MdUwnN/Dwdl9c2EXSxLLtGEHkSHAfvzpDMHI5MaWJKXjQ==", + "version": "4.104.0", + "resolved": "https://registry.npmjs.org/openai/-/openai-4.104.0.tgz", + "integrity": "sha512-p99EFNsA/yX6UhVO93f5kJsDRLAg+CTA2RBqdHK4RtK8u5IJw32Hyb2dTGKbnnFmnuoBv5r7Z2CURI9sGZpSuA==", "license": "Apache-2.0", "dependencies": { "@types/node": "^18.11.18", diff --git a/package.json b/package.json index 7b95960..43f13e5 100644 --- a/package.json +++ b/package.json @@ -22,7 +22,7 @@ "drizzle-orm": "^0.41.0", "nuxt": "^3.16.2", "nuxt-auth-utils": "0.5.18", - "openai": "^4.95.1", + "openai": "^4.104.0", "posthog-js": "^1.256.2", "posthog-node": "^5.1.1", "radash": "^12.1.0", diff --git a/server/utils/create-content.ts b/server/utils/create-content.ts index 8332ec5..45e671e 100644 --- a/server/utils/create-content.ts +++ b/server/utils/create-content.ts @@ -150,32 +150,25 @@ export const createActivityContent = async ({ [${previousActivities.map((activity) => stringifyActivity({ activity, shouldKeepNames: true }))}] `; - const [aiError, aiResponse] = await openai("/responses", { - body: { - model: "gpt-4.1", - input: [ - { - role: "user", - content: prompt, - }, - ], - text: { - format: { - type: "json_schema", - name: "activity", - schema: { - type: "object", - properties: { - title: { - type: "string", - }, - description: { - type: "string", - }, + const aiResponse = await openai.responses.create({ + model: "gpt-4o-mini", + input: [{ role: "user", content: prompt }], + text: { + format: { + type: "json_schema", + name: "activity", + schema: { + type: "object", + properties: { + title: { + type: "string", + }, + description: { + type: "string", }, - required: ["title", "description"], - additionalProperties: false, }, + required: ["title", "description"], + additionalProperties: false, }, }, }, @@ -183,7 +176,7 @@ export const createActivityContent = async ({ const [parseError, responseObject] = tryit( chain( - (r) => get(r, "output.0.content.0.text"), + (r) => get(r, "output_text"), (r) => safeDestr<{ title: string; description: string }>(r), ), )(aiResponse); @@ -197,5 +190,5 @@ export const createActivityContent = async ({ }, }; - return [aiError || parseError, stravaRequestBody] as const; + return [parseError, stravaRequestBody] as const; }; diff --git a/server/utils/openai-client.ts b/server/utils/openai-client.ts index b140fd8..f875120 100644 --- a/server/utils/openai-client.ts +++ b/server/utils/openai-client.ts @@ -1,15 +1,11 @@ -import { tryit } from "radash"; +import OpenAI from "openai"; export const useOpenAI = () => { const config = useRuntimeConfig(); - const client = $fetch.create({ - baseURL: "https://api.openai.com/v1", - headers: { - Authorization: `Bearer ${config.openaiApiKey}`, - }, - method: "post", + const client = new OpenAI({ + apiKey: config.openaiApiKey, }); - return tryit(client); + return client; };