benspigel commited on
Commit
9fb3058
·
verified ·
1 Parent(s): 7a564aa

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +91 -190
app.py CHANGED
@@ -1,191 +1,27 @@
1
- Please give me a code for a gradio app that carries out the following prompt using the ChatGPT API: This GPT acts as a classroom tool to help students generate business concepts. When the conversation begins, it prompts the user to provide exactly two items and two target markets. Once these inputs are received, the GPT creates a concise business concept.
2
- It outputs two sentences describing a business that uses or sells the two items, forming a coherent and plausible product or service. Then, it outputs a single sentence describing a hybrid target market that merges the needs and interests of the two customer segments.
3
- The GPT provides no further commentary, responses, or explanations beyond the initial prompt, business concept, and target market description, even if directly asked.
4
-
5
- I'll create a Gradio app that implements this business concept generator using the OpenAI API. Here's the complete code:
6
-
7
- I've created a complete Gradio app that implements the business concept generator as specified. Here's what the code includes:
8
-
9
- Key Features:
10
-
11
- Four input fields: Two for items and two for target markets
12
- OpenAI API integration: Uses the ChatGPT API to generate concepts
13
- Strict output format: Returns exactly 2 sentences for the business concept and 1 sentence for the hybrid target market
14
- Example inputs: Pre-filled examples to help users understand the format
15
- Error handling: Validates inputs and handles API errors gracefully
16
-
17
- To run this app:
18
-
19
- First install the required packages:
20
-
21
- bash
22
-
23
- pip install gradio openai
24
-
25
- Set your OpenAI API key as an environment variable:
26
-
27
- bash
28
-
29
- export OPENAI_API_KEY="your-api-key-here"
30
-
31
- Run the Python script:
32
-
33
- bash
34
-
35
- python business_concept_generator.py
36
-
37
- The app will launch and provide a shareable link. Users simply need to enter two items and two target markets, then click "Generate Business Concept" to receive the formatted output.
38
-
39
- The system prompt ensures the GPT follows the exact requirements: no additional commentary, just the business concept (2 sentences) and hybrid target market (1 sentence).
40
-
41
- I have uploaded your code to huggingface, but when I run it I get this error:
42
- "Traceback (most recent call last): File "/home/user/app/app.py", line 2, in <module> import openai ModuleNotFoundError: No module named 'openai' Traceback (most recent call last): File "/home/user/app/app.py", line 2, in <module> import openai ModuleNotFoundError: No module named 'openai'"
43
-
44
- How can I fix this?
45
-
46
- The error occurs because the openai package isn't installed in your Hugging Face Space. You need to create a requirements.txt file to specify the dependencies. Here's how to fix it:
47
-
48
- To fix this error on Hugging Face Spaces:
49
-
50
- Create a requirements.txt file in your Space's root directory (same location as your app.py file) with the content shown above.
51
- Set up your OpenAI API key in the Space settings:
52
- Go to your Space's Settings tab
53
- Scroll down to "Repository secrets"
54
- Add a new secret with:
55
- Name: OPENAI_API_KEY
56
- Value: Your actual OpenAI API key
57
- Update the code to properly access the secret in Hugging Face Spaces:
58
-
59
- Steps to implement:
60
-
61
- In your Hugging Face Space, click on "Files" tab
62
- Click "Add file" → "Create a new file"
63
- Name it requirements.txt
64
- Copy the content from the requirements artifact above
65
- Commit the file
66
-
67
- After adding the requirements.txt file, Hugging Face will automatically rebuild your Space and install the required packages. The Space should then work properly.
68
-
69
- Note: I've also updated the code to:
70
-
71
- Check for both OPENAI_API_KEY and openai_api_key (Hugging Face sometimes uses lowercase)
72
- Remove share=True from the launch command (not needed on Hugging Face Spaces)
73
-
74
- Make sure you've added your OpenAI API key as a secret in the Space settings as described above!
75
-
76
- Bow when I run it on huggingface I get this error "Error generating concept: Error code: 401 - {'error': {'message': 'Incorrect API key provided: sk-proj-**gQwA. You can find your API key at https://platform.openai.com/account/api-keys.', 'type': 'invalid_request_error', 'param': None, 'code': 'invalid_api_key'}}"
77
-
78
- I did everything you said when it comes to making a secret with the API Key. Can yuo give me step by step instrsuctions for ensuring that the API key is correct. Please be verhy clear with what format i have to use for the API key
79
-
80
- I'll help you fix the API key issue with clear step-by-step instructions.
81
- Step-by-Step Instructions for Setting the OpenAI API Key:
82
- 1. Get Your OpenAI API Key
83
-
84
- Go to https://platform.openai.com/api-keys
85
- Log in to your OpenAI account
86
- Click "Create new secret key"
87
- Copy the ENTIRE key that appears (it should look like: sk-proj- followed by a long string of characters)
88
- Important: The key starts with sk-proj- or sometimes just sk- - copy everything including this prefix
89
-
90
- 2. Add the Key to Hugging Face Space
91
-
92
- Go to your Hugging Face Space
93
- Click on the "Settings" tab (gear icon)
94
- Scroll down to find "Repository secrets" section
95
- Click "New secret"
96
- Fill in:
97
- Name: OPENAI_API_KEY (must be exactly this, all capitals)
98
- Value: Paste your complete API key (including the sk-proj- part)
99
- Example format: sk-proj-abcdef123456789... (the actual key is much longer)
100
- Click "Add new secret"
101
-
102
- 3. Verify the Secret is Set
103
-
104
- After adding, you should see OPENAI_API_KEY listed in your secrets
105
- The value will be hidden (shown as asterisks)
106
-
107
- 4. Update Your Code (if needed)
108
-
109
- Let me provide an updated version that better handles the API key:
110
- 5. Common Issues to Check:
111
-
112
- No quotes around the API key: When pasting into Hugging Face secrets, paste ONLY the key itself, no quotes:
113
- ✅ Correct: sk-proj-abcdef123456...
114
- ❌ Wrong: "sk-proj-abcdef123456..."
115
- No extra spaces: Make sure there are no spaces before or after the key
116
- Complete key: The key should be quite long (usually 40+ characters). Make sure you copied the entire thing
117
- Valid key: Verify your key is still valid at https://platform.openai.com/api-keys
118
- Keys can be revoked or expire
119
- Make sure you have API credits/billing set up
120
-
121
- 6. Restart Your Space
122
-
123
- After adding the secret:
124
-
125
- Go to the main page of your Space
126
- Click the three dots menu (⋮) in the top right
127
- Select "Restart Space"
128
- Wait for it to rebuild
129
-
130
- 7. Test Your API Key Locally (Optional)
131
-
132
- To verify your key works, you can test it locally:
133
-
134
- python
135
-
136
- from openai import OpenAI
137
- client = OpenAI(api_key="your-key-here")
138
- try:
139
- response = client.chat.completions.create(
140
- model="gpt-3.5-turbo",
141
- messages=[{"role": "user", "content": "Say hello"}],
142
- max_tokens=10
143
- )
144
- print("API key works!")
145
- except Exception as e:
146
- print(f"Error: {e}")
147
-
148
- If you still get errors after following these steps, the issue might be:
149
-
150
- The API key has been revoked
151
- You don't have billing set up on your OpenAI account
152
- The key was copied incorrectly
153
-
154
- Let me know if you continue to have issues!
155
-
156
- when I run this on my iphone, there is no generate business idea button or examples. How can I fix this so that the app works on mobile devices?
157
-
158
- The issue is likely due to Gradio's layout not rendering properly on mobile devices. Let me update the code to make it more mobile-friendly:
159
-
160
- I've made several changes to improve mobile compatibility:
161
-
162
- Removed Row layout: Changed from gr.Row() to gr.Column() which stacks elements vertically - much better for mobile screens
163
- Larger button: Added size="lg" to make the button easier to tap on mobile devices
164
- Better spacing: Added markdown elements for spacing between sections
165
- Container property: Added container=True to all inputs for better mobile rendering
166
- Simplified examples: Made the examples section more mobile-friendly with clearer labeling
167
- Theme: Added theme=gr.themes.Soft() which tends to work better on mobile
168
-
169
- If you're still having issues, here's an even more mobile-optimized version you can try:
170
-
171
-
172
  import gradio as gr
173
  import openai
174
  from openai import OpenAI
175
  import os
176
 
177
- # Initialize OpenAI client
178
  api_key = os.getenv("OPENAI_API_KEY")
179
  if not api_key:
180
- raise ValueError("OPENAI_API_KEY not found in environment variables.")
 
 
 
181
 
182
  client = OpenAI(api_key=api_key)
183
 
184
  def generate_business_concept(item1, item2, market1, market2):
185
- """Generate a business concept using two items and two target markets"""
 
 
 
186
  if not all([item1, item2, market1, market2]):
187
- return "⚠️ Please fill in all four fields above."
188
 
 
189
  system_prompt = """You are a business concept generator. When given exactly two items and two target markets, you must:
190
 
191
  1. Create exactly two sentences describing a business that uses or sells both items as a coherent product or service.
@@ -197,9 +33,11 @@ Output format:
197
 
198
  Provide no additional commentary, explanations, or text beyond these three sentences."""
199
 
 
200
  user_message = f"Items: {item1}, {item2}\nTarget Markets: {market1}, {market2}"
201
 
202
  try:
 
203
  response = client.chat.completions.create(
204
  model="gpt-3.5-turbo",
205
  messages=[
@@ -209,21 +47,84 @@ Provide no additional commentary, explanations, or text beyond these three sente
209
  temperature=0.7,
210
  max_tokens=200
211
  )
 
212
  return response.choices[0].message.content.strip()
 
213
  except Exception as e:
214
- return f"Error: {str(e)}"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
215
 
216
- # Create interface
217
- with gr.Blocks(title="Business Concept Generator", css="""
218
- .gradio-container {
219
- max-width: 100% !important;
220
- padding: 10px !important;
221
- }
222
- .contain {
223
- max-width: 100% !important;
224
- }
225
- #component-0 {
226
- max-width: 100% !important;
227
- }
228
- @media (max-width: 768px) {
229
- .gra
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  import gradio as gr
2
  import openai
3
  from openai import OpenAI
4
  import os
5
 
6
+ # Initialize OpenAI client - for Hugging Face Spaces
7
  api_key = os.getenv("OPENAI_API_KEY")
8
  if not api_key:
9
+ raise ValueError("OPENAI_API_KEY not found in environment variables. Please set it in the Space secrets.")
10
+
11
+ # Debug: Print first few characters to verify format (remove this after testing)
12
+ print(f"API Key format check: {api_key[:10]}...")
13
 
14
  client = OpenAI(api_key=api_key)
15
 
16
  def generate_business_concept(item1, item2, market1, market2):
17
+ """
18
+ Generate a business concept using two items and two target markets
19
+ """
20
+ # Validate inputs
21
  if not all([item1, item2, market1, market2]):
22
+ return "Please provide all four inputs: two items and two target markets."
23
 
24
+ # System prompt that defines the GPT's behavior
25
  system_prompt = """You are a business concept generator. When given exactly two items and two target markets, you must:
26
 
27
  1. Create exactly two sentences describing a business that uses or sells both items as a coherent product or service.
 
33
 
34
  Provide no additional commentary, explanations, or text beyond these three sentences."""
35
 
36
+ # User message with the inputs
37
  user_message = f"Items: {item1}, {item2}\nTarget Markets: {market1}, {market2}"
38
 
39
  try:
40
+ # Call OpenAI API
41
  response = client.chat.completions.create(
42
  model="gpt-3.5-turbo",
43
  messages=[
 
47
  temperature=0.7,
48
  max_tokens=200
49
  )
50
+
51
  return response.choices[0].message.content.strip()
52
+
53
  except Exception as e:
54
+ return f"Error generating concept: {str(e)}"
55
+
56
+ # Create Gradio interface
57
+ def create_interface():
58
+ with gr.Blocks(title="Business Concept Generator") as demo:
59
+ gr.Markdown("""
60
+ # Business Concept Generator
61
+
62
+ This tool helps students generate business concepts by combining two items and two target markets.
63
+ Please provide exactly two items and two target markets to generate a business concept.
64
+ """)
65
+
66
+ with gr.Row():
67
+ with gr.Column():
68
+ item1 = gr.Textbox(
69
+ label="Item 1",
70
+ placeholder="Enter the first item",
71
+ lines=1
72
+ )
73
+ item2 = gr.Textbox(
74
+ label="Item 2",
75
+ placeholder="Enter the second item",
76
+ lines=1
77
+ )
78
+
79
+ with gr.Column():
80
+ market1 = gr.Textbox(
81
+ label="Target Market 1",
82
+ placeholder="Enter the first target market",
83
+ lines=1
84
+ )
85
+ market2 = gr.Textbox(
86
+ label="Target Market 2",
87
+ placeholder="Enter the second target market",
88
+ lines=1
89
+ )
90
+
91
+ generate_btn = gr.Button("Generate Business Concept", variant="primary")
92
+
93
+ output = gr.Textbox(
94
+ label="Business Concept",
95
+ lines=4,
96
+ interactive=False
97
+ )
98
+
99
+ # Handle button click
100
+ generate_btn.click(
101
+ fn=generate_business_concept,
102
+ inputs=[item1, item2, market1, market2],
103
+ outputs=output
104
+ )
105
+
106
+ # Add examples
107
+ gr.Examples(
108
+ examples=[
109
+ ["Coffee", "Books", "Students", "Remote Workers"],
110
+ ["Bicycles", "Solar Panels", "Urban Commuters", "Eco-conscious Homeowners"],
111
+ ["Yoga Mats", "Smart Watches", "Fitness Enthusiasts", "Busy Professionals"]
112
+ ],
113
+ inputs=[item1, item2, market1, market2],
114
+ label="Example Inputs"
115
+ )
116
+
117
+ return demo
118
 
119
+ # Main execution
120
+ if __name__ == "__main__":
121
+ # Make sure to set your OpenAI API key as an environment variable
122
+ # export OPENAI_API_KEY="your-api-key-here"
123
+
124
+ if not os.getenv("OPENAI_API_KEY"):
125
+ print("Warning: OPENAI_API_KEY environment variable not set!")
126
+ print("Set it using: export OPENAI_API_KEY='your-api-key-here'")
127
+
128
+ # Create and launch the interface
129
+ demo = create_interface()
130
+ demo.launch()