mirror of
https://github.com/fawney19/Aether.git
synced 2026-09-02 01:10:23 +08:00
fix(provider): 将rust分支的gemini cli端点行为对齐到python分支 (#321)
* fix(provider): 对齐 Vertex/Gemini 上游发包与 Python master - provider-transport: 为 custom+aiplatform 推断 Vertex API key 上下文并统一 URL 构建顺序,复用共享 request_url 构建最终上游地址 - ai-pipeline/gateway: Vertex Gemini 路径改为仅使用 URL query key,不再向上游附带 x-goog-api-key header;同步对齐 standard/admin/test-connection/runtime miss 摘要中的最终 URL - gemini conversion: 按 Python master 输出 Gemini 请求体,补齐 system_instruction / generation_config / tool_config / function_declarations 形态,并移植 Gemini schema 清洗逻辑 - scheduler/executor: 将最终 upstream_url、mapped_model、key_name 写入候选 extra_data,运行时 miss 诊断优先展示真实展开后的上游 URL 便于服务器排障 * fix(provider): 修复 Vertex provider 测试与本地调度链路 * fix(provider): 对齐 Vertex 本地执行与 Rust CI
This commit is contained in:
@@ -17,6 +17,9 @@ pub struct SchedulerRequestCandidateReportContext {
|
||||
pub key_id: Option<String>,
|
||||
pub client_api_format: Option<String>,
|
||||
pub provider_api_format: Option<String>,
|
||||
pub upstream_url: Option<String>,
|
||||
pub mapped_model: Option<String>,
|
||||
pub key_name: Option<String>,
|
||||
pub proxy: Option<Value>,
|
||||
}
|
||||
|
||||
@@ -103,6 +106,9 @@ pub fn parse_request_candidate_report_context(
|
||||
key_id: string_field(report_context, "key_id"),
|
||||
client_api_format: string_field(report_context, "client_api_format"),
|
||||
provider_api_format: string_field(report_context, "provider_api_format"),
|
||||
upstream_url: string_field(report_context, "upstream_url"),
|
||||
mapped_model: string_field(report_context, "mapped_model"),
|
||||
key_name: string_field(report_context, "key_name"),
|
||||
proxy: report_context
|
||||
.get("proxy")
|
||||
.cloned()
|
||||
@@ -129,11 +135,20 @@ pub fn resolve_report_request_candidate_slot(
|
||||
key_id,
|
||||
client_api_format,
|
||||
provider_api_format,
|
||||
upstream_url,
|
||||
mapped_model,
|
||||
key_name,
|
||||
proxy,
|
||||
} = metadata;
|
||||
let request_id = request_id?;
|
||||
let synthesized_extra_data =
|
||||
build_report_candidate_extra_data(client_api_format, provider_api_format, proxy);
|
||||
let synthesized_extra_data = build_report_candidate_extra_data(
|
||||
client_api_format,
|
||||
provider_api_format,
|
||||
upstream_url,
|
||||
mapped_model,
|
||||
key_name,
|
||||
proxy,
|
||||
);
|
||||
let created_at_unix_ms = matched_candidate
|
||||
.as_ref()
|
||||
.map(|candidate| candidate.created_at_unix_ms)
|
||||
@@ -489,9 +504,12 @@ fn next_candidate_index(candidates: &[StoredRequestCandidate]) -> u32 {
|
||||
fn build_report_candidate_extra_data(
|
||||
client_api_format: Option<String>,
|
||||
provider_api_format: Option<String>,
|
||||
upstream_url: Option<String>,
|
||||
mapped_model: Option<String>,
|
||||
key_name: Option<String>,
|
||||
proxy: Option<Value>,
|
||||
) -> Option<Value> {
|
||||
let mut extra_data = Map::with_capacity(5);
|
||||
let mut extra_data = Map::with_capacity(8);
|
||||
extra_data.insert("gateway_execution_runtime".to_string(), Value::Bool(true));
|
||||
extra_data.insert("phase".to_string(), Value::String("3c_trial".to_string()));
|
||||
if let Some(client_api_format) = client_api_format {
|
||||
@@ -506,6 +524,15 @@ fn build_report_candidate_extra_data(
|
||||
Value::String(provider_api_format),
|
||||
);
|
||||
}
|
||||
if let Some(upstream_url) = upstream_url {
|
||||
extra_data.insert("upstream_url".to_string(), Value::String(upstream_url));
|
||||
}
|
||||
if let Some(mapped_model) = mapped_model {
|
||||
extra_data.insert("mapped_model".to_string(), Value::String(mapped_model));
|
||||
}
|
||||
if let Some(key_name) = key_name {
|
||||
extra_data.insert("key_name".to_string(), Value::String(key_name));
|
||||
}
|
||||
if let Some(proxy) = proxy {
|
||||
extra_data.insert("proxy".to_string(), proxy);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user