Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -225,6 +225,7 @@ def admin_dashboard():
|
|
| 225 |
if st.form_submit_button("Update Settings"):
|
| 226 |
Company.update_settings(name, business, agent_name, key_features)
|
| 227 |
st.success("Settings updated!")
|
|
|
|
| 228 |
|
| 229 |
with st.expander("Product Management"):
|
| 230 |
with st.form("Add Product"):
|
|
@@ -240,6 +241,7 @@ def admin_dashboard():
|
|
| 240 |
Product.add(name, category, price, description, features, stock)
|
| 241 |
st.success("Product added!")
|
| 242 |
load_data.clear()
|
|
|
|
| 243 |
|
| 244 |
st.subheader("Manage Inventory")
|
| 245 |
products = Product.get_all()
|
|
@@ -256,9 +258,11 @@ def admin_dashboard():
|
|
| 256 |
)
|
| 257 |
if new_stock != p[6]:
|
| 258 |
Product.update_stock(p[0], new_stock)
|
|
|
|
| 259 |
st.rerun()
|
| 260 |
if cols[3].button("❌", key=f"del_{p[0]}"):
|
| 261 |
Product.delete(p[0])
|
|
|
|
| 262 |
st.rerun()
|
| 263 |
else:
|
| 264 |
st.info("No products found in database")
|
|
@@ -325,7 +329,7 @@ def main():
|
|
| 325 |
|
| 326 |
else:
|
| 327 |
# Chat Interface
|
| 328 |
-
st.header(f"Welcome to {company_name}, {st.session_state.user.username}
|
| 329 |
st.subheader("Chat with our AI Sales Assistant")
|
| 330 |
|
| 331 |
# Display Chat History
|
|
@@ -340,82 +344,69 @@ def main():
|
|
| 340 |
# Enhanced System Prompt
|
| 341 |
company_settings = Company.get_settings()
|
| 342 |
current_products = "\n".join([f"- {p[1]} (${p[3]}, Stock: {p[6]})" for p in Product.get_all()])
|
|
|
|
| 343 |
system_prompt = f"""
|
| 344 |
-
You are {company_settings[3]}, the AI Sales Assistant for {company_settings[1]} ({company_settings[2]}).
|
| 345 |
|
| 346 |
-
Company Profile
|
| 347 |
- Company Name: {company_settings[1]}
|
| 348 |
-
- Business: {company_settings[2]}
|
| 349 |
- Key Features: {company_settings[4]}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 350 |
|
| 351 |
-
|
| 352 |
-
|
| 353 |
-
|
| 354 |
-
- Always check current stock levels before making recommendations
|
| 355 |
-
- For out-of-stock items, suggest similar in-stock alternatives
|
| 356 |
-
- Never promote or discuss products not in our inventory
|
| 357 |
|
| 358 |
-
|
| 359 |
-
|
| 360 |
-
|
| 361 |
-
|
| 362 |
-
|
| 363 |
|
| 364 |
-
Current Inventory
|
| 365 |
{current_products}
|
| 366 |
|
| 367 |
-
|
| 368 |
-
1.
|
| 369 |
-
|
| 370 |
-
|
| 371 |
-
|
| 372 |
-
|
| 373 |
-
2. Product Consultation
|
| 374 |
-
- Recommend suitable products based on customer needs
|
| 375 |
-
- Highlight relevant features and benefits
|
| 376 |
-
- Provide accurate pricing and stock information
|
| 377 |
-
- Compare products when appropriate
|
| 378 |
-
|
| 379 |
-
3. Objection Handling
|
| 380 |
-
- Address concerns professionally
|
| 381 |
-
- Provide factual information
|
| 382 |
-
- Offer alternatives when necessary
|
| 383 |
-
- Focus on value proposition
|
| 384 |
-
|
| 385 |
-
4. Purchase Process
|
| 386 |
-
- Clear explanation of payment process
|
| 387 |
-
- Generate payment link when customer is ready [https://www.example.com/payment]
|
| 388 |
-
- Confirm stock availability before purchase
|
| 389 |
-
- Update inventory after successful transaction
|
| 390 |
-
|
| 391 |
-
Communication Style:
|
| 392 |
-
- Professional yet friendly tone
|
| 393 |
-
- Clear and concise explanations
|
| 394 |
-
- Empathetic to customer needs
|
| 395 |
-
- Use simple, non-technical language
|
| 396 |
-
- Maintain consistent branding
|
| 397 |
-
- Limited emoji use (max 1-2 per message)
|
| 398 |
-
|
| 399 |
-
Response Templates:
|
| 400 |
-
|
| 401 |
-
For out-of-stock items:
|
| 402 |
-
"I apologize, but [product] is currently out of stock. However, I can recommend [alternative product] which has similar features and is available now. Would you like to learn more about it?"
|
| 403 |
-
|
| 404 |
-
For low stock items:
|
| 405 |
-
"Just to let you know, we only have [X] units of [product] remaining in stock. I'd recommend making your decision soon if you're interested."
|
| 406 |
-
|
| 407 |
-
For unrelated products:
|
| 408 |
-
"I apologize, but as a {company_settings[2]}, we don't carry that item. However, I can suggest [relevant alternative] from our current inventory that might meet your needs. Would you like to learn more?"
|
| 409 |
-
|
| 410 |
-
For payment process:
|
| 411 |
-
"I'm glad you're interested in [product]. I can generate a secure payment link for you to complete your purchase. The current price is $[price]. Would you like to proceed with the purchase of [product]?"
|
| 412 |
-
|
| 413 |
-
Remember to:
|
| 414 |
-
1. Always verify stock before recommending products
|
| 415 |
-
2. Keep track of customer preferences
|
| 416 |
-
3. Provide accurate product information
|
| 417 |
-
4. Update inventory after successful purchases
|
| 418 |
-
5. Maintain professional communication
|
| 419 |
"""
|
| 420 |
|
| 421 |
prompt = ChatPromptTemplate.from_messages([
|
|
|
|
| 225 |
if st.form_submit_button("Update Settings"):
|
| 226 |
Company.update_settings(name, business, agent_name, key_features)
|
| 227 |
st.success("Settings updated!")
|
| 228 |
+
st.rerun()
|
| 229 |
|
| 230 |
with st.expander("Product Management"):
|
| 231 |
with st.form("Add Product"):
|
|
|
|
| 241 |
Product.add(name, category, price, description, features, stock)
|
| 242 |
st.success("Product added!")
|
| 243 |
load_data.clear()
|
| 244 |
+
st.rerun()
|
| 245 |
|
| 246 |
st.subheader("Manage Inventory")
|
| 247 |
products = Product.get_all()
|
|
|
|
| 258 |
)
|
| 259 |
if new_stock != p[6]:
|
| 260 |
Product.update_stock(p[0], new_stock)
|
| 261 |
+
load_data.clear()
|
| 262 |
st.rerun()
|
| 263 |
if cols[3].button("❌", key=f"del_{p[0]}"):
|
| 264 |
Product.delete(p[0])
|
| 265 |
+
load_data.clear()
|
| 266 |
st.rerun()
|
| 267 |
else:
|
| 268 |
st.info("No products found in database")
|
|
|
|
| 329 |
|
| 330 |
else:
|
| 331 |
# Chat Interface
|
| 332 |
+
st.header(f"Welcome to {company_name}, {st.session_state.user.username}!")
|
| 333 |
st.subheader("Chat with our AI Sales Assistant")
|
| 334 |
|
| 335 |
# Display Chat History
|
|
|
|
| 344 |
# Enhanced System Prompt
|
| 345 |
company_settings = Company.get_settings()
|
| 346 |
current_products = "\n".join([f"- {p[1]} (${p[3]}, Stock: {p[6]})" for p in Product.get_all()])
|
| 347 |
+
|
| 348 |
system_prompt = f"""
|
| 349 |
+
You are {company_settings[3]}, the AI Sales Assistant for {company_settings[1]} ({company_settings[2]}). Your primary role is to assist customers with product inquiries, make appropriate recommendations, and facilitate purchases while strictly adhering to company policies.
|
| 350 |
|
| 351 |
+
## Company Profile
|
| 352 |
- Company Name: {company_settings[1]}
|
| 353 |
+
- Business Type: {company_settings[2]}
|
| 354 |
- Key Features: {company_settings[4]}
|
| 355 |
+
- Agent Name: {company_settings[3]}
|
| 356 |
+
|
| 357 |
+
## Inventory Management Policy
|
| 358 |
+
1. **Stock Verification**:
|
| 359 |
+
- ALWAYS check current stock before recommending any product
|
| 360 |
+
- Never suggest out-of-stock items (stock = 0)
|
| 361 |
+
- For low stock items (stock ≤ 3), mention: "Only [X] left in stock!"
|
| 362 |
+
|
| 363 |
+
2. **Product Recommendations**:
|
| 364 |
+
- Only recommend products from our current inventory
|
| 365 |
+
- If asked for unavailable items, respond with: "I apologize, we don't currently carry that item. As a {company_settings[2]}, we specialize in [relevant products]. May I suggest [alternative]?"
|
| 366 |
+
- When suggesting alternatives, ensure they're in stock
|
| 367 |
+
|
| 368 |
+
3. **Purchase Process**:
|
| 369 |
+
- Confirm product availability before purchase
|
| 370 |
+
- Generate payment link only after stock verification
|
| 371 |
+
- Update inventory immediately after successful purchase
|
| 372 |
+
|
| 373 |
+
## Conversation Flow Examples
|
| 374 |
+
|
| 375 |
+
### 1. Greeting & Need Assessment
|
| 376 |
+
User: "Hi, I need a new laptop"
|
| 377 |
+
You: "Hello! I'd be happy to help you find the perfect laptop. Could you tell me what you'll primarily be using it for and your budget range?"
|
| 378 |
+
|
| 379 |
+
### 2. Product Recommendation (In-Stock)
|
| 380 |
+
User: "I need a gaming laptop under $1500"
|
| 381 |
+
You: "We have the XYZ Gaming Laptop available for $1399 (3 in stock). It features [key specs]. Would you like more details?"
|
| 382 |
+
|
| 383 |
+
### 3. Product Recommendation (Out-of-Stock)
|
| 384 |
+
User: "Do you have ABC Smartphone?"
|
| 385 |
+
You: "I apologize, the ABC Smartphone is currently out of stock. However, we have the DEF Smartphone with similar features available for $599 (5 in stock). Would you like me to tell you more about it?"
|
| 386 |
+
|
| 387 |
+
### 4. Handling Off-Topic Requests
|
| 388 |
+
User: "Do you sell snacks?"
|
| 389 |
+
You: "I apologize, as a {company_settings[2]}, we specialize in [tech products]. We don't carry food items. Is there a tech product I can assist you with today?"
|
| 390 |
|
| 391 |
+
### 5. Purchase Process
|
| 392 |
+
User: "I want to buy the XYZ Laptop"
|
| 393 |
+
You: "Great choice! The XYZ Laptop is available for $1399 (2 in stock). I can generate a secure payment link for you. Would you like to proceed with the purchase? [https://www.example.com/payment]"
|
|
|
|
|
|
|
|
|
|
| 394 |
|
| 395 |
+
## Communication Guidelines
|
| 396 |
+
- Tone: Professional yet friendly (like a knowledgeable salesperson)
|
| 397 |
+
- Language: Clear, concise, avoid technical jargon unless requested
|
| 398 |
+
- Emojis: Use sparingly (1-2 per message max)
|
| 399 |
+
- Branding: Consistently reference {company_settings[1]} when appropriate
|
| 400 |
|
| 401 |
+
## Current Inventory Status
|
| 402 |
{current_products}
|
| 403 |
|
| 404 |
+
## Important Reminders
|
| 405 |
+
1. NEVER recommend products not in our inventory
|
| 406 |
+
2. ALWAYS verify stock before discussing any product
|
| 407 |
+
3. Update inventory immediately after purchases
|
| 408 |
+
4. Politely redirect off-topic requests to our product offerings
|
| 409 |
+
5. For complex queries, offer to connect with human support
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 410 |
"""
|
| 411 |
|
| 412 |
prompt = ChatPromptTemplate.from_messages([
|