メインコンテンツへスキップ

モデル

モデルは、大規模言語モデル (LLM) や画像生成プラットフォームなどの外部 AI サービスと対話するための標準化されたインターフェースを提供する、重要な抽象化層として機能する特化した Agent です。モデルは API 通信の複雑さをカプセル化し、開発者が一貫性のある統一された契約を通じて様々な AI プロバイダーを扱えるようにします。

AIGNE フレームワークは、ベースとなる Model クラスを定義しており、これはテキストベースの対話型 AI のための ChatModel と、画像生成タスクのための ImageModel という2つの主要な特化クラスによって拡張されます。これらの抽象化は、AIAgentImageAgent のような高レベルの Agent が構築される基盤となります。

コアコンセプト

Model 層は、異なる AI プロバイダーとの対話を合理化するために設計されています。OpenAI、Anthropic、Google Gemini のような各サービスに対してプロバイダー固有のコードを書く代わりに、標準化された ChatModel または ImageModel インターフェースと対話します。AIGNE フレームワークは、特定のモデルパッケージ (例: @aigne/openai) を通じて、この標準フォーマットとプロバイダーのネイティブ API との間の変換を処理します。

この設計には、いくつかの重要な利点があります:

  • プロバイダー非依存: 最小限のコード変更で、基盤となる AI モデルを交換できます。例えば、モデルのインスタンス化を変更するだけで、OpenAI の GPT-4 から Anthropic の Claude 3 に切り替えることができます。
  • 標準化されたデータ構造: すべてのモデルは一貫した入出力スキーマ (ChatModelInputImageModelOutput など) を使用するため、データハンドリングと Agent の構成が簡素化されます。
  • シンプル化された API: モデルは、各外部サービスの認証、リクエストフォーマット、エラーハンドリングの詳細を抽象化する、クリーンで高レベルな API を提供します。

以下の図は、ベースの AgentModel の抽象化、そしてそれらが接続する外部 AI サービスとの関係を示しています。

Models

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 やモデルプロバイダー間でのファイルハンドリングが簡素化されます。

まとめ

ChatModelImageModel の抽象化は、AIGNE フレームワークを柔軟かつプロバイダー非依存にするコアコンポーネントです。これらは、広範な外部 AI サービスと対話するための、安定した標準化されたインターフェースを提供します。

  • これらのモデルを実際に使用する方法については、AI AgentImage Agent のドキュメントを参照してください。
  • OpenAI、Anthropic、Google Gemini のような特定のプロバイダーの設定詳細については、モデル セクションのガイドを参照してください。