Skip to content

Commit 0f77132

Browse files
shudingunstubbable
andauthoredMay 2, 2024··
ai/rsc: streamUI (#1482)
Co-authored-by: Hendrik Liebau <mail@hendrik-liebau.de>
1 parent f3c3ea0 commit 0f77132

File tree

8 files changed

+25
-18
lines changed

8 files changed

+25
-18
lines changed
 

‎.changeset/light-mice-ring.md

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'ai': patch
3+
---
4+
5+
ai/rsc: remove experimental\_ from streamUI

‎packages/core/rsc/index.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ export type {
33
getMutableAIState,
44
createStreamableUI,
55
createStreamableValue,
6-
experimental_streamUI,
6+
streamUI,
77
render,
88
createAI,
99
} from './rsc-server';

‎packages/core/rsc/rsc-server.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,5 @@ export {
44
createStreamableValue,
55
render,
66
} from './streamable';
7-
export { experimental_streamUI } from './stream-ui';
7+
export { streamUI } from './stream-ui';
88
export { createAI } from './provider';

‎packages/core/rsc/stream-ui/__snapshots__/stream-ui.ui.test.tsx.snap

+1-1
Original file line numberDiff line numberDiff line change
@@ -182,4 +182,4 @@ exports[`result.value > should render tool call results with generator render fu
182182
}
183183
`;
184184
185-
exports[`result.value > should show better error messages if legacy options are passed 1`] = `[Error: Tool definition in \`experimental_streamUI\` should not have \`render\` property. Use \`generate\` instead. Found in tool: tool1]`;
185+
exports[`result.value > should show better error messages if legacy options are passed 1`] = `[Error: Tool definition in \`streamUI\` should not have \`render\` property. Use \`generate\` instead. Found in tool: tool1]`;

‎packages/core/rsc/stream-ui/index.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
export { experimental_streamUI } from './stream-ui';
1+
export { streamUI } from './stream-ui';

‎packages/core/rsc/stream-ui/stream-ui.tsx

+6-6
Original file line numberDiff line numberDiff line change
@@ -68,9 +68,9 @@ const defaultTextRenderer: RenderText = ({ content }: { content: string }) =>
6868
content;
6969

7070
/**
71-
* `experimental_streamUI` is a helper function to create a streamable UI from LLMs.
71+
* `streamUI` is a helper function to create a streamable UI from LLMs.
7272
*/
73-
export async function experimental_streamUI<
73+
export async function streamUI<
7474
TOOLS extends { [name: string]: z.ZodTypeAny } = {},
7575
>({
7676
model,
@@ -103,24 +103,24 @@ export async function experimental_streamUI<
103103
// TODO: Remove these errors after the experimental phase.
104104
if (typeof model === 'string') {
105105
throw new Error(
106-
'`model` cannot be a string in `experimental_streamUI`. Use the actual model instance instead.',
106+
'`model` cannot be a string in `streamUI`. Use the actual model instance instead.',
107107
);
108108
}
109109
if ('functions' in settings) {
110110
throw new Error(
111-
'`functions` is not supported in `experimental_streamUI`, use `tools` instead.',
111+
'`functions` is not supported in `streamUI`, use `tools` instead.',
112112
);
113113
}
114114
if ('provider' in settings) {
115115
throw new Error(
116-
'`provider` is no longer needed in `experimental_streamUI`. Use `model` instead.',
116+
'`provider` is no longer needed in `streamUI`. Use `model` instead.',
117117
);
118118
}
119119
if (tools) {
120120
for (const [name, tool] of Object.entries(tools)) {
121121
if ('render' in tool) {
122122
throw new Error(
123-
'Tool definition in `experimental_streamUI` should not have `render` property. Use `generate` instead. Found in tool: ' +
123+
'Tool definition in `streamUI` should not have `render` property. Use `generate` instead. Found in tool: ' +
124124
name,
125125
);
126126
}

‎packages/core/rsc/stream-ui/stream-ui.ui.test.tsx

+6-6
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { convertArrayToReadableStream } from '../../core/test/convert-array-to-readable-stream';
22
import { MockLanguageModelV1 } from '../../core/test/mock-language-model-v1';
3-
import { experimental_streamUI } from './stream-ui';
3+
import { streamUI } from './stream-ui';
44
import { z } from 'zod';
55

66
async function recursiveResolve(val: any): Promise<any> {
@@ -84,7 +84,7 @@ const mockToolModel = new MockLanguageModelV1({
8484

8585
describe('result.value', () => {
8686
it('should render text', async () => {
87-
const result = await experimental_streamUI({
87+
const result = await streamUI({
8888
model: mockTextModel,
8989
prompt: '',
9090
});
@@ -94,7 +94,7 @@ describe('result.value', () => {
9494
});
9595

9696
it('should render text function returned ui', async () => {
97-
const result = await experimental_streamUI({
97+
const result = await streamUI({
9898
model: mockTextModel,
9999
prompt: '',
100100
text: ({ content }) => <h1>{content}</h1>,
@@ -105,7 +105,7 @@ describe('result.value', () => {
105105
});
106106

107107
it('should render tool call results', async () => {
108-
const result = await experimental_streamUI({
108+
const result = await streamUI({
109109
model: mockToolModel,
110110
prompt: '',
111111
tools: {
@@ -127,7 +127,7 @@ describe('result.value', () => {
127127
});
128128

129129
it('should render tool call results with generator render function', async () => {
130-
const result = await experimental_streamUI({
130+
const result = await streamUI({
131131
model: mockToolModel,
132132
prompt: '',
133133
tools: {
@@ -151,7 +151,7 @@ describe('result.value', () => {
151151

152152
it('should show better error messages if legacy options are passed', async () => {
153153
try {
154-
await experimental_streamUI({
154+
await streamUI({
155155
model: mockToolModel,
156156
prompt: '',
157157
tools: {

‎packages/core/rsc/streamable.tsx

+4-2
Original file line numberDiff line numberDiff line change
@@ -409,9 +409,11 @@ type Renderer<T> = (
409409

410410
/**
411411
* `render` is a helper function to create a streamable UI from some LLMs.
412-
* Currently, it only supports OpenAI's GPT models with Function Calling and Assistants Tools.
412+
* This API only supports OpenAI's GPT models with Function Calling and Assistants Tools,
413+
* please use `streamUI` for compatibility with other providers.
413414
*
414-
* @deprecated It's recommended to use the `experimental_streamUI` API for compatibility with the new core APIs.
415+
* @deprecated It's recommended to use the `streamUI` API for compatibility with AI SDK Core APIs
416+
* and future features. This API will be removed in a future release.
415417
*/
416418
export function render<
417419
TS extends {

0 commit comments

Comments
 (0)
Please sign in to comment.