Translation Interceptor
Application Example: Prompt Interceptor¶
In TextLLMPromptRunner
, there's an interface called "Interceptor (PromptInterceptor
)" for pre-processing and post-processing prompts.
By using the PromptInterceptor
, you can modify the input before executing the prompt and modify the output after the prompt has been executed.
For instance, by using the ValueTranslationInterceptor
, while it appears that the user is communicating in Japanese, the actual communication with the LLM is done in English.
graph TB
JPInput[Input in Japanese]
TranslateInput[Translation interceptor translates prompt input from Japanese to English]
LLMCommunication["Communicate with LLM and obtain output in English"]
TranslateOutput[Translation interceptor translates output from English to Japanese]
JPOutput[Obtain results in Japanese]
JPInput --> TranslateInput
TranslateInput --> LLMCommunication
LLMCommunication --> TranslateOutput
TranslateOutput --> JPOutput
Input/Output Translation Interceptor Implementation Example¶
This complex process can be achieved with just a few changes in PromptoGen. The actual LLM for prompt execution and the LLM for translation can use different models.
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)
# ...(omitted)