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 (updated for Pydantic v2) class TextTranslator(BaseModel): output: str = Field(description="Python string containing the output text translated in the desired language") # Use PydanticOutputParser (no need for response_schemas) output_parser = PydanticOutputParser(pydantic_object=TextTranslator) 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}.""" 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) messages = prompt.to_messages() response = chat(messages=messages) # Use output_parser to parse the response output = output_parser.parse(response.content) return output.output def text_translator_ui(): gr.Markdown("### Text Translator\nTranslate text into any language using AI.") input_text = gr.Textbox(label="Enter the text that you want to translate") input_lang = gr.Textbox(label="Enter the language that you want it to translate to", placeholder="Example: Hindi, French, Bengali, etc.") output_text = gr.Textbox(label="Translated text") translate_button = gr.Button("Translate") translate_button.click(fn=text_translator, inputs=[input_text, input_lang], outputs=output_text)