モデルは、大規模言語モデル (LLM) や画像生成プラットフォームなどの外部 AI サービスと対話するための標準化されたインターフェースを提供する、重要な抽象化層として機能する特化した Agent です。モデルは API 通信の複雑さをカプセル化し、開発者が一貫性のある統一された契約を通じて様々な AI プロバイダーを扱えるようにします。
AIGNE フレームワークは、ベースとなる Model クラスを定義しており、これはテキストベースの対話型 AI のための ChatModel と、画像生成タスクのための ImageModel という2つの主要な特化クラスによって拡張されます。これらの抽象化は、AIAgent や ImageAgent のような高レベルの Agent が構築される基盤となります。
コアコンセプト
Model 層は、異なる AI プロバイダーとの対話を合理化するために設計されています。OpenAI、Anthropic、Google Gemini のような各サービスに対してプロバイダー固有のコードを書く代わりに、標準化された ChatModel または ImageModel インターフェースと対話します。AIGNE フレームワークは、特定のモデルパッケージ (例: @aigne/openai) を通じて、この標準フォーマットとプロバイダーのネイティブ API との間の変換を処理します。
この設計には、いくつかの重要な利点があります:
- プロバイダー非依存: 最小限のコード変更で、基盤となる AI モデルを交換できます。例えば、モデルのインスタンス化を変更するだけで、OpenAI の GPT-4 から Anthropic の Claude 3 に切り替えることができます。
- 標準化されたデータ構造: すべてのモデルは一貫した入出力スキーマ (
ChatModelInput、ImageModelOutputなど) を使用するため、データハンドリングと Agent の構成が簡素化されます。 - シンプル化された API: モデルは、各外部サービスの認証、リクエストフォーマット、エラーハンドリングの詳細を抽象化する、クリーンで高レベルな API を提供します。
以下の図は、ベースの Agent、Model の抽象化、そしてそれらが接続する外部 AI サービスとの関係を示しています。

ChatModel 抽象化
ChatModel は、大規模言語モデル (LLM) とのインターフェースのために設計された抽象クラスです。マルチターンの対話、ツールの使用、構造化されたデータ抽出など、対話型のインタラクションを構造化された方法で処理する手段を提供します。
ChatModelInput
ChatModelInput インターフェースは、言語モデルに送信されるリクエストのデータ構造を定義します。これにより、メッセージ、ツール、その他の設定がどのように渡されるかが標準化されます。
- messages
ChatModelInputMessage[](required) — 会話履歴と現在のプロンプトを形成するメッセージオブジェクトの配列です。 - responseFormat
ChatModelInputResponseFormat— モデルの出力に望ましい形式を指定します。例えば、プレーンテキストや提供されたスキーマに基づく構造化 JSON などです。 - tools
ChatModelInputTool[]— モデルがアクションの実行や情報の取得のために呼び出しをリクエストできる、利用可能なツール (関数) のリストです。 - toolChoice
ChatModelInputToolChoice— モデルが提供されたツールをどのように使用するかを制御します。"auto"、"none"、"required" に設定したり、特定の関数呼び出しを強制したりすることができます。 - modelOptions
ChatModelInputOptions— temperature、topP、parallelToolCalls など、プロバイダー固有のオプションを格納するコンテナです。 - outputFileType
'local' | 'file'— ファイルベースの出力について、ローカルファイルパス (local) または base64 エンコードされた文字列 (file) のどちらの形式を望むかを指定します。
ChatModelInputMessage
messages 配列内の各メッセージは、定義された構造に従います。
- role
'system' | 'user' | 'agent' | 'tool'(required) — メッセージ送信者の役割です。system は指示を提供し、user はユーザー入力を表し、agent はモデルの応答用、tool はツール呼び出しの出力用です。 - content
string | UnionContent[]— メッセージのコンテンツです。単純な文字列、またはテキストと画像 (FileUnionContent) を組み合わせたマルチモーダルコンテンツ用の配列にすることができます。 - toolCalls
object[]— agent メッセージ内で使用され、モデルによって開始された1つ以上のツール呼び出しを示します。 - toolCallId
string— tool メッセージ内で使用され、ツールの出力を対応する toolCalls リクエストにリンクさせます。
ChatModelOutput
ChatModelOutput インターフェースは、言語モデルから受け取った応答を標準化します。
- text
string— モデルの応答のテキストベースのコンテンツです。 - json
object— responseFormat が "json_schema" に設定されている場合にモデルから返される JSON オブジェクトです。 - toolCalls
ChatModelOutputToolCall[]— モデルによって行われたツール呼び出しリクエストの配列です。各オブジェクトには関数名と引数が含まれます。 - usage
ChatModelOutputUsage— inputTokens と outputTokens を含む、トークン使用統計を格納したオブジェクトです。 - model
string— 応答を生成したモデルの識別子です。 - files
FileUnionContent[]— モデルによって生成されたファイルの配列です (もしあれば)。
ImageModel 抽象化
ImageModel は、画像生成モデルとのインターフェースのための抽象クラスです。テキストプロンプトに基づいて画像を作成または編集するための、簡素化された契約を提供します。
ImageModelInput
ImageModelInput インターフェースは、画像生成タスクのリクエスト構造を定義します。
- prompt
string(required) — 希望する画像のテキストによる説明です。 - image
FileUnionContent[]— オプションの入力画像の配列で、画像編集やバリエーション作成などのタスクに使用されます。 - n
number— 生成する画像の数です。デフォルトは 1 です。 - outputFileType
'local' | 'file'— 出力画像をローカルファイル (local) として保存するか、base64 エンコードされた文字列 (file) として返すかを指定します。 - modelOptions
ImageModelInputOptions— 画像の寸法、品質、スタイルプリセットなど、プロバイダー固有のオプションを格納するコンテナです。
ImageModelOutput
ImageModelOutput インターフェースは、画像生成サービスからの応答構造を定義します。
- images
FileUnionContent[](required) — 生成された画像の配列です。各要素のフォーマットは、入力で指定された outputFileType に依存します。 - usage
ChatModelOutputUsage— 使用統計を含むオブジェクトで、トークン数やその他のプロバイダー固有のメトリクスが含まれる場合があります。 - model
string— 画像を生成したモデルの識別子です。
ファイルコンテンツタイプ
モデルは FileUnionContent 型を通じて、マルチモーダルタスクのための様々な形式のファイル入力を処理します。この判別共用体により、ファイルを3つの方法で表現できます:
LocalContent: ローカルファイルシステムに保存されているファイルを表します。type: "local"path: ファイルへの絶対パス。
UrlContent: 公開 URL 経由でアクセス可能なファイルを表します。type: "url"url: ファイルの URL。
FileContent: base64 エンコードされた文字列としてのファイルを表します。type: "file"data: ファイルの base64 エンコードされたコンテンツ。
Model ベースクラスには transformFileType メソッドが含まれており、必要に応じてこれらのフォーマット間で自動的に変換できるため、異なる Agent やモデルプロバイダー間でのファイルハンドリングが簡素化されます。
まとめ
ChatModel と ImageModel の抽象化は、AIGNE フレームワークを柔軟かつプロバイダー非依存にするコアコンポーネントです。これらは、広範な外部 AI サービスと対話するための、安定した標準化されたインターフェースを提供します。
- これらのモデルを実際に使用する方法については、AI Agent と Image Agent のドキュメントを参照してください。
- OpenAI、Anthropic、Google Gemini のような特定のプロバイダーの設定詳細については、モデル セクションのガイドを参照してください。