Files
tkmind_go/crates/goose/examples/agent.rs
T

65 lines
1.8 KiB
Rust
Raw Normal View History

2025-07-24 03:09:26 +02:00
use dotenvy::dotenv;
2025-01-24 13:04:43 -08:00
use futures::StreamExt;
2025-11-03 21:04:44 -05:00
use goose::agents::{Agent, AgentEvent, ExtensionConfig, SessionConfig};
use goose::config::{DEFAULT_EXTENSION_DESCRIPTION, DEFAULT_EXTENSION_TIMEOUT};
2025-08-06 22:06:13 -04:00
use goose::conversation::message::Message;
2025-10-10 19:31:50 -04:00
use goose::providers::create_with_named_model;
use goose::providers::databricks::DATABRICKS_DEFAULT_MODEL;
2025-11-03 21:04:44 -05:00
use goose::session::session_manager::SessionType;
use std::path::PathBuf;
2025-01-24 13:04:43 -08:00
#[tokio::main]
async fn main() -> anyhow::Result<()> {
2025-01-24 13:04:43 -08:00
let _ = dotenv();
let provider =
create_with_named_model("databricks", DATABRICKS_DEFAULT_MODEL, Vec::new()).await?;
2025-01-24 13:04:43 -08:00
let agent = Agent::new();
let session = agent
.config
.session_manager
.create_session(
PathBuf::default(),
"max-turn-test".to_string(),
SessionType::Hidden,
)
.await?;
agent.update_provider(provider, &session.id).await?;
2025-01-24 13:04:43 -08:00
let config = ExtensionConfig::stdio(
"developer",
"./target/debug/goose",
DEFAULT_EXTENSION_DESCRIPTION,
DEFAULT_EXTENSION_TIMEOUT,
)
.with_args(vec!["mcp", "developer"]);
agent.add_extension(config, &session.id).await?;
2025-01-24 13:04:43 -08:00
println!("Extensions:");
for extension in agent.list_extensions().await {
println!(" {}", extension);
}
2025-11-03 21:04:44 -05:00
let session_config = SessionConfig {
id: session.id,
schedule_id: None,
max_turns: None,
retry_config: None,
};
let user_message = Message::user()
.with_text("can you summarize the readme.md in this dir using just a haiku?");
let mut stream = agent.reply(user_message, session_config, None).await?;
2025-01-24 13:04:43 -08:00
while let Some(Ok(AgentEvent::Message(message))) = stream.next().await {
println!("{}", serde_json::to_string_pretty(&message)?);
2025-01-24 13:04:43 -08:00
println!("\n");
}
Ok(())
2025-01-24 13:04:43 -08:00
}