@@ -11,7 +11,6 @@ import { Textarea } from "@/components/ui/textarea";
1111import { Send , Trash2 , Loader2 , Maximize2 , X } from "lucide-react" ;
1212import { useToast } from "@/hooks/use-toast" ;
1313import ReactMarkdown from "react-markdown" ;
14- import { Prism as SyntaxHighlighter } from "react-syntax-highlighter" ;
1514import {
1615 Select ,
1716 SelectContent ,
@@ -23,18 +22,13 @@ import { AIModel, APIResponseMetrics, CustomModel, Message, availableModels } fr
2322import { cn , sanitizeChatMessages } from "@/lib/utils" ;
2423import { useStore } from "@/lib/store" ;
2524import { Copy , Check } from "lucide-react" ;
26- import { oneDark } from "react-syntax-highlighter/dist/esm/styles/prism" ;
2725import { NodeResizer } from 'reactflow' ;
2826import Anthropic from '@anthropic-ai/sdk' ;
2927import { DEFAULT_AI_SETTINGS , AISettings , PRESET_ENDPOINTS } from '@/lib/constants' ;
3028import { ImageUpload } from "./ImageUpload" ;
3129import logo from "@/assets/logo.svg" ;
3230import { RAGService } from "@/lib/rag" ;
33- import { FileUpload } from "./FileUpload" ;
34- import { encode } from "gpt-tokenizer" ;
35- import { defaultLocalModels } from "@/lib/localmodels" ;
36- import { modelService } from "@/lib/localmodels" ;
37- import { ContextMenu , ContextMenuContent , ContextMenuItem , ContextMenuTrigger } from "./ui/context-menu" ;
31+ // import { ContextMenu, ContextMenuContent, ContextMenuItem, ContextMenuTrigger } from "./ui/context-menu";
3832import { RAGSelector } from "./RAGSelector" ;
3933import { CodeBlock } from "./CodeBlock" ;
4034import remarkGfm from 'remark-gfm' ;
@@ -308,6 +302,7 @@ export function ChatNode({ id, data: initialData }: NodeProps) {
308302
309303 const assistantMessage : Message = {
310304 role : "assistant" ,
305+ // @ts -ignore anthropic returns content as an array
311306 content : response . content [ 0 ] . text ,
312307 metrics : {
313308 tokensPerSecond : metrics . completion_tokens ? metrics . completion_tokens / totalTime : undefined ,
@@ -320,12 +315,22 @@ export function ChatNode({ id, data: initialData }: NodeProps) {
320315
321316
322317 } else {
318+
323319 const messageContent = imageData
324320 ? [
325321 { type : "text" , text : input } ,
326322 { type : "image_url" , image_url : { url : imageData } }
327323 ]
328324 : input ;
325+
326+ // Check if using O1 models
327+ const isO1Model = model . includes ( 'o1-mini' ) || model . includes ( 'o1' ) || model . includes ( 'o1-preview' ) ;
328+ const messagesToSend = sanitizeChatMessages ( [
329+ ...( ( ! isO1Model && enhancedSystemPrompt ) ? [ { role : 'system' , content : enhancedSystemPrompt } ] : [ ] ) ,
330+ ...allMessages . slice ( 0 , - 1 ) ,
331+ { role : "user" , content : messageContent }
332+ ] ) . filter ( m => m . content ) ;
333+
329334 response = await fetch ( `${ baseUrl } /chat/completions` , {
330335 method : "POST" ,
331336 headers : {
@@ -334,11 +339,7 @@ export function ChatNode({ id, data: initialData }: NodeProps) {
334339 } ,
335340 body : JSON . stringify ( {
336341 model,
337- messages : sanitizeChatMessages ( [
338- { role : 'system' , content : enhancedSystemPrompt } ,
339- ...allMessages . slice ( 0 , - 1 ) ,
340- { role : "user" , content : messageContent }
341- ] ) . filter ( m => m . content ) ,
342+ messages : messagesToSend ,
342343 // we shouldnt pass any of these unless they are changed from the defaults
343344 ...filterAISettings ( settings ) ,
344345 } ) ,
@@ -502,8 +503,8 @@ export function ChatNode({ id, data: initialData }: NodeProps) {
502503 key = { i }
503504 className = { `${
504505 msg . role === "user"
505- ? "bg-primary text-primary-foreground ml-4 "
506- : "bg-muted text-muted-foreground mr-4 "
506+ ? "bg-primary text-primary-foreground"
507+ : "bg-muted text-muted-foreground"
507508 } p-3 rounded-lg relative group`}
508509 >
509510 < div className = "absolute right-2 top-2 opacity-0 group-hover:opacity-100 transition-opacity" >
@@ -535,10 +536,10 @@ export function ChatNode({ id, data: initialData }: NodeProps) {
535536 h2 : ( { children } ) => < h2 className = "text-xl font-bold mb-2" > { children } </ h2 > ,
536537 h3 : ( { children } ) => < h3 className = "text-lg font-bold mb-2" > { children } </ h3 > ,
537538 h4 : ( { children } ) => < h4 className = "text-base font-bold mb-2" > { children } </ h4 > ,
538- p : ( { children } ) => < p className = "mb-4 " > { children } </ p > ,
539+ p : ( { children } ) => < p className = "mt-1 mb-2 " > { children } </ p > ,
539540 ul : ( { children } ) => < ul className = "list-disc list-inside mb-4" > { children } </ ul > ,
540541 ol : ( { children } ) => < ol className = "list-decimal list-inside mb-4" > { children } </ ol > ,
541- li : ( { children } ) => < li className = "mb-1 " > { children } </ li > ,
542+ li : ( { children } ) => < li className = "mb-2 " > { children } </ li > ,
542543 a : ( { href, children } ) => (
543544 < a href = { href } className = "text-primary hover:underline" target = "_blank" rel = "noopener noreferrer" >
544545 { children }
0 commit comments