use corrosive_agents::prelude::*;
use serde_json::json;
#[tokio::main]
async fn main() -> Result<()> {
let _ = dotenvy::dotenv();
let agent = AgentBuilder::from_json_file("examples/agent.json")?
.skill(FnSkill::new(
"word_count",
"Counts words in `text`",
|input| async move {
let words = input["text"]
.as_str()
.unwrap_or_default()
.split_whitespace()
.count();
Ok(json!({ "words": words }))
},
))
.llm(NvidiaClient::from_env()?)
.generate_identity()
.build()?;
println!(
"loaded '{}' v{} — {}",
agent.name(),
agent.version(),
agent.manifest().description
);
for capability in agent.active_capabilities() {
println!(
" capability: {} ({})",
capability.name, capability.description
);
}
let counted = agent
.execute_skill(
"word_count",
json!({ "text": "corrosive agents eat rust for breakfast" }),
)
.await?;
println!("word_count -> {counted}");
let reply = agent.chat("json-demo", "What can you do?").await?;
println!("\nassistant: {reply}");
Ok(())
}