import os import gradio as gr from pydantic import BaseModel, Field from langchain.prompts import HumanMessagePromptTemplate, ChatPromptTemplate from langchain.output_parsers import PydanticOutputParser from langchain_openai import ChatOpenAI chat = ChatOpenAI() # Define the Pydantic Model class TextTranslator(BaseModel): output: str = Field(description="Python string containing the output text translated in the desired language") output_parser = PydanticOutputParser(pydantic_object=TextTranslator) format_instructions = output_parser.get_format_instructions() def text_translator(input_text : str, language : str) -> str: human_template = """Enter the text that you want to translate: {input_text}, and enter the language that you want it to translate to {language}. {format_instructions}""" human_message_prompt = HumanMessagePromptTemplate.from_template(human_template) chat_prompt = ChatPromptTemplate.from_messages([human_message_prompt]) prompt = chat_prompt.format_prompt(input_text = input_text, language = language, format_instructions = format_instructions) messages = prompt.to_messages() response = chat(messages = messages) output = output_parser.parse(response.content) output_text = output.output return output_text def text_translator_ui(): with gr.Column() as translator_ui: gr.HTML("

Text Translator

") gr.HTML("

Translate to any language

") input_text = gr.Textbox(label="Enter the text that you want to translate") target_lang = gr.Textbox(label="Enter the language that you want it to translate to", placeholder="Example: Hindi, French, Bengali, etc") generate_btn = gr.Button(value='Generate') output_text = gr.Textbox(label="Translated text") generate_btn.click(fn=text_translator, inputs=[input_text, target_lang], outputs=[output_text]) return translator_ui