pravin007s commited on
Commit
a18970f
·
verified ·
1 Parent(s): 20ff71e

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +81 -61
app.py CHANGED
@@ -1,82 +1,102 @@
1
  import os
2
- from transformers import MarianMTModel, MarianTokenizer, GPTNeoForCausalLM, AutoTokenizer
3
- import gradio as gr
4
- from PIL import Image, UnidentifiedImageError
 
 
 
 
 
 
 
 
 
 
5
  import requests
6
  import io
 
 
 
7
 
8
- # Load translation model
9
  model_name = "Helsinki-NLP/opus-mt-mul-en"
10
  tokenizer = MarianTokenizer.from_pretrained(model_name)
11
  model = MarianMTModel.from_pretrained(model_name)
12
 
13
- # Load GPT-Neo model for creative content generation
14
- gpt_neo_model = GPTNeoForCausalLM.from_pretrained("EleutherAI/gpt-neo-1.3B")
15
- gpt_neo_tokenizer = AutoTokenizer.from_pretrained("EleutherAI/gpt-neo-1.3B")
16
-
17
- # Define language map
18
- language_map = {
19
- "Tamil": "ta",
20
- "Russian": "rus"
21
- }
22
-
23
- def translate_text(input_text, selected_languages):
24
- if not selected_languages:
25
- return "Please select at least one language."
26
-
27
- selected_language = selected_languages[0] # Pick the first selected language
28
- lang_code = language_map[selected_language]
29
- lang_prefix = f">>{lang_code}<< "
30
- text_with_lang = lang_prefix + input_text
31
- inputs = tokenizer(text_with_lang, return_tensors="pt", padding=True)
32
- translated_tokens = model.generate(**inputs)
33
- translation = tokenizer.decode(translated_tokens[0], skip_special_tokens=True)
34
- return translation
35
 
 
36
  def generate_image(prompt):
37
- API_URL = "https://api-inference.huggingface.co/models/black-forest-labs/FLUX.1-dev"
38
- hf_token = os.getenv("HF_TOKEN")
39
- headers = {"Authorization": f"Bearer {hf_token}"}
40
-
41
- response = requests.post(API_URL, headers=headers, json={"inputs": prompt})
42
-
43
- if response.status_code == 200:
44
- image_bytes = response.content
45
- try:
46
- image = Image.open(io.BytesIO(image_bytes))
47
- return image
48
- except UnidentifiedImageError:
 
 
 
 
 
49
  return None
50
- else:
 
51
  return None
52
 
 
 
 
 
 
 
 
53
  def generate_creative_text(translated_text):
54
- prompt = f"Create a creative story based on the following sentence: {translated_text}"
55
- inputs = gpt_neo_tokenizer(prompt, return_tensors="pt", padding=True, truncation=True, max_length=100)
56
- output = gpt_neo_model.generate(inputs["input_ids"], max_length=150, do_sample=True, temperature=0.7)
57
- creative_text = gpt_neo_tokenizer.decode(output[0], skip_special_tokens=True)
58
  return creative_text
59
 
60
- def process_input(text_input, selected_languages):
61
- translated_output = translate_text(text_input, selected_languages)
62
- creative_text = generate_creative_text(translated_output)
63
- image = generate_image(translated_output)
64
- return translated_output, creative_text, image
 
 
 
 
 
 
 
65
 
66
- # Gradio interface
67
  interface = gr.Interface(
68
- fn=process_input,
69
- inputs=[
70
- gr.Textbox(label="Input Text"),
71
- gr.CheckboxGroup(choices=["Tamil", "Russian"], label="Select Language")
72
- ],
73
- outputs=[
74
- gr.Textbox(label="Translated Text"),
75
- gr.Textbox(label="Creative Text"),
76
- gr.Image(label="Generated Image")
77
- ],
78
- title="Multilingual Translation and Image Generation",
79
- description="Translate Tamil or Russian text to English, generate creative content, and create an image."
80
  )
81
 
 
82
  interface.launch()
 
1
  import os
