Files
VRCT/src-python/docs/details/translation_groq.md

3.3 KiB
Raw Permalink Blame History

translation_groq.py - Groq 翻訳クライアント

概要

Groq API を用いた高速 LLM 翻訳クライアントラッパー。OpenAI 互換エンドポイント (https://api.groq.com/openai/v1) を利用し、モデル一覧取得・認証・モデル選択・翻訳実行を提供する。

最近の更新 (2025-12-10)

  • Groq API サポートを新規追加
  • OpenAI 互換エンドポイント経由で高速 LLM 推論を実現
  • 除外キーワード (whisper, embedding, image, tts, audio, search, transcribe, diarize, vision) によるテキスト処理モデルのフィルタリング
  • YAML (prompt/translation_groq.yml) からシステムプロンプトをロード

影響

項目 内容
高速化 Groq の専用ハードウェアによる高速推論
互換性 OpenAI 互換 API で既存実装との一貫性維持
保守性 OpenAI クライアントと同様の設計で保守容易

責務

  • Groq API Key (gsk- で始まる40文字以上) を用いた認証確認
  • 利用可能モデルのフィルタリングとソート
  • 選択モデルの検証と内部保持
  • LangChain ChatOpenAI インスタンス生成base_url に Groq エンドポイント指定)
  • システムプロンプトによる翻訳実行

公開API (メソッド)

class GroqClient:
    def __init__(root_path: str = None)
    def getModelList() -> list[str]
    def getAuthKey() -> str | None
    def setAuthKey(api_key: str) -> bool
    def getModel() -> str | None
    def setModel(model: str) -> bool
    def updateClient() -> None
    def translate(text: str, input_lang: str, output_lang: str) -> str

メソッド詳細

  • setAuthKey: _authentication_check に成功した場合のみ内部保存
  • getModelList: モデル列挙後フィルタリング適用しソート
  • setModel: 取得済みリスト内のモデルのみ受理
  • updateClient: ChatOpenAI を選択モデル・Groq base_url で再生成
  • translate: システム + ユーザメッセージ構築→LLM呼び出し→レスポンス正規化

使用例

client = GroqClient()
if client.setAuthKey("gsk_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"):
    models = client.getModelList()
    client.setModel(models[0])
    client.updateClient()
    result = client.translate("こんにちは世界", "Japanese", "English")
    print(result)

依存関係

  • openai.OpenAI: モデル列挙 / 推論Groq エンドポイント経由)
  • langchain_openai.ChatOpenAI: LangChain ラッパー
  • translation_languages.translation_lang: 対応言語集合
  • translation_utils.loadPromptConfig: プロンプト YAML ロード

注意事項

  • base_url は固定で https://api.groq.com/openai/v1
  • ストリーミング無効 (streaming=False) 固定
  • API Key 無設定時 getModelList() は空
  • API Key は gsk で始まり40文字以上であることを検証

制限事項

  • エラーメッセージ詳細は包括的に扱わない (上位層でロギング)
  • 翻訳結果の構造が複雑 (list/dict) 場合を単純文字列へ normalize するのみ

関連ドキュメント

  • details/translation_translator.md
  • details/translation_languages.md
  • details/translation_openai.md (類似実装)