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("please set the OPENAI_API_KEY environment variable");
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(
"Who won the 2024 Nobel Prize in Physics, and why?",
)];
let result = model.chat(messages, None).await?;
println!("=== WebSearch result ===");
println!("{}", result.content);
let messages = vec![Message::human(
"Compute the first 20 terms of the Fibonacci sequence and their average.",
)];
let result = model.chat(messages, None).await?;
println!("\n=== CodeInterpreter result ===");
println!("{}", result.content);
Ok(())
}