🔥

Genkit x Gemma2 でオフライン翻訳ツールを作ってみた

2024/11/01に公開

はじめに

先日 Genkit と Gemma2 を使ったローカル LLM の記事を書いたのですが、オフライン翻訳が簡単に実現しそうだったので作ってみた、という記事です。

実現方法

まず Genkit を使って Gemma2 をローカル LLM として呼び出す の通りに Genkit と Gemma2 をセットアップします。

あとは prompt を修正するだけです。

主な変更点

  • Flow の名前を translationFlow に指定
  • generate メソッドに渡す prompt を修正。ユーザーから受け取った text を英語と日本語に翻訳するように指示
export const translationFlow = defineFlow(
  {
    name: 'translationFlow',
    inputSchema: z.string(),
    outputSchema: z.string(),
  },
  async (text) => {
    const llmResponse = await generate({
      prompt: `Translate the following text into both English and Japanese.\n\n## Text:\n${text}\n\n## English:`,
      model: 'ollama/gemma2',
      config: {
        temperature: 1,
      },
    })

    return llmResponse.text()
  }
)

実際の挙動

Genkit には Developer Tools というローカルで検証できるツールが存在します。この UI をそのまま使います。

カザフ語で「Genkit は他の OSS と比べてどのような優位性がありますか?」と聞いてみた結果は以下となります。

Genkit を使ったオフライン翻訳ツール: カザフ語の翻訳

上記の質問を日本語で回答した結果は以下です。

Genkit を使ったオフライン翻訳ツール: 日本語の翻訳

自分のニーズはこれで達成できたので、このレベルで完成とします。違うニーズの方はプロンプトエンジニアリングしてみてください。

ソースコード

ソースコードは以下の GitHub にあげてますので自由に使ってください。

GitHub: tanabee/offline-translator

Discussion