Skip to content
Snippets Groups Projects
translator.py 2.08 KiB
Newer Older
import requests
import json
import time
import gradio as gr
from utils import generate_payload, format_for_translator

# Endpoint_url
post_url = 'https://uf9t072wj5ki2ho4.eu-west-1.aws.endpoints.huggingface.cloud/generate'
# Headers
headers = {
    'Content-Type': 'application/json; charset=utf-8'
}


def translate(sentence: str, trg_lang: str):

    # Because I leave the other parameters as default, I arbitrarily set an max input length
    if len(sentence) > 100:
        return f"Sentence too long! Up to 100 characters are allowed, but {len(sentence)} were sent."

    # Wrap sentence with translation instruction and format it
    formatted_prompt = format_for_translator(sentence, trg_lang)
    # Generate payload
    payload = generate_payload(formatted_prompt)

    # Send post request to API
    response = requests.post(
        post_url,
        data=json.dumps(payload),
        headers=headers
    )

    # Format the reply
    reply = response.json()['generated_text']
    reply = reply.replace('assistant', '').strip()

    return reply


with gr.Blocks() as translator:
    gr.Markdown(
        """
        # Simple Translator
        Translate any sentence from English to a target language of your choice!
        *Runs on the Llama 3 8B Instruct language model*
        """)
    with gr.Row():
        gr.Interface(
            fn=translate,
            inputs=[
                gr.Textbox(
                    placeholder="Write an English sentence to translate.",
                    label="Input Sentence"
                ),
                gr.Dropdown(
                    choices=[
                        "German", "French", "Italian", "Spanish", "Portuguese", "Russian",
                        "Korean", "Chinese", "Japanese", "Swedish", "Norwegian", "Finnish"
                    ],  # Just chose some languages that came to mind
                    value="German",
                    label="Target Language",
                )
            ],
            outputs=gr.Textbox(
                label="Translated Sentence"
            )
        )


if __name__ == '__main__':
    translator.launch()