1+ # pylint: disable=too-many-locals,too-many-branches,too-many-nested-blocks
2+
13"""Handler for REST API call to provide answer to query using Response API."""
24
3- import json
45import logging
56from typing import Annotated , Any , cast
67
2425from models .requests import QueryRequest
2526from models .responses import (
2627 ForbiddenResponse ,
28+ PromptTooLongResponse ,
2729 InternalServerErrorResponse ,
2830 NotFoundResponse ,
2931 QueryResponse ,
5961 404 : NotFoundResponse .openapi_response (
6062 examples = ["conversation" , "model" , "provider" ]
6163 ),
64+ 413 : PromptTooLongResponse .openapi_response (),
6265 422 : UnprocessableEntityResponse .openapi_response (),
6366 429 : QuotaExceededResponse .openapi_response (),
6467 500 : InternalServerErrorResponse .openapi_response (examples = ["configuration" ]),
@@ -96,7 +99,7 @@ def _build_tool_call_summary( # pylint: disable=too-many-return-statements,too-
9699 id = str (call_id ),
97100 name = getattr (output_item , "name" , "function_call" ),
98101 args = args ,
99- response = None ,
102+ type = "tool_call" ,
100103 )
101104
102105 if item_type == "file_search_call" :
@@ -105,36 +108,38 @@ def _build_tool_call_summary( # pylint: disable=too-many-return-statements,too-
105108 "status" : getattr (output_item , "status" , None ),
106109 }
107110 results = getattr (output_item , "results" , None )
108- response_payload : Any | None = None
111+ # response_payload: Any | None = None
109112 if results is not None :
110113 # Store only the essential result metadata to avoid large payloads
111- response_payload = {
112- "results" : [
113- {
114- "file_id" : (
115- getattr (result , "file_id" , None )
116- if not isinstance (result , dict )
117- else result .get ("file_id" )
118- ),
119- "filename" : (
120- getattr (result , "filename" , None )
121- if not isinstance (result , dict )
122- else result .get ("filename" )
123- ),
124- "score" : (
125- getattr (result , "score" , None )
126- if not isinstance (result , dict )
127- else result .get ("score" )
128- ),
129- }
130- for result in results
131- ]
132- }
114+ # response_payload = {
115+ # "results": [
116+ # {
117+ # "file_id": (
118+ # getattr(result, "file_id", None)
119+ # if not isinstance(result, dict)
120+ # else result.get("file_id")
121+ # ),
122+ # "filename": (
123+ # getattr(result, "filename", None)
124+ # if not isinstance(result, dict)
125+ # else result.get("filename")
126+ # ),
127+ # "score": (
128+ # getattr(result, "score", None)
129+ # if not isinstance(result, dict)
130+ # else result.get("score")
131+ # ),
132+ # }
133+ # for result in results
134+ # ]
135+ # }
136+ ... # Handle response_payload
133137 return ToolCallSummary (
134138 id = str (getattr (output_item , "id" )),
135139 name = DEFAULT_RAG_TOOL ,
136140 args = args ,
137- response = json .dumps (response_payload ) if response_payload else None ,
141+ # response=json.dumps(response_payload) if response_payload else None,
142+ type = "tool_call" ,
138143 )
139144
140145 if item_type == "web_search_call" :
@@ -143,7 +148,7 @@ def _build_tool_call_summary( # pylint: disable=too-many-return-statements,too-
143148 id = str (getattr (output_item , "id" )),
144149 name = "web_search" ,
145150 args = args ,
146- response = None ,
151+ type = "tool_call" ,
147152 )
148153
149154 if item_type == "mcp_call" :
@@ -160,7 +165,8 @@ def _build_tool_call_summary( # pylint: disable=too-many-return-statements,too-
160165 id = str (getattr (output_item , "id" )),
161166 name = getattr (output_item , "name" , "mcp_call" ),
162167 args = args ,
163- response = getattr (output_item , "output" , None ),
168+ # response=getattr(output_item, "output", None),
169+ type = "tool_call" ,
164170 )
165171
166172 if item_type == "mcp_list_tools" :
@@ -178,7 +184,8 @@ def _build_tool_call_summary( # pylint: disable=too-many-return-statements,too-
178184 id = str (getattr (output_item , "id" )),
179185 name = "mcp_list_tools" ,
180186 args = args ,
181- response = None ,
187+ # response=None,
188+ type = "tool_call" ,
182189 )
183190
184191 if item_type == "mcp_approval_request" :
@@ -191,7 +198,8 @@ def _build_tool_call_summary( # pylint: disable=too-many-return-statements,too-
191198 id = str (getattr (output_item , "id" )),
192199 name = getattr (output_item , "name" , "mcp_approval_request" ),
193200 args = args ,
194- response = None ,
201+ # response=None,
202+ type = "tool_call" ,
195203 )
196204
197205 return None
@@ -400,6 +408,8 @@ async def retrieve_response( # pylint: disable=too-many-locals,too-many-branche
400408 summary = TurnSummary (
401409 llm_response = llm_response ,
402410 tool_calls = tool_calls ,
411+ tool_results = [],
412+ rag_chunks = [],
403413 )
404414
405415 # Extract referenced documents and token usage from Responses API response
0 commit comments