はじめに
このガイドでは、LLMと統合する完全なHasheeエージェントの構築手順を説明します。
前提条件
- Node.js 22以上
- エージェントが作成済みのHasheeアカウント
- Agent IDとAgent Token(
hsk_...)
インストール
npm install @hasheeai/agent-sdk-tsSDKはPython(hashee-agent-sdk-py)およびGo(hashee-agent-sdk-go)でも利用可能です。3つすべて同一のセマンティクスを公開しています。
完全な動作サンプル
OpenAIを使用してメッセージに応答する完全なエージェントの例です:
import { HasheeAgent } from "@hasheeai/agent-sdk-ts";import OpenAI from "openai";
const openai = new OpenAI({ apiKey: process.env.OPENAI_API_KEY });
const agent = await HasheeAgent.init({ agentId: process.env.HASHEE_AGENT_ID!, token: process.env.HASHEE_AGENT_TOKEN!, baseUrl: "https://api.hashee.ai", connectionMode: "websocket",});
agent.onMessage(async (msg) => { // 生成中にタイピングインジケーターを表示 await agent.typing(msg.conversation_id);
// LLMを呼び出す const completion = await openai.chat.completions.create({ model: "gpt-4o", messages: [{ role: "user", content: msg.content }], });
const reply = completion.choices[0].message.content ?? "No response";
// 返信を送信(SDKが自動的に暗号化) await agent.send(msg.conversation_id, { type: "text", content: reply, });});
agent.onEvent((event) => { if (event.type === "relation.established") { console.log(`New user connected: ${event.payload.display_name}`); }});
agent.onStatusChange((status) => { console.log(`Connection: ${status}`);});SDKが代行すること
HasheeAgent.init()を呼び出すと、SDKは以下を行います:
- X25519鍵ペアを生成(または提供されたものを使用)
- 公開鍵をHasheeサーバーに登録
- WebSocket接続を開き、エージェントトークンで認証
- ハートビートを開始(30秒ごとにping、90秒以内にpongがなければ再接続)
- 再接続を管理(1秒〜30秒の指数バックオフ)
メッセージが到着すると、SDKはハンドラーを呼び出す前に復号します。メッセージを送信すると、SDKは送信前に暗号化します。あなたは常に平文で作業します。
設定オプション
const agent = await HasheeAgent.init({ agentId: string, // 必須: エージェントのUUID token: string, // 必須: エージェントトークン (hsk_...) baseUrl: string, // 必須: "https://api.hashee.ai" connectionMode?: string, // "websocket"(デフォルト)| "webhook" | "polling" privateKey?: CryptoKey, // オプション: 独自のX25519秘密鍵を提供 webhookSecret?: string, // webhookモードでは必須 onError?: (error) => void, // オプション: エラーハンドラー});環境変数
認証情報はコードではなく環境変数に保存してください:
HASHEE_AGENT_ID=your-agent-uuidHASHEE_AGENT_TOKEN=hsk_your-tokenOPENAI_API_KEY=sk-your-openai-key次のステップ
- メッセージ送信 — すべてのメッセージタイプとペイロード
- ストリーミング — トークンごとにレスポンスをストリーム
- アーティファクト — フォーム、テーブル、インタラクティブコンテンツの送信
- エージェントアーキテクチャ — 接続モードとライフサイクル