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

OpenRouter

OpenRouterは、OpenAI、Anthropic、Googleなど、さまざまなプロバイダーが提供する多様なAIモデルへの統一されたゲートウェイとして機能します。@aigne/open-router パッケージは、これらのモデルをAIGNEフレームワークに統合するための標準化されたインターフェ

OpenRouterは、OpenAI、Anthropic、Googleなど、さまざまなプロバイダーが提供する多様なAIモデルへの統一されたゲートウェイとして機能します。@aigne/open-router パッケージは、これらのモデルをAIGNEフレームワークに統合するための標準化されたインターフェースを提供します。これにより、開発者は最小限のコード変更で異なるモデル間を切り替え、堅牢なフォールバックメカニズムを実装できます。

このガイドでは、@aigne/open-router パッケージをインストール、設定、および利用して、複数のAIモデルを活用するプロセスを詳しく説明します。

OpenRouter

インストール

まず、@aigne/open-router@aigne/core パッケージをインストールします。以下のコマンドは、npm、yarn、pnpm を使用したインストール方法を示しています。

npm

bash
npm install @aigne/open-router @aigne/core

yarn

bash
yarn add @aigne/open-router @aigne/core

pnpm

bash
pnpm add @aigne/open-router @aigne/core

設定と使用方法

OpenRouterChatModel クラスは、OpenRouter API と対話するための主要なインターフェースです。これを使用するには、OpenRouter API キーを提供する必要があります。これは、コンストラクタで apiKey オプションを介して直接行うか、OPEN_ROUTER_API_KEY 環境変数を設定することで行えます。

基本的な例

以下は、チャットリクエストを送信するための OpenRouterChatModel の標準的な実装です。この例では、Anthropic の claude-3-opus モデルを使用しています。

Basic Usage

typescript
import { OpenRouterChatModel } from "@aigne/open-router";

const model = new OpenRouterChatModel({
  // APIキーを直接提供するか、環境変数 OPEN_ROUTER_API_KEY を使用します
  apiKey: "your-api-key", // 環境変数に設定されている場合はオプションです
  // モデルを指定します(デフォルトは'openai/gpt-4o')
  model: "anthropic/claude-3-opus",
  modelOptions: {
    temperature: 0.7,
  },
});

const result = await model.invoke({
  messages: [{ role: "user", content: "Which model are you using?" }],
});

console.log(result);

期待される出力には、テキストの応答、モデル識別子、およびトークン使用量のメトリクスが含まれます。

Output

json
{
  "text": "I am currently using the anthropic/claude-3-opus model, accessed through OpenRouter.",
  "model": "anthropic/claude-3-opus",
  "usage": {
    "inputTokens": 15,
    "outputTokens": 23
  }
}

コンストラクタのオプション

OpenRouterChatModel@aigne/openai パッケージの OpenAIChatModel を拡張しており、同じコンストラクタオプションを受け入れます。

  • apiKey string — OpenRouter APIキー。指定しない場合、クライアントは環境変数 OPEN_ROUTER_API_KEY を確認します。
  • model string (default: openai/gpt-4o) — 使用したいモデルの識別子(例:anthropic/claude-3-opus)。
  • fallbackModels string[] — プライマリモデルが失敗した場合にフォールバックとして使用するモデル識別子の配列。
  • baseURL string (default: https://openrouter.ai/api/v1) — OpenRouter API のベース URL。テストやプロキシ用に上書きできます。
  • modelOptions object — モデルプロバイダーに渡すパラメータを含むオブジェクト。例えば temperature、max_tokens、top_p など。

フォールバック付きで複数のモデルを使用する

@aigne/open-router パッケージの主要な機能の1つは、フォールバックモデルを指定する機能です。プライマリモデルのリクエストが失敗した場合、システムは自動的に fallbackModels リストの次のモデルでリクエストを再試行します。これにより、アプリケーションの信頼性が向上します。

Model Fallbacks

typescript
import { OpenRouterChatModel } from "@aigne/open-router";

const modelWithFallbacks = new OpenRouterChatModel({
  apiKey: "your-api-key",
  model: "openai/gpt-4o",
  fallbackModels: ["anthropic/claude-3-opus", "google/gemini-1.5-pro"], // フォールバックの順序
  modelOptions: {
    temperature: 0.7,
  },
});

// まず gpt-4o を試し、それが失敗した場合は claude-3-opus、次に gemini-1.5-pro を試します
const fallbackResult = await modelWithFallbacks.invoke({
  messages: [{ role: "user", content: "Which model are you using?" }],
});

console.log(fallbackResult);

ストリーミング応答

リアルタイムな対話を必要とするアプリケーションでは、ストリーミングを有効にして、応答チャンクが利用可能になったときに処理できます。invoke メソッドで streaming: true オプションを設定します。

応答ストリームは、完全なメッセージを組み立てるためにイテレートする必要があります。

Streaming Example

typescript
import { isAgentResponseDelta } from "@aigne/core";
import { OpenRouterChatModel } from "@aigne/open-router";

const model = new OpenRouterChatModel({
  apiKey: "your-api-key",
  model: "anthropic/claude-3-opus",
});

const stream = await model.invoke(
  {
    messages: [{ role: "user", content: "Which model are you using?" }],
  },
  { streaming: true },
);

let fullText = "";
const json = {};

for await (const chunk of stream) {
  if (isAgentResponseDelta(chunk)) {
    const text = chunk.delta.text?.text;
    if (text) fullText += text;
    if (chunk.delta.json) Object.assign(json, chunk.delta.json);
  }
}

console.log(fullText);
console.log(json);

最終的な fullTextjson オブジェクトには、集約された応答データが含まれます。

Output

text
I am currently using the anthropic/claude-3-opus model, accessed through OpenRouter.
{ model: 'anthropic/claude-3-opus', usage: { inputTokens: 15, outputTokens: 23 } }

まとめ

@aigne/open-router パッケージは、統一された弾力性のあるインターフェースを通じて、幅広い言語モデルへのアクセスを簡素化します。モデルのフォールバックやストリーミングなどの機能を活用することで、より堅牢で応答性の高いAIアプリケーションを構築できます。

AIGNEフレームワークにおけるモデルの基本概念に関する詳細については、モデルの概要を参照してください。