Refactor tool execution pipeline
This commit is contained in:
@@ -0,0 +1,22 @@
|
||||
fn main() {
|
||||
let input: serde_json::Value = serde_json::from_reader(std::io::stdin()).unwrap();
|
||||
if input.get("response").is_none() && input.get("db_response").is_none() {
|
||||
let q = input["params"]["query"].as_str().unwrap_or("");
|
||||
if q.is_empty() { println!(r#"{{"type":"result","content":"缺少query"}}"#); return; }
|
||||
let n = input["params"]["max_results"].as_u64().unwrap_or(5);
|
||||
let body = serde_json::json!({"query":q,"max_results":n,"include_answer":true});
|
||||
println!("{}", serde_json::json!({
|
||||
"type":"http","method":"POST","url":"https://api.tavily.com/search",
|
||||
"body":body.to_string(),"desc":format!("搜索: {q}")
|
||||
}));
|
||||
} else {
|
||||
let b = &input["response"]["body"];
|
||||
let mut o = String::new();
|
||||
if let Some(a) = b["answer"].as_str() { o.push_str(&format!("📝 {a}\n\n")); }
|
||||
for (i,r) in b["results"].as_array().unwrap_or(&vec![]).iter().enumerate() {
|
||||
o.push_str(&format!("{}. {} - {}\n", i+1, r["title"].as_str().unwrap_or(""), r["url"].as_str().unwrap_or("")));
|
||||
}
|
||||
if o.is_empty() { o = "未找到结果".into(); }
|
||||
println!("{}", serde_json::json!({"type":"result","content":o}));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user