File size: 1,441 Bytes
e146c0f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import os
import sys
from dotenv import load_dotenv

# Add project root to path
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), "..")))

from app.utils.embedding import get_query_embedding
from app.services.qdrant_client import qdrant  # or a retrieval function
from app.services.openai_client import generate_response
from app.services.tavily_client import search_web
from app.utils.logging import logger

# Load environment variables
load_dotenv()

COLLECTION_NAME = "your_collection_name"

def test_query(user_query: str):
    logger.info(f"User query: {user_query}")

    # Step 1: Embed query
    query_embedding = get_query_embedding(user_query)

    # Step 2: Retrieve from Qdrant
    search_result = qdrant.search(
        collection_name=COLLECTION_NAME,
        query_vector=query_embedding,
        limit=3
    )
    retrieved_texts = [hit.payload["text"] for hit in search_result]

    # Step 3: Web search (optional)
    web_results = search_web(user_query)
    web_snippets = [result["content"] for result in web_results]

    # Step 4: Generate response
    context = "\n\n".join(retrieved_texts + web_snippets)
    prompt = f"Answer the following question using the context below:\n\nContext:\n{context}\n\nQuestion: {user_query}"
    response = generate_response(prompt)

    logger.info(f"Response:\n{response}")

if __name__ == "__main__":
    test_query("What is LangGraph and how does it work?")