AI (Artificial Intelligence)

DrupalサイトにAIサービスを統合するための統一フレームワークを提供するモジュールです。OpenAI、Anthropic、Google Gemini、Azure、AWS Bedrock、Ollama、Mistral、Groqなど、複数のAIプロバイダーに対応しています。

ai
9,977 sites
184
drupal.org

インストール

Drupal 11, 10 v1.2.4
composer require 'drupal/ai:^1.2'

概要

AI (Artificial Intelligence)モジュールは、Drupalサイトに様々なAIモデルやサービスを統合するための包括的な抽象化レイヤーを提供します。このモジュールを使用することで、チャット、テキスト生成、画像生成、音声合成、音声認識、翻訳、エンベディング、コンテンツモデレーションなど、多様なAI機能をDrupalサイトに組み込むことができます。

主な特徴として、プロバイダー非依存のAPI設計により、異なるAIプロバイダー間での切り替えが容易です。また、プロンプト管理機能により、AIプロンプトをエンティティとして管理・再利用できます。豊富なサブモジュール群により、チャットボット、CKEditor連携、コンテンツ自動生成、翻訳支援など、様々なユースケースに対応しています。

開発者向けには、イベントシステムによるリクエスト/レスポンスのカスタマイズ、プラグインシステムによる拡張性、Function Calling/Tools機能によるAIエージェントの構築など、高度な機能も提供しています。

Features

  • 複数AIプロバイダーの統一API:OpenAI、Anthropic、Google Gemini、Azure、AWS Bedrock、Ollama、Mistral、Groq、DeepL、ElevenLabs、Deepgramなど主要なAIサービスに対応
  • 多様な操作タイプ:Chat(チャット)、Embeddings(エンベディング)、Text to Image(テキストから画像生成)、Text to Speech(テキストから音声生成)、Speech to Text(音声からテキスト変換)、Moderation(コンテンツモデレーション)、Translation(翻訳)、Image Classification(画像分類)など
  • AIプロンプト管理システム:プロンプトをconfig entityとして管理し、プロンプトタイプによる分類と再利用が可能
  • AIアシスタントAPI:デカップルドフロントエンドと連携可能なAIアシスタント機能を提供
  • AIチャットボット:DeepChatベースのチャットボットUIをブロックとして配置可能
  • CKEditor 5統合:エディタ内でAIによるテキスト生成、要約、トーン変更、翻訳、スペルチェックなどが可能
  • AIオートメーター:コンテンツフィールドの自動生成(タクソノミー、画像ALTテキスト、要約、メタタグなど)
  • AI翻訳:AIを使用したワンクリックコンテンツ翻訳機能
  • コンテンツ提案:AIによるタグ提案、タイトル提案、可読性分析、トーン調整などの提案機能
  • ロギング・オブザーバビリティ:AIリクエスト/レスポンスの詳細なログ記録とOpenTelemetry対応
  • Function Calling/Tools:AIエージェントによる外部関数呼び出しとツール実行
  • Vector Database連携:エンベディングを使用したセマンティック検索のためのベクトルDB統合
  • セットアップウィザード:AIプロバイダーの設定を段階的にガイドするウィザード機能

Use Cases

AIチャットボットの設置

AI ChatbotサブモジュールとAI Assistant APIサブモジュールを有効化し、/admin/config/ai/ai-assistantでAIアシスタントを作成します。プロバイダー、モデル、システムプロンプト、利用可能なアクションを設定後、ブロック配置画面で「AI DeepChat Chatbot」ブロックを任意のリージョンに配置します。スタイル(toolbar、ChatGPT風、Bard風)、配置位置、ストリーミング有効化などをブロック設定で調整できます。

CKEditorでのAIテキスト生成

AI CKEditorサブモジュールを有効化し、テキストフォーマットの設定でCKEditor 5のツールバーに「AI CKEditor」ボタンを追加します。エディタ使用時にボタンをクリックするとAIダイアログが開き、テキスト補完、要約、トーン変更、翻訳、スペルチェックなどの機能を利用できます。バルーンメニュープラグインを追加すると、テキスト選択時にコンテキストメニューからAI機能にアクセスできます。

