[router] Add get and cancel method for response api (#10387)

This commit is contained in:
Keyang Ru
2025-09-12 16:19:38 -07:00
committed by GitHub
parent 2f173ea074
commit 366043db8e
9 changed files with 581 additions and 5 deletions

View File

@@ -16,10 +16,10 @@ use crate::service_discovery::{start_service_discovery, ServiceDiscoveryConfig};
use crate::tokenizer::{factory as tokenizer_factory, traits::Tokenizer};
use crate::tool_parser::ParserRegistry;
use axum::{
extract::{Query, Request, State},
extract::{Path, Query, Request, State},
http::StatusCode,
response::{IntoResponse, Response},
routing::{get, post},
routing::{delete, get, post},
Json, Router,
};
use reqwest::Client;
@@ -208,6 +208,52 @@ async fn v1_responses(
.await
}
async fn v1_responses_get(
State(state): State<Arc<AppState>>,
Path(response_id): Path<String>,
headers: http::HeaderMap,
) -> Response {
state
.router
.get_response(Some(&headers), &response_id)
.await
}
async fn v1_responses_cancel(
State(state): State<Arc<AppState>>,
Path(response_id): Path<String>,
headers: http::HeaderMap,
) -> Response {
state
.router
.cancel_response(Some(&headers), &response_id)
.await
}
async fn v1_responses_delete(
State(state): State<Arc<AppState>>,
Path(response_id): Path<String>,
headers: http::HeaderMap,
) -> Response {
// Python server does not support this yet
state
.router
.delete_response(Some(&headers), &response_id)
.await
}
async fn v1_responses_list_input_items(
State(state): State<Arc<AppState>>,
Path(response_id): Path<String>,
headers: http::HeaderMap,
) -> Response {
// Python server does not support this yet
state
.router
.list_response_input_items(Some(&headers), &response_id)
.await
}
// Worker management endpoints
async fn add_worker(
State(state): State<Arc<AppState>>,
@@ -419,6 +465,16 @@ pub fn build_app(
.route("/rerank", post(rerank))
.route("/v1/rerank", post(v1_rerank))
.route("/v1/responses", post(v1_responses))
.route("/v1/responses/{response_id}", get(v1_responses_get))
.route(
"/v1/responses/{response_id}/cancel",
post(v1_responses_cancel),
)
.route("/v1/responses/{response_id}", delete(v1_responses_delete))
.route(
"/v1/responses/{response_id}/input",
get(v1_responses_list_input_items),
)
.route_layer(axum::middleware::from_fn_with_state(
app_state.clone(),
crate::middleware::concurrency_limit_middleware,