diff --git a/app/(chat)/api/chat/route.ts b/app/(chat)/api/chat/route.ts index 16b2b6e08..9b13209a5 100644 --- a/app/(chat)/api/chat/route.ts +++ b/app/(chat)/api/chat/route.ts @@ -25,6 +25,7 @@ import { getWeather } from '@/lib/ai/tools/get-weather'; import { isProductionEnvironment } from '@/lib/constants'; import { NextResponse } from 'next/server'; import { myProvider } from '@/lib/ai/providers'; +import { openai } from '@ai-sdk/openai'; export const maxDuration = 60; @@ -85,6 +86,7 @@ export async function POST(request: Request) { 'createDocument', 'updateDocument', 'requestSuggestions', + 'webSearchPreview' ], experimental_transform: smoothStream({ chunking: 'word' }), experimental_generateMessageId: generateUUID, @@ -96,6 +98,14 @@ export async function POST(request: Request) { session, dataStream, }), + webSearchPreview: openai.tools.webSearchPreview({ + searchContextSize: 'medium' + }) + }, + providerOptions: { + openai: { + store: false, + } }, onFinish: async ({ response, reasoning }) => { if (session.user?.id) { @@ -134,7 +144,7 @@ export async function POST(request: Request) { }); }, onError: () => { - return 'Oops, an error occured!'; + return 'Oops, an error occurred!'; }, }); } catch (error) { diff --git a/lib/ai/providers.ts b/lib/ai/providers.ts index cab09e045..f2a55baee 100644 --- a/lib/ai/providers.ts +++ b/lib/ai/providers.ts @@ -25,8 +25,8 @@ export const myProvider = isTestEnvironment }) : customProvider({ languageModels: { - 'chat-model-small': openai('gpt-4o-mini'), - 'chat-model-large': openai('gpt-4o'), + 'chat-model-small': openai.responses('gpt-4o-mini'), + 'chat-model-large': openai.responses('gpt-4o'), 'chat-model-reasoning': wrapLanguageModel({ model: fireworks('accounts/fireworks/models/deepseek-r1'), middleware: extractReasoningMiddleware({ tagName: 'think' }), diff --git a/package.json b/package.json index 7676ba8d4..ac428071c 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,7 @@ }, "dependencies": { "@ai-sdk/fireworks": "0.1.12", - "@ai-sdk/openai": "1.2.0", + "@ai-sdk/openai": "1.2.2", "@ai-sdk/react": "^1.1.20", "@codemirror/lang-javascript": "^6.2.2", "@codemirror/lang-python": "^6.1.6", @@ -40,7 +40,7 @@ "@vercel/analytics": "^1.3.1", "@vercel/blob": "^0.24.1", "@vercel/postgres": "^0.10.0", - "ai": "4.1.50", + "ai": "4.1.54", "bcrypt-ts": "^5.0.2", "class-variance-authority": "^0.7.0", "classnames": "^2.5.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3512dd4a4..2239bde37 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -12,8 +12,8 @@ importers: specifier: 0.1.12 version: 0.1.12(zod@3.23.8) '@ai-sdk/openai': - specifier: 1.2.0 - version: 1.2.0(zod@3.23.8) + specifier: 1.2.2 + version: 1.2.2(zod@3.23.8) '@ai-sdk/react': specifier: ^1.1.20 version: 1.1.20(react@19.0.0-rc-45804af1-20241021)(zod@3.23.8) @@ -72,8 +72,8 @@ importers: specifier: ^0.10.0 version: 0.10.0 ai: - specifier: 4.1.50 - version: 4.1.50(react@19.0.0-rc-45804af1-20241021)(zod@3.23.8) + specifier: 4.1.54 + version: 4.1.54(react@19.0.0-rc-45804af1-20241021)(zod@3.23.8) bcrypt-ts: specifier: ^5.0.2 version: 5.0.2 @@ -270,8 +270,8 @@ packages: peerDependencies: zod: ^3.0.0 - '@ai-sdk/openai@1.2.0': - resolution: {integrity: sha512-tzxH6OxKL5ffts4zJPdziQSJGGpSrQcJmuSrE92jCt7pJ4PAU5Dx4tjNNFIU8lSfwarLnywejZEt3Fz0uQZZOQ==} + '@ai-sdk/openai@1.2.2': + resolution: {integrity: sha512-5355FLtSOH8sz9N9fsSwWpTaEgfqKOPMMHgSs1j4Aih5kQc9PhJ/oAPZuH308c/ktrbx6GcCW/hVrITimYsQhQ==} engines: {node: '>=18'} peerDependencies: zod: ^3.0.0 @@ -285,6 +285,19 @@ packages: zod: optional: true + '@ai-sdk/provider-utils@2.1.11': + resolution: {integrity: sha512-lMnXA5KaRJidzW7gQmlo/SnX6D+AKk5GxHFcQtOaGOSJNmu/qcNZc1rGaO7K5qW52OvCLXtnWudR4cc/FvMpVQ==} + engines: {node: '>=18'} + peerDependencies: + zod: ^3.0.0 + peerDependenciesMeta: + zod: + optional: true + + '@ai-sdk/provider@1.0.10': + resolution: {integrity: sha512-pco8Zl9U0xwXI+nCLc0woMtxbvjU8hRmGTseAUiPHFLYAAL8trRPCukg69IDeinOvIeo1SmXxAIdWWPZOLb4Cg==} + engines: {node: '>=18'} + '@ai-sdk/provider@1.0.9': resolution: {integrity: sha512-jie6ZJT2ZR0uVOVCDc9R2xCX5I/Dum/wEK28lx21PJx6ZnFAN9EzD2WsPhcDWfCgGx3OAZZ0GyM3CEobXpa9LA==} engines: {node: '>=18'} @@ -301,6 +314,18 @@ packages: zod: optional: true + '@ai-sdk/react@1.1.21': + resolution: {integrity: sha512-VKgqzG5wKjyLhROiFhRdyMuDcGu5QPfdLU5J7ovqR1HecknxymL3nCXsxWbAaiZ0khm2EsST6L6zwUbriZrKgg==} + engines: {node: '>=18'} + peerDependencies: + react: ^18 || ^19 || ^19.0.0-rc + zod: ^3.0.0 + peerDependenciesMeta: + react: + optional: true + zod: + optional: true + '@ai-sdk/ui-utils@1.1.16': resolution: {integrity: sha512-jfblR2yZVISmNK2zyNzJZFtkgX57WDAUQXcmn3XUBJyo8LFsADu+/vYMn5AOyBi9qJT0RBk11PEtIxIqvByw3Q==} engines: {node: '>=18'} @@ -310,6 +335,15 @@ packages: zod: optional: true + '@ai-sdk/ui-utils@1.1.17': + resolution: {integrity: sha512-fCnp/wntZGqPf6tiCmhuQoSDLSBhXoI5DU2JX4As96EO870+jliE6ozvYUwYOZC6Ta2OKAjjWPcSP7HeHX0b+g==} + engines: {node: '>=18'} + peerDependencies: + zod: ^3.0.0 + peerDependenciesMeta: + zod: + optional: true + '@alloc/quick-lru@5.2.0': resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} engines: {node: '>=10'} @@ -1651,8 +1685,8 @@ packages: engines: {node: '>=0.4.0'} hasBin: true - ai@4.1.50: - resolution: {integrity: sha512-YBNeemrJKDrxoBQd3V9aaxhKm5q5YyRcF7PZE7W0NmLuvsdva/1aQNYTAsxs47gQFdvqfYmlFy4B0E+356OlPA==} + ai@4.1.54: + resolution: {integrity: sha512-VcUZhNEC9i1OpdhDaz1cF0IllgMqhwoUdqHQT1U3dKvS9KnOa9qvEtUUAilA+VHI/1LSZF4VzGhXPC7QMT9NMg==} engines: {node: '>=18'} peerDependencies: react: ^18 || ^19 || ^19.0.0-rc @@ -3813,10 +3847,10 @@ snapshots: '@ai-sdk/provider-utils': 2.1.10(zod@3.23.8) zod: 3.23.8 - '@ai-sdk/openai@1.2.0(zod@3.23.8)': + '@ai-sdk/openai@1.2.2(zod@3.23.8)': dependencies: - '@ai-sdk/provider': 1.0.9 - '@ai-sdk/provider-utils': 2.1.10(zod@3.23.8) + '@ai-sdk/provider': 1.0.10 + '@ai-sdk/provider-utils': 2.1.11(zod@3.23.8) zod: 3.23.8 '@ai-sdk/provider-utils@2.1.10(zod@3.23.8)': @@ -3828,6 +3862,19 @@ snapshots: optionalDependencies: zod: 3.23.8 + '@ai-sdk/provider-utils@2.1.11(zod@3.23.8)': + dependencies: + '@ai-sdk/provider': 1.0.10 + eventsource-parser: 3.0.0 + nanoid: 3.3.8 + secure-json-parse: 2.7.0 + optionalDependencies: + zod: 3.23.8 + + '@ai-sdk/provider@1.0.10': + dependencies: + json-schema: 0.4.0 + '@ai-sdk/provider@1.0.9': dependencies: json-schema: 0.4.0 @@ -3842,6 +3889,16 @@ snapshots: react: 19.0.0-rc-45804af1-20241021 zod: 3.23.8 + '@ai-sdk/react@1.1.21(react@19.0.0-rc-45804af1-20241021)(zod@3.23.8)': + dependencies: + '@ai-sdk/provider-utils': 2.1.11(zod@3.23.8) + '@ai-sdk/ui-utils': 1.1.17(zod@3.23.8) + swr: 2.2.5(react@19.0.0-rc-45804af1-20241021) + throttleit: 2.1.0 + optionalDependencies: + react: 19.0.0-rc-45804af1-20241021 + zod: 3.23.8 + '@ai-sdk/ui-utils@1.1.16(zod@3.23.8)': dependencies: '@ai-sdk/provider': 1.0.9 @@ -3850,6 +3907,14 @@ snapshots: optionalDependencies: zod: 3.23.8 + '@ai-sdk/ui-utils@1.1.17(zod@3.23.8)': + dependencies: + '@ai-sdk/provider': 1.0.10 + '@ai-sdk/provider-utils': 2.1.11(zod@3.23.8) + zod-to-json-schema: 3.24.1(zod@3.23.8) + optionalDependencies: + zod: 3.23.8 + '@alloc/quick-lru@5.2.0': {} '@auth/core@0.37.2': @@ -4953,12 +5018,12 @@ snapshots: acorn@8.14.0: {} - ai@4.1.50(react@19.0.0-rc-45804af1-20241021)(zod@3.23.8): + ai@4.1.54(react@19.0.0-rc-45804af1-20241021)(zod@3.23.8): dependencies: - '@ai-sdk/provider': 1.0.9 - '@ai-sdk/provider-utils': 2.1.10(zod@3.23.8) - '@ai-sdk/react': 1.1.20(react@19.0.0-rc-45804af1-20241021)(zod@3.23.8) - '@ai-sdk/ui-utils': 1.1.16(zod@3.23.8) + '@ai-sdk/provider': 1.0.10 + '@ai-sdk/provider-utils': 2.1.11(zod@3.23.8) + '@ai-sdk/react': 1.1.21(react@19.0.0-rc-45804af1-20241021)(zod@3.23.8) + '@ai-sdk/ui-utils': 1.1.17(zod@3.23.8) '@opentelemetry/api': 1.9.0 jsondiffpatch: 0.6.0 optionalDependencies: