gokilashree commited on
Commit
85152a6
·
verified ·
1 Parent(s): 8f4f20a

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +29 -60
app.py CHANGED
@@ -1,4 +1,3 @@
1
- import openai
2
  from transformers import MBartForConditionalGeneration, MBart50Tokenizer
3
  import gradio as gr
4
  import requests
@@ -7,13 +6,6 @@ from PIL import Image
7
  import os
8
  import time
9
 
10
- # Set up your OpenAI API key (make sure it's stored as an environment variable)
11
- openai_api_key = os.getenv("OPENAI_API_KEY")
12
- if openai_api_key is None:
13
- raise ValueError("OpenAI API key not found! Please set 'OPENAI_API_KEY' environment variable.")
14
- else:
15
- openai.api_key = openai_api_key
16
-
17
  # Load the translation model and tokenizer
18
  model_name = "facebook/mbart-large-50-many-to-one-mmt"
19
  tokenizer = MBart50Tokenizer.from_pretrained(model_name)
@@ -22,33 +14,34 @@ model = MBartForConditionalGeneration.from_pretrained(model_name)
22
  # Use the Hugging Face API key from environment variables for text-to-image model
23
  hf_api_key = os.getenv("full_token")
24
  if hf_api_key is None:
25
- raise ValueError("Hugging Face API key not found! Please set 'hf_token' environment variable.")
26
  else:
27
  headers = {"Authorization": f"Bearer {hf_api_key}"}
28
 
29
- API_URL = "https://api-inference.huggingface.co/models/ZB-Tech/Text-to-Image"
 
30
 
31
- # Define the OpenAI ChatCompletion function using `gpt-3.5-turbo`
32
- def generate_with_gpt3(prompt):
33
  try:
34
- print("Generating text with OpenAI ChatCompletion...")
35
- # Use ChatCompletion with gpt-3.5-turbo
36
- response = openai.ChatCompletion.create(
37
- model="gpt-3.5-turbo", # Use "gpt-4" if you have access
38
- messages=[{"role": "system", "content": "You are a helpful assistant."},
39
- {"role": "user", "content": prompt}],
40
- max_tokens=150,
41
- temperature=0.2,
42
- top_p=0.9,
43
- )
44
- generated_text = response['choices'][0]['message']['content'].strip()
45
- print("Text generation completed.")
46
- return generated_text
47
  except Exception as e:
48
- print(f"OpenAI API Error: {e}")
49
- return "Error generating text with GPT-3. Check the OpenAI API settings."
50
 
51
- # Define the translation, GPT-3 text generation, and image generation function
52
  def translate_and_generate_image(tamil_text):
53
  # Step 1: Translate Tamil text to English using mbart-large-50
54
  try:
@@ -59,47 +52,23 @@ def translate_and_generate_image(tamil_text):
59
  translated_text = tokenizer.batch_decode(translated_tokens, skip_special_tokens=True)[0]
60
  print(f"Translation completed: {translated_text}")
61
  except Exception as e:
62
- return "Error during translation: " + str(e), "", None
63
-
64
- time.sleep(1) # Optional: Small delay to ensure sequential execution
65
 
66
- # Step 2: Generate high-quality descriptive text using OpenAI's ChatCompletion
67
- try:
68
- print("Generating descriptive text from translated English text...")
69
- prompt = f"Create a detailed and creative description based on the following text: {translated_text}"
70
- generated_text = generate_with_gpt3(prompt)
71
- print(f"Text generation completed: {generated_text}")
72
- except Exception as e:
73
- return translated_text, f"Error during text generation: {e}", None
74
-
75
- time.sleep(1) # Optional: Small delay to ensure sequential execution
76
-
77
- # Step 3: Use the generated English text to create an image
78
- try:
79
- print("Generating image from the generated descriptive text...")
80
- def query(payload):
81
- response = requests.post(API_URL, headers=headers, json=payload)
82
- response.raise_for_status() # Raise error if request fails
83
- return response.content
84
-
85
- # Generate image using the descriptive text
86
- image_bytes = query({"inputs": generated_text})
87
- image = Image.open(io.BytesIO(image_bytes))
88
- print("Image generation completed.")
89
- except Exception as e:
90
- return translated_text, generated_text, f"Error during image generation: {e}"
91
 
