コンテンツにスキップ

SDKチャット連携

専用入口 @alneas/react-ai/ai-chat がcreateAIChatTransport/toAIChatMessagesを提供します。 SDK型の利用には ai@^7.0.105 を導入してください。任意peerなのでrootやgenerative-uiの 型解決には不要です。SDKは型だけをimportし、この入口のJavaScriptもSDK未導入で読み込めます。 通常依存は @alneas/ai-core@0.1.0 で、data-engineには依存しません。

import { createAIChatTransport } from '@alneas/react-ai/ai-chat';
const transport = createAIChatTransport(adapter, { parameters: { temperature: 0.2 } });
// 利用側のSDK Chat/useChat設定へtransportを渡します。

ai-coreのAIChatAdapterを指定します。SDK呼び出し時のbodyが設定済みparametersに優先し、 chatId/trigger/messageId/abortSignalを引き継ぎます。SDK 7.0.105、React 18/19、 NodeNextのESM/CJS型検査で検証しています。CommonJSのTypeScriptファイルからSDKの型を 直接importする場合、SDK 7がESM宣言を公開するため import type { UIMessage } from 'ai' with { 'resolution-mode': 'import' }; を使います。本連携の宣言ファイルには指定済みです。他のSDKメジャーは対象外です。

履歴変換はID・role・テキスト・ファイルURL/mediaType/filename・metadata・永続data・ 完成したツール入力/結果/エラーを保持します。reasoning/source/stepと入力途中のツールは 従来のフロント変換と同様に省略します。tool-*とdynamic-toolは共通形式へ変換します。 履歴のツールエラーは{error:errorText}とisErrorを保持し、受信エラー結果のSDK表示は 固定のTool execution failedです。ツールは自動実行しません。変換結果をai-coreの 上限付きJSON・履歴検証へ渡して切り離し、非JSONや不正な識別子は拒否します。

受信イベントをSDKのstart/text/tool/data/metadata/finishチャンクへ変換します。 finish/EOF検証・サイズ上限・スナップショット・中断と後始末はai-coreが担当します。 会話ガイドも参照してください。 途中切断やfinish後のイベントは失敗です。cancelは待機中のreadにも届きますが、実際のI/Oを 停止するにはアダプターがAbortSignalへ従う必要があります。reconnectToStreamはnullで、 再開には対応しません。localStorage/IndexedDB・React hook・プロバイダーSDK・接続先・ 再試行・認可は組み込みません。ブラウザー状態・useChatへの接続・明示的なAction実行は 利用側に残します。

SDK入口をstrict型検査する場合は、開発用に @types/node@^24 と @types/json-schema@^7.0.15(任意の型peer)も導入してください。SDKを利用しない 基本入口にはいずれも不要です。