how to make useChat only sends the latest message with each request?
#6669
-
|
how to make |
Beta Was this translation helpful? Give feedback.
Answered by
patelvivekdev
Jun 9, 2025
Replies: 1 comment
-
|
You can use https://ai-sdk.dev/docs/reference/ai-sdk-ui/use-chat#experimental_prepare-request-body // chat.tsx
const {
messages,
setMessages,
handleSubmit,
input,
setInput,
append,
status,
stop,
} = useChat({
id,
initialMessages,
sendExtraMessageFields: true,
experimental_prepareRequestBody: (body) => ({
id,
message: body.messages.at(-1),
}),
})In the backend, get the latest message and append it to the messages fetched from the database. //route.ts
import {
appendClientMessage,
streamText,
} from 'ai';
import { google } from '@ai-sdk/google';
import { getMessagesByChatId } from '@/lib/db';
export async function POST(request: Request) {
const {
message,
id,
}: {
message: UIMessage
id: string
} = await request.json()
const previousMessages = await getMessagesByChatId({ id });
const messages = appendClientMessage({
messages: previousMessages as UIMessage[],
message,
});
const result = await streamText({
model: google("gemini-2.0-flash-001"),
messages: messages,
})
return result.toDataStreamResponse({ sendUsage: false });
} |
Beta Was this translation helpful? Give feedback.
0 replies
Answer selected by
a4amado
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
You can use
experimental_prepareRequestBodyinuseChathook.https://ai-sdk.dev/docs/reference/ai-sdk-ui/use-chat#experimental_prepare-request-body
In the backend, get the latest message and append it to the messages fetched from the database.