File size: 2,267 Bytes
bf6dbfa
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
import pytest
from agent.nodes import detect_intent
from agent.state import AgentState
from agent.nodes import IntentResponse
from langchain_core.runnables import RunnableLambda

def test_intent_classifier_greeting(mocker):
    state = AgentState(
        conversation_history=[],
        current_message="Hi there",
        detected_intent=None,
        retrieved_documents=[],
        user_name=None,
        user_email=None,
        creator_platform=None,
        lead_ready=False,
        response=""
    )

    mock_llm = mocker.MagicMock()
    mock_chain = RunnableLambda(lambda x: IntentResponse(intent="GREETING", confidence=0.99))
    mock_llm.with_structured_output.return_value = mock_chain
    mocker.patch('agent.nodes.get_llm', return_value=mock_llm)

    result = detect_intent(state)
    assert result["detected_intent"] == "GREETING"

def test_intent_classifier_pricing(mocker):
    state = AgentState(
        conversation_history=[],
        current_message="What are your pricing plans?",
        detected_intent=None,
        retrieved_documents=[],
        user_name=None,
        user_email=None,
        creator_platform=None,
        lead_ready=False,
        response=""
    )

    mock_llm = mocker.MagicMock()
    mock_chain = RunnableLambda(lambda x: IntentResponse(intent="PRICING_QUERY", confidence=0.95))
    mock_llm.with_structured_output.return_value = mock_chain
    mocker.patch('agent.nodes.get_llm', return_value=mock_llm)

    result = detect_intent(state)
    assert result["detected_intent"] == "PRICING_QUERY"

def test_intent_classifier_high_intent(mocker):
    state = AgentState(
        conversation_history=[],
        current_message="I want to sign up for Pro plan",
        detected_intent=None,
        retrieved_documents=[],
        user_name=None,
        user_email=None,
        creator_platform=None,
        lead_ready=False,
        response=""
    )

    mock_llm = mocker.MagicMock()
    mock_chain = RunnableLambda(lambda x: IntentResponse(intent="HIGH_INTENT_LEAD", confidence=0.91))
    mock_llm.with_structured_output.return_value = mock_chain
    mocker.patch('agent.nodes.get_llm', return_value=mock_llm)

    result = detect_intent(state)
    assert result["detected_intent"] == "HIGH_INTENT_LEAD"