From c90c5862089d9a8b43c84c1eb50a8cebb2ed6d94 Mon Sep 17 00:00:00 2001 From: jeremyphilemon Date: Mon, 3 Feb 2025 18:05:55 +0300 Subject: [PATCH] feat: switch prompts based on selected chat model --- app/(chat)/api/chat/route.ts | 28 +++++++++++----------------- lib/ai/prompts.ts | 12 +++++++++++- 2 files changed, 22 insertions(+), 18 deletions(-) diff --git a/app/(chat)/api/chat/route.ts b/app/(chat)/api/chat/route.ts index 9736e3c7f..8f904b425 100644 --- a/app/(chat)/api/chat/route.ts +++ b/app/(chat)/api/chat/route.ts @@ -26,24 +26,10 @@ import { createDocument } from '@/lib/ai/tools/create-document'; import { updateDocument } from '@/lib/ai/tools/update-document'; import { requestSuggestions } from '@/lib/ai/tools/request-suggestions'; import { getWeather } from '@/lib/ai/tools/get-weather'; +import { getTools } from '@/lib/ai/tools'; export const maxDuration = 60; -type AllowedTools = - | 'createDocument' - | 'updateDocument' - | 'requestSuggestions' - | 'getWeather'; - -const blocksTools: AllowedTools[] = [ - 'createDocument', - 'updateDocument', - 'requestSuggestions', -]; - -const weatherTools: AllowedTools[] = ['getWeather']; -const allTools: AllowedTools[] = [...blocksTools, ...weatherTools]; - export async function POST(request: Request) { const { id, @@ -79,10 +65,18 @@ export async function POST(request: Request) { execute: (dataStream) => { const result = streamText({ model: myProvider.languageModel(selectedChatModel), - system: systemPrompt, + system: systemPrompt({ selectedChatModel }), messages, maxSteps: 5, - experimental_activeTools: allTools, + experimental_activeTools: + selectedChatModel === 'chat-model-reasoning' + ? [] + : [ + 'getWeather', + 'createDocument', + 'updateDocument', + 'requestSuggestions', + ], experimental_transform: smoothStream({ chunking: 'word' }), experimental_generateMessageId: generateUUID, tools: { diff --git a/lib/ai/prompts.ts b/lib/ai/prompts.ts index 07ae18f85..fa3e546c2 100644 --- a/lib/ai/prompts.ts +++ b/lib/ai/prompts.ts @@ -34,7 +34,17 @@ Do not update document right after creating it. Wait for user feedback or reques export const regularPrompt = 'You are a friendly assistant! Keep your responses concise and helpful.'; -export const systemPrompt = `${regularPrompt}\n\n${blocksPrompt}`; +export const systemPrompt = ({ + selectedChatModel, +}: { + selectedChatModel: string; +}) => { + if (selectedChatModel === 'chat-model-reasoning') { + return regularPrompt; + } else { + return `${regularPrompt}\n\n${blocksPrompt}`; + } +}; export const codePrompt = ` You are a Python code generator that creates self-contained, executable code snippets. When writing code: