migrate ai format conversion to responses adapters

This commit is contained in:
fawney19
2026-04-26 20:32:55 +08:00
parent e36fb8c07a
commit 5b914aa78c
183 changed files with 13539 additions and 3401 deletions

View File

@@ -6,20 +6,27 @@ use aether_scheduler_core::matches_model_mapping;
use super::GatewayPublicRequestContext;
pub(crate) fn models_api_format(request_context: &GatewayPublicRequestContext) -> Option<&str> {
request_context
let signature = request_context
.control_decision
.as_ref()
.and_then(|decision| decision.auth_endpoint_signature.as_deref())
.filter(|signature| {
matches!(
*signature,
"openai:chat" | "openai:image" | "claude:chat" | "gemini:chat"
)
})
.map(str::trim)
.filter(|signature| !signature.is_empty())?;
match signature.to_ascii_lowercase().as_str() {
"openai:chat" => Some("openai:chat"),
"openai:responses" | "openai:cli" => Some("openai:responses"),
"openai:responses:compact" | "openai:compact" => Some("openai:responses:compact"),
"openai:image" => Some("openai:image"),
"claude:chat" => Some("claude:chat"),
"gemini:chat" => Some("gemini:chat"),
_ => None,
}
}
const MODELS_CROSS_FORMAT_QUERY_API_FORMATS: &[&str] = &[
"openai:chat",
"openai:responses",
"openai:responses:compact",
"openai:cli",
"openai:compact",
"openai:image",
@@ -31,7 +38,13 @@ const MODELS_CROSS_FORMAT_QUERY_API_FORMATS: &[&str] = &[
pub(super) fn models_query_api_formats(api_format: &str) -> &'static [&'static str] {
match api_format.trim().to_ascii_lowercase().as_str() {
"openai:chat" | "claude:chat" | "gemini:chat" => MODELS_CROSS_FORMAT_QUERY_API_FORMATS,
"openai:chat"
| "openai:responses"
| "openai:responses:compact"
| "openai:cli"
| "openai:compact"
| "claude:chat"
| "gemini:chat" => MODELS_CROSS_FORMAT_QUERY_API_FORMATS,
"openai:image" => &["openai:image"],
_ => &[],
}