(request: QueryRequest)
| 228 | |
| 229 | @api.post("/query", response_model=QueryResponse) |
| 230 | async def process_query(request: QueryRequest): |
| 231 | global is_generating, query_resp_history |
| 232 | logger.info(f"Processing query: {request.query}") |
| 233 | query_resp = QueryResponse( |
| 234 | done="false", |
| 235 | answer="", |
| 236 | reasoning="", |
| 237 | agent_name="Unknown", |
| 238 | success="false", |
| 239 | blocks={}, |
| 240 | status="Ready", |
| 241 | uid=str(uuid.uuid4()) |
| 242 | ) |
| 243 | if is_generating: |
| 244 | logger.warning("Another query is being processed, please wait.") |
| 245 | return JSONResponse(status_code=429, content=query_resp.jsonify()) |
| 246 | |
| 247 | try: |
| 248 | is_generating = True |
| 249 | success = await think_wrapper(interaction, request.query) |
| 250 | is_generating = False |
| 251 | |
| 252 | if not success: |
| 253 | query_resp.answer = interaction.last_answer |
| 254 | query_resp.reasoning = interaction.last_reasoning |
| 255 | return JSONResponse(status_code=400, content=query_resp.jsonify()) |
| 256 | |
| 257 | if interaction.current_agent: |
| 258 | blocks_json = {f'{i}': block.jsonify() for i, block in enumerate(interaction.current_agent.get_blocks_result())} |
| 259 | else: |
| 260 | logger.error("No current agent found") |
| 261 | blocks_json = {} |
| 262 | query_resp.answer = "Error: No current agent" |
| 263 | return JSONResponse(status_code=400, content=query_resp.jsonify()) |
| 264 | |
| 265 | logger.info(f"Answer: {interaction.last_answer}") |
| 266 | logger.info(f"Blocks: {blocks_json}") |
| 267 | query_resp.done = "true" |
| 268 | query_resp.answer = interaction.last_answer |
| 269 | query_resp.reasoning = interaction.last_reasoning |
| 270 | query_resp.agent_name = interaction.current_agent.agent_name |
| 271 | query_resp.success = str(interaction.last_success) |
| 272 | query_resp.blocks = blocks_json |
| 273 | |
| 274 | query_resp_dict = { |
| 275 | "done": query_resp.done, |
| 276 | "answer": query_resp.answer, |
| 277 | "agent_name": query_resp.agent_name, |
| 278 | "success": query_resp.success, |
| 279 | "blocks": query_resp.blocks, |
| 280 | "status": query_resp.status, |
| 281 | "uid": query_resp.uid |
| 282 | } |
| 283 | query_resp_history.append(query_resp_dict) |
| 284 | |
| 285 | logger.info("Query processed successfully") |
| 286 | return JSONResponse(status_code=200, content=query_resp.jsonify()) |
| 287 | except Exception as e: |
nothing calls this directly
no test coverage detected