本页还没有译文
本页 9 段还没译成简体中文,下面显示的是英文原文。Generate Text with Chat Prompt
还没翻译译自英文(ai-sdk.dev)本页 9 段都还没译
Previously, you were able to generate text and objects using either a single message prompt, a system prompt, or a combination of both of them. However, there may be times when you want to generate text based on a series of messages.
A chat completion allows you to generate text based on a series of messages. This series of messages can be any series of interactions between any number of systems, but the most popular and relatable use case has been a series of messages that represent a conversation between a user and a model.
This part of the page is interactive; see it on the original page.
Client
Let's start by creating a simple chat interface with an input field that sends the user's message and displays the conversation history. You will call the /api/chat endpoint to generate the assistant's response.
'use client';
import type { ModelMessage } from 'ai';
import { useState } from 'react';
export default function Page() {
const [input, setInput] = useState('');
const [messages, setMessages] = useState<ModelMessage[]>([]);
return (
<div>
<input
value={input}
onChange={event => {
setInput(event.target.value);
}}
onKeyDown={async event => {
if (event.key === 'Enter') {
setMessages(currentMessages => [
...currentMessages,
{ role: 'user', content: input },
]);
const response = await fetch('/api/chat', {
method: 'POST',
body: JSON.stringify({
messages: [...messages, { role: 'user', content: input }],
}),
});
const { messages: newMessages } = await response.json();
setMessages(currentMessages => [
...currentMessages,
...newMessages,
]);
}
}}
/>
{messages.map((message, index) => (
<div key={`${message.role}-${index}`}>
{typeof message.content === 'string'
? message.content
: message.content
.filter(part => part.type === 'text')
.map((part, partIndex) => (
<div key={partIndex}>{part.text}</div>
))}
</div>
))}
</div>
);
}Server
Next, let's create the /api/chat endpoint that generates the assistant's response based on the conversation history.
import { generateText, type ModelMessage } from 'ai';
export async function POST(req: Request) {
const { messages }: { messages: ModelMessage[] } = await req.json();
const { responseMessages } = await generateText({
model: 'openai/gpt-6-astra',
instructions: 'You are a helpful assistant.',
messages,
});
return Response.json({ messages: responseMessages });
}