AI Interpolator
ソーステキストフィールドからAIベースの処理を使用してEntityフィールドを自動的に入力するためのフレームワークモジュールです。
ai_interpolator
概要
AI Interpolatorは、AIサービスを使用してDrupal Entityフィールドを自動的に入力するための強力なPluginベースのフレームワークを提供します。このモジュールはソースフィールド(通常はテキストフィールド)からコンテンツを読み取り、AIを使用してさまざまなタイプのターゲットフィールドに適切な値を生成します。
このモジュール自体にはAIプロバイダーは含まれていません。他のモジュールが特定のAI実装(OpenAI、Claudeなど)で拡張できるフレームワークとして機能します。このアーキテクチャにより、サイトビルダーは一貫したフィールド設定インターフェースを維持しながら、好みのAIサービスを選択できます。
主なアーキテクチャ機能:
- Pluginベースのフィールドルール: AIを使用してさまざまなフィールドタイプをどのように入力するかを定義するための拡張可能なシステム
- 複数の処理方法: 直接同期処理、JavaScriptバッチ処理、またはCronを介したQueueベースの非同期処理をサポート
- イベントシステム: さまざまな段階で補間動作をインターセプトおよび変更するための包括的なイベント
- Tokenサポート: 動的なプロンプト生成のためのDrupal Tokenを使用した高度なモード
- ステータス追跡: 補間の進行状況(pending、processing、failed、finished)を追跡するための自動ステータスフィールド
Features
- さまざまなフィールドタイプ(テキスト、Taxonomy、ブール値、数値、Entity Reference、画像、リンク、オプションなど)のAIフィールドルールを定義するためのPluginベースのアーキテクチャ
- 3つの処理モード:Direct(同期)、Batch(JavaScriptベース)、Queue/Cron(非同期バックグラウンド処理)
- 補間が有効なEntityの自動ステータスフィールド追跡(pending、processing、failed、finished)
- Baseモード:Twigスタイルのプレースホルダーを使用したカスタマイズ可能なプロンプトでソースフィールドのコンテンツを使用
- 高度なTokenモード:Entityデータに基づく動的なプロンプト生成のためのDrupal Tokenモジュールとの統合
- 補間されたフィールド間の依存関係を処理するための重み付けベースのフィールド処理順序
- ソースコンテンツが変更されたときにフィールドを再補間する編集モードオプション
- SimpleTextChat、ComplexTextChat、Taxonomy、Boolean、Numeric、Options、Lists、Link、EntityReference、TextToImage、ImageToImageなど、一般的なフィールドタイプルール用の20の事前構築ベースクラス
- 設定、フィールド処理、ルールの可視性、値の変更、詳細情報をカスタマイズするための5つのイベントを備えたイベント駆動アーキテクチャ
- 一般的な操作のためのヘルパーサービス:JSON解析、LLMパラメータ、ファイル処理、画像スタイル前処理、テキスト結合
- カスタム非AIルールを作成するためのサンプルPlugin実装を含む
Use Cases
自動Taxonomyタグ付け
記事本文の内容に基づいてTaxonomy Term Referenceフィールドを自動的に入力するように設定します。AIがテキストを分析し、設定されたVocabularyから適切なタグを選択または作成します。新しいTermの自動作成(有効時)、テキスト操作(小文字、大文字、最初の文字を大文字)、重複を避けるための類似タグマッチングをサポートします。
コンテンツの要約
長文の本文フィールドからエグゼクティブサマリーを自動的に生成する要約テキストフィールドを設定します。「以下のコンテンツを2-3文で要約してください:{{ context }}」のようなプロンプトでSimpleTextChatベースクラスを使用します。コンテンツ保存時に要約が生成されます。
感情分析
感情オプション(ポジティブ、ネガティブ、ニュートラル)を持つリストフィールドを追加し、OptionsベースクラスでAI Interpolatorを設定して、本文テキストに基づいてコンテンツの感情を自動的に分析および分類します。
AI生成アイキャッチ画像
TextToImageベースクラス(AI画像生成サブモジュールが必要)を使用して、記事のタイトルや説明に基づいてアイキャッチ画像を自動的に生成します。AIがコンテンツのテーマに合った画像を作成します。
自動SEOメタフィールド
メインコンテンツから自動生成されるメタタイトルと説明の文字列フィールドを設定します。文字数制限内でSEO最適化されたテキストを作成するよう指示するプロンプトを使用します。
Entity Referenceの入力
ソースコンテンツに基づいて関連Entityを自動的に作成およびリンクします。EntityReferenceベースクラスはコンテンツを解析し、AIによって入力された複数のフィールドを持つ子Entityを生成できます。
ブールフィールドの分類
AI分析に基づいてコンテンツを自動的に分類するブールフィールドを追加します。例えば、AIがコンテンツ分析から判断する「個人データを含む」や「時間的制約あり」フラグなどです。
数値スコアリング
Numericベースクラスを使用して、AIがコンテンツに数値スコアや評価を割り当てるようにします。min/maxフィールド設定を尊重し、数値出力を検証します。
リンク抽出
Linkベースクラスを使用して、コンテンツ内で言及されているURLを自動的に抽出して保存します。AIがリンクとそのコンテキストを識別し、URIとタイトルでリンクフィールドを入力します。
非同期一括処理
AI処理時間がタイムアウトを引き起こす可能性がある大量のコンテンツをインポートする場合にQueue/Cron処理モードを使用します。コンテンツは「pending」ステータスですぐに保存され、AIフィールドはCronを介してバックグラウンドで入力されます。
Tips
- 少なくとも1つのAIプロバイダーサブモジュールを必ずインストールしてください - ベースのAI Interpolatorモジュールはフレームワークを提供しますが、実際のAI機能は含まれていません
- 遅いAI APIを使用する本番サイトでは、コンテンツ編集中のHTTPタイムアウトを避けるためにQueue/Cron処理モードを使用してください
- 複数のフィールドが互いの補間値に依存する場合は、適切な重みを設定してください - 重みの低いものが最初に処理されます
- 「変更時に編集」は慎重に有効にしてください。ソースフィールドが変更されるたびに保存のたびにフィールドが再処理されます
- 参照されたEntityや複雑なEntity関係からのデータをプロンプトに含める必要がある場合は、Advanced Tokenモードを使用してください
- ステータスフィールド(ai_interpolator_status)は、任意のフィールドで補間が有効になるとEntityバンドルに自動的に追加されます - 処理ステータスのフィルタリングや表示に使用してください
- 本番環境で有効にする前に、代表的なコンテンツでプロンプトを十分にテストしてください - AI応答はプロンプトの言い回しによって大きく異なる場合があります
- 不要なAPIコールを避けるために、単純な変換(StripTagsの例のような)用にAIなしのカスタムルールを作成することを検討してください
- AIからJSON応答を期待するルールを作成する場合は、GeneralHelperサービスのparseJson()メソッドを使用してください
- ai_interpolator.change_valueイベントをサブスクライブして、追加の検証やフォーマットなど、保存前にAI応答を後処理してください
Technical Details
Admin Pages 1
/admin/structure/types/manage/{bundle}/fields/{field_config}
AI Interpolatorは、フィールドタイプに適用可能なルールが存在する場合、フィールド設定フォームに設定を追加します。設定は「Enable AI Interpolator」チェックボックスとして表示され、チェックすると追加の設定オプションが表示されます。
Hooks 2
hook_ai_interpolator_field_rule_alter
検出されたフィールドルールPlugin定義を変更します
hook_ai_interpolator_process_alter
検出された処理ルールPlugin定義を変更します