Mistral AI

Mistralとlingo.devコンパイラによるAI翻訳

Mistral AIとは?

Mistral AIはフランスの人工知能企業で、効率的でカスタマイズ可能、そして幅広いアプリケーションに利用できるオープンウェイトの大規模言語モデルの開発を専門としています。同社は透明性とパフォーマンスに重点を置き、多くの競合他社と比較して小規模なハードウェアでも効率的に実行できるモデルをリリースしています。

APIキーの設定

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

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

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

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

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

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

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

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

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

touch .env

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

MISTRAL_API_KEY="your-api-key-here"

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

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

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

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

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

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

touch ~/.lingodotdevrc

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

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

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

設定の優先順位

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

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

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

Mistral AIの使用

Mistral AIを有効にするには、コンパイラオプションで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: {
    "*:*": "mistral:mistral-large-latest",
  },
});

export default withLingo(viteConfig);

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

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

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

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

すべてのロケールの翻訳

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

const withLingo = lingoCompiler.vite({
  sourceRoot: "src",
  lingoDir: "lingo",
  sourceLocale: "en",
  targetLocales: ["es", "fr", "de", "ja", "pt", "zh"],
  models: {
    // すべての翻訳ペアにMistral Largeを使用
    "*:*": "mistral:mistral-large-latest",
  },
});

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

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

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

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

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

const withLingo = lingoCompiler.vite({
  sourceRoot: "src",
  lingoDir: "lingo",
  sourceLocale: "en",
  targetLocales: ["es", "fr", "de", "ja", "pt", "zh"],
  models: {
    // 日本語への翻訳には特殊なモデルを使用
    "*:ja": "mistral:mistral-large-latest",
    // 中国語への翻訳にはMixtralを使用
    "*:zh": "mistral:mixtral-8x22b",
    // フランス語への翻訳にはMistral Large(Mistralの強み)を使用
    "*:fr": "mistral:mistral-large-latest",
    // その他のターゲット言語のデフォルト
    "*:*": "mistral:mistral-small-latest",
  },
});

特定のロケール間の翻訳

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

const withLingo = lingoCompiler.vite({
  sourceRoot: "src",
  lingoDir: "lingo",
  sourceLocale: "en",
  targetLocales: ["es", "fr", "de", "ja", "pt", "zh"],
  models: {
    // 最適なモデルを持つ特定のペア
    "en:es": "mistral:mistral-small-latest", // 英語からスペイン語
    "en:ja": "mistral:mistral-large-latest", // 英語から日本語
    "en:zh": "mistral:mixtral-8x22b", // 英語から中国語
    "en:fr": "mistral:mistral-large-latest", // 英語からフランス語(優れた性能)
    "es:en": "mistral:mistral-nemo", // スペイン語から英語
    "fr:en": "mistral:mistral-medium-latest", // フランス語から英語
    "de:en": "mistral:codestral", // ドイツ語から英語(技術的)

    // 未指定のペアのフォールバック
    "*:*": "mistral:mistral-small-latest",
  },
});