2
+ from huggingface_hub import login
3
+ # Retrieve the actual token from the environment variable
4
+ hf_token = os.getenv("HF_TOKEN")
5
+
6
+ # Check if the token is retrieved properly
7
+ if hf_token:
8
+ # Use the retrieved token
9
+ login(token=hf_token, add_to_git_credential=True)
10
+ else:
11
+ raise ValueError("Hugging Face token not found in environment variables.")
12
+
13
+ # Import necessary libraries
14
+ from transformers import MarianMTModel, MarianTokenizer, pipeline
15
  import requests
16
  import io
17
+ from PIL import Image
18
+ import matplotlib.pyplot as plt
19
+ import gradio as gr
20
 
21
+ # Load the translation model and tokenizer
22
  model_name = "Helsinki-NLP/opus-mt-mul-en"
23
  tokenizer = MarianTokenizer.from_pretrained(model_name)
24
  model = MarianMTModel.from_pretrained(model_name)
25
 
26
+ # Create a translation pipeline
27
+ translator = pipeline("translation", model=model, tokenizer=tokenizer)
28
+
29
+ # Function for translation
30
+ def translate_text(tamil_text):
31
+ try:
32
+ translation = translator(tamil_text, max_length=40)
33
+ translated_text = translation[0]['translation_text']
34
+ return translated_text
35
+ except Exception as e:
36
+ return f"An error occurred: {str(e)}"
37
+
38
+ # API credentials and endpoint
39
+ API_URL = "https://api-inference.huggingface.co/models/black-forest-labs/FLUX.1-dev"
40
+ headers = {"Authorization": f"Bearer {hf_token}"}
 
 
 
 
 
 
 
41
 
42
+ # Function to send payload and generate image
43
  def generate_image(prompt):
44
+ try:
45
+ response = requests.post(API_URL, headers=headers, json={"inputs": prompt})
46
+
47
+ # Check if the response is successful
48
+ if response.status_code == 200:
49
+ print("API call successful, generating image...")
50
+ image_bytes = response.content
51
+ # Try opening the image
52
+ try:
53
+ image = Image.open(io.BytesIO(image_bytes))
54
+ return image
55
+ except Exception as e:
56
+ print(f"Error opening image: {e}")
57
+ return None
58
+ else:
59
+ print(f"Failed to get image: Status code {response.status_code}")
60
+ print("Response content:", response.text) # Print response for debugging
61
  return None
62
+ except Exception as e:
63
+ print(f"An error occurred: {e}")
64
  return None
65
 
66
+ # Load GPT-Neo model for creative text generation
67
+ from transformers import AutoTokenizer, AutoModelForCausalLM
68
+
69
+ gpt_neo_tokenizer = AutoTokenizer.from_pretrained("EleutherAI/gpt-neo-125M")
70
+ gpt_neo_model = AutoModelForCausalLM.from_pretrained("EleutherAI/gpt-neo-125M")
71
+
72
+ # Function to generate creative text based on translated text
73
  def generate_creative_text(translated_text):
74
+ input_ids = gpt_neo_tokenizer(translated_text, return_tensors='pt').input_ids
75
+ generated_text_ids = gpt_neo_model.generate(input_ids, max_length=100)
76
+ creative_text = gpt_neo_tokenizer.decode(generated_text_ids[0], skip_special_tokens=True)
 
77
  return creative_text
78
 
79
+ # Function to handle the full workflow
80
+ def translate_generate_image_and_text(tamil_text):
81
+ # Step 1: Translate Tamil text to English
82
+ translated_text = translate_text(tamil_text)
83
+
84
+ # Step 2: Generate an image based on the translated text
85
+ image = generate_image(translated_text)
86
+
87
+ # Step 3: Generate creative text based on the translated text
88
+ creative_text = generate_creative_text(translated_text)
89
+
90
+ return translated_text, creative_text, image
91
 
92
+ # Create Gradio interface
93
  interface = gr.Interface(
94
+ fn=translate_generate_image_and_text,
95
+ inputs="text",
96
+ outputs=["text", "text", "image"],
97
+ title="Tamil to English Translation, Image Generation & Creative Text",
98
+ description="Enter Tamil text to translate to English, generate an image, and create creative text based on the translation."
 
 
 
 
 
 
 
99
  )
100
 
101
+ # Launch Gradio app
102
  interface.launch()