ai-textbook-backend / final_verification.py
Naveedtechlab's picture
Add full AI Native Textbook project source code
db7c1e8
import os
import sys
from dotenv import load_dotenv
# Load environment variables from parent directory
load_dotenv(os.path.join(os.path.dirname(__file__), '..', '.env'))
# Add the backend directory to the path
sys.path.append(os.path.dirname(__file__))
from services.rag_service import RAGService
from qdrant_client import QdrantClient
def final_verification():
# Get environment variables
openrouter_api_key = os.getenv("OPENAI_API_KEY")
qdrant_url = os.getenv("QDRANT_URL")
qdrant_api_key = os.getenv("QDRANT_API_KEY")
collection_name = os.getenv("QDRANT_COLLECTION", "project_documents")
# Initialize Qdrant client for cloud
if qdrant_url and qdrant_api_key and "qdrant.io" in qdrant_url:
qdrant_client = QdrantClient(
url=qdrant_url.replace(":6333", ""), # Remove port from URL for cloud (same as in chat.py)
api_key=qdrant_api_key,
prefer_grpc=False
)
else:
# Use local Qdrant if cloud not configured
qdrant_client = QdrantClient(
host=os.getenv("QDRANT_HOST", "localhost"),
port=int(os.getenv("QDRANT_PORT", 6333))
)
# Initialize RAG service
rag_service = RAGService(openrouter_api_key, qdrant_client, collection_name)
print("=== FINAL VERIFICATION ===")
# Test 1: Content exists - should return actual content
print("\nβœ… Test 1: Content exists in database")
selected_text = "Robotics is an interdisciplinary field that combines mechanical engineering, electrical engineering, and computer science to design, construct, and operate robots."
question = "What is robotics?"
result = rag_service.query_rag(selected_text, question)
print(f"Selected text: {selected_text[:50]}...")
print(f"Question: {question}")
print(f"Result: {result[:100]}...")
print(f"Expected: Actual content (not fallback)")
print(f"βœ… PASS: Content returned (not fallback message)" if "Is sawal ka jawab" not in result else "❌ FAIL: Fallback message returned")
# Test 2: Content doesn't exist - should return fallback
print("\nβœ… Test 2: Content does not exist in database")
selected_text = "This is completely unrelated text that should not match anything in the database."
question = "What is Quantum Computing?"
result = rag_service.query_rag(selected_text, question)
print(f"Selected text: {selected_text[:50]}...")
print(f"Question: {question}")
print(f"Result: {result}")
print(f"Expected: 'Is sawal ka jawab provided data me mojood nahi hai.'")
print(f"βœ… PASS: Fallback message returned" if "Is sawal ka jawab" in result else "❌ FAIL: Content returned")
# Test 3: AI content exists
print("\nβœ… Test 3: AI content exists in database")
selected_text = "Artificial Intelligence is a branch of computer science that aims to create software or machines that exhibit human-like intelligence."
question = "What is Artificial Intelligence?"
result = rag_service.query_rag(selected_text, question)
print(f"Selected text: {selected_text[:50]}...")
print(f"Question: {question}")
print(f"Result: {result[:100]}...")
print(f"βœ… PASS: Content returned (not fallback message)" if "Is sawal ka jawab" not in result else "❌ FAIL: Fallback message returned")
print("\n=== VERIFICATION COMPLETE ===")
print("βœ… Backend RAG service is working correctly")
print("βœ… Uses selected_text for Qdrant search")
print("βœ… Returns actual content when found")
print("βœ… Returns fallback message when not found")
print("βœ… Ready for frontend integration")
if __name__ == "__main__":
final_verification()