bizvideoschool commited on
Commit
757b271
1 Parent(s): c91c212

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +46 -25
app.py CHANGED
@@ -4,35 +4,56 @@ import requests
4
  from PIL import Image
5
  from io import BytesIO
6
 
7
- # Setup OpenAI API key (ensure it's set in environment variables)
8
- openai.api_key = os.environ["OPENAI_API_KEY"]
9
 
10
  st.title("Customer Avatar Generator")
11
 
12
  # User inputs for avatar generation
13
- name = st.text_input("Customer's Name", placeholder="Enter a name for your customer avatar")
14
- age = st.text_input("Age Range", placeholder="e.g., 30-40 years")
15
- gender = st.selectbox("Gender", ["Female", "Male", "Non-binary", "Prefer not to say"])
16
- location = st.text_input("Location", placeholder="e.g., Urban, Suburban, Rural")
17
- interests = st.text_area("Interests", placeholder="List their interests, hobbies, and preferences")
18
- profession = st.text_input("Profession", placeholder="e.g., Software Engineer, Teacher")
19
- income_level = st.text_input("Income Level", placeholder="e.g., $50,000 - $70,000 annually")
20
-
21
- # Button for generating avatar
22
- if st.button('Generate Customer Avatar'):
23
- # Generating text profile
24
- profile_prompt = f"Create a detailed customer avatar profile for: Name: {name}, Age: {age}, Gender: {gender}, Location: {location}, Interests: {interests}, Profession: {profession}, Income Level: {income_level}."
25
- profile_response = openai.Completion.create(model="gpt-4", prompt=profile_prompt, max_tokens=150)
26
- profile = profile_response.choices[0].text.strip()
27
- st.subheader("Customer Avatar Profile:")
28
- st.write(profile)
29
-
30
- # Generating image
31
- image_prompt = f"An image of a person who fits this profile: {profile_prompt}"
 
 
 
 
 
 
 
32
  try:
33
- image_response = openai.Image.create(model="dall-e", prompt=image_prompt, n=1)
34
- image_url = image_response['data'][0]['url']
35
- image = Image.open(BytesIO(requests.get(image_url).content))
36
- st.image(image, caption='Generated Avatar Image')
 
 
 
 
 
 
 
37
  except Exception as e:
 
38
  st.error(f"Error in generating image: {e}")
 
 
 
 
 
 
 
4
  from PIL import Image
5
  from io import BytesIO
6
 
7
+ # Access the OpenAI API key from Hugging Face Spaces secrets
8
+ openai.api_key = st.secrets["OPENAI_API_KEY"]
9
 
10
  st.title("Customer Avatar Generator")
11
 
12
  # User inputs for avatar generation
13
+ business_type = st.text_input("Business Type", placeholder="e.g., Real Estate, Fitness")
14
+ target_demographics = st.text_input("Target Demographics", placeholder="e.g., Age range, gender, location")
15
+ interests = st.text_input("Interests", placeholder="e.g., Home improvement, health and wellness")
16
+ additional_details = st.text_input("Additional Details", placeholder="Any specific characteristics or preferences")
17
+
18
+ if st.button('Generate Avatar'):
19
+ # Construct the prompt for text generation
20
+ prompt_text = f"Create a detailed customer avatar for a business in the {business_type} industry. Target demographics: {target_demographics}. Interests: {interests}. Additional details: {additional_details}."
21
+
22
+ # Call the OpenAI API for text generation
23
+ try:
24
+ response_text = openai.ChatCompletion.create(
25
+ model="gpt-4", # Use GPT-4 model
26
+ messages=[
27
+ {"role": "system", "content": "You are a helpful assistant."},
28
+ {"role": "user", "content": prompt_text}
29
+ ]
30
+ )
31
+ avatar_description = response_text.choices[0].message['content']
32
+ except Exception as e:
33
+ avatar_description = f"Error in generating avatar description: {e}"
34
+
35
+ # Construct the prompt for image generation
36
+ prompt_image = f"A visual representation of a customer avatar for a {business_type} business. Demographics: {target_demographics}. Interests: {interests}."
37
+
38
+ # Call the DALL-E API for image generation
39
  try:
40
+ response_image = openai.Image.create(
41
+ model="dall-e-3", # Specify DALL-E 3 model
42
+ prompt=prompt_image,
43
+ n=1,
44
+ size="1024x1024" # Set image dimensions
45
+ )
46
+
47
+ # Fetch the image from the URL
48
+ image_url = response_image['data'][0]['url']
49
+ image_response = requests.get(image_url)
50
+ image = Image.open(BytesIO(image_response.content))
51
  except Exception as e:
52
+ image = None
53
  st.error(f"Error in generating image: {e}")
54
+
55
+ # Display the results
56
+ st.write("**Avatar Description:**")
57
+ st.write(avatar_description)
58
+ if image:
59
+ st.image(image, caption='Generated Customer Avatar Image')