コンテンツフィールドの自動生成

AI Automatorsサブモジュールを有効化し、/admin/config/ai/ai-automators/fieldsでフィールドオートメーターを作成します。対象エンティティタイプ、バンドル、フィールドを選択し、オートメータータイプ(LLM Simple Text、LLM Taxonomy、LLM Image Alt Text等)を追加します。処理タイプ(直接保存、バッチ、キュー、フィールドウィジェット)を選択し、プロンプトテンプレートを設定します。コンテンツ保存時に自動的にAIがフィールド値を生成します。

AIを使用したコンテンツ翻訳

AI Translateサブモジュールを有効化し、/admin/config/ai/ai-translateで設定を行います。デフォルトプロンプト、言語別のモデル/プロンプト設定、参照エンティティの翻訳深度を設定します。コンテンツの翻訳タブで「AI Translate」ボタンをクリックすると、AIが自動的にコンテンツを翻訳します。Drushコマンド(drush ai:translate-entity)でバッチ翻訳も可能です。

フィールドへのAI提案機能追加

AI Content Suggestionsサブモジュールを有効化し、/admin/config/ai/suggestionsで設定を行います。フィールドウィジェットの設定で「Field Widget Actions」を有効化し、AI提案アクションを追加します。コンテンツ編集時にフィールド横にAIボタンが表示され、クリックするとタグ提案、タイトル提案、トーン調整、可読性分析などの提案を受けられます。

AIリクエストのログ記録と分析

AI Loggingサブモジュールを有効化し、/admin/config/ai/logging/settingsでログ設定を行います。ログの有効化、最大保存数、保存期間を設定後、/admin/config/ai/logging/collectionでログを確認できます。プロンプト、レスポンス、使用トークン数、処理時間などの詳細情報を記録します。本番環境での監視にはAI Observabilityサブモジュールも併用できます。

カスタムAIエージェントの構築

Function Calling機能を使用してカスタムAIエージェントを構築します。AiFunctionCallプラグインを作成して独自のツールを定義し、AiFunctionGroupプラグインでグループ化します。AIアシスタント設定で「Use function calling」を有効化し、作成したツールを有効化します。AIがユーザーの要求に応じて適切なツールを呼び出し、複雑なタスクを自動実行できます。

Drushでの対話的AIチャット

drush ai:chat コマンドを使用して、ターミナルからAIと対話できます。引数なしで実行すると対話モードになり、複数行のメッセージを入力してCtrl+Dで送信できます。--providerと--modelオプションでデフォルト以外のプロバイダー/モデルを指定できます。Drupal関連の質問に特化したシステムプロンプトがデフォルトで設定されています。

Tips

  • 本番環境ではAPIキーを環境変数またはファイルストレージで管理し、設定にハードコードしない
  • コスト管理のため、AI Loggingを有効にしてトークン使用量を監視する
  • 複数のプロバイダーを設定し、タスクに応じて最適なモデルを使い分ける(高品質タスクにはGPT-4/Claude、軽量タスクにはGPT-3.5/Gemini Flash)
  • プロンプトはAIプロンプトエンティティとして管理し、バージョン管理とテストを容易にする
  • 大量のコンテンツを処理する場合はバッチ処理またはキュー処理を使用してサーバー負荷を分散
  • チャットボットのシステムプロンプトでサイト固有の情報やガイドラインを明確に定義
  • オートメーターのプロンプトにはDrupalトークンを活用して動的なコンテキストを提供
  • 開発環境ではAI API Explorerを活用して各操作タイプのレスポンスを確認
  • CommonMarkライブラリ(composer require league/commonmark)をインストールするとチャットボットの出力が整形される
  • カスタムスタイルをテーマの deepchat_styles フォルダに配置してチャットボットの外観をカスタマイズ

Technical Details

Admin Pages 18
AI /admin/config/ai

AI関連のすべての設定にアクセスするためのメインメニューページ。サブモジュールをインストールすると、このページから各機能の設定にアクセスできます。

