gokilashree commited on
Commit
790888c
·
verified ·
1 Parent(s): e81542b

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +22 -6
app.py CHANGED
@@ -5,6 +5,7 @@ import requests
5
  import io
6
  from PIL import Image
7
  import os
 
8
 
9
  # Set up your OpenAI API key (make sure it's stored as an environment variable)
10
  openai_api_key = os.getenv("OPENAI_API_KEY")
@@ -19,7 +20,7 @@ tokenizer = MBart50Tokenizer.from_pretrained(model_name)
19
  model = MBartForConditionalGeneration.from_pretrained(model_name)
20
 
21
  # Use the Hugging Face API key from environment variables for text-to-image model
22
- hf_api_key = os.getenv("full_token")
23
  if hf_api_key is None:
24
  raise ValueError("Hugging Face API key not found! Please set 'hf_token' environment variable.")
25
  else:
@@ -30,6 +31,7 @@ API_URL = "https://api-inference.huggingface.co/models/ZB-Tech/Text-to-Image"
30
  # Define the OpenAI GPT-3 text generation function with error handling
31
  def generate_with_gpt3(prompt, max_tokens=150, temperature=0.7):
32
  try:
 
33
  response = openai.Completion.create(
34
  engine="text-davinci-003", # Use "text-davinci-003" for high-quality outputs
35
  prompt=prompt,
@@ -39,39 +41,53 @@ def generate_with_gpt3(prompt, max_tokens=150, temperature=0.7):
39
  frequency_penalty=0.0,
40
  presence_penalty=0.0
41
  )
42
- return response.choices[0].text.strip()
 
 
43
  except Exception as e:
44
  print(f"OpenAI API Error: {e}")
45
  return "Error generating text with GPT-3. Check the OpenAI API settings."
46
 
47
  # Define the translation, GPT-3 text generation, and image generation function
48
  def translate_and_generate_image(tamil_text):
 
49
  try:
50
- # Step 1: Translate Tamil text to English using mbart-large-50
51
  tokenizer.src_lang = "ta_IN"
52
  inputs = tokenizer(tamil_text, return_tensors="pt")
53
  translated_tokens = model.generate(**inputs, forced_bos_token_id=tokenizer.lang_code_to_id["en_XX"])
54
  translated_text = tokenizer.batch_decode(translated_tokens, skip_special_tokens=True)[0]
 
55
  except Exception as e:
56
  return "Error during translation: " + str(e), "", None
57
 
 
 
 
 
58
  try:
59
- # Step 2: Generate high-quality descriptive text using OpenAI's GPT-3
60
  prompt = f"Create a detailed and creative description based on the following text: {translated_text}"
61
  generated_text = generate_with_gpt3(prompt, max_tokens=150, temperature=0.7)
 
62
  except Exception as e:
63
  return translated_text, f"Error during text generation: {e}", None
64
 
 
 
 
 
65
  try:
66
- # Step 3: Use the generated English text to create an image
67
  def query(payload):
68
  response = requests.post(API_URL, headers=headers, json=payload)
69
  response.raise_for_status() # Raise error if request fails
70
  return response.content
71
 
72
- # Generate image using the generated text
73
  image_bytes = query({"inputs": generated_text})
74
  image = Image.open(io.BytesIO(image_bytes))
 
75
  except Exception as e:
76
  return translated_text, generated_text, f"Error during image generation: {e}"
77
 
 
5
  import io
6
  from PIL import Image
7
  import os
8
+ import time # Importing time to add delays for sequential execution
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")
 
20
  model = MBartForConditionalGeneration.from_pretrained(model_name)
21
 
22
  # Use the Hugging Face API key from environment variables for text-to-image model
23
+ hf_api_key = os.getenv("hf_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:
 
31
  # Define the OpenAI GPT-3 text generation function with error handling
32
  def generate_with_gpt3(prompt, max_tokens=150, temperature=0.7):
33
  try:
34
+ print("Generating text with GPT-3...")
35
  response = openai.Completion.create(
36
  engine="text-davinci-003", # Use "text-davinci-003" for high-quality outputs
37
  prompt=prompt,
 
41
  frequency_penalty=0.0,
42
  presence_penalty=0.0
43
  )
44
+ generated_text = response.choices[0].text.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:
55
+ print("Translating Tamil text to English...")
56
  tokenizer.src_lang = "ta_IN"
57
  inputs = tokenizer(tamil_text, return_tensors="pt")
58
  translated_tokens = model.generate(**inputs, forced_bos_token_id=tokenizer.lang_code_to_id["en_XX"])
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
+ # Ensure sequential flow by waiting before moving to the next step
65
+ time.sleep(1) # Optional: Add a small delay to ensure proper execution order
66
+
67
+ # Step 2: Generate high-quality descriptive text using OpenAI's GPT-3
68
  try:
69
+ print("Generating descriptive text from translated English text...")
70
  prompt = f"Create a detailed and creative description based on the following text: {translated_text}"
71
  generated_text = generate_with_gpt3(prompt, max_tokens=150, temperature=0.7)
72
+ print(f"Text generation completed: {generated_text}")
73
  except Exception as e:
74
  return translated_text, f"Error during text generation: {e}", None
75
 
76
+ # Ensure sequential flow by waiting before moving to the next step
77
+ time.sleep(1) # Optional: Add a small delay to ensure proper execution order
78
+
79
+ # Step 3: Use the generated English text to create an image
80
  try:
81
+ print("Generating image from the generated descriptive text...")
82
  def query(payload):
83
  response = requests.post(API_URL, headers=headers, json=payload)
84
  response.raise_for_status() # Raise error if request fails
85
  return response.content
86
 
87
+ # Generate image using the descriptive text
88
  image_bytes = query({"inputs": generated_text})
89
  image = Image.open(io.BytesIO(image_bytes))
90
+ print("Image generation completed.")
91
  except Exception as e:
92
  return translated_text, generated_text, f"Error during image generation: {e}"
93