debug: 添加详细调试日志定位多轮RAG查询卡住问题
This commit is contained in:
parent
25eaed89d8
commit
35b7a489c2
|
|
@ -1039,13 +1039,43 @@ impl GeminiService {
|
|||
|
||||
// 1. 确定或创建会话
|
||||
let session_id = match &request.session_id {
|
||||
Some(id) => id.clone(),
|
||||
Some(id) => {
|
||||
println!("📋 使用现有会话ID: {}", id);
|
||||
id.clone()
|
||||
},
|
||||
None => {
|
||||
// 如果没有提供session_id,生成一个新的
|
||||
uuid::Uuid::new_v4().to_string()
|
||||
let new_id = uuid::Uuid::new_v4().to_string();
|
||||
println!("🆕 生成新会话ID: {}", new_id);
|
||||
new_id
|
||||
}
|
||||
};
|
||||
|
||||
// 如果有会话仓库,确保会话存在
|
||||
if let Some(repo) = &conversation_repo {
|
||||
println!("🔍 检查会话是否存在...");
|
||||
match repo.get_session(&session_id) {
|
||||
Ok(Some(_)) => {
|
||||
println!("✅ 会话已存在");
|
||||
}
|
||||
Ok(None) => {
|
||||
println!("🆕 会话不存在,创建新会话...");
|
||||
// 创建新会话
|
||||
use crate::data::models::conversation::CreateConversationSessionRequest;
|
||||
let create_request = CreateConversationSessionRequest {
|
||||
title: Some("RAG对话会话".to_string()),
|
||||
metadata: None,
|
||||
};
|
||||
match repo.create_session(create_request) {
|
||||
Ok(_) => println!("✅ 新会话创建成功"),
|
||||
Err(e) => println!("⚠️ 创建会话失败: {}", e),
|
||||
}
|
||||
}
|
||||
Err(e) => {
|
||||
println!("⚠️ 检查会话失败: {}", e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 2. 获取历史消息(如果需要且有会话仓库)
|
||||
let mut contents = Vec::new();
|
||||
let mut conversation_context = ConversationContext {
|
||||
|
|
@ -1098,7 +1128,9 @@ impl GeminiService {
|
|||
});
|
||||
|
||||
// 4. 执行RAG查询
|
||||
println!("🚀 准备执行RAG查询,contents数量: {}", contents.len());
|
||||
let response = self.execute_rag_grounding_with_contents(contents, rag_config).await?;
|
||||
println!("📥 RAG查询响应已收到");
|
||||
|
||||
// 5. 保存消息到会话历史(如果有会话仓库)
|
||||
let message_id = if let Some(repo) = &conversation_repo {
|
||||
|
|
@ -1183,8 +1215,10 @@ impl GeminiService {
|
|||
contents: Vec<ContentPart>,
|
||||
rag_config: RagGroundingConfig,
|
||||
) -> Result<RagGroundingResponse> {
|
||||
println!("🔑 开始获取访问令牌...");
|
||||
// 获取访问令牌
|
||||
let access_token = self.get_access_token().await?;
|
||||
println!("✅ 访问令牌获取成功");
|
||||
|
||||
// 创建客户端配置
|
||||
let client_config = self.create_gemini_client(&access_token);
|
||||
|
|
@ -1229,10 +1263,13 @@ impl GeminiService {
|
|||
|
||||
// 发送请求到Cloudflare Gateway (使用beta API)
|
||||
let generate_url = format!("{}/{}:generateContent", client_config.gateway_url, rag_config.model_id);
|
||||
println!("🌐 准备发送请求到: {}", generate_url);
|
||||
println!("📊 请求数据大小: {} bytes", serde_json::to_string(&request_data).unwrap_or_default().len());
|
||||
|
||||
// 重试机制
|
||||
let mut last_error = None;
|
||||
for attempt in 0..self.config.max_retries {
|
||||
println!("🔄 尝试第 {} 次请求...", attempt + 1);
|
||||
match self.send_rag_grounding_request(&generate_url, &client_config, &request_data).await {
|
||||
Ok(response) => {
|
||||
return Ok(RagGroundingResponse {
|
||||
|
|
@ -1293,6 +1330,7 @@ impl GeminiService {
|
|||
client_config: &ClientConfig,
|
||||
request_data: &serde_json::Value,
|
||||
) -> Result<RagGroundingResponse> {
|
||||
println!("📤 构建HTTP请求...");
|
||||
let mut request_builder = self.client
|
||||
.post(url)
|
||||
.json(request_data);
|
||||
|
|
@ -1302,19 +1340,27 @@ impl GeminiService {
|
|||
request_builder = request_builder.header(key, value);
|
||||
}
|
||||
|
||||
println!("🚀 发送HTTP请求...");
|
||||
let response = request_builder
|
||||
.send()
|
||||
.await
|
||||
.map_err(|e| anyhow!("发送RAG请求失败: {}", e))?;
|
||||
|
||||
println!("📨 收到HTTP响应,状态码: {}", response.status());
|
||||
|
||||
let status = response.status();
|
||||
println!("📖 开始读取响应内容...");
|
||||
let response_text = response.text().await
|
||||
.map_err(|e| anyhow!("读取RAG响应失败: {}", e))?;
|
||||
|
||||
println!("📄 响应内容长度: {} 字符", response_text.len());
|
||||
|
||||
if !status.is_success() {
|
||||
println!("❌ HTTP请求失败,状态码: {}", status);
|
||||
return Err(anyhow!("RAG请求失败 ({}): {}", status, response_text));
|
||||
}
|
||||
|
||||
println!("🔍 开始解析响应内容...");
|
||||
// 解析响应
|
||||
self.parse_rag_grounding_response(&response_text)
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue