Smart Insight向けのAI プラグインの作成と実装
RAD Studio では、提供されている AIEngine と ToolsAPI.AI を基盤として、独自の AI プラグインを実装できます。
AI プラグインの作成
ToolsAPI.AI ユニットで提供されている新しいインターフェースを使用して、既存のAI プラグインを利用したり、独自のプラグインを作成したりできます。これを実現するには、以下の手順に従って標準の Delphi パッケージ(bpl)を作成してください。
- 新しいパッケージの作成
- RAD Studio を起動
- IDEメニューの「ファイル」>「新規作成」>「パッケージ - Delphi」を選択します。
- パッケージ名を入力し、「OK」をクリックします。
- 必要なユニットを追加すると、プロジェクト構造は以下のようになります。
-
MyPlugin.Main.pas
Note: このユニットを設定する際には、以下の重要なポイントを考慮してください。- ユニットには、code>ToolsAPI.AI の
- 以下の関数および手続きを適切に実装する必要があります。
-
function GetName: string;
-
function GetFeatures: TAIFeatures;
-
function GetEnabled: Boolean;
-
function GetSettingFrame(AOwner: TComponent): IOTAAIPluginSetting;
-
function AddNotifier(const ANotifier: IOTAAIServicesNotifier): Integer;
-
procedure RemoveNotifier(const AIndex: Integer);
-
- プラグインは、「Register」手続きを使用して AIEngine に自身を登録する必要があります。.
IOTAAIPlugin
インターフェースを実装するクラスを含める必要があります。 -
MyPlugin.Setting.pas
およびMyPlugin.Setting.dfm
(TFrame)Note:MyPlugin.Setting
フレームを設定する際には、以下の重要なポイントを考慮してください。:- TFrame クラスは、
ToolsAPI.AI
.のIOTAAIPluginSetting
インターフェースを慎重に実装する必要があります。 - SaveSettings および LoadSettings 手続きは必須です。
Note: 設定をスムーズかつ効率的に保存および再読み込みするために、Windows レジストリ、INI ファイル、または SQLite データベースなど、希望する方法で実装できます。 - Use the
ParameterValidations
関数を使用して、パラメータを検証し、プラグインおよび IDE の誤動作を防止します。
- TFrame クラスは、
- REST リクエストおよびレスポンスを処理するユニット。
- その他のオプションの UI または非 UI 要素。
-
- パッケージをビルドし、インストールします。
- RAD Studio を再起動します。
- 「Smart CodeInsightのオプション」ページでプラグインを見つけて、構成します。
- チャットウィンドウまたはエディタで AI コマンドに使用します。
AI バックエンドの実装
IOTAAIPlugin を実装するクラスを作成します。これは、AI プラグインが実装し、AI 機能を抽象化するために必要な公開(および IDE 向け)インターフェースです。 GetFeaturesを実装して、プラグインがサポートする TAIFeatures のセットを返します。 新しいプラグインをRegisterPlugin を介して登録し、プラグインインデックスを返します。シャットダウン時には、同じインデックスを渡して UnregisterPlugin を介して削除します。 以下は、Anthropic Claude プラグインの例です。
class procedure TClaudePlugin.ProductStartup(Sender: TObject);
begin
if Supports(BorlandIDEServices, IOTAAIEngineService, AIEngineService) then
begin
ClaudePlugin := TClaudePlugin.Create;
PluginIndex := AIEngineService.RegisterPlugin(ClaudePlugin);
end;
end;
class procedure TClaudePlugin.ProductFinish(Sender: TObject);
begin
if Assigned(AIEngineService) and (PluginIndex <> -1) then
AIEngineService.UnregisterPlugin(PluginIndex);
end;
これらのメソッドは、initialization および finalization セクションで呼び出されます。 GetSettingFrame メソッドには設定が含まれており、IOTAAIPluginSetting を返します。このプロパティは、プラグインから UI にロードする際(LoadSettings)や、UI からプラグインに移動する際(SaveSettings)に通知されます。また、GetModified からブール値を返して、変更が行われたかどうかを示すことができ、これにより、オプションダイアログを保存せずに閉じるよう促されるかどうかに影響します。