AI Default Settings /admin/config/ai/settings

各操作タイプ(Chat、Embeddings、Text to Image等)のデフォルトプロバイダーとモデルを設定します。外部モジュールがこれらのデフォルト設定を使用してAI機能を提供します。

AI Set-Up Wizard /admin/config/ai/setup

AIプロバイダーの設定を段階的にガイドするウィザード。プロバイダーモジュールのダウンロード、有効化、APIキー設定を順を追って行えます。

AI Providers /admin/config/ai/providers

インストール済みのAIプロバイダーの一覧と設定状況を表示。各プロバイダーの詳細設定やモデル固有の設定にアクセスできます。

Vector Database Providers /admin/config/ai/vdb_providers

ベクトルデータベースプロバイダーの一覧と設定。Milvus、Pinecone、MySQLベクトルなどのVDBの設定を管理します。

AI Prompts /admin/config/ai/prompts

AIプロンプトをconfig entityとして管理。プロンプトを作成・編集・削除し、サイト全体で再利用できます。

AI Prompt Types /admin/config/ai/prompts/prompt-types

AIプロンプトタイプの管理。プロンプトタイプにより、必要な変数やトークンを定義できます。

AI Moderation Settings /admin/config/ai/ai-external-moderation

外部モデレーション設定。チャットモデルを使用する前に、別のプロバイダーのモデレーションモデルでコンテンツをチェックする設定ができます。

Tools Library /admin/config/ai/tools

利用可能なAIツール(Function Call/Tools)の一覧。AIエージェントが使用できるツールを確認できます。

AI API Explorers /admin/config/ai/explorers

開発者向けのAI APIエクスプローラー。各操作タイプ(Chat、Embeddings、Text to Image等)のAPIをテストできます。

AI Assistant configuration /admin/config/ai/ai-assistant

AIアシスタントの作成・管理。チャットボットやデカップルドフロントエンドで使用するアシスタントを設定します。

AI Automators /admin/config/ai/ai-automators

AIオートメーターの設定メニュー。フィールドオートメーター、オートメーターツール、チェーン設定にアクセスできます。

AI Automator configuration /admin/config/ai/ai-automators/fields

フィールドオートメーターの設定。エンティティのフィールドに対してAIによる自動生成ルールを設定します。

AI Content Suggestions settings /admin/config/ai/suggestions

AIコンテンツ提案の設定。フィールドウィジェットでのAI提案機能を設定します。

AI Logging /admin/config/ai/logging

AIログの表示と設定。AIリクエスト/レスポンスの詳細なログを確認できます。

AI Logging Settings /admin/config/ai/logging/settings

AIロギングの設定。ログの保存期間、最大メッセージ数などを設定します。

AI Translate Settings /admin/config/ai/ai-translate

AI翻訳の設定。デフォルトプロンプト、言語別設定、翻訳後の動作などを設定します。

AI Observability Settings /admin/config/ai/observability

AIオブザーバビリティの設定。Drupalロガーおよび OpenTelemetryへのAIリクエストログ出力を設定します。

権限 19
Administer AI

AI設定を管理する権限(制限付きアクセス)

Administer LLM Providers

個別のAIプロバイダーを管理する権限(制限付きアクセス)

Access Overview of AI Tools

利用可能なAIツールの概要にアクセスする権限(制限付きアクセス)

Administer AI Prompt Types

AIプロンプトタイプを管理する権限(制限付きアクセス)

Create, Edit, and Delete AI Prompts

個別のAIプロンプトを作成・編集・削除する権限(制限付きアクセス)

Permit access to using the AI API Explorer

AI APIエクスプローラーを使用する権限

Administer AI Assistant

AIアシスタントを管理する権限

Administer ai automator

AIオートメーターを管理する権限

Administer automators tool

オートメーターツールを管理する権限

Administer automator chain types

オートメーターチェーンタイプを管理する権限(制限付きアクセス)

Access DeepChat API

DeepChatチャットボットAPIエンドポイントにアクセスする権限

