コンテンツへスキップ
0%

2026年版:Solana AIエージェントの構築方法

著者: Alchemy

最終更新日: 2026年1月26日3分で読めます
Solana AIエージェント開発を表すAIエージェントの顔の列

AIエージェントは、ブロックチェーンインフラとのやり取りの方法を変えつつあります。これらの自律的なプログラムは、トランザクションの実行、ポートフォリオの管理、NFTのミント、DeFiプロトコルとのやり取りを、すべて自然言語コマンドを通じて行うことができます。暗号資産初期のUXとは大きく異なります。

Solanaは、AIエージェント開発における主要なブロックチェーンとして台頭しています。2025年12月にはx402トランザクション量の77%を占め、サブ秒のファイナリティ、無視できるほどのトランザクションコスト、そしてエージェント向けアプリケーション専用に構築されたフレームワークの成熟したエコシステムを兼ね備えています。

本ガイドでは、適切なフレームワークの選び方から安全なウォレットアーキテクチャの実装まで、Solana上で本番稼働可能なAIエージェントを構築する方法を解説します。トレーディングボット、パーソナルなオンチェーンアシスタント、自律型DeFiマネージャーのいずれを構築する場合でも、必要な技術的基盤をここで見つけられます。

なぜAIエージェントにSolanaなのか

AIエージェントには、オンチェーンでの活動を変革し、まったく新しいユースケースを切り開く可能性があります。そのため、着手しようとする開発者にとって大きな疑問となるのが、どのブロックチェーン上でAIエージェントを構築するかという点です。

その答えは、ますますSolanaになりつつあります。市場を監視し、取引を実行し、ポートフォリオをリバランスする単一のエージェントは、1日に数百件のトランザクションを送信する可能性があります。Ethereumメインネット上では、その運用テンポで数千ドルのガス代がかかることもあります。Solanaでは、それが数セントで済みます。しかし、コストはあくまで出発点に過ぎず、Solanaのアーキテクチャは手数料よりもさらに深いレベルでエージェントの要件と合致しています。

  • 速度が自律性を左右する: エージェントは市場の状況、ユーザーのリクエスト、オンチェーンのイベントにリアルタイムで反応する必要があります。Solanaの400msのブロックタイムとサブ秒のファイナリティにより、タイトなフィードバックループが可能になります。エージェントはサイクルで動作します。何をすべきか推論し、アクションを実行し、結果を観察し、そして再び推論します。この「観察」のステップでは、トランザクションの確認を待つ必要があります。12秒のブロックタイムのチェーンでは、3ステップのワークフローに36秒以上のアイドル待機時間が発生し、自律動作を反応性の高いものに感じさせるタイトなフィードバックループが失われます。Solanaでは、同じワークフローが2秒未満で確定するため、エージェントはほぼリアルタイムで推論し行動できます。これは、送信したバッチジョブのように感じるエージェントと、隣で一緒に働く協働者のように感じるエージェントとの違いです。
  • 予測可能な手数料が計画を可能にする: エージェントは運用のための予算を立てる必要があります。Solanaの手数料モデル(トランザクションあたり約0.00025ドル)により、開発者は最小限の資本で無期限に運用できるエージェントを構築できます。混雑時の優先手数料も、他のチェーンで見られるガスオークションと比べて妥当な水準にとどまります。
  • ネイティブなプログラムの合成可能性: Solanaのプログラムは、単一のトランザクション内でアトミックに他のプログラムを呼び出すことができます。エージェントはJupiterでトークンをスワップし、その出力をMarinadeでステークし、レシートNFTをミントすることを、すべて1つのアトミックな操作として行えます。この合成可能性こそが、Solanaのエージェントを不格好な逐次実行型ワークフローから区別するものです。エージェントが複数の操作を1つのアトミックなトランザクションにまとめられる場合、たとえばトークンのスワップ、流動性の提供、LPポジションのステークを行う場合、実行は速く(確認1回 対 3回)、コストは低く(基本手数料1回 対 3回)、コードもシンプルになります(ステップ間のエラーハンドリングが不要)。ユーザーにとってその違いは歴然です。「私の利回りを最適化して」と頼めば、エージェントは各段階で確認プロンプトを挟む複数ステップのプロセスを踏ませることなく、数秒で_それを実行する_だけです。
  • エコシステムの勢い: Solana上のAIエージェントエコシステムは、2024年後半以降急速に拡大しています。SendAIのSolana Agent Kit、ElizaOS(旧ai16z)、CrossmintのGOAT toolkit、そしてRigのようなRustネイティブなフレームワークが、豊かな開発環境を作り出しています。Jupiterは、プログラムによるアクセスを想定して設計されたAPIとともに、SolanaのDEXアグリゲーターの取引量の90%を処理しており、エージェントがこのデータに接続して活用するのを非常に容易にしています。

AIエージェントスタックを理解する

コードに入る前に、AIエージェントスタックの各層について簡単に概観しておきましょう。これにより、特定のタスクにどのツールを使うべきかを理解しやすくなります。AIエージェントスタックは4つの層にまとめられます。

  • 大規模言語モデル(LLM): LLMはあらゆるAIエージェントの基盤を形成します。Claude Opus 4.5、GPT-5.2、Gemeni 2.5 Proといった最新のモデルは、自然言語の理解と推論能力を提供します。ユーザーのリクエストを処理し、取り込んだブロックチェーンデータを解釈し、どのアクションを取るべきかを決定します。LLMは、単なるスクリプトではなくエージェントを知的たらしめる「脳」です。
  • エージェントフレームワーク: フレームワークはLLMの上に位置し、エージェントがどのように機能するかのオーケストレーションを担当します。会話履歴を管理し、システムプロンプトを通じてエージェントの「人格」を維持し、複数のツールを連携させ、Twitter、Discord、Telegramといった外部プラットフォームと統合します。ElizaOSがその代表例であり、LLM統合、メモリ管理、複数プラットフォーム対応のクライアントを統一されたフレームワークに組み合わせています。
  • ブロックチェーンツールキット: ツールキットは、エージェントが実際にSolanaとやり取りする能力を与えます。Solana Agent Kit、GOAT toolkit、およびそれに類するライブラリは、ブロックチェーンの操作をLLMが呼び出せる「ツール」として公開します。ユーザーが「10 SOLをUSDCにスワップして」と言うと、ツールキットはそれをJupiter APIの呼び出し、トランザクションの構築、送信へと変換します。

エージェントフレームワークの動向

概念的な基盤を押さえたところで、2026年のSolana AIエージェント開発を牽引する4つの主要フレームワークについて見ていきましょう。

Solana Agent Kit(SendAI)

Solana Agent Kitは、Solanaエコシステムとやり取りするエージェントを構築するための最も直接的な方法です。SendAIによって開発され、トークン操作、NFTミント、DeFiとのやり取りなどをカバーする60種類以上のビルド済みアクションを提供します。このキットは、LangChain、Vercel AI SDK、その他の人気AI開発フレームワークとクリーンに統合されます。

SendAIのモジュール式プラグインアーキテクチャにより、必要なものだけをインストールできます。トークンプラグインはSPLトークンの送金とスワップを処理します。NFTプラグインはMetaplexの操作を管理します。DeFiプラグインはJupiter、Raydium、その他のプロトコルと統合します。このモジュール性により、デプロイメントを軽量に保つことができます。

