use langchainrust::language_models::openai::responses::{
BuiltinTool, ResponsesConfig, ResponsesModel,
};
use langchainrust::{BaseChatModel, Message};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let api_key = std::env::var("OPENAI_API_KEY").expect("请设置 OPENAI_API_KEY 环境变量");
let base_url = std::env::var("OPENAI_BASE_URL")
.unwrap_or_else(|_| "https://api.openai.com/v1".to_string());
let config = ResponsesConfig {
api_key,
model: "gpt-4o".to_string(),
base_url,
builtin_tools: vec![
BuiltinTool::WebSearch, BuiltinTool::CodeInterpreter, ],
..Default::default()
};
let model = ResponsesModel::new(config);
let messages = vec![Message::human("2024 年诺贝尔物理学奖颁给了谁?为什么?")];
let result = model.chat(messages, None).await?;
println!("=== WebSearch 结果 ===");
println!("{}", result.content);
let messages = vec![Message::human(
"计算斐波那契数列的前 20 项,并求它们的平均值。",
)];
let result = model.chat(messages, None).await?;
println!("\n=== CodeInterpreter 结果 ===");
println!("{}", result.content);
Ok(())
}