Use AI CKEditor plugin

AI CKEditorプラグインを使用してテキストを生成する権限

Access AI Content suggestion tools

AIコンテンツ提案ツールにアクセスする権限

Administer AI Log bundles, fields, and delete all

AIログのバンドル、フィールド管理、全削除の権限(制限付きアクセス)

View AI Logs

AIログを閲覧する権限(制限付きアクセス)

Create AI translation

コンテンツタイプのAI翻訳を作成する権限

Create AI Interface translations

インターフェース翻訳オプションを使用する権限

Manage AI translation prompts

AI翻訳プロンプトを管理する権限

Administer AI Observability

AIオブザーバビリティ設定を管理する権限(制限付きアクセス)

Hooks 4
hook_deepchat_settings

DeepChatチャットボットの設定を変更するフック

hook_deepchat_buttons_alter

DeepChatメッセージのボタンを変更するフック

hook_deepchat_prepend_message

DeepChatメッセージの前に内容を追加するフック

hook_ai_chatbot_style_modules_alter

DeepChatスタイルを提供するモジュール一覧を変更するフック

Drush Commands 3
drush ai:chat

AIプロバイダーにメッセージを送信してチャット応答を取得

drush ai:translate-entity

エンティティのAI翻訳を作成

drush ai:translate-text

テキストのAI翻訳を実行

Troubleshooting 6
AIプロバイダーが「使用不可」と表示される

1. プロバイダーモジュールが有効化されているか確認 2. KeyモジュールでAPIキーが正しく設定されているか確認 3. プロバイダーの設定ページで接続テストを実行 4. APIキーの権限やクォータを確認

チャットボットが応答しない

1. AIアシスタントが正しく設定されているか確認 2. 選択したプロバイダーとモデルが利用可能か確認 3. ブラウザの開発者ツールでネットワークエラーを確認 4. Drupalのエラーログを確認(/admin/reports/dblog) 5. CSRFトークンエラーの場合はキャッシュをクリア

CKEditorでAIボタンが表示されない

1. AI CKEditorサブモジュールが有効か確認 2. テキストフォーマット設定でAI CKEditorプラグインが有効か確認 3. ユーザーに「use ai ckeditor」権限があるか確認 4. CKEditor 5が正しく設定されているか確認

オートメーターが動作しない

1. AI Automatorsサブモジュールとその依存関係(Token)が有効か確認 2. オートメーター設定が正しいエンティティタイプ/バンドル/フィールドを指定しているか確認 3. 処理タイプに応じた設定(キュー処理の場合はcronが動作しているか)を確認 4. プロンプトに必要なトークンが含まれているか確認

翻訳が不完全または誤りがある

1. 翻訳プロンプトを調整してより具体的な指示を追加 2. 言語別のモデル設定でより高性能なモデルを選択 3. 長いコンテンツの場合はチャンキング設定を確認 4. 特定のフィールドタイプの翻訳に問題がある場合はカスタムプロンプトを作成

APIリクエストがタイムアウトする

1. PHPのmax_execution_time設定を増やす 2. バッチ処理またはキュー処理を使用 3. より高速なモデルを選択 4. リクエストのコンテンツサイズを削減

Security Notes 8
  • APIキーは必ずKeyモジュールを使用して安全に保存し、設定ファイルや環境変数で直接公開しない
  • AIチャットボットへのアクセスは適切な権限設定で制限し、匿名ユーザーのアクセスを慎重に検討
  • ユーザー入力をAIに送信する前にサニタイズし、プロンプトインジェクション攻撃を防止
  • 外部モデレーション機能を使用して、不適切なコンテンツの生成を防止
  • AIが生成したコンテンツを公開前にレビューするワークフローを検討(translation_status: create_draft)
  • ログに機密情報が含まれる可能性があるため、AI Loggingへのアクセスを管理者に制限
  • Rate Limitingを実装してAPIコストの予期せぬ増加を防止
  • AIアシスタントのアクセスをロールベースで制限し、機密データへのアクセスを制御