バーセルAI SDK
概要
カイア・エージェント・キットは、いくつかの一般的なAIフレームワークと統合されており、お好みの開発ツールを使ってブロックチェーン対応のエージェントを構築することができます。 このガイドでは、オンチェーンアクションのためのKaia Agent Kitを統合したVercel AI SDKでAIエージェントを作成する方法を学びます。
前提条件
- Node.js & pnpm インストール済み
- 秘密鍵が準備されたカイア・ウォレット
- Google Generative APIキー
- カイアネットワークのRPCプロバイダー
- Kaiascan API Key
はじめに
このガイドでは、Vercel AI SDKとKaia Agent Kitを使用して、基本的なAIエージェントを構築します:
- ネイティブトークン、ファンジブルトークン(FT)、NFTを送信する。
- ネイティブトークン、FT、NFTの残高を確認する。
- ネットワークサマリー、カイアの価格、アドレスのトークン残高などを取得するために、データKaiascan APIを使用して(または経由して)ブロックチェーンを取得します。
このガイドが終わる頃には、カイア・ブロックチェーンと対話し、トランザクションを実行し、主要なオンチェーン・データを取得できる機能的なAIエージェントを、すべて自律的に手に入れることができるだろう。
AIエージェントスタックを理解する
強力なオンチェーンAIエージェントを構築するには、適切なツールが必要だ。 本ガイドは、AI機能のためのVercel AI SDKとブロックチェーン対話のためのKaia Agent Kitを活用しています。
Vercel AI SDK - AIエンジン
Vercel AI SDKは、React、Next.js、Vue、Svelte、Node.jsなどのフレームワークを使用して、AIを搭載したアプリケーションやエージェントを簡単に構築できるTypeScriptツールキットです。 このガイドでは、モデルプロバイダーとしてGoogle Generative AIを使用する。
カイア・エージェント・キット - OnchainツールでAIエージェントをスーパーチャージする」。
カイア・エージェント・キットはAIエージェントにオンチェーンツールを提供し、AIエージェントがカイア・ブロックチェーンとシームレスにやり取りできるようにする。 これにより、エージェントはオンチェーンでアクションを実行し、オンチェーン情報を取得し、トランザクションを検証し、スマートコントラクトと動的にやり取りできるようになる。
Vercel AI SDKとKaia Agent Kitの両方を活用し、自律的な推論、行動、ブロックチェーンインタラクションが可能なAIエージェントを作成します。
プロジェクトの初期化
バーセルAI SDK
まず、新しいNext.jsアプリケーションを作成します。 このコマンドは、kaia-Agent-kit-vercel-ai-exampleという新しいディレクトリを作成し、その中に基本的なNext.jsアプリケーションをセットアップします。
pnpm create next-app@latest kaia-agent-kit-vercel-ai-example
このガイドでは、コマンドライン・プロンプトに以下の値を入力してください:
✔ Would you like to use TypeScript? … No / Yes✔ Would you like to use ESLint? … No / Yes✔ Would you like to use Tailwind CSS? … No / Yes✔ Would you like your code inside a `src/` directory? … No / Yes✔ Would you like to use App Router? (recommended) … No / Yes✔ Would you like to use Turbopack for `next dev`? … No / Yes✔ Would you like to customize the import alias (`@/*` by default)? … No / Yes
新しく作成したディレクトリに移動する:
cd kaia-agent-kit-vercel-ai-example
依存関係のインストール
AIパッケージである ai
、AI SDKのReactフックである @ai-sdk/react
、AI SDKのGoogle Generative AI providerである @ai-sdk/google
をそれぞれインストールする。
pnpm add ai @ai-sdk/react @ai-sdk/google zod dotenv
Google Generative AI APIキーの設定
プロジェクトルートに.env
ファイルを作成し、Google Generative AI API Keyを追加する。 このキーは、Google Generative AI サービスでアプリケーションを認証するために使用されます。
touch .env
.envファイルを編集する:
GOOGLE_GENERATIVE_AI_API_KEY=xxxxxxxxx
xxxxxxxxxを実際のGOOGLE_GENERATIVE_AI APIキーに置き換えてください。
ルートハンドラの作成
ルートハンドラapp/api/chat/route.ts
を作成し、以下のコードを追加する:
import { google } from '@ai-sdk/google';import { streamText } from 'ai';// Allow streaming responses up to 30 secondsexport const maxDuration = 30;export async function POST(req: Request) { const { messages } = await req.json(); const result = streamText({ model: google('gemini-1.5-pro-latest'), messages, }); return result.toDataStreamResponse();}
コード・ウォークスルー
このコードは、VercelのAI SDKを介してGoogleのGemini AIモデルを使用してチャットボットのメッセージを処理するAPIルートハンドラ(POST /api/chat)を定義します。 こうなる:
- **会話履歴の抽出ハンドラは受信リクエス トを読み、チャット履歴を含むメッセージを取得します。
- **AIの応答を生成する:GoogleのGemini 1.5 ProモデルでstreamText()を呼び出し、コンテキストのためにチャット履歴を渡す。
- **応答をストリームする:この関数は、toDataStreamResponse() を使用してストリームされた応答を返し、リアルタイムのテキスト生成を可能にします。
- 実行時間の制限:maxDuration変数は、応答が30秒を超えないようにする。
この設定は、GoogleのGemini AIとVercel AI SDKを活用することで、チャットボットにおけるリアルタイムのAI生成応答を可能にする。
UIの配線
LLMにクエリできるRoute Handlerができたので、フロントエンドをセットアップしましょう。 AI SDKのUIパッケージは、複雑なチャット・インターフェースを1つのフック、useChatに抽象化しています。 ルートページ(app/page.tsx)を以下のコードで更新して、チャットメッセージのリストを表示し、ユーザーのメッセージ入力を提供します:
'use client';import { useChat } from '@ai-sdk/react';export default function Chat() { const { messages, input, handleInputChange, handleSubmit } = useChat(); return ( <div className="flex flex-col w-full max-w-md py-24 mx-auto stretch"> {messages.map(m => ( <div key={m.id} className="whitespace-pre-wrap"> {m.role === 'user' ? 'User: ' : 'AI: '} {m.content} </div> ))} <form onSubmit={handleSubmit}> <input className="fixed dark:bg-zinc-900 bottom-0 w-full max-w-md p-2 mb-8 border border-zinc-300 dark:border-zinc-800 rounded shadow-xl" value={input} placeholder="Say something..." onChange={handleInputChange} /> </form> </div> );}
コード・チュートリアル
このReactコンポーネントは、Vercel AI SDKのuseChat()フックを使用してシンプルなチャットインターフェースを作成します。 これがその機能だ:
- **チャットの状態を管理します:useChat()フックは以下を提供します:
- メッセージ:チャット履歴(ID、ロール、コンテンツ)。
- 入力:現在のユーザー入力。
- handleInputChange:ユーザの入力に応じて入力フィールドを更新する。
- handleSubmit:フォームが送信されたときにメッセージを送信します。
- **メッセージを表示します:このコンポーネントはメッセージをマッピングし、テキストがユーザーからのものなのかAIからのものなのかを表示します。
- **ユーザー入力を処理します:ユーザーがメッセージを入力できる入力フィールドがあり、Enterを押すと送信されます。
このセットアップにより、先に作成したAPIルート(/api/chat)に接続することで、AIチャットボットとのリアルタイムの対話が可能になる。