mirror of
https://github.com/DayuanJiang/next-ai-draw-io.git
synced 2026-01-02 22:32:27 +08:00
fix: Corrected a bug where the current XML file was not attached to the user message.
This commit is contained in:
@@ -13,8 +13,9 @@ export const maxDuration = 30;
|
||||
const guide = readFileSync(resolve('./app/api/chat/xml_guide.md'), 'utf8');
|
||||
|
||||
export async function POST(req: Request) {
|
||||
const { messages } = await req.json();
|
||||
const body = await req.json();
|
||||
|
||||
const { messages, data = {} } = body;
|
||||
|
||||
// Read and escape the guide content
|
||||
const systemMessage = `
|
||||
@@ -50,12 +51,22 @@ ${guide}
|
||||
"""
|
||||
`;
|
||||
|
||||
// Add system message if only user message is provided
|
||||
const enhancedMessages = messages.length === 1
|
||||
? [{ role: "system", content: systemMessage }, ...messages]
|
||||
const lastMessage = messages[messages.length - 1];
|
||||
const formattedContent = `
|
||||
Current diagram XML:
|
||||
"""xml
|
||||
${data.xml || ''}
|
||||
"""
|
||||
User input:
|
||||
"""md
|
||||
${lastMessage.content}
|
||||
"""`;
|
||||
|
||||
: messages;
|
||||
let enhancedMessages = messages.length === 1
|
||||
? [{ role: "system", content: systemMessage }, { ...lastMessage, content: formattedContent }]
|
||||
: [...messages.slice(0, -1), { ...lastMessage, content: formattedContent }];
|
||||
|
||||
console.log(enhancedMessages);
|
||||
const result = streamText({
|
||||
// model: google("gemini-2.0-flash"),
|
||||
model: openai("gpt-4o"),
|
||||
|
||||
@@ -47,7 +47,7 @@ export default function ChatPanel({
|
||||
error,
|
||||
setInput,
|
||||
setMessages,
|
||||
data,
|
||||
append,
|
||||
} = useChat({
|
||||
maxSteps: 5,
|
||||
async onToolCall({ toolCall }) {
|
||||
@@ -70,37 +70,24 @@ export default function ChatPanel({
|
||||
if (messagesEndRef.current) {
|
||||
messagesEndRef.current.scrollIntoView({ behavior: "smooth" });
|
||||
}
|
||||
console.log("Data updated:", data);
|
||||
}, [messages]);
|
||||
|
||||
const onFormSubmit = async (e: React.FormEvent<HTMLFormElement>) => {
|
||||
e.preventDefault();
|
||||
if (input.trim() && status !== "streaming") {
|
||||
try {
|
||||
// Hide examples panel after sending a message
|
||||
|
||||
// Fetch chart data before setting input
|
||||
const chartXml = await onFetchChart();
|
||||
|
||||
// Now use the fetched data to set input
|
||||
setInput(
|
||||
`
|
||||
Current diagram XML:
|
||||
"""xml
|
||||
${chartXml}
|
||||
"""
|
||||
User input:
|
||||
"""md
|
||||
${input}
|
||||
"""
|
||||
`
|
||||
);
|
||||
handleSubmit(e, {
|
||||
data: {
|
||||
xml: chartXml,
|
||||
},
|
||||
experimental_attachments: files,
|
||||
});
|
||||
|
||||
// Clear files after submission
|
||||
setFiles(undefined);
|
||||
console.log("messages", messages);
|
||||
} catch (error) {
|
||||
console.error("Error fetching chart data:", error);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user