MCPcopy Create free account
hub / github.com/abetlen/llama-cpp-python / responses_websocket

Function responses_websocket

examples/server/server.py:16174–16313  ·  view source on GitHub ↗
(  # pyright: ignore[reportUnusedFunction]
        websocket: WebSocket,
    )

Source from the content-addressed store, hash-verified

16172
16173 @app.websocket("/v1/responses")
16174 async def responses_websocket( # pyright: ignore[reportUnusedFunction]
16175 websocket: WebSocket,
16176 ):
16177 await websocket.accept()
16178 service: CompletionService = app.state.service
16179 formatter = service.formatter
16180 # HTTP /v1/responses remains stateless. The websocket transport keeps
16181 # per-connection response history so Codex can use previous_response_id
16182 # within a single live session.
16183 websocket_response_history: Dict[str, ResponsesWebSocketState] = {}
16184
16185 def websocket_request_with_ephemeral_history(
16186 ws_body: ResponseCreateWebSocketRequest,
16187 ) -> CreateResponseRequest:
16188 body = ws_body.to_create_response_request()
16189 previous_response_id = body.previous_response_id
16190 if previous_response_id is None:
16191 return body
16192 prior_state = websocket_response_history.get(previous_response_id)
16193 if prior_state is None:
16194 raise CompletionRequestValidationError(
16195 f"unknown previous_response_id: {previous_response_id}"
16196 )
16197 current_items = formatter._clone_response_input_items(body.input)
16198 replay_items = formatter._clone_response_input_items(
16199 prior_state.input_items
16200 )
16201 for item in prior_state.output_items:
16202 normalized = formatter._normalize_response_output_item_for_input(item)
16203 if normalized is not None:
16204 replay_items.append(normalized)
16205 replay_items.extend(current_items)
16206 return body.model_copy(
16207 update={
16208 "input": replay_items,
16209 "previous_response_id": None,
16210 }
16211 )
16212
16213 async def send_error(message: str) -> None:
16214 await websocket.send_json(
16215 {
16216 "type": "error",
16217 "error": {
16218 "message": message,
16219 },
16220 }
16221 )
16222
16223 try:
16224 while True:
16225 try:
16226 payload = await websocket.receive_json()
16227 except WebSocketDisconnect:
16228 break
16229 except Exception:
16230 await send_error("invalid websocket request payload")
16231 continue

Callers

nothing calls this directly

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…