AI
Usage with the Vercel AI SDK
The @thirdweb-dev/ai-sdk-provider is a lightweight provider that lets you use thirdweb AI with the Vercel AI SDK.
It standardizes message parts, exposes wallet-aware tools (sign_transaction, sign_swap), and ships types/utilities so you can build chat UIs that execute on-chain actions from AI responses.
If you're using the Vercel AI SDK (ai / @ai-sdk/react) and want your agent to request blockchain actions safely, this provider gives you:
- A server wrapper that streams AI output and tools.
- A message schema (
ThirdwebAiMessage) compatible withuseChatfor typed tool results. - Ready-made thirdweb tools wired for transactions, swaps and monitoring.
Server side (Next.js App Router, /app/api/chat/route.ts)
Create a thirdweb ai provider instance and compatible with the Vercel AI SDK by calling createThirdwebAI with your project secret key.
Then pass a thirdwebAI.chat() instance as the model for the streamText function and configure the model context with the context option.
Continuous conversations are handled automatically. You can create a new conversation by passing a new id to the thirdwebAI.chat() function.
Client side (React, using useChat)
Use useChat<ThirdwebAiMessage>() to get typed objects from useChat(). This will give you strongly typed tool results in your UI like tool-sign_transaction, tool-sign_swap or tool-monitor_transaction.
You can render messages and reasoning steps as you normally would using your own UI or the Vercel AI Elements components.
When a transaction or swap is requested, the model will return a tool-sign_transaction or tool-sign_swap part. You can then render those tool requests in your UI, for example:
tool-sign_transaction-> render a button to execute the transaction (TransactionButtonworks well for this)tool-sign_swap-> render a button to execute the swaptool-monitor_transaction-> render a loading indicator with the transaction status (whenauto_execute_transactionsistrue)
Then on result, you can call the addToolResult function to add the tool result to the messages array and send it back to the model to continue the conversation.