File size: 2,025 Bytes
eadf80b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
from services.coref import _names_from_answer, resolve_followup


def test_policy_prose_is_not_extracted_as_product():
    """An answer about logistics/policy must not yield a product name — else a
    following "is it in stock?" binds the pronoun to "return policy"."""
    assert _names_from_answer("Our return policy is available at: https://x/refund-policy") == []
    assert _names_from_answer("Shipping is available across the country.") == []


def test_real_product_names_still_extracted():
    assert "Astronaut Space Boy Glitter Water" in _names_from_answer(
        "- Astronaut Space Boy Glitter Water - Rs.5,900")
    assert "Wish For Women By Chopard" in " ".join(_names_from_answer(
        "The Wish For Women By Chopard is priced at Rs.9250."))


def test_pronoun_falls_back_through_policy_turn_to_product():
    history = [
        {"role": "user", "content": "do you carry the Astronaut Space Boy Glitter Water?"},
        {"role": "assistant", "content": "Yes — we carry astronaut space boy glitter water. "
                                          "- Astronaut Space Boy Glitter Water - Rs.5,900"},
        {"role": "user", "content": "whats your return policy?"},
        {"role": "assistant", "content": "Our return policy is available at: https://x/policies/refund-policy"},
    ]
    out = resolve_followup("is it in stock right now?", history).lower()
    assert "astronaut space boy glitter water" in out
    assert "return policy" not in out


def test_intervening_product_binds_most_recent():
    history = [
        {"role": "user", "content": "do you have the Magnetic Train?"},
        {"role": "assistant", "content": "Yes — we carry Magnetic Train. - Magnetic Train - Rs.1,000"},
        {"role": "user", "content": "and do you also stock the Wall Climbing Car?"},
        {"role": "assistant", "content": "Yes — we carry Wall Climbing Car. - Wall Climbing Car - Rs.2,000"},
    ]
    out = resolve_followup("how much is it?", history).lower()
    assert "wall climbing car" in out