Tests
docs = ['Python est un langage', 'Django est un framework', 'FastAPI est rapide']
vecs = [[1, 0, 0], [0, 1, 0], [0, 0, 1]]
app = build_full_rag_agent(docs, vecs, threshold=1.0)
# Question avec résultat pertinent (vecteur proche)
r = app.invoke({
'query': 'Qu\'est-ce que Python?',
'query_vector': [0.9, 0.1, 0],
'needs_search': False,
'documents': [],
'is_relevant': False,
'answer': '',
})
assert r['needs_search'] == True, 'La query contient un ?, needs_search doit etre True'
assert 'Python est un langage' in r['answer'], f'La réponse doit mentionner Python, got: {r["answer"]}'
assert r['answer'].startswith('Réponse: '), 'La réponse doit commencer par Réponse:'
# Pas une question
r2 = app.invoke({
'query': 'Bonjour',
'query_vector': [0.5, 0.5, 0],
'needs_search': False,
'documents': [],
'is_relevant': False,
'answer': '',
})
assert r2['answer'] == "Ce n'est pas une question.", f'Got: {r2["answer"]}'
# Question mais seuil tres bas (pas pertinent)
app2 = build_full_rag_agent(docs, vecs, threshold=0.001)
r3 = app2.invoke({
'query': 'C\'est quoi?',
'query_vector': [0.5, 0.5, 0.5],
'needs_search': False,
'documents': [],
'is_relevant': False,
'answer': '',
})
assert 'pas trouve' in r3['answer'], f'Doit repondre pas trouve, got: {r3["answer"]}'