From 8f3c11e0e8097e28001fc7c7f8abebc901ade090 Mon Sep 17 00:00:00 2001 From: "dayuan.jiang" Date: Fri, 4 Apr 2025 01:26:16 +0000 Subject: [PATCH] fix: Enhance chat message display with chart handling and import new SDKs --- app/api/chat/route.ts | 3 +- components/chat-message-display.tsx | 103 ++++++++-------------------- 2 files changed, 32 insertions(+), 74 deletions(-) diff --git a/app/api/chat/route.ts b/app/api/chat/route.ts index 9afacb7..94f53e9 100644 --- a/app/api/chat/route.ts +++ b/app/api/chat/route.ts @@ -1,5 +1,6 @@ import { bedrock } from '@ai-sdk/amazon-bedrock'; - +import { openai } from '@ai-sdk/openai'; +import { google } from '@ai-sdk/google'; import { streamText } from "ai"; import { z } from "zod"; diff --git a/components/chat-message-display.tsx b/components/chat-message-display.tsx index a3a7a38..a246b8b 100644 --- a/components/chat-message-display.tsx +++ b/components/chat-message-display.tsx @@ -32,83 +32,40 @@ export function ChatMessageDisplay({ } }, [messages]); + function handleDisplayChart(xml: string) { + const currentXml = xml || ""; + const convertedXml = convertToLegalXml(currentXml); + if (convertedXml !== previousXML.current) { + previousXML.current = convertedXml; + const replacedXML = replaceNodes(chartXML, convertedXml); + onDisplayChart(replacedXML); + } + } + const renderToolInvocation = (toolInvocation: any) => { const callId = toolInvocation.toolCallId; + const { toolName, args, state } = toolInvocation; + handleDisplayChart(args?.xml); - switch (toolInvocation.toolName) { - case "display_diagram": { - switch (toolInvocation.state) { - case "partial-call": - { - const currentXml = toolInvocation.args?.xml || ""; - - console.log("toolInvocation", toolInvocation); - // Increment the step counter - - // Determine whether to show details based on a simple threshold - const convertedXml = convertToLegalXml(currentXml); - if (convertedXml !== previousXML.current) { - previousXML.current = convertedXml; - // if "/root" in convertedXml - const replacedXML = replaceNodes( - chartXML, - convertedXml - ); - onDisplayChart(replacedXML); - // if convertedXml changed - } - } - return ( -
-
- Generating diagram... -
-
- Tool: display_diagram -
- Args:{" "} - {JSON.stringify( - toolInvocation.args, - null, - 2 - )} -
-
+ return ( +
+
+
Tool: display_diagram
+
+ {state === "partial-call" ? ( +
+ ) : state === "result" ? ( +
+ Diagram generated
- ); - case "call": - return ( -
-
- Displaying diagram... -
-
- Tool: display_diagram -
- Args:{" "} - {JSON.stringify( - toolInvocation.args, - null, - 2 - )} -
-
-
- ); - case "result": - return null; - } - break; - } - default: - return null; - } + ) : null} +
+
+
+ ); }; return (