66"""
77
88from datetime import datetime , timezone
9+ from typing import Any
910from fastapi import APIRouter , HTTPException , status , Path
1011from loguru import logger
1112
@@ -59,6 +60,7 @@ async def continue_conversation(
5960
6061 # Initialize search results
6162 search_results = []
63+ hierarchical_results_for_count = []
6264
6365 # Get data needed for template
6466 if request .topic :
@@ -91,7 +93,8 @@ async def continue_conversation(
9193 # Limit to a reasonable number of total results
9294 all_hierarchical_results = all_hierarchical_results [:10 ]
9395
94- template_context = {
96+ hierarchical_results_for_count = all_hierarchical_results
97+ template_context : dict [str , Any ] = {
9598 "topic" : request .topic ,
9699 "timeframe" : request .timeframe ,
97100 "hierarchical_results" : all_hierarchical_results ,
@@ -110,6 +113,7 @@ async def continue_conversation(
110113
111114 hierarchical_results = recent_context .results [:5 ] # Limit to top 5 recent items
112115
116+ hierarchical_results_for_count = hierarchical_results
113117 template_context = {
114118 "topic" : f"Recent Activity from ({ request .timeframe } )" ,
115119 "timeframe" : request .timeframe ,
@@ -129,9 +133,6 @@ async def continue_conversation(
129133 relation_count = 0
130134 entity_count = 0
131135
132- # Get the hierarchical results from the template context
133- hierarchical_results_for_count = template_context .get ("hierarchical_results" , [])
134-
135136 # For topic-based search
136137 if request .topic :
137138 for item in hierarchical_results_for_count :
@@ -159,29 +160,24 @@ async def continue_conversation(
159160 elif related .type == "entity" : # pragma: no cover
160161 entity_count += 1 # pragma: no cover
161162
162- # Build metadata
163- metadata = {
164- "query" : request .topic ,
165- "timeframe" : request .timeframe ,
166- "search_count" : len (search_results )
167- if request .topic
168- else 0 , # Original search results count
169- "context_count" : len (hierarchical_results_for_count ),
170- "observation_count" : observation_count ,
171- "relation_count" : relation_count ,
172- "total_items" : (
163+ prompt_metadata = PromptMetadata (
164+ query = request .topic ,
165+ timeframe = request .timeframe ,
166+ search_count = len (search_results ) if request .topic else 0 ,
167+ context_count = len (hierarchical_results_for_count ),
168+ observation_count = observation_count ,
169+ relation_count = relation_count ,
170+ total_items = (
173171 len (hierarchical_results_for_count )
174172 + observation_count
175173 + relation_count
176174 + entity_count
177175 ),
178- "search_limit" : request .search_items_limit ,
179- "context_depth" : request .depth ,
180- "related_limit" : request .related_items_limit ,
181- "generated_at" : datetime .now (timezone .utc ).isoformat (),
182- }
183-
184- prompt_metadata = PromptMetadata (** metadata )
176+ search_limit = request .search_items_limit ,
177+ context_depth = request .depth ,
178+ related_limit = request .related_items_limit ,
179+ generated_at = datetime .now (timezone .utc ).isoformat (),
180+ )
185181
186182 return PromptResponse (
187183 prompt = rendered_prompt , context = template_context , metadata = prompt_metadata
@@ -229,7 +225,7 @@ async def search_prompt(
229225 results = await search_service .search (query , limit = limit , offset = offset )
230226 search_results = await to_search_results (entity_service , results )
231227
232- template_context = {
228+ template_context : dict [ str , Any ] = {
233229 "query" : request .query ,
234230 "timeframe" : request .timeframe ,
235231 "results" : search_results ,
@@ -241,22 +237,19 @@ async def search_prompt(
241237 # Render template
242238 rendered_prompt = await template_loader .render ("prompts/search.hbs" , template_context )
243239
244- # Build metadata
245- metadata = {
246- "query" : request .query ,
247- "timeframe" : request .timeframe ,
248- "search_count" : len (search_results ),
249- "context_count" : len (search_results ),
250- "observation_count" : 0 , # Search results don't include observations
251- "relation_count" : 0 , # Search results don't include relations
252- "total_items" : len (search_results ),
253- "search_limit" : limit ,
254- "context_depth" : 0 , # No context depth for basic search
255- "related_limit" : 0 , # No related items for basic search
256- "generated_at" : datetime .now (timezone .utc ).isoformat (),
257- }
258-
259- prompt_metadata = PromptMetadata (** metadata )
240+ prompt_metadata = PromptMetadata (
241+ query = request .query ,
242+ timeframe = request .timeframe ,
243+ search_count = len (search_results ),
244+ context_count = len (search_results ),
245+ observation_count = 0 ,
246+ relation_count = 0 ,
247+ total_items = len (search_results ),
248+ search_limit = limit ,
249+ context_depth = 0 ,
250+ related_limit = 0 ,
251+ generated_at = datetime .now (timezone .utc ).isoformat (),
252+ )
260253
261254 return PromptResponse (
262255 prompt = rendered_prompt , context = template_context , metadata = prompt_metadata
0 commit comments