翻訳インターセプタ
応用例: プロンプトインターセプタ¶
TextLLMPromptRunner
では、プロンプトの前処理や後処理を行うために「インターセプタ(PromptInterceptor
)」というインターフェイスがあります。
PromptInterceptor
を使うことで、プロンプトの実行前に入力を書き換えたり、プロンプトの実行後に出力を書き換えたりすることができます。
例えば、 ValueTranslationInterceptor
を使えば、 ユーザーは日本語で通信しているようにみえるが、実際のLLMとの通信は英語で行う ことができます。
graph TB
JPInput[日本語のプロンプト入力]
TranslateInput[翻訳インターセプタがプロンプト入力を日本語から英語に翻訳]
LLMCommunication["LLMとの通信を行い、英語出力を得る"]
TranslateOutput[翻訳インターセプタが英語出力を英語から日本語に翻訳]
JPOutput[日本語の結果を得る]
JPInput --> TranslateInput
TranslateInput --> LLMCommunication
LLMCommunication --> TranslateOutput
TranslateOutput --> JPOutput
入出力翻訳インターセプタ実装例¶
このような複雑な処理が PromptoGen では数行変更するだけで実現できます。実際のプロンプト実行用のLLMと、翻訳用のLLMはそれぞれ別のものを使うことができます。
import promptogen as pg
from promptogen.prompt_interceptor.translation_interceptor import ValueTranslationInterceptor
formatter = pg.KeyValuePromptFormatter()
llm = YourTextLLM(model="your-model")
translator_llm = YourTextLLM(model="your-model-translator")
interceptors = [
ValueTranslationInterceptor(llm=translator_llm, from_lang="Japanese", to_lang="English"),
]
prompt_runner = pg.TextLLMPromptRunner(llm=llm, formatter=formatter, interceptors=interceptors)
# ...(略)