45 lines
1.2 KiB
Rust
45 lines
1.2 KiB
Rust
use std::sync::Arc;
|
|
|
|
use dotenv::dotenv;
|
|
use futures::StreamExt;
|
|
use goose::agents::{Agent, ExtensionConfig};
|
|
use goose::config::{DEFAULT_EXTENSION_DESCRIPTION, DEFAULT_EXTENSION_TIMEOUT};
|
|
use goose::message::Message;
|
|
use goose::providers::databricks::DatabricksProvider;
|
|
|
|
#[tokio::main]
|
|
async fn main() {
|
|
// Setup a model provider from env vars
|
|
let _ = dotenv();
|
|
|
|
let provider = Arc::new(DatabricksProvider::default());
|
|
|
|
// Setup an agent with the developer extension
|
|
let mut agent = Agent::new(provider);
|
|
|
|
let config = ExtensionConfig::stdio(
|
|
"developer",
|
|
"./target/debug/developer",
|
|
DEFAULT_EXTENSION_DESCRIPTION,
|
|
DEFAULT_EXTENSION_TIMEOUT,
|
|
);
|
|
agent.add_extension(config).await.unwrap();
|
|
|
|
println!("Extensions:");
|
|
for extension in agent.list_extensions().await {
|
|
println!(" {}", extension);
|
|
}
|
|
|
|
let messages = vec![Message::user()
|
|
.with_text("can you summarize the readme.md in this dir using just a haiku?")];
|
|
|
|
let mut stream = agent.reply(&messages, None).await.unwrap();
|
|
while let Some(message) = stream.next().await {
|
|
println!(
|
|
"{}",
|
|
serde_json::to_string_pretty(&message.unwrap()).unwrap()
|
|
);
|
|
println!("\n");
|
|
}
|
|
}
|