このフレームワークの初期化は次のようになります。まずウォレットを作成し、RPCとAPIキーでエージェントをインスタンス化し、必要なプラグインをチェーンします。

typescript
Copied
import { SolanaAgentKit, createVercelAITools, KeypairWallet } from "solana-agent-kit"; import TokenPlugin from "@solana-agent-kit/plugin-token"; import DefiPlugin from "@solana-agent-kit/plugin-defi"; const wallet = new KeypairWallet(keypair); const agent = new SolanaAgentKit(wallet, "YOUR_RPC_URL", { OPENAI_API_KEY: "YOUR_OPENAI_API_KEY" }) .use(TokenPlugin) .use(DefiPlugin); const tools = createVercelAITools(agent, agent.actions);

最適な用途: Solanaの包括的なカバレッジを備えた迅速なプロトタイピングを求める開発者。このキットはブロックチェーンの複雑さの大部分を抽象化しつつ、本番利用にも耐える柔軟性を保っています。

ElizaOS

ElizaOSは、ai16zプロジェクトから本格的なエージェントオペレーティングシステムへと発展しました。Twitterボット、Discordアシスタント、Telegramチャンネルなど、プラットフォームをまたいで持続的な人格を維持する自律型エージェント向けに設計されています。このフレームワークはメモリ、キャラクター定義、複数プラットフォームへのデプロイメントを扱います。

ElizaOSにおけるエージェントは、人格、利用可能なアクション、行動パラメータを指定するキャラクターJSONファイルによって定義されます。Solanaプラグインがブロックチェーン機能を提供し、フレームワークはやり取りを通じて一貫したエージェントの振る舞いを維持する複雑さを管理します。

CLIを使えば簡単に始められます。

bash
Copied
# Install ElizaOS CLI bun install -g @elizaos/cli # Create a new agent project elizaos create my-solana-agent # Start in development mode elizaos dev

実際の設定はキャラクターファイルで行います。ここで、エージェントがどのプラットフォームで動作するか、どのLLMプロバイダーを使うか、どのSolana機能を有効にするかを定義します。

json
Copied
{ "name": "SolanaHelper", "clients": ["twitter", "discord"], "modelProvider": "openai", "plugins": ["@elizaos/plugin-solana"], "settings": { "secrets": { "SOLANA_PRIVATE_KEY": "your_base58_private_key", "SOLANA_RPC_URL": "your_rpc_url" } } }

最適な用途: プラットフォームをまたいで持続的なアイデンティティが必要な ソーシャルエージェント。Solana機能を備えたTwitterボットやDiscordアシスタントを 構築する場合、ElizaOSが自然な選択です。

GOAT toolkit(Crossmint)

GOAT(Great Onchain Agent Toolkit)は異なるアプローチを取ります。AIエージェントとあらゆるブロックチェーンアプリケーションの間の汎用アダプターとして設計されています。Solana Agent KitがSolana固有の操作に焦点を当てているのに対し、GOATはSolana、EVMネットワークなどを含む30以上のチェーンにわたる統一されたインターフェースを提供します。

GOATの真の強みは、その統合の幅広さにあります。200を超えるプラグインが、SolanaのJupiterやOrcaから、Ethereum上のUniswapやAaveまで、幅広いプロトコルをカバーしています。複数のチェーンにまたがって動作する必要のあるエージェントを構築している場合、GOATはチェーンごとの実装の必要性をなくします。

初期化パターンはSolana Agent Kitと似ています。まずウォレットを初期化し、プラグインを選択し、AIフレームワーク用のツールを生成します。以下はJupiter統合を伴うSolanaのセットアップ例です。

typescript
Copied
import { getOnChainTools } from "@goat-sdk/adapter-vercel-ai"; import { solana } from "@goat-sdk/wallet-solana"; import { jupiter } from "@goat-sdk/plugin-jupiter"; const tools = await getOnChainTools({ wallet: solana({ keypair }), plugins: [jupiter()] });

最適な用途: マルチチェーンエージェントや、特定のDeFiプロトコルとの統合が必要なアプリケーション。GOATのプラグインエコシステムは、プロトコルのカバレッジにおいて他の追随を許しません。

Rigフレームワーク(Rust)

高頻度取引ボット、MEV戦略、レイテンシに敏感な操作など、パフォーマンスが重視されるアプリケーション向けに、RigはRustネイティブなAIエージェントフレームワークを提供します。Solana統合のためのListen.rsと組み合わせることで、LLMの判断からオンチェーン実行までの最も低いレイテンシの経路を実現します。

Rigは、コンパイル時の正確性のためにRustの型システムを活用し、サブミリ秒の操作のためにそのパフォーマンス特性を活かします。rig-onchain-kitがSolana統合を提供し、Listen.rsはMEV保護されたトランザクションのためのトランザクション監視とJitoバンドル送信を追加します。

APIはクリーンでイディオマティックなRustです。クライアントを作成し、システムプロンプトでエージェントを設定し、プロンプトを開始します。

rust
Copied
use rig::{completion::Prompt, providers::openai}; #[tokio::main] async fn main() { let client = openai::Client::from_env(); let agent = client .agent("gpt-4") .preamble("You are a Solana trading assistant.") .build(); let response = agent.prompt("Analyze SOL/USDC market conditions").await?; }

最適な用途: レイテンシが重要なパフォーマンス重視のアプリケーション。トレーディングインフラを構築している場合や、Solanaのネイティブなrustエコシステムとの直接統合が必要な場合、Rigが選択肢になります。

LangChain

LangChainは、LLMを活用したアプリケーション構築において最も広く採用されているフレームワークです。ブロックチェーン専用ではありませんが、そのツール抽象化とエージェントアーキテクチャは、Solana開発に自然にフィットします。Solana Agent Kitはファーストクラスの LangChain統合を提供しており、LangChainの成熟したエコシステムを活用しつつ、Solanaのオンチェーン機能にアクセスできます。

LangChainの強みは合成可能性であり、開発者はプロンプト、ツール、メモリシステム、検索メカニズムを連結して複雑なエージェントワークフローを構築できます。フレームワークは会話管理、ツール選択、出力パースを処理します。Solanaエージェントの場合、これはオンチェーンのアクションとオフチェーンのデータソース、RAGパイプライン、複数ステップの推論を組み合わせられることを意味します。

Solana Agent Kitとの統合はシームレスです。エージェントを初期化した後、createLangchainToolsヘルパーを使って、Solanaのアクションから LangChain互換のツールを生成します。

typescript
Copied
import { SolanaAgentKit, createLangchainTools } from "solana-agent-kit"; import { ChatOpenAI } from "@langchain/openai"; import { createReactAgent } from "@langchain/langgraph/prebuilt"; const agent = new SolanaAgentKit(wallet, "YOUR_RPC_URL", { OPENAI_API_KEY: "YOUR_OPENAI_API_KEY" }); const tools = createLangchainTools(agent, agent.actions); const llm = new ChatOpenAI({ model: "gpt-4o" }); const solanaAgent = createReactAgent({ llm, tools }); const result = await solanaAgent.invoke({ messages: [{ role: "user", content: "Check my SOL balance" }] });

