🔥

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

2024/11/01に公開

はじめに

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

実現方法

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

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

主な変更点

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

実際の挙動

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

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

ちなみに原文はこちら: Genkit басқа ашық кодты бағдарламалық жасақтамамен салыстырғанда қандай артықшылықтарға ие?

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

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

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

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

ソースコード

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

GitHub: tanabee/offline-translator

Discussion