Vercelは、Webアプリケーションのデプロイとホスティングを行うためのプラットフォームです。Vercelを通じて、開発者は、Webサイトやサーバーレス関数を容易に管理できます。

セットアップ

SambaNova プロバイダー はsambanova-ai-provider モジュールを通じて利用可能です。以下のいずれかのコマンドでインストールしてください。
npm install sambanova-ai-provider

環境変数の設定

.envファイルを作成し、SAMBANOVA_API_KEY変数を設定します。

プロバイダーインスタンスの生成

デフォルトのプロバイダーインスタンスは、sambanova-ai-providerからsambanova をインポートすることで利用できます。
import { sambanova } from 'sambanova-ai-provider';
より柔軟な設定が必要な場合は、createSambaNovaをインポートし、任意の設定を使用してインスタンスを作成することも可能です。
import { createSambaNova } from 'sambanova-ai-provider';

const sambanova = createSambaNova({
  // Optional settings
});
以下のオプションを使用して、SambaNovaプロバイダーの動作をカスタマイズ可能です。
  • baseURL string API 呼び出し時の URL プレフィックスを変更します (例: プロキシサーバーを使用する場合など)。デフォルトのプレフィックスは https://api.sambanova.ai/v1です。
  • apiKey string Authorization ヘッダーに使用する API キーを直接指定します。指定がない場合は、環境変数 SAMBANOVA_API_KEY が使用されます。
  • headers Record<string,string> リクエストに含めるカスタムヘッダーを指定します。
  • fetch (input: RequestInfo, init?: RequestInit) => Promise<Response> カスタム fetch 実装を指定します。デフォルトではグローバルの fetch 関数が使用されます。これをミドルウェアとしてリクエストをインターセプトしたり、テスト用のカスタムfetch実装を差し込むことも可能です。

モデルの利用

SambaNovaのプロバイダーインスタンスでは、こちらに記載されている任意のの 対応モデル を使用できます。最初の引数として、使用したいモデルID (例: Meta-Llama-3.3-70B-Instruct) を指定してください。
const model = sambanova('Meta-Llama-3.3-70B-Instruct');

使用例

以下は、SambaNovaプロバイダーを使ってシンプルなテキスト生成を行う例です。
import { createSambaNova } from 'sambanova-ai-provider';
import { generateText } from 'ai';

const sambanova = createSambaNova({
  apiKey: 'YOUR_API_KEY',
});

const model = sambanova('Meta-Llama-3.3-70B-Instruct');

const { text } = await generateText({
  model,
  prompt: 'Hello, nice to meet you.',
});

console.log(text);
以下のような出力が得られるはずです。
Hello. Nice to meet you too. Is there something I can help you with or would you like to chat?

Fetchリクエストのインターセプト

Fetchリクエストをインターセプトすることが可能です。詳細は こちら をご覧ください。

インターセプトの実装例

import { createSambaNova } from 'sambanova-ai-provider';
import { generateText } from 'ai';

const sambanovaProvider = createSambaNova({
  apiKey: 'YOUR_API_KEY',
  fetch: async (url, options) => {
    console.log('URL', url);
    console.log('Headers', JSON.stringify(options.headers, null, 2));
    console.log(`Body ${JSON.stringify(JSON.parse(options.body), null, 2)}`);
    return await fetch(url, options);
  },
});

const model = sambanovaProvider('Meta-Llama-3.3-70B-Instruct');

const { text } = await generateText({
  model,
  prompt: 'Hello, nice to meet you.',
});

出力例

URL https://api.sambanova.ai/v1/chat/completions
Headers {
  "Content-Type": "application/json",
  "Authorization": "Bearer YOUR_API_KEY"
}
Body {
  "model": "Meta-Llama-3.3-70B-Instruct",
  "temperature": 0,
  "messages": [
    {
      "role": "user",
      "content": "Hello, nice to meet you."
    }
  ]
}