debug: 添加详细调试日志并修复API端点

主要修改:
1. 添加完整的API请求和响应调试日志
2. 修复API端点:从engines改为dataStores(符合Google Cloud文档)
3. 修正配置字段名:使用data_store_id而不是vertex_ai_data_store_id

这些修改将帮助我们:
- 查看实际发送的请求格式
- 查看API返回的响应结构
- 使用正确的Vertex AI Search API端点

下一步可以通过日志分析为什么搜索结果为0。
This commit is contained in:
imeepos 2025-07-25 13:45:09 +08:00
parent 0a9e7d4539
commit 834408addf
1 changed files with 16 additions and 3 deletions

View File

@ -521,13 +521,21 @@ async fn execute_vertex_ai_search(
payload["filter"] = serde_json::Value::String(combined_filter);
}
// 7. 构建请求URL
// 7. 构建请求URL - 使用正确的 dataStores 端点
let search_url = format!(
"https://discoveryengine.googleapis.com/v1beta/projects/{}/locations/global/collections/default_collection/engines/{}/servingConfigs/default_search:search",
"https://discoveryengine.googleapis.com/v1beta/projects/{}/locations/global/collections/default_collection/dataStores/{}/servingConfigs/default_search:search",
global_config.google_project_id,
global_config.vertex_ai_app_id
global_config.data_store_id
);
// 添加调试日志:打印完整的请求 payload
if request.config.debug_mode {
eprintln!("=== 发送到 Vertex AI Search 的完整请求 ===");
eprintln!("URL: {}", search_url);
eprintln!("Payload: {}", serde_json::to_string_pretty(&payload).unwrap_or_else(|_| "无法序列化请求".to_string()));
eprintln!("=== 请求结束 ===");
}
// 8. 创建带有超时配置的客户端
let client = reqwest::Client::builder()
.timeout(std::time::Duration::from_secs(60))
@ -658,6 +666,11 @@ fn convert_vertex_response_to_search_results(
) -> Result<SearchResponse, anyhow::Error> {
let mut results = Vec::new();
// 添加调试日志:打印完整的 API 响应
eprintln!("=== Vertex AI Search API 完整响应 ===");
eprintln!("{}", serde_json::to_string_pretty(vertex_response).unwrap_or_else(|_| "无法序列化响应".to_string()));
eprintln!("=== 响应结束 ===");
// 解析 Vertex AI Search 响应
if let Some(vertex_results) = vertex_response.get("results").and_then(|v| v.as_array()) {
eprintln!("收到 {} 个原始搜索结果", vertex_results.len());