Building an Intelligent E-commerce Assistant: LLM-Powered Intent Recognition Using Cohere and Gradio

eddiebee

Eddie Otudor

Posted on November 8, 2024

Building an Intelligent E-commerce Assistant: LLM-Powered Intent Recognition Using Cohere and Gradio

As e-commerce continues to evolve, understanding customer intent has become crucial for providing exceptional shopping experiences. In this article, I'll share how we built a sophisticated intent recognition system using Cohere's Command model and Gradio, creating an interactive demo that showcases the power of LLMs in e-commerce.

The Challenge

Traditional e-commerce search and navigation systems often struggle with understanding natural language queries like "I need a waterproof watch that won't break the bank" or "Can you help me find a gift for my tech-savvy dad?". These systems typically rely on keyword matching and predefined rules, missing the nuanced understanding that modern customers expect.

Solution: LLM-Powered Intent Recognition

We've built an interactive demo using Gradio that showcases how Large Language Models (LLMs) can revolutionize e-commerce interactions. Our system:

  • Understands complex, natural language queries
  • Extracts relevant entities and specifications
  • Determines user intent with high accuracy
  • Provides detailed analysis in real-time

Technical Implementation

1. Core Intent Recognition System

@dataclass
class IntentResponse:
    intent: str
    confidence: float
    entities: Dict
    suggested_action: str
    explanation: str

class EcommerceLLMIntentRecognizer:
    def __init__(self):
        api_key = os.getenv('COHERE_API_KEY')
        self.co = cohere.Client(api_key)

        self.valid_intents = {
            'product_search': 'SEARCH_CATALOG',
            'price_inquiry': 'FETCH_PRICE',
            'order_status': 'CHECK_ORDER_STATUS',
            'return_request': 'INITIATE_RETURN',
            'cart_management': 'MODIFY_CART',
            'availability_check': 'CHECK_INVENTORY',
            'checkout_help': 'ASSIST_CHECKOUT',
            'shipping_info': 'PROVIDE_SHIPPING_INFO'
        }
Enter fullscreen mode Exit fullscreen mode

2. LLM Prompt Engineering

The key to accurate intent recognition lies in our carefully crafted prompt:

def _generate_prompt(self, query: str) -> str:
    return f"""As an e-commerce AI assistant, analyze the following customer query and extract the shopping intent, relevant entities, and determine the appropriate action.

Valid intents are: {', '.join(self.valid_intents.keys())}

Customer Query: "{query}"

Provide your analysis in the following JSON format:
{{
    "intent": "the_identified_intent",
    "confidence": 0.XX,
    "entities": {{
        "product": "identified_product",
        "category": "product_category",
        "specifications": ["any", "relevant", "specs"],
        "price_range": {{
            "min": "if_mentioned",
            "max": "if_mentioned"
        }}
    }},
    "explanation": "Brief explanation of why this intent was chosen"
}}"""
Enter fullscreen mode Exit fullscreen mode

3. Interactive Demo with Gradio

One of the most powerful aspects of our implementation is the interactive demo built with Gradio:

def process_query(user_query: str) -> str:
    try:
        recognizer = EcommerceLLMIntentRecognizer()
        response = recognizer.recognize_intent(user_query)

        return json.dumps({
            'timestamp': datetime.now().isoformat(),
            'query': user_query,
            'intent': response.intent,
            'confidence': response.confidence,
            'entities': response.entities,
            'suggested_action': response.suggested_action,
            'explanation': response.explanation
        }, indent=2)
    except ValueError as e:
        return json.dumps({
            'error': str(e),
            'hint': 'Please ensure COHERE_API_KEY is set in your .env file'
        }, indent=2)

# Create Gradio interface
iface = gr.Interface(
    fn=process_query,
    inputs=gr.Textbox(label="Enter customer query"),
    outputs=gr.JSON(label="Intent Analysis"),
    title="E-commerce LLM Intent Recognition System",
    description="Enter your query to see the detailed intent analysis.",
    examples=[
        ["I'm looking for a waterproof smart watch under $300"],
        ["Can you compare the iPhone 13 and iPhone 14 Pro?"],
        ["Need to return my order #ABC123, it's the wrong size"],
        ["Do you have this dress in size medium and in red?"],
        ["What's your shipping time to California?"]
    ]
)
Enter fullscreen mode Exit fullscreen mode

Real-World Examples

Let's look at some example queries and their analysis:

1. Product Search with Specifications

Query: "I need a waterproof smartwatch under $300"
Enter fullscreen mode Exit fullscreen mode

Response:

{
  "intent": "product_search",
  "confidence": 0.95,
  "entities": {
    "product": "smartwatch",
    "specifications": ["waterproof"],
    "price_range": {
      "max": 300
    }
  },
  "explanation": "Query specifies a product type with specific features and price constraint"
}
Enter fullscreen mode Exit fullscreen mode

2. Order Status Check

Query: "Where's my order #ABC123?"
Enter fullscreen mode Exit fullscreen mode

Response:

{
  "intent": "order_status",
  "confidence": 0.98,
  "entities": {
    "order_id": "ABC123"
  },
  "explanation": "Direct question about order status with order number"
}
Enter fullscreen mode Exit fullscreen mode

Benefits of Our Approach

1. Interactive Demo

  • Instant feedback through Gradio interface
  • Easy to test different queries
  • Visual JSON output for clear understanding

2. Developer-Friendly

  • Simple setup process
  • Clear code structure
  • Easy to extend and modify

3. Business Value

  • Better customer understanding
  • Improved search accuracy
  • Automated query classification

Implementation Guide

Want to try it yourself? Here's how:

1. Install Requirements

pip install cohere gradio python-dotenv
Enter fullscreen mode Exit fullscreen mode

2. Set Up Environment

Create a .env file:

COHERE_API_KEY=your_api_key_here
Enter fullscreen mode Exit fullscreen mode

3. Run the Demo

python app.py
Enter fullscreen mode Exit fullscreen mode

Future Enhancements

1. Enhanced Analysis

  • Sentiment analysis
  • Multiple intent detection
  • Confidence scoring improvements

2. UI Improvements

  • Visual intent mapping
  • Real-time suggestions
  • Mobile optimization

3. Integration Capabilities

  • API endpoint creation
  • Webhook support
  • Database integration

Conclusion

By combining the power of Cohere's LLM with Gradio's user-friendly interface, we've created a powerful tool for understanding e-commerce customer intentions. This demo showcases how modern AI can transform the way we interact with e-commerce platforms.

The application is running as a Hugging Face Space over here. Feel free to reach out if you have questions or want to discuss implementing similar solutions for your e-commerce platform.


Author's Note: I'm passionate about building practical AI solutions that bridge the gap between advanced technology and real-world applications. Connect with me to discuss more about AI in e-commerce or to explore collaboration opportunities.

💖 💪 🙅 🚩
eddiebee
Eddie Otudor

Posted on November 8, 2024

Join Our Newsletter. No Spam, Only the good stuff.

Sign up to receive the latest update from our blog.

Related