( # pyright: ignore[reportUnusedFunction]
http_request: Request,
body: CreateResponseRequest,
)
| 16085 | |
| 16086 | @app.post("/v1/responses") |
| 16087 | async def create_response( # pyright: ignore[reportUnusedFunction] |
| 16088 | http_request: Request, |
| 16089 | body: CreateResponseRequest, |
| 16090 | ): |
| 16091 | service: CompletionService = app.state.service |
| 16092 | formatter = service.formatter |
| 16093 | try: |
| 16094 | chat_parts = formatter.response_request_to_chat_parts(body) |
| 16095 | parts = formatter.completion_request_from_response_chat_parts(chat_parts) |
| 16096 | except CompletionRequestValidationError as exc: |
| 16097 | raise bad_request(exc) from exc |
| 16098 | response_tools = chat_parts.tools |
| 16099 | try: |
| 16100 | request = service.request_from_prepared( |
| 16101 | payload=parts.payload, |
| 16102 | prompt_text=parts.prompt_text, |
| 16103 | prompt_plan=parts.prompt_plan, |
| 16104 | grammar_text=parts.grammar_text, |
| 16105 | chat_tool_name=parts.tool_name, |
| 16106 | ) |
| 16107 | stream, cancel = service.submit_request(request) |
| 16108 | except CompletionRequestValidationError as exc: |
| 16109 | raise bad_request(exc) from exc |
| 16110 | if body.stream: |
| 16111 | started_indices: set[int] = set() |
| 16112 | parsed_states: Dict[int, ResponseParser] = {} |
| 16113 | stream_state = OpenAIFormatter.ResponsesStream( |
| 16114 | body=body, |
| 16115 | response_id="resp_" + request.id, |
| 16116 | created_at=float(request.created), |
| 16117 | model=service.scheduler.model.model_path, |
| 16118 | ) |
| 16119 | |
| 16120 | def response_chunk_payloads( |
| 16121 | completion_chunk: CompletionChunk, |
| 16122 | ) -> Iterable[BaseModel | Dict[str, Any]]: |
| 16123 | chat_chunks = formatter.convert_completion_chunk_to_chat_chunks( |
| 16124 | completion_chunk, |
| 16125 | started_indices, |
| 16126 | parts.tool_name, |
| 16127 | tools=response_tools, |
| 16128 | parsed_states=parsed_states, |
| 16129 | generation_prompt=parts.generation_prompt, |
| 16130 | ) |
| 16131 | payloads: List[BaseModel | Dict[str, Any]] = [] |
| 16132 | for chat_chunk in chat_chunks: |
| 16133 | payloads.extend( |
| 16134 | formatter.convert_chat_chunk_to_response_events( |
| 16135 | chat_chunk, |
| 16136 | stream_state, |
| 16137 | ) |
| 16138 | ) |
| 16139 | return payloads |
| 16140 | |
| 16141 | return StreamingResponse( |
| 16142 | stream_sse_outputs( |
| 16143 | formatter, |
| 16144 | http_request, |
nothing calls this directly
no test coverage detected
searching dependent graphs…