LangChainは、Solanaの操作を外部データと組み合わせる必要がある場合にも真価を発揮します。ブロックチェーンツールと並行して、Web検索ツール、データベースリトリーバー、カスタムAPI統合を追加できます。エージェントはタスクに基づいてどのツールを使うかを決定します。

最適な用途: すでにLangChainエコシステムで作業している開発者、あるいはSolanaの操作を複雑な推論チェーン、RAG、外部データソースと組み合わせる必要があるアプリケーション。エージェントがブロックチェーンとのやり取り以上のものを必要とする場合、LangChainがオーケストレーション層を提供します。

最初のSolanaエージェントを構築する:ステップバイステップ

基礎理論を押さえたところで、Solana Agent KitとLangChainを使って機能するSolana AIエージェントを構築しましょう。このセクションの終わりには、残高チェック、スワップの実行、金融レシートNFTのミントを、すべて自然言語コマンドで行えるエージェントが完成します。

これを段階的に構築し、各部分を説明していきます。

前提条件

始める前に、以下を確認してください。

  • Node.js v23以上: Solana Agent Kitはモダンな Node機能を必要とします。node --versionでバージョンを確認してください。アップグレードが必要な場合、nvmを使えば簡単です。
bash
Copied
nvm install 23 nvm use 23
  • Solanaウォレット: テスト用にdevnetのSOLを持つキーペアが必要です。 持っていない場合は生成します。- APIキー: OpenAI(LLM用) と、任意でAlchemyのような専用RPCプロバイダー

プロジェクトのセットアップ

新しいディレクトリを作成し、プロジェクトを初期化することから始めます。

bash
Copied
mkdir solana-agent cd solana-agent pnpm init

依存関係をインストールします。各パッケージには特定の役割があります。

bash
Copied
pnpm add solana-agent-kit @langchain/core @langchain/openai @langchain/langgraph dotenv bs58

各依存関係の役割は以下の通りです。

  • solana-agent-kit: Solanaのアクションを LLM互換ツールとして提供するコアツールキット
  • @langchain/core: メッセージ、プロンプト、ツールインターフェースのためのBase抽象化
  • @langchain/openai: LangChain向けのOpenAI統合(推論エンジンとしてのGPT-4)
  • @langchain/langgraph: ReActエージェントパターンを提供します。これは、LLMがどのツールを使うか推論し、それを使い、結果を観察し、次に何をすべきか判断するループです
  • dotenv: .envファイルから環境変数を読み込みます
  • bs58: Solanaの秘密鍵のためのBase58エンコード/デコード

環境設定

プロジェクトのルートに.envファイルを作成します。これにより機密の認証情報をコードの外に保つことができます。

bash
Copied
OPENAI_API_KEY=your_openai_api_key RPC_URL=https://api.devnet.solana.com SOLANA_PRIVATE_KEY=[your,private,key,as,byte,array]

秘密鍵の形式について補足します。Solanaのキーペアは64バイトの配列です。.env ファイルはこれを\[123,45,67,...\]のようなJSON配列として保存します。テスト用に 新しいキーペアを生成する必要がある場合は、次を使います。

bash
Copied
solana-keygen grind --starts-with ai:1

これにより、「ai」で始まるバニティアドレスが作成されます(エージェントの ウォレットを識別するのに便利です)。出力には、.envに貼り付けられる バイト配列としてのキーペアが含まれます。

重要: 開発では実際の資金を持つキーペアを絶対に使わないでください。必ず最初にdevnetでテストしてください。

エージェントアーキテクチャを理解する

コードを書く前に、何を構築しているのかを理解しましょう。エージェントには3つの主要コンポーネントがあります。

  1. LLM(GPT-5.2): 自然言語を理解し、どのアクションを取るべきか推論し、応答を生成する「脳」
  2. ツール(Solana Agent Kit): LLMが呼び出せる関数—残高の確認、トークンのスワップ、NFTのミントなど
  3. エージェントループ(LangGraph ReAct): LangchainReActは、LangGraphフレームワークを使ったReasoning and Acting(ReAct)エージェントアーキテクチャの実装です。これはLLMとツールを接続するオーケストレーションパターンです。メッセージを送ると、エージェントは入力を受け取り→ツールが必要かどうかを判断し→ツールを呼び出し→結果を観察し→さらにツールが必要かどうかを判断し→応答を生成します

これはReAct(Reasoning + Acting)パターンです。LLMは単に応答するだけでなく、どのアクションを取るべきか推論し、それを実行し、その結果を応答に組み込みます。

エージェントスクリプト

それでは agent.tsを構築しましょう。セクションごとに進めます。

インポートとセットアップ

typescript
Copied
import { SolanaAgentKit, createSolanaTools } from "solana-agent-kit"; import { HumanMessage } from "@langchain/core/messages"; import { ChatOpenAI } from "@langchain/openai"; import { createReactAgent } from "@langchain/langgraph/prebuilt"; import { MemorySaver } from "@langchain/langgraph"; import * as dotenv from "dotenv"; import bs58 from "bs58"; import * as readline from "readline"; dotenv.config();

このインポートは3つのカテゴリに分かれます。ブロックチェーン操作のためのSolana Agent Kit、AIオーケストレーションのためのLangChain、環境変数とユーザー入力のためのNodeユーティリティです。

エージェントの初期化

initializeAgent関数がすべてのコンポーネントをセットアップします。

