Groq

GroqとLingo.dev CompilerによるAI翻訳

Groqとは何か?

Groqは、超低レイテンシー推論に最適化された高性能AIハードウェアとソフトウェアを設計する企業です。独自のTensor Streaming Processorアーキテクチャを活用し、大規模言語モデルやリアルタイム分析などの分野でAIワークロードを加速することを目指しています。

APIキーの設定

GroqはLingo.dev Compilerからのリクエストを認証するためにAPIキーを必要とします。ワークフローに最適な設定方法を選択してください:

オプション1:環境変数(ターミナル)

ファイルを変更せずに素早く実験やテストを行うのに最適です。

ターミナルセッションで直接キーを設定します:

export GROQ_API_KEY="your-api-key-here"

このキーは、ターミナルウィンドウを閉じるまで有効です。

オプション2:プロジェクト設定(.env)

プロジェクト固有の設定やチーム環境に最適で、各プロジェクトで異なる認証情報を使用する場合に便利です。

プロジェクトのルートに.envファイルを作成します:

touch .env

ファイルに次の行を追加します:

GROQ_API_KEY="your-api-key-here"

Lingo.dev Compilerは、次の優先順位で環境ファイルをチェックします:

  1. .env.development(最高優先度)
  2. .env.local
  3. .env(最低優先度)

優先度の高いファイルの値は、優先度の低いファイルの値を上書きします。

オプション3:グローバル設定(ユーザー設定)

すべてのプロジェクトで同じAPIキーを使用したい個人開発者に最適です。

ホームディレクトリに設定ファイルを作成します:

touch ~/.lingodotdevrc

ファイルに次の内容を追加します:

[llm]
groqApiKey="your-api-key-here"

この設定は、マシン上のすべてのターミナルセッションとプロジェクトで持続します。

設定の優先順位

複数の設定方法が使用されている場合、Lingo.dev Compilerは次の順序でAPIキーをチェックします:

  1. 環境変数(最高優先度)
  2. プロジェクトの.envファイル(それぞれの優先順位で)
  3. ユーザー設定ファイル~/.lingodotdevrc(最低優先度)

最初に見つかった有効なAPIキーが使用されます。

Groqの使用

Groqを有効にするには、コンパイラオプションでmodelsプロパティを設定します:

import react from "@vitejs/plugin-react";
import lingoCompiler from "lingo.dev/compiler";
import { type UserConfig } from "vite";

// https://vite.dev/config/
const viteConfig: UserConfig = {
  plugins: [react()],
};

const withLingo = lingoCompiler.vite({
  sourceRoot: "src",
  lingoDir: "lingo",
  sourceLocale: "en",
  targetLocales: ["es", "fr", "de", "ja"],
  rsc: false,
  useDirective: false,
  debug: false,
  models: {
    "*:*": "groq:llama-3.1-8b-instant",
  },
});

export default withLingo(viteConfig);

このプロパティは以下のようなオブジェクトを受け付けます:

  • キーはソースロケールとターゲットロケールのペアで、*は任意のロケールを表します
  • 値はモデル識別子です(例:groq:llama-3.1-8b-instant

Groqを使用して以下の翻訳が可能です:

  • すべてのロケール間
  • 特定のソースロケールから
  • 特定のターゲットロケールへ
  • 特定のソースロケールと特定のターゲットロケール間

すべてのロケールの翻訳

ワイルドカードパターン*:*を使用して、すべての翻訳ペアに同じGroqモデルを適用します:

const withLingo = lingoCompiler.vite({
  sourceRoot: "src",
  lingoDir: "lingo",
  sourceLocale: "en",
  targetLocales: ["es", "fr", "de", "ja", "pt", "zh"],
  models: {
    // すべての翻訳ペアにLlama 3.1 8Bを使用
    "*:*": "groq:llama-3.1-8b-instant",
  },
});

特定のソースロケールからの翻訳

特定のソースロケールとワイルドカードターゲットを使用して、そのソースからのすべての翻訳にモデルを適用します:

const withLingo = lingoCompiler.vite({
  sourceRoot: "src",
  lingoDir: "lingo",
  sourceLocale: "en",
  targetLocales: ["es", "fr", "de", "ja", "pt", "zh"],
  models: {
    // 英語からのすべての翻訳にLlama 3.1 70Bを使用
    "en:*": "groq:llama-3.1-70b-versatile",
    // スペイン語から任意の言語への翻訳にMixtralを使用
    "es:*": "groq:mixtral-8x7b-32768",
    // その他のソース言語のフォールバック
    "*:*": "groq:llama-3.1-8b-instant",
  },
});

特定のターゲットロケールへの翻訳

ワイルドカードソースと特定のターゲットロケールを使用して、そのターゲットへのすべての翻訳にモデルを適用します:

const withLingo = lingoCompiler.vite({
  sourceRoot: "src",
  lingoDir: "lingo",
  sourceLocale: "en",
  targetLocales: ["es", "fr", "de", "ja", "pt", "zh"],
  models: {
    // 日本語への翻訳には特殊なモデルを使用
    "*:ja": "groq:llama-3.1-70b-versatile",
    // 中国語への翻訳にはMixtralを使用
    "*:zh": "groq:mixtral-8x7b-32768",
    // ドイツ語への翻訳にはGemma 2を使用
    "*:de": "groq:gemma2-9b-it",
    // その他のターゲット言語のデフォルト
    "*:*": "groq:llama-3.1-8b-instant",
  },
});

特定のロケール間の翻訳

特定の言語の組み合わせを処理するモデルをきめ細かく制御するために、正確なソースターゲットペアを定義します:

const withLingo = lingoCompiler.vite({
  sourceRoot: "src",
  lingoDir: "lingo",
  sourceLocale: "en",
  targetLocales: ["es", "fr", "de", "ja", "pt", "zh"],
  models: {
    // 最適なモデルを持つ特定のペア
    "en:es": "groq:llama-3.1-70b-versatile", // 英語からスペイン語
    "en:ja": "groq:llama-3.1-70b-versatile", // 英語から日本語
    "en:zh": "groq:mixtral-8x7b-32768", // 英語から中国語
    "es:en": "groq:llama-3.1-8b-instant", // スペイン語から英語
    "fr:en": "groq:gemma2-9b-it", // フランス語から英語
    "de:en": "groq:gemma2-9b-it", // ドイツ語から英語

    // 未指定のペアのフォールバック
    "*:*": "groq:llama-3.1-8b-instant",
  },
});