Skip to content

Commit 954aa73

Browse files
authored
feat (ui): extended regenerate support (#6773)
## Background Reload was slightly misleading as a name. Regenerating any assistant message should be supported. ## Summary * rename `reload` to `regenerate` on chat * support optional `messageId` param and regenerate on user msgs * rename transport `submitMessages` and related to `sendMessages` ## Verification Tested with `next` example.
1 parent d884051 commit 954aa73

File tree

22 files changed

+223
-94
lines changed

22 files changed

+223
-94
lines changed

‎.changeset/seven-fans-speak.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'ai': major
3+
---
4+
5+
feat (ui): extended regenerate support

‎examples/next-openai/app/mcp/page.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { useChat } from '@ai-sdk/react';
55
import { DefaultChatTransport } from 'ai';
66

77
export default function Chat() {
8-
const { error, status, sendMessage, messages, reload, stop } = useChat({
8+
const { error, status, sendMessage, messages, regenerate, stop } = useChat({
99
transport: new DefaultChatTransport({ api: '/mcp/chat' }),
1010
});
1111

@@ -39,7 +39,7 @@ export default function Chat() {
3939
<button
4040
type="button"
4141
className="px-4 py-2 mt-4 text-blue-500 border border-blue-500 rounded-md"
42-
onClick={() => reload()}
42+
onClick={() => regenerate()}
4343
>
4444
Retry
4545
</button>

‎examples/next-openai/app/page.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { useChat } from '@ai-sdk/react';
44
import ChatInput from '@/component/chat-input';
55

66
export default function Chat() {
7-
const { error, status, sendMessage, messages, reload, stop } = useChat();
7+
const { error, status, sendMessage, messages, regenerate, stop } = useChat();
88

99
return (
1010
<div className="flex flex-col w-full max-w-md py-24 mx-auto stretch">
@@ -38,7 +38,7 @@ export default function Chat() {
3838
<button
3939
type="button"
4040
className="px-4 py-2 mt-4 text-blue-500 border border-blue-500 rounded-md"
41-
onClick={() => reload()}
41+
onClick={() => regenerate()}
4242
>
4343
Retry
4444
</button>

‎examples/next-openai/app/use-chat-custom-sources/page.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { useChat } from '@ai-sdk/react';
55
import { DefaultChatTransport } from 'ai';
66

77
export default function Chat() {
8-
const { error, status, sendMessage, messages, reload, stop } = useChat({
8+
const { error, status, sendMessage, messages, regenerate, stop } = useChat({
99
transport: new DefaultChatTransport({
1010
api: '/api/use-chat-custom-sources',
1111
}),
@@ -60,7 +60,7 @@ export default function Chat() {
6060
<button
6161
type="button"
6262
className="px-4 py-2 mt-4 text-blue-500 border border-blue-500 rounded-md"
63-
onClick={() => reload()}
63+
onClick={() => regenerate()}
6464
>
6565
Retry
6666
</button>

‎examples/next-openai/app/use-chat-data-ui-parts/page.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ type MyMessage = UIMessage<
1616
>;
1717

1818
export default function Chat() {
19-
const { error, status, sendMessage, messages, reload, stop } =
19+
const { error, status, sendMessage, messages, regenerate, stop } =
2020
useChat<MyMessage>({
2121
transport: new DefaultChatTransport({
2222
api: '/api/use-chat-data-ui-parts',
@@ -84,7 +84,7 @@ export default function Chat() {
8484
<button
8585
type="button"
8686
className="px-4 py-2 mt-4 text-blue-500 border border-blue-500 rounded-md"
87-
onClick={() => reload()}
87+
onClick={() => regenerate()}
8888
>
8989
Retry
9090
</button>

‎examples/next-openai/app/use-chat-message-metadata/page.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import { ExampleMetadata } from '../api/use-chat-message-metadata/example-metada
88
type MyMessage = UIMessage<ExampleMetadata>;
99

1010
export default function Chat() {
11-
const { error, status, sendMessage, messages, reload, stop } =
11+
const { error, status, sendMessage, messages, regenerate, stop } =
1212
useChat<MyMessage>({
1313
transport: new DefaultChatTransport({
1414
api: '/api/use-chat-message-metadata',
@@ -60,7 +60,7 @@ export default function Chat() {
6060
<button
6161
type="button"
6262
className="px-4 py-2 mt-4 text-blue-500 border border-blue-500 rounded-md"
63-
onClick={() => reload()}
63+
onClick={() => regenerate()}
6464
>
6565
Retry
6666
</button>

‎examples/next-openai/app/use-chat-persistence-single-message/[id]/chat.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ export default function Chat({
1414
transport: new DefaultChatTransport({
1515
api: '/api/use-chat-persistence-single-message',
1616
// only send the last message to the server:
17-
prepareSubmitMessagesRequest({ messages, id }) {
17+
prepareSendMessagesRequest({ messages, id }) {
1818
return { body: { message: messages[messages.length - 1], id } };
1919
},
2020
}),

‎examples/next-openai/app/use-chat-reasoning/page.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { useChat } from '@ai-sdk/react';
55
import { DefaultChatTransport } from 'ai';
66

77
export default function Chat() {
8-
const { error, status, sendMessage, messages, reload, stop } = useChat({
8+
const { error, status, sendMessage, messages, regenerate, stop } = useChat({
99
transport: new DefaultChatTransport({ api: '/api/use-chat-reasoning' }),
1010
});
1111

@@ -66,7 +66,7 @@ export default function Chat() {
6666
<button
6767
type="button"
6868
className="px-4 py-2 mt-4 text-blue-500 border border-blue-500 rounded-md"
69-
onClick={() => reload()}
69+
onClick={() => regenerate()}
7070
>
7171
Retry
7272
</button>

‎examples/next-openai/app/use-chat-resume/chat.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ export function Chat({
1414
autoResume: boolean;
1515
initialMessages: UIMessage[];
1616
}) {
17-
const { error, status, sendMessage, messages, reload, stop } = useChat({
17+
const { error, status, sendMessage, messages, regenerate, stop } = useChat({
1818
id,
1919
messages: initialMessages,
2020
transport: new DefaultChatTransport({ api: '/api/use-chat-resume' }),
@@ -70,7 +70,7 @@ export function Chat({
7070
<button
7171
type="button"
7272
className="px-4 py-2 mt-4 text-blue-500 border border-blue-500 rounded-md"
73-
onClick={() => reload()}
73+
onClick={() => regenerate()}
7474
>
7575
Retry
7676
</button>

‎examples/next-openai/app/use-chat-sources/page.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { useChat } from '@ai-sdk/react';
55
import { DefaultChatTransport } from 'ai';
66

77
export default function Chat() {
8-
const { error, status, sendMessage, messages, reload, stop } = useChat({
8+
const { error, status, sendMessage, messages, regenerate, stop } = useChat({
99
transport: new DefaultChatTransport({ api: '/api/use-chat-sources' }),
1010
});
1111

@@ -58,7 +58,7 @@ export default function Chat() {
5858
<button
5959
type="button"
6060
className="px-4 py-2 mt-4 text-blue-500 border border-blue-500 rounded-md"
61-
onClick={() => reload()}
61+
onClick={() => regenerate()}
6262
>
6363
Retry
6464
</button>

0 commit comments

Comments
 (0)