(request: Request)
| 5840 | ) |
| 5841 | |
| 5842 | async def handle_responses(request: Request) -> Response: |
| 5843 | raw = await request.json() |
| 5844 | previous_response_id = str(raw.get("previous_response_id") or "").strip() |
| 5845 | previous_messages = None |
| 5846 | if previous_response_id: |
| 5847 | previous_messages = _responses_history.get(previous_response_id) |
| 5848 | if previous_messages is None: |
| 5849 | return JSONResponse( |
| 5850 | { |
| 5851 | "error": { |
| 5852 | "message": f"Unknown previous_response_id: {previous_response_id}", |
| 5853 | "type": "invalid_request_error", |
| 5854 | }, |
| 5855 | }, |
| 5856 | status_code=400, |
| 5857 | ) |
| 5858 | |
| 5859 | body, chat_messages = responses_to_openai_chat_request( |
| 5860 | raw, |
| 5861 | previous_messages=previous_messages, |
| 5862 | default_model=VIRTUAL_MODEL_IDS[_routing_store.default_mode()], |
| 5863 | ) |
| 5864 | response_id = f"resp_{uuid.uuid4().hex[:24]}" |
| 5865 | upstream_resp = await _handle_chat_core( |
| 5866 | body, request, endpoint_name="responses", source_body=raw, |
| 5867 | ) |
| 5868 | |
| 5869 | if upstream_resp.status_code != 200: |
| 5870 | return upstream_resp |
| 5871 | |
| 5872 | if isinstance(upstream_resp, StreamingResponse): |
| 5873 | adapter = OpenAIChatToResponsesStreamAdapter( |
| 5874 | request_body=raw, |
| 5875 | response_id=response_id, |
| 5876 | ) |
| 5877 | |
| 5878 | async def responses_sse() -> AsyncGenerator[bytes, None]: |
| 5879 | async for chunk in upstream_resp.body_iterator: |
| 5880 | adapter.feed(chunk) |
| 5881 | events, assistant_message = adapter.finalize() |
| 5882 | if assistant_message is not None: |
| 5883 | _responses_history[response_id] = json.loads( |
| 5884 | json.dumps(chat_messages + [assistant_message]) |
| 5885 | ) |
| 5886 | for event in events: |
| 5887 | yield event |
| 5888 | |
| 5889 | headers = { |
| 5890 | key: value |
| 5891 | for key, value in upstream_resp.headers.items() |
| 5892 | if key.lower() not in {"content-length", "content-type"} |
| 5893 | } |
| 5894 | return StreamingResponse( |
| 5895 | responses_sse(), |
| 5896 | media_type="text/event-stream", |
| 5897 | headers=headers, |
| 5898 | ) |
| 5899 |
nothing calls this directly
no test coverage detected