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

xAI

このガイドでは、AIGNE フレームワーク内で xAI の言語モデル、具体的には Grok を設定して使用するための手順を説明します。必要なパッケージのインストール、API キーの設定、モデルのインスタンス化、そして標準呼び出しとストリーミング呼び出しの両方の例について解説します。

@aigne/xai パッケージは xAI API への直接的なインターフェースとして機能し、開発者は AIGNE フレームワークが提供する標準化された ChatModel インターフェースを通じて、Grok の機能をアプリケーションに統合できます。

xAI

インストール

まず、お好みのパッケージマネージャーを使用して @aigne/xai パッケージと AIGNE コアライブラリをインストールします。

npm

```bash npm install @aigne/xai @aigne/core ```

yarn

```bash yarn add @aigne/xai @aigne/core ```

pnpm

```bash pnpm add @aigne/xai @aigne/core ```

設定

XAIChatModel クラスは、xAI API とやり取りするための主要なインターフェースです。これを使用するには、xAI API キーで設定する必要があります。

API キーは 2 つの方法で提供できます:

  1. コンストラクタで直接指定する

    apiKey プロパティ経由でキーを渡します。

  2. 環境変数

    XAI_API_KEY 環境変数を設定します。モデルはそれを自動的に検出して使用します。

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

XAIChatModel のインスタンスを作成する際に、以下のオプションを指定できます:

  • apiKey string — xAI API キーです。提供されない場合、システムは XAI_API_KEY 環境変数をフォールバックとして使用します。
  • model string (default: grok-2-latest) — チャット補完に使用する特定の xAI モデルです。デフォルトは grok-2-latest です。
  • baseURL string (default: https://api.x.ai/v1) — xAI API のベース URL です。これは事前設定されており、通常は変更する必要はありません。
  • modelOptions object — temperature や topP など、xAI API に渡す追加のオプションです。

基本的な使用方法

以下の例では、XAIChatModel をインスタンス化し、それを呼び出してレスポンスを取得する方法を示します。

Basic Invocation

typescript
import { XAIChatModel } from "@aigne/xai";

const model = new XAIChatModel({
  // API キーを直接指定するか、環境変数 XAI_API_KEY を使用します
  apiKey: "your-api-key", // 環境変数に設定されている場合はオプションです
  // モデルを指定します (デフォルトは 'grok-2-latest')
  model: "grok-2-latest",
  modelOptions: {
    temperature: 0.8,
  },
});

const result = await model.invoke({
  messages: [{ role: "user", content: "Tell me about yourself" }],
});

console.log(result);

レスポンスの例

invoke メソッドは、モデルのレスポンスと使用状況のメタデータを含むオブジェクトを返します。

Response Object

json
{
  "text": "I'm Grok, an AI assistant from X.AI. I'm here to assist with a touch of humor and wit!",
  "model": "grok-2-latest",
  "usage": {
    "inputTokens": 6,
    "outputTokens": 17
  }
}

ストリーミングレスポンス

リアルタイムアプリケーション向けに、モデルからのレスポンスをストリーミングできます。invoke メソッドで streaming: true オプションを設定すると、データが利用可能になり次第、チャンクで受信できます。

Streaming Example

typescript
import { isAgentResponseDelta } from "@aigne/core";
import { XAIChatModel } from "@aigne/xai";

const model = new XAIChatModel({
  apiKey: "your-api-key",
  model: "grok-2-latest",
});

const stream = await model.invoke(
  {
    messages: [{ role: "user", content: "Tell me about yourself" }],
  },
  { 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);

ストリーミング出力

ストリームを反復処理する際に、テキストの差分を蓄積して完全なメッセージを形成し、JSON 部分をマージして最終的なメタデータを取得できます。

Text Output

text
I'm Grok, an AI assistant from X.AI. I'm here to assist with a touch of humor and wit!

JSON Output

json
{
  "model": "grok-2-latest",
  "usage": {
    "inputTokens": 6,
    "outputTokens": 17
  }
}

これで @aigne/xai パッケージの使用に関するガイドは終わりです。利用可能な他のモデルに関する詳細については、モデル概要 を参照してください。