CarsRUS / tests /test_agent.py
galbendavids's picture
tests
849c690 verified
"""
Test script for the LangGraph agent pipeline.
Runs several queries with a short wait between them to verify the full flow.
Requires gemini_api in environment for real LLM calls; otherwise only tests prepare_generation (no API).
"""
import os
import time
from rag_engine import RAGEngine
from agent import build_agent_graph, run_stream
def main():
print("Loading RAG Engine and building agent graph...")
engine = RAGEngine()
graph = build_agent_graph(engine)
print("OK.\n")
api_key = os.environ.get("gemini_api")
if not api_key:
print("鈿狅笍 gemini_api not set. Testing only prepare_generation (no LLM calls).\n")
test_queries = [
"Tell me about the Audi RS3",
"Compare Audi RS3 vs Hyundai Elantra N",
"诪讛 讚注转讱 注诇 BMW X5?", # should trigger refusal
]
for i, query in enumerate(test_queries, 1):
print(f"--- Test {i}: prepare_generation ---")
print(f"Query: {query!r}")
refusal, sys_p, user_p, steps = engine.prepare_generation(query)
if refusal:
print(f"Refusal (expected for unsupported car): {refusal[:150]}...")
else:
print(f"Steps: {len(steps)}; system_prompt length: {len(sys_p or '')}; user_prompt length: {len(user_p or '')}")
print()
print("Done (prepare_generation only). Set gemini_api to run full agent.")
return
test_queries = [
"Tell me about the Audi RS3",
"Compare Audi RS3 vs Hyundai Elantra N",
"诪讛 讛讬转专讜谞讜转 砖诇 拽讬讛 EV9?",
"诪讛 讚注转讱 注诇 BMW X5?", # should trigger refusal (unsupported model)
]
wait_seconds = 8
for i, query in enumerate(test_queries, 1):
print(f"--- Test {i}/{len(test_queries)} ---")
print(f"Query: {query!r}")
last_output = None
step_count = 0
try:
for out in run_stream(engine, graph, query, api_key):
last_output = out
step_count += 1
if last_output:
preview = last_output[:400] + "..." if len(last_output) > 400 else last_output
print(f"Steps yielded: {step_count}; final length: {len(last_output)}")
print(f"Final preview:\n{preview}\n")
else:
print("No output received.\n")
except Exception as e:
print(f"Error: {e}\n")
if i < len(test_queries):
print(f"Waiting {wait_seconds}s before next query...")
time.sleep(wait_seconds)
print("All tests finished.")
if __name__ == "__main__":
main()