92
- return translated_text, generated_text, image
93
 
94
  # Gradio interface setup
95
  iface = gr.Interface(
96
  fn=translate_and_generate_image,
97
  inputs=gr.Textbox(lines=2, placeholder="Enter Tamil text here..."),
98
  outputs=[gr.Textbox(label="Translated English Text"),
99
- gr.Textbox(label="Generated Descriptive Text"),
100
  gr.Image(label="Generated Image")],
101
- title="Tamil to English Translation, GPT-3 Text Generation, and Image Creation",
102
- description="Translate Tamil text to English using Facebook's mbart-large-50 model, generate high-quality text using GPT-3.5-turbo, and create an image using the generated text.",
103
  )
104
 
105
  # Launch Gradio app without `share=True`
 
 
1
  from transformers import MBartForConditionalGeneration, MBart50Tokenizer
2
  import gradio as gr
3
  import requests
 
6
  import os
7
  import time
8
 
 
 
 
 
 
 
 
9
  # Load the translation model and tokenizer
10
  model_name = "facebook/mbart-large-50-many-to-one-mmt"
11
  tokenizer = MBart50Tokenizer.from_pretrained(model_name)
 
14
  # Use the Hugging Face API key from environment variables for text-to-image model
15
  hf_api_key = os.getenv("full_token")
16
  if hf_api_key is None:
17
+ raise ValueError("Hugging Face API key not found! Please set 'full_token' environment variable.")
18
  else:
19
  headers = {"Authorization": f"Bearer {hf_api_key}"}
20
 
21
+ # Define the text-to-image model URL (using a stable diffusion model)
22
+ API_URL = "https://api-inference.huggingface.co/models/CompVis/stable-diffusion-v1-4"
23
 
24
+ # Function to generate an image using Hugging Face's text-to-image model
25
+ def generate_image_from_text(translated_text):
26
  try:
27
+ print(f"Generating image from translated text: {translated_text}")
28
+ response = requests.post(API_URL, headers=headers, json={"inputs": translated_text})
29
+
30
+ # Check if the response is successful
31
+ if response.status_code != 200:
32
+ print(f"Error generating image: {response.text}")
33
+ return None, f"Error generating image: {response.text}"
34
+
35
+ # Read and return the generated image
36
+ image_bytes = response.content
37
+ image = Image.open(io.BytesIO(image_bytes))
38
+ print("Image generation completed.")
39
+ return image, None
40
  except Exception as e:
41
+ print(f"Error during image generation: {e}")
42
+ return None, f"Error during image generation: {e}"
43
 
44
+ # Define the function to translate Tamil text and generate an image
45
  def translate_and_generate_image(tamil_text):
46
  # Step 1: Translate Tamil text to English using mbart-large-50
47
  try:
 
52
  translated_text = tokenizer.batch_decode(translated_tokens, skip_special_tokens=True)[0]
53
  print(f"Translation completed: {translated_text}")
54
  except Exception as e:
55
+ return f"Error during translation: {e}", None
 
 
56
 
57
+ # Step 2: Directly generate an image using the translated English text
58
+ image, error_message = generate_image_from_text(translated_text)
59
+ if error_message:
60
+ return translated_text, error_message
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
61
 
62
+ return translated_text, image
63
 
64
  # Gradio interface setup
65
  iface = gr.Interface(
66
  fn=translate_and_generate_image,
67
  inputs=gr.Textbox(lines=2, placeholder="Enter Tamil text here..."),
68
  outputs=[gr.Textbox(label="Translated English Text"),
 
69
  gr.Image(label="Generated Image")],
70
+ title="Tamil to English Translation and Image Creation",
71
+ description="Translate Tamil text to English using Facebook's mbart-large-50 model and create an image using the translated text.",
72
  )
73
 
74
  # Launch Gradio app without `share=True`