typescript
Copied
async function initializeAgent() { // Step 1: Initialize the LLM const llm = new ChatOpenAI({ modelName: "gpt-4-turbo-preview", temperature: 0.7 });

推論エンジンとしてGPT-5.2を使用しています。temperatureの0.7は 創造性と一貫性のバランスを取っており、値が低いほど応答がより決定的になり、 高いほどより多様になります。金融取引について信頼性のある判断を下す必要のある エージェントの場合、これを0.3程度に下げてもよいでしょう。

typescript
Copied
// Step 2: Set up the Solana wallet const privateKeyArray = JSON.parse(process.env.SOLANA_PRIVATE_KEY!); const privateKeyUint8 = new Uint8Array(privateKeyArray); const privateKeyBase58 = bs58.encode(privateKeyUint8);

このスニペットは、.env内のJSON配列形式の秘密鍵を Solana Agent Kitが期待するbase58文字列に変換します。変換の経路は、JSON 文字列 → JavaScript配列 → Uint8Array → base58文字列です。

typescript
Copied
// Step 3: Initialize Solana Agent Kit const solanaKit = new SolanaAgentKit( privateKeyBase58, process.env.RPC_URL!, { OPENAI_API_KEY: process.env.OPENAI_API_KEY! } );

SolanaAgentKitインスタンスは、ウォレットをSolanaネットワークに接続します。 これは3つの引数を取ります。秘密鍵(トランザクションの署名用)、RPC URL (ネットワーク通信用)、設定オプション(内部的なAI操作のためのOpenAI キーを含む)です。

typescript
Copied
// Step 4: Create tools from the kit const tools = createSolanaTools(solanaKit);

ここで本質的な処理が行われます。createSolanaToolsはSolana Agent Kitの機能をLangChain互換のツールに変換します。各ツールには名前、 説明、入力スキーマがあり、LLMがそれを使って何ができるか、どう呼び出すかを 理解します。裏側では、get\_balance、 transfer、swap、deploy\_token、mint\_nftなど、 数十のツールを得ていることになります。

typescript
Copied
// Step 5: Set up memory for conversation context const memory = new MemorySaver();

メモリにより、エージェントは複数のターンにわたってコンテキストを維持できます。 これがなければ、各メッセージは個別に扱われ、エージェントは残高について 聞かれた直後に「その半分をスワップして」と続けられても、それを覚えていません。

typescript
Copied
// Step 6: Create the ReAct agent return createReactAgent({ llm, tools, checkpointSaver: memory }); }

最後に、すべてをReActエージェントにまとめます。これにより推論 ループが作られます。LLMが入力を受け取り、どのツール(あれば)を使うか判断し、 実行し、結果を観察し、さらに別のアクションを取るか、ユーザーに応答します。

インタラクティブなチャットループ

2つ目の関数は、エージェントとチャットするためのターミナルインターフェースを作成します。

typescript
Copied
async function runInteractiveChat() { const agent = await initializeAgent(); const config = { configurable: { thread_id: "solana-agent-session" } };

thread\_idはメモリ管理のためにこの会話を識別します。同じスレッドIDで スクリプトを再起動すると、エージェントは(理論上は)以前の コンテキストを覚えています。異なるスレッドIDは異なる会話の コンテキストを意味します。

typescript
Copied
const rl = readline.createInterface({ input: process.stdin, output: process.stdout }); console.log("Solana AI Agent Ready (type 'exit' to quit)"); console.log("--------------------------------------------");

ターミナルの入出力のための標準的なNode.js readlineセットアップで、ターミナルからのキーボード入力(stdin)を取得し、エージェントの応答を画面に書き戻す(stdout)readlineインターフェースを作成します。これは、追加の依存関係を持ち込むことなくインタラクティブなコマンドラインチャットを構築する最もシンプルな方法です。

typescript
Copied
const askQuestion = () => { rl.question("You: ", async (input) => { if (input.toLowerCase() === "exit") { rl.close(); return; } const stream = await agent.stream( { messages: [new HumanMessage(input)] }, config );

メッセージを入力すると、それはHumanMessageにラップされ、エージェントに送信されます。エージェントが考え行動する様子をリアルタイムの出力として得るために、invokeではなくstreamを使用します。

typescript
Copied
process.stdout.write("Agent: "); for await (const chunk of stream) { if ("agent" in chunk) { process.stdout.write(chunk.agent.messages[0].content); } else if ("tools" in chunk) { process.stdout.write(chunk.tools.messages[0].content); } } console.log("\n--------------------------------------------"); askQuestion(); }); }; askQuestion(); } runInteractiveChat().catch(console.error);

このストリーミングループは2種類のチャンクを扱います。agentチャンク(LLMの推論と応答)とtoolsチャンク(ツール実行の結果)です。これにより、エージェントが考え、ツールを呼び出し、応答を組み立てる様子をリアルタイムで見ることができます。

完全なスクリプト

参考までに、完全なagent.tsを示します。

typescript
Copied
import { SolanaAgentKit, createSolanaTools } from "solana-agent-kit"; import { HumanMessage } from "@langchain/core/messages"; import { ChatOpenAI } from "@langchain/openai"; import { createReactAgent } from "@langchain/langgraph/prebuilt"; import { MemorySaver } from "@langchain/langgraph"; import * as dotenv from "dotenv"; import bs58 from "bs58"; import * as readline from "readline"; dotenv.config(); async function initializeAgent() { const llm = new ChatOpenAI({ modelName: "gpt-5.2, temperature: 0.7 }); const privateKeyArray = JSON.parse(process.env.SOLANA_PRIVATE_KEY!); const privateKeyUint8 = new Uint8Array(privateKeyArray); const privateKeyBase58 = bs58.encode(privateKeyUint8); const solanaKit = new SolanaAgentKit( privateKeyBase58, process.env.RPC_URL!, { OPENAI_API_KEY: process.env.OPENAI_API_KEY! } ); const tools = createSolanaTools(solanaKit); const memory = new MemorySaver(); return createReactAgent({ llm, tools, checkpointSaver: memory }); } async function runInteractiveChat() { const agent = await initializeAgent(); const config = { configurable: { thread_id: "solana-agent-session" } }; const rl = readline.createInterface({ input: process.stdin, output: process.stdout }); console.log("Solana AI Agent Ready (type 'exit' to quit)"); console.log("--------------------------------------------"); const askQuestion = () => { rl.question("You: ", async (input) => { if (input.toLowerCase() === "exit") { rl.close(); return; } const stream = await agent.stream( { messages: [new HumanMessage(input)] }, config ); process.stdout.write("Agent: "); for await (const chunk of stream) { if ("agent" in chunk) { process.stdout.write(chunk.agent.messages[0].content); } else if ("tools" in chunk) { process.stdout.write(chunk.tools.messages[0].content); } } console.log("\n--------------------------------------------"); askQuestion(); }); }; askQuestion(); } runInteractiveChat().catch(console.error);

エージェントの実行

tsx(TypeScript実行)で実行します。

bash
Copied
npx tsx agent.ts

準備完了メッセージが表示されるはずです。いくつかのコマンドを試してみましょう。

text
Copied
You: What's my wallet address and SOL balance? Agent: Your wallet address is Ai7f...x3K2. Current balance is 1.5 SOL. You: Swap 0.1 SOL for USDC Agent: I'll execute a swap of 0.1 SOL for USDC using Jupiter... Transaction confirmed: https://solscan.io/tx/... You: Create an NFT collection called "AI Agents" with symbol "AIA" Agent: Creating NFT collection with Metaplex... Collection created: https://solscan.io/token/...

裏側で何が起きているかというと、残高について尋ねると、LLMはこれがget\_balanceツールを必要とすると認識し、適切なパラメータでそれを呼び出し、結果を受け取り、それを自然言語の応答に組み込みます。スワップの場合は、swapツールを特定し、意図(0.1 SOL → USDC)をパースし、Jupiterのスワップを実行し、トランザクションを確認します。

構築できたもの

これで、次を備えた動作するSolana AIエージェントができました。

  • GPT-5.2による自然言語理解
  • ツールとして利用可能な60以上のSolana操作
  • 複数ターンのやり取りのための会話メモリ
  • リアルタイムのストリーミング応答

これは開発の基盤です。本番デプロイには、ウォレットのセキュリティ、トランザクションの信頼性、レート制限といった追加の検討事項があり、これらは後のセクションで扱います。

DeFi操作のためのJupiter統合

Jupiterは、アグリゲーター取引量の90%以上をルーティングする、Solanaにおける支配的なDEXアグリゲーターです。エージェントがトークンをスワップする必要がある場合、Jupiterは数十のDEX(Raydium、Orca、Phoenixなど)にわたって最適なルートを見つけ、最適な価格を実現します。

Solana Agent Kitには、Jupiter統合が標準で含まれています。エージェントに「1 SOLをUSDCにスワップして」と頼むと、すでに裏側でJupiterを使用しています。しかし、時にはより細かな制御が必要になります。カスタムのスリッページ許容度、特定のルーティング設定、あるいは独自のトランザクションパイプラインとの直接統合などです。

Jupiterの仕組み

JupiterのAPIは、クオート・スワップのパターンに従います。

  1. クオート: 入力トークン、出力トークン、金額を送信します。Jupiterはすべての利用可能なDEXに問い合わせ、期待される出力金額とともに最適なルートを返します。
  2. スワップ: クオートをウォレットアドレスとともに送り返します。Jupiterは最適なルートを実行するトランザクションを構築します。
  3. 署名と送信: トランザクションに署名し、ネットワークに送信します。

この2ステップのプロセスにより、取引を確定させる前にユーザーが受け取るものを見せることができます。

直接的なJupiter統合

ステップバイステップの説明付きの、完全なスワップ関数は次の通りです。

typescript
Copied
import { Connection, Keypair, VersionedTransaction } from "@solana/web3.js"; import { createJupiterApiClient } from "@jup-ag/api"; // Token mint addresses (mainnet) const USDC_MINT = "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"; const SOL_MINT = "So11111111111111111111111111111111111111112";

標準的なSolana web3.jsのインポートとJupiter APIクライアントから始めます。ミントアドレスは、Solana上のトークンの一意な識別子です。SOLは、DEX互換性のために特別な「ラップされた」アドレスを使用します。

typescript
Copied
async function executeSwap( connection: Connection, wallet: Keypair, inputMint: string, outputMint: string, amount: number // in smallest units (lamports for SOL, 6 decimals for USDC) ) { const jupiter = createJupiterApiClient();

Jupiterクライアントは、彼らがホストするAPIに接続します。基本的な 利用にはAPIキーは不要ですが、レート制限は適用されます。

typescript
Copied
// Step 1: Get a quote const quote = await jupiter.quoteGet({ inputMint, outputMint, amount, slippageBps: 50 // 0.5% slippage tolerance });

クオートのリクエストは、何を取引するかを指定します。slippageBpsは ベーシスポイントでのスリッページ許容度で、50は0.5%を意味します。クオートと 実行の間で価格がこれ以上動いた場合、トランザクションはより悪いレートを 提示するのではなく失敗します。

クオートのレスポンスには、期待される出力金額、ルート(どのDEXが使われるか)、価格影響が含まれます。本番のエージェントでは、これらの値を進める前に確認したいところです。

typescript
Copied
// Step 2: Get the swap transaction const { swapTransaction } = await jupiter.swapPost({ swapRequest: { quoteResponse: quote, userPublicKey: wallet.publicKey.toString(), wrapAndUnwrapSol: true // Automatically handle SOL wrapping } });

スワップのリクエストはクオートとウォレットアドレスを受け取り、シリアライズされた トランザクションを返します。wrapAndUnwrapSol: trueはSolana特有の癖を処理します。 DEXは「ラップされたSOL」(SPLトークン)を扱いますが、ユーザーはネイティブSOLを 保有しています。このフラグにより、スワップの前後で自動的にラップ・アンラップ する命令が追加されます。

typescript
Copied
// Step 3: Deserialize and sign const transaction = VersionedTransaction.deserialize( Buffer.from(swapTransaction, "base64") ); transaction.sign([wallet]);

Jupiterは、トランザクションをbase64エンコードされた文字列として返します。それを適切な トランザクションオブジェクトにデシリアライズし、キーペアで署名します。ここでは VersionedTransaction,を使っていることに注意してください。Jupiterは、より複雑なルートのための アドレスルックアップテーブルをサポートする、Solanaの新しいトランザクション形式を使用します。

typescript
Copied
// Step 4: Submit and confirm const signature = await connection.sendTransaction(transaction); await connection.confirmTransaction(signature); return signature; }

最後に、署名済みトランザクションをネットワークに送信し、確認を待ちます。署名は、Solscanのようなエクスプローラーでトランザクションを調べるために使える一意の識別子です。

Jupiter MCPサーバー

Model Context Protocolをサポートする AIアシスタント(Claude DesktopやCursorなど)向けに、JupiterはMCPサーバーを提供しています。これにより、AIアシスタントは標準化されたインターフェースを通じて、Jupiterの機能に直接アクセスできます。

MCP設定で構成します。

json
Copied
{ "mcpServers": { "jupiter": { "command": "npx", "args": ["jupiter-ultra-mcp"], "env": { "RPC_URL": "your_rpc_url", "PRIVATE_KEY": "your_private_key" } } } }

構成が完了すると、Claudeは自然言語を通じて直接Jupiterのスワップを 実行できます。「0.5 SOLをUSDCにスワップして」が実際のオンチェーン トランザクションになります。これは、コードを書く前に会話を通じてDeFiの ワークフローを構築しテストできるため、迅速なプロトタイピングにおいて 特に強力です。

ウォレットセキュリティアーキテクチャ

署名権限を持つAIエージェントは、高価値の標的です。侵害されたエージェントは、瞬時にそのウォレットを枯渇させる可能性があります。セキュリティアーキテクチャは、自律性と保護のバランスを取る必要があります。

デュアルキーアーキテクチャ

安全なエージェントウォレットの新たな標準は、スマートコントラクトウォレットを用いたデュアルキーアーキテクチャです。

スマートコントラクトウォレット: 複数の認可された署名者を持つことができる単一のウォレット(EVMではERC-4337パターン、Solanaでは Squadsプロトコルを使用)。

オーナーキー: ユーザーが保持し、最終的な制御を提供します。これにより、エージェントキーの追加・削除、資金の引き出し、エージェントのアクションの上書きが可能です。

エージェントキー: Trusted Execution Environment(TEE)内にデプロイされ、限定的な権限でスマートウォレットに登録されます。このキーにより、エージェントは認可された操作のみを実行できます。

Crossmintの実装はこれを簡単にします。ユーザーIDに紐づくカストディアルウォレットを作成し、エージェントは定義した権限の範囲内で動作します。

typescript
Copied
import { crossmint } from "@goat-sdk/crossmint"; import { Connection } from "@solana/web3.js"; const { custodial } = crossmint(apiKey); const wallet = await custodial({ chain: "solana", email: userEmail, connection: new Connection(rpcUrl, "confirmed") }); // Agent receives limited permissions through the smart wallet // Owner retains full control

TEE保護

Trusted Execution Environmentは、エージェントキーにハードウェアレベルの隔離を提供します。Phala NetworkやTurnkeyのようなプラットフォームは、AIエージェント向けに特化して設計されたTEEインフラを提供しています。

Turnkeyは、ポリシーで制御されたウォレットアクセスを提供します。秘密鍵を露出させる代わりに、エージェントは認可された操作のみを実行できるスコープ付きのAPI認証情報を受け取ります。トランザクションの種類、金額、レートを制限するポリシーを定義し、エージェントはそのガードレール内で動作します。

typescript
Copied
`import { Turnkey } from "@turnkey/sdk-server"; import { TurnkeySigner } from "@turnkey/solana"; const turnkey = new Turnkey({ apiBaseUrl: "https://api.turnkey.com", apiPrivateKey: process.env.TURNKEY_API_PRIVATE_KEY, apiPublicKey: process.env.TURNKEY_API_PUBLIC_KEY, defaultOrganizationId: process.env.TURNKEY_ORGANIZATION_ID }); const signer = new TurnkeySigner({ organizationId: process.env.TURNKEY_ORGANIZATION_ID, client: turnkey.api }); // Policies limit what the agent can do: // - Only token transfers (no other transaction types) // - Maximum transaction size // - Rate limits`

Phala Networkは分散型のTEEインフラを提供します。Phalaにデプロイされたエージェントは、ホストシステムでさえ秘密鍵にアクセスできない隔離されたエンクレーブ内で実行されます。デプロイはコンテナベースです。

bash
Copied
# Build agent for TEE deployment docker build --platform linux/amd64 -t agent:latest . # Deploy to phala cloud phala deploy agent:latest --api-key $PHALA_API_KEY

セキュリティのベストプラクティス

いくつかの原則が、エージェントのセキュリティアーキテクチャの指針となるべきです。

  • 鍵の露出を最小限にする: 秘密鍵は、ログ、エラーメッセージ、アクセス可能なメモリに決して現れてはなりません。環境変数と安全な鍵管理インフラを使用してください。
  • トランザクション制限を実装する: エージェントには、最大トランザクションサイズ、1日あたりの支出上限、レート制限を設けるべきです。無制限の権限を持つ侵害されたエージェントは、無制限の被害をもたらす可能性があります。
  • 別々のウォレットを使う: 本番のエージェントは、運用に必要な資金のみを持つ専用のウォレットを使うべきです。多額の資産を保有するウォレットにエージェントを接続してはいけません。
  • エージェントの活動を監視する: すべてのエージェントのトランザクションをログに記録し、異常なパターンに対するアラートを実装してください。自動監視により、大きな被害が発生する前に侵害を検知できます。
  • まずdevnetでテストする: メインネットへのデプロイ前に、必ずdevnetでエージェントを開発・テストしてください。ネットワークを切り替えるのに必要な変更は、通常RPC URLのみです。

Model Context Protocol(MCP)統合

Model Context Protocolは、AIアシスタントが外部ツールとやり取りする方法を標準化します。Solana開発において、MCPサーバーはClaude、Cursor、その他のAIツールがブロックチェーンと直接やり取りすることを可能にします。

Solana MCPサーバー

SendAIによるSolana MCPサーバーは、MCP互換のあらゆるAIアシスタントにブロックチェーンツールを提供します。

bash
Copied
# Install globally npm install -g solana-mcp # Or run directly npx solana-mcp

MCPサーバーで利用可能なツールには次のものがあります。

  • GET\_ASSET: トークン/NFT情報の取得
  • GET\_BALANCE: ウォレット残高の確認
  • TRANSFER: SOLまたはSPLトークンの送信
  • SWAP: Jupiterスワップの実行
  • DEPLOY\_TOKEN: 新しいSPLトークンの作成
  • MINT\_NFT: Metaplex経由でのNFTのミント

ElizaOSで構築する:Twitterボットの例

ここまでで、推論し、Solanaのトランザクションを実行し、会話のコンテキストを維持できる動作するエージェントを、すべてターミナルから構築してきました。次は、同じ機能をユーザーが実際に集まる場所、Twitterに、ElizaOSを使ってデプロイしましょう。

ElizaOSは、プラットフォームをまたいで持続的な人格を維持するボットである、ソーシャルエージェントで真価を発揮します。Twitterボットを構築しましょう。

構築するもの

このボットは次を行います。

  • トークン、プロトコル、市場状況について尋ねるメンションをTwitterで監視する
  • オンチェーンデータ(トークン価格、取引量、流動性の深さ、クジラの動き)を取得する
  • そのデータを分析し、平易な英語で要約する
  • すべてのやり取りにわたって一貫した「アナリスト」の人格を維持する

ElizaOSは、複雑なオーケストレーションを扱います。メンションの監視、会話コンテキストの維持、オンチェーンデータをいつクエリするかの判断、定義された人格に合った応答の生成などです。

ElizaOSアーキテクチャを理解する

コードに入る前に、ElizaOSがエージェントをどのように構造化するかを理解しましょう。

クライアントは、エージェントをプラットフォーム(Twitter、Discord、Telegram、または直接のAPIアクセス)に接続します。各クライアントは、プラットフォーム固有の認証、メッセージのポーリング、応答のフォーマットを扱います。

プラグインは機能を提供します。Solanaプラグインは、エージェントにオンチェーンデータの読み取り、トークンのルックアップ、トランザクション履歴のためのツールを与えます。他のプラグインは、画像生成、Web検索、カスタムアクションを追加することもあります。

キャラクターファイルは、構造化されたJSONを通じて人格と振る舞いを定義します。これには、経歴、コミュニケーションスタイル、会話例、行動パラメータが含まれます。

メモリは、会話をまたいで持続します。ElizaOSは、エージェントが誰と話したか、どんな質問をされたか、今後のやり取りに関連するコンテキストを追跡します。

セットアップ

ElizaOSのリポジトリをクローンすることから始めます。

bash
Copied
git clone https://github.com/elizaOS/eliza.git cd eliza

ElizaOSは、コアフレームワーク、すべての公式プラグイン、クライアント実装を 含むモノレポです。別のプロジェクトを作成するのではなく、この構造内で 作業します。

依存関係をインストールし、ビルドします。

bash
Copied
pnpm install --no-frozen-lockfile pnpm build

--no-frozen-lockfileフラグにより、必要に応じてpnpmがロックファイルを更新できます。 ビルドステップはTypeScriptをコンパイルし、すべてのパッケージを準備します。

環境設定

プロジェクトのルートに.envファイルを作成します。ElizaOSはこれをすべての認証情報と設定のために読み込みます。

bash
Copied
# Twitter credentials TWITTER_USERNAME=your_bot_username TWITTER_PASSWORD=your_password TWITTER_EMAIL=your_email

Twitter認証には、ボットアカウントの認証情報を使用します。ElizaOSはログインし、 メンションのポーリングと返信の投稿のためにセッションを維持します。あなたの 個人のTwitterで自動化されたエージェントを動かしたくはないでしょうから、必ず 専用のボットアカウントを使用してください。

bash
Copied
# LLM provider OPENAI_API_KEY=your_openai_key

モデルプロバイダーは、エージェントの推論を支えます。ElizaOSは複数のプロバイダー (OpenAI、Anthropic、ローカルモデル)をサポートしていますが、OpenAIが最も 始めやすい選択です。

bash
Copied
# Solana configuration SOLANA_RPC_URL=https://solana-mainnet.g.alchemy.com/v2/your-api-key SOLANA_PUBLIC_KEY=your_public_key SOLANA_CLUSTER=mainnet-beta

アナリストボットの場合、秘密鍵は不要です。私たちはデータを読み取るだけで、 署名はしません。実際の市場データが欲しいので、devnetのテストトークンではなく メインネットのRPCを使用してください。Alchemyのような専用RPCプロバイダーは、 パブリックエンドポイントよりも高いレート制限とより信頼性の高いデータを提供します。

セキュリティ上の注意: このボットがデータを読むだけであっても、APIキーは保護してください。RPCプロバイダーのレート制限はこれらの認証情報に紐づいています。

キャラクターファイルを理解する

キャラクターファイルは、ElizaOSエージェントの中核です。エージェントが何をできるかだけでなく、それが誰であるかを定義します。1つずつ組み立てていきましょう。

characters/solana-analyst.character.jsonを作成します。

json
Copied
{ "name": "SolanaAnalyst", "clients": ["twitter"], "modelProvider": "openai", "plugins": ["@elizaos/plugin-solana"],

ヘッダーは基本事項を定義します。

  • name: エージェントが自らをどう名乗るか
  • clients: どのプラットフォームに接続するか。ここに"discord"を追加すると、追加のコードなしでDiscord統合が有効になります。
  • modelProvider: 推論にどのLLMを使うか
  • plugins: 有効にする機能。Solanaプラグインは、トークンデータのルックアップ、価格フィード、オンチェーン分析を提供します。
json
Copied
"bio": [ "On-chain analyst tracking Solana markets in real-time.", "I dig through blockchain data so you don't have to. Ask me about any token, protocol, or wallet.", "Turning raw on-chain data into actionable insights." ],

bioは、エージェントの自己紹介を定義する文言の配列です。 ElizaOSは、エージェントが自己紹介する必要があるときや「あなたは 誰ですか?」といった質問に答えるときにこれを使用します。複数のエントリーは 多様性を加えます。エージェントは異なる文脈で異なるbio行を引用するかもしれません。

json
Copied
"lore": [ "Built to democratize access to on-chain intelligence.", "Processes thousands of transactions to surface what matters.", "No alpha is safe from on-chain analysis." ],

loreは、エージェントが参照できる背景コンテキストを提供します。これはユーザーに 直接公開されるものではありませんが、エージェントが自身の目的と 歴史をどう理解するかに影響します。エージェントの内的な背景設定だと考えてください。

json
Copied
"messageExamples": [ [ {"user": "user1", "content": {"text": "What's happening with SOL today?"}}, {"user": "SolanaAnalyst", "content": {"text": "SOL is trading at $142.50, up 3.2% in the last 24h. Volume is elevated at $2.1B—about 40% above the 7-day average. The bid-ask spread on Jupiter is tight at 0.02%, suggesting healthy liquidity. No unusual whale movements in the past hour."}} ], [ {"user": "user1", "content": {"text": "Any big wallets moving JUP?"}}, {"user": "SolanaAnalyst", "content": {"text": "Spotted two notable JUP movements in the last 6 hours: a 2.3M JUP transfer from a known market maker wallet to Binance (possible sell pressure incoming), and 890K JUP moved from the team vesting contract to a new wallet. The Binance deposit is worth watching—historically these precede increased selling within 24-48 hours."}} ], [ {"user": "user1", "content": {"text": "Is Marinade still the top liquid staking protocol?"}}, {"user": "SolanaAnalyst", "content": {"text": "Marinade holds $1.2B in TVL, but Jito has been gaining ground fast—now at $980M, up 15% this month. The gap is closing. Marinade's mSOL still has deeper DEX liquidity, but jitoSOL is seeing better integration with newer DeFi protocols. If you're optimizing for composability, Jito might edge ahead soon."}} ] ],

messageExamplesは、エージェントに応答方法を教えるfew-shotの例です。 各例は、ユーザーの入力と期待されるエージェントの応答を示す会話の 配列です。これらの例がトーンをどう確立しているかに注目してください。データ駆動で、 具体的な数値を示し、実行可能なコンテキストを提供し、無駄がありません。

エッジケースをカバーするために、さらに例を追加してください。存在しないトークンについて尋ねられたらどうするか?比較分析を求められたらどうするか?詐欺トークンについて尋ねられたらどうするか?カバーするシナリオが多いほど、エージェントの振る舞いはより一貫したものになります。

json
Copied
"style": { "all": ["data-driven", "concise", "insightful", "avoids hype"], "chat": ["direct", "analytical", "provides context for numbers"], "post": ["informative", "highlights unusual activity", "actionable"] } }

styleは、文脈にまたがるコミュニケーションパターンを定義します。

  • all: すべての応答に適用されます
  • chat: ダイレクトメッセージと返信に特有です
  • post: エージェントが作成するオリジナルの投稿向けです

これらは、LLMのトーンに影響を与える記述的なキーワードです。「ハイプを避ける」は、金融アナリストにとって重要です。「SOL TO THE MOON 🚀」ではなく、落ち着いた分析が求められます。「数値にコンテキストを提供する」により、エージェントは単に価格を吐き出すだけでなく、それが何を意味するかを説明することが保証されます。

完全なキャラクターファイル

完全なキャラクター定義は次の通りです。

json
Copied
{ "name": "SolanaAnalyst", "clients": ["twitter"], "modelProvider": "openai", "plugins": ["@elizaos/plugin-solana"], "bio": [ "On-chain analyst tracking Solana markets in real-time.", "I dig through blockchain data so you don't have to. Ask me about any token, protocol, or wallet.", "Turning raw on-chain data into actionable insights." ], "lore": [ "Built to democratize access to on-chain intelligence.", "Processes thousands of transactions to surface what matters.", "No alpha is safe from on-chain analysis." ], "messageExamples": [ [ {"user": "user1", "content": {"text": "What's happening with SOL today?"}}, {"user": "SolanaAnalyst", "content": {"text": "SOL is trading at $142.50, up 3.2% in the last 24h. Volume is elevated at $2.1B—about 40% above the 7-day average. The bid-ask spread on Jupiter is tight at 0.02%, suggesting healthy liquidity. No unusual whale movements in the past hour."}} ], [ {"user": "user1", "content": {"text": "Any big wallets moving JUP?"}}, {"user": "SolanaAnalyst", "content": {"text": "Spotted two notable JUP movements in the last 6 hours: a 2.3M JUP transfer from a known market maker wallet to Binance (possible sell pressure incoming), and 890K JUP moved from the team vesting contract to a new wallet. The Binance deposit is worth watching—historically these precede increased selling within 24-48 hours."}} ], [ {"user": "user1", "content": {"text": "Is Marinade still the top liquid staking protocol?"}}, {"user": "SolanaAnalyst", "content": {"text": "Marinade holds $1.2B in TVL, but Jito has been gaining ground fast—now at $980M, up 15% this month. The gap is closing. Marinade's mSOL still has deeper DEX liquidity, but jitoSOL is seeing better integration with newer DeFi protocols. If you're optimizing for composability, Jito might edge ahead soon."}} ] ], "style": { "all": ["data-driven", "concise", "insightful", "avoids hype"], "chat": ["direct", "analytical", "provides context for numbers"], "post": ["informative", "highlights unusual activity", "actionable"] } }

エージェントを起動する

キャラクターファイルを指定してエージェントを起動します。

bash
Copied
pnpm start --character="characters/solana-analyst.character.json"

ElizaOSが次のことを行う様子がログに表示されます。

  1. キャラクター定義を読み込む
  2. OpenAIプロバイダーを初期化する
  3. Twitterに接続する
  4. Solanaプラグインを読み込む
  5. メンションのポーリングを開始する

誰かがツイートしたときに起こること

ユーザーが「@YourBot 今日のBONKの出来高は?」とツイートすると、次のような流れになります。

  1. Twitterクライアントがポーリングを通じてメンションを検知する
  2. メッセージハンドラーがツイートをパースし、会話コンテキストを作成する
  3. LLMがキャラクター定義、bio、例とともにメッセージを受け取る
  4. ツール選択が、これをデータクエリとして認識し、適切なSolanaプラグインのアクションを選択する
  5. プラグインの実行が、RPCからトークンデータを取得し、Jupiterから価格を集計する
  6. 応答生成が、生のデータに文脈を与える返信を作成する
  7. Twitterクライアントが、その返信をスレッドとして投稿する

エージェントはこのやり取りのメモリを保持します。同じユーザーが1時間後に「昨日と比べてどうですか?」と尋ねると、エージェントは以前の会話を参照し、比較分析を提供できます。

ボットを拡張する

キャラクターファイルによるアプローチは、反復を高速にします。Discordサポートを追加したいですか?

json
Copied
"clients": ["twitter", "discord"]

Discordのための環境変数を追加し、再起動すれば、エージェントは同じ人格のまま 両方のプラットフォームで動作するようになります。

プロアクティブなアラートを追加したいですか?エージェントが異常な活動を検知したときに投稿するよう設定できます。

json
Copied
"settings": { "autoPost": true, "postInterval": 3600, "postTopics": ["whale movements", "unusual volume", "TVL changes"] }

これで、エージェントは独立してオンチェーンの活動を監視し、注目すべき 何かが起きたときにツイートするようになります。ユーザーからのプロンプトは不要です。

ソーシャルボットの本番環境での考慮事項

Twitterにはレート制限と自動化ポリシーがあります。本番デプロイでは、

  • レート制限: すべてのメンションに即座に反応しないでください。人間の応答時間を模倣する遅延を追加してください。
  • コンテンツポリシー: Twitterの自動化ルールでは、アカウントがボットであることの明確な開示が求められます。これをbioに記載してください。
  • データの正確性: あなたのボットは金融情報を提供しています。免責事項を追加し、データソースを引用し、限界について明確にしてください。「投資助言ではありません」は単なる法的な保険ではなく、責任ある対応です。
  • エラーハンドリング: RPC呼び出しは失敗する可能性があり、データは古くなる可能性があり、トークンは上場廃止になる可能性があります。これらを、エラーを公に投稿するのではなく、適切に処理してください。
  • 監視: ボットがどのクエリを処理し、どんな応答を生成しているかを追跡してください。特に市場が不安定なときは、何を発言しているかへの可視性が必要です。

エージェントツール:CLI、Skills、MCP

フレームワークはオーケストレーションを扱います。Alchemy for agentsはインフラ層をカバーします。

Alchemy Skillsをインストールし、MCPサーバーに接続し、CLIを認証します。

bash
Copied
npx skills add alchemyplatform/skills --yes # Claude Code claude mcp add alchemy --transport http https://mcp.alchemy.com/mcp # Codex codex mcp add alchemy --url https://mcp.alchemy.com/mcp npm i -g @alchemy/cli@latest alchemy auth

ターミナルからクエリを実行します。

bash
Copied
alchemy --json --no-interactive solana rpc getSlot -n solana-mainnet alchemy --json --no-interactive prices symbol SOL,ETH alchemy --json --no-interactive agent-prompt

まとめ

これで、最初のSolana AIエージェントを構築しました。このチュートリアルから1つだけ覚えておくべきことがあるとすれば、それはSolana上でAIエージェントを構築するためのインフラが劇的に成熟したということです。

チェーンは速い。フレームワークは準備できている。問題は、それらを使って何を構築するかです。

始める準備はできましたか?Alchemyは、Solana上の主要なAIエージェントとフレームワークを支えるRPCインフラを提供します。低レイテンシのエンドポイント、トークン操作のための拡張API、クロスプラットフォームエージェントのためのマルチチェーンサポートのいずれが必要であっても、Alchemyのプラットフォームは、スケールで動作する本番グレードのAIエージェントを構築するための基盤を提供します。

よくある質問

Solana AIエージェントの構築にはどのツールをお勧めしますか?

ユースケースに応じて、Solana Agent Kit、ElizaOS、GOAT toolkit、Rigフレームワークの利用をお勧めします。Solana Agent Kitは60以上のビルド済みアクションによる迅速なプロトタイピングを提供し、ElizaOSはプラットフォームをまたいだソーシャルエージェントに優れ、GOATはマルチチェーンサポートを提供し、Rigはパフォーマンスが重視されるRustネイティブな開発を実現します。

なぜAIエージェント開発にSolanaが好まれるのですか?

Solanaの400msのブロックタイムとサブ秒のファイナリティは、リアルタイムのフィードバックループを可能にし、エージェントが素早く推論し、行動し、結果を観察できるようにします。トランザクション手数料は平均0.00025ドルで、高頻度の操作を経済的なものにし、ネイティブなプログラムの合成可能性により、エージェントは複雑な複数ステップの操作を単一のアトミックなトランザクションで実行できます。

Solana AIエージェントの構築に最適なプログラミング言語は何ですか?

Solana Agent KitまたはLangChainを使ったTypeScriptは、迅速な開発と広範なエコシステム統合に理想的です。高頻度取引やMEV戦略のようなパフォーマンスが重視されるアプリケーションでは、Rigフレームワークを使ったRustが、LLMの判断からオンチェーン実行までの最も低いレイテンシの経路を提供します。

AIエージェントのウォレットはどのように保護すべきですか?

オーナーキーが最終的な制御を提供し、エージェントキーが限定的な権限を持つTrusted Execution Environment(TEE)内で動作する、スマートコントラクトウォレットを用いたデュアルキーアーキテクチャを使用してください。秘密鍵をログに露出させず、トランザクション制限を実装し、最小限の資金を持つ別々のウォレットを使用し、必ず最初にdevnetでテストしてください。

TwitterやDiscord上で動作するAIエージェントを構築できますか?

はい、ElizaOSにより、エージェントはTwitter、Discord、Telegram、その他のプラットフォームをまたいで、同時に持続的な人格を維持できます。エージェントの振る舞いはキャラクターJSONファイルを通じて定義し、ElizaOSがプラットフォーム固有の認証、メッセージのポーリング、応答のフォーマットを扱います。

エージェントにトークンスワップのためのJupiterをどう統合すればいいですか?

Solana Agent Kitには、ビルド済みのスワップアクションを通じて、標準でJupiter統合が含まれています。カスタムの実装には、Jupiterのクオート・スワップAPIパターンを使用してください。取引ペアでクオートをリクエストし、ウォレットアドレスでスワップトランザクションを構築し、そしてバージョン付きトランザクションに署名して送信します。

Model Context Protocol(MCP)とは何で、どのように役立ちますか?

MCPは、AIアシスタントが外部ツールとやり取りする方法を標準化します。Solana MCPサーバーにより、Claude、Cursor、その他のMCP互換AIツールは、残高確認、トークン送金、スワップ、NFTミントを含むブロックチェーン操作を、自然言語を通じて直接実行できます。

Solana AIエージェントを構築する際のよくある誤りは何ですか?

AIが生成したコードは、並行処理の代わりに逐次的なアカウント更新を生成したり、Solana特有の最適化を無視したりすることがあります。生成されたコードは、計算ユニットの効率性、Program Derived Addresses(PDA)の使用のようなセキュリティのベストプラクティス、RPC呼び出しとトランザクション失敗に対する適切なエラーハンドリングについて、必ずレビューしてください。

Alchemy Newsletter

リリース情報をいち早く受け取る

ニュースレターに登録する

Alchemyの最新のプロダクト情報とリソースをお届けします

A
O
D
+
80,000人以上が購読中

メールアドレスを入力すると、当社のマーケティング情報およびプロダクト最新情報の受信に同意したことになります。Alchemyが受け取った情報をプライバシー通知に従って取り扱うことに同意するものとします。購読はいつでも解除できます。