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');
|
const guide = readFileSync(resolve('./app/api/chat/xml_guide.md'), 'utf8');
|
||||||
|
|
||||||
export async function POST(req: Request) {
|
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
|
// Read and escape the guide content
|
||||||
const systemMessage = `
|
const systemMessage = `
|
||||||
@@ -50,12 +51,22 @@ ${guide}
|
|||||||
"""
|
"""
|
||||||
`;
|
`;
|
||||||
|
|
||||||
// Add system message if only user message is provided
|
const lastMessage = messages[messages.length - 1];
|
||||||
const enhancedMessages = messages.length === 1
|
const formattedContent = `
|
||||||
? [{ role: "system", content: systemMessage }, ...messages]
|
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({
|
const result = streamText({
|
||||||
// model: google("gemini-2.0-flash"),
|
// model: google("gemini-2.0-flash"),
|
||||||
model: openai("gpt-4o"),
|
model: openai("gpt-4o"),
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ export default function ChatPanel({
|
|||||||
error,
|
error,
|
||||||
setInput,
|
setInput,
|
||||||
setMessages,
|
setMessages,
|
||||||
data,
|
append,
|
||||||
} = useChat({
|
} = useChat({
|
||||||
maxSteps: 5,
|
maxSteps: 5,
|
||||||
async onToolCall({ toolCall }) {
|
async onToolCall({ toolCall }) {
|
||||||
@@ -70,37 +70,24 @@ export default function ChatPanel({
|
|||||||
if (messagesEndRef.current) {
|
if (messagesEndRef.current) {
|
||||||
messagesEndRef.current.scrollIntoView({ behavior: "smooth" });
|
messagesEndRef.current.scrollIntoView({ behavior: "smooth" });
|
||||||
}
|
}
|
||||||
console.log("Data updated:", data);
|
|
||||||
}, [messages]);
|
}, [messages]);
|
||||||
|
|
||||||
const onFormSubmit = async (e: React.FormEvent<HTMLFormElement>) => {
|
const onFormSubmit = async (e: React.FormEvent<HTMLFormElement>) => {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
if (input.trim() && status !== "streaming") {
|
if (input.trim() && status !== "streaming") {
|
||||||
try {
|
try {
|
||||||
// Hide examples panel after sending a message
|
|
||||||
|
|
||||||
// Fetch chart data before setting input
|
// Fetch chart data before setting input
|
||||||
const chartXml = await onFetchChart();
|
const chartXml = await onFetchChart();
|
||||||
|
|
||||||
// Now use the fetched data to set input
|
|
||||||
setInput(
|
|
||||||
`
|
|
||||||
Current diagram XML:
|
|
||||||
"""xml
|
|
||||||
${chartXml}
|
|
||||||
"""
|
|
||||||
User input:
|
|
||||||
"""md
|
|
||||||
${input}
|
|
||||||
"""
|
|
||||||
`
|
|
||||||
);
|
|
||||||
handleSubmit(e, {
|
handleSubmit(e, {
|
||||||
|
data: {
|
||||||
|
xml: chartXml,
|
||||||
|
},
|
||||||
experimental_attachments: files,
|
experimental_attachments: files,
|
||||||
});
|
});
|
||||||
|
|
||||||
// Clear files after submission
|
// Clear files after submission
|
||||||
setFiles(undefined);
|
setFiles(undefined);
|
||||||
|
console.log("messages", messages);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error("Error fetching chart data:", error);
|
console.error("Error fetching chart data:", error);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user