Completion
TheuseCompletion hook allows you to create a user interface to handle text completions in your application. It enables the streaming of text completions from your AI provider, manages the state for chat input, and updates the UI automatically as new messages are received.
The
useCompletion hook is now part of the @ai-sdk/react package.useCompletion hook in your application to generate text completions and stream them in real-time to your users.
Example
Page component, the useCompletion hook will request to your AI provider endpoint whenever the user submits a message. The completion is then streamed back in real-time and displayed in the UI.
This enables a seamless text completion experience where the user can see the AI response as soon as it is available, without having to wait for the entire response to be received.
Customized UI
useCompletion also provides ways to manage the prompt via code, show loading and error states, and update messages without being triggered by user interactions.
Loading and error states
To show a loading spinner while the chatbot is processing the user’s message, you can use theisLoading state returned by the useCompletion hook:
error state reflects the error object thrown during the fetch request. It can be used to display an error message, or show a toast notification:
Controlled input
In the initial example, we havehandleSubmit and handleInputChange callbacks that manage the input changes and form submissions. These are handy for common use cases, but you can also use uncontrolled APIs for more advanced scenarios such as form validation or customized components.
The following example demonstrates how to use more granular APIs like setInput with your custom input and submit button components:
Cancelation
It’s also a common use case to abort the response message while it’s still streaming back from the AI provider. You can do this by calling thestop function returned by the useCompletion hook.
Throttling UI Updates
This feature is currently only available for React.
useCompletion hook will trigger a render every time a new chunk is received.
You can throttle the UI updates with the experimental_throttle option.
Event Callbacks
useCompletion also provides optional event callbacks that you can use to handle different stages of the chatbot lifecycle. These callbacks can be used to trigger additional actions, such as logging, analytics, or custom UI updates.
Configure Request Options
By default, theuseCompletion hook sends a HTTP POST request to the /api/completion endpoint with the prompt as part of the request body. You can customize the request by passing additional options to the useCompletion hook:
useCompletion hook sends a POST request to the /api/completion endpoint with the specified headers, additional body fields, and credentials for that fetch request. On your server side, you can handle the request with these additional information.