1- import asyncio
2-
31from app .core .logging import get_logger
42from app .generation .models import GenerateAnswer , GenerationRequest , GenerationResponse
3+ from app .generation .prompt_builder import build_prompt
54
65from app .core .interfaces import BaseRetriever
76
87
98logger = get_logger (__name__ )
109
1110
12- async def generate_anwer (
11+ async def generate_answer (
1312 req : GenerationRequest , retriever : BaseRetriever
1413) -> GenerationResponse :
1514 """
@@ -24,22 +23,21 @@ async def generate_anwer(
2423 GenerationResponse: The response containing the original query and generated answer.
2524 """
2625 # retrieve top-k relevant documents based on the query
26+ logger .info (f"Generation started for query='{ req .query } '" )
27+
2728 retrieved_chunks = await retriever .retrieve (req .query , req .context_size )
2829 """
2930 e.g: retrieved_chunks = [
30- {"doc_id": "1", "content ": "Document content 1" , "metadata": {"source": "source1"}},
31- {"doc_id": "2", "content ": "Document content 2" , "metadata": {"source": "source2"}},
31+ {"doc_id": "1", "score ": 0.8 , "metadata": {"source": "source1"}},
32+ {"doc_id": "2", "score ": 0.7 , "metadata": {"source": "source2"}},
3233 ...
3334 ]
35+ Note: Does not include original text; only doc_id and metadata.
3436 """
37+ logger .debug (f"Retrieved { len (retrieved_chunks )} chunks" )
3538
36- await asyncio . sleep ( 0.1 ) # simulate llm latency
39+ _ = build_prompt ( req . query , retrieved_chunks )
3740
38- # e.g context = [
39- # {"doc_id": "1", "content": "Document content 1", "metadata": {"source": "source1"}},
40- # {"doc_id": "2", "content": "Document content 2", "metadata": {"source": "source2"}},
41- # ...
42- # ]
4341 synthesized = (
4442 " " .join (chunk ["doc_id" ] for chunk in retrieved_chunks ) or "No context found."
4543 )
0 commit comments