8d59c2dced
Signed-off-by: Adrian Cole <adrian@tetrate.io>
65 lines
1.8 KiB
Rust
65 lines
1.8 KiB
Rust
use dotenvy::dotenv;
|
|
use futures::StreamExt;
|
|
use goose::agents::{Agent, AgentEvent, ExtensionConfig, SessionConfig};
|
|
use goose::config::{DEFAULT_EXTENSION_DESCRIPTION, DEFAULT_EXTENSION_TIMEOUT};
|
|
use goose::conversation::message::Message;
|
|
use goose::providers::create_with_named_model;
|
|
use goose::providers::databricks::DATABRICKS_DEFAULT_MODEL;
|
|
use goose::session::session_manager::SessionType;
|
|
use std::path::PathBuf;
|
|
|
|
#[tokio::main]
|
|
async fn main() -> anyhow::Result<()> {
|
|
let _ = dotenv();
|
|
|
|
let provider =
|
|
create_with_named_model("databricks", DATABRICKS_DEFAULT_MODEL, Vec::new()).await?;
|
|
|
|
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?;
|
|
|
|
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?;
|
|
|
|
println!("Extensions:");
|
|
for extension in agent.list_extensions().await {
|
|
println!(" {}", extension);
|
|
}
|
|
|
|
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?;
|
|
|
|
while let Some(Ok(AgentEvent::Message(message))) = stream.next().await {
|
|
println!("{}", serde_json::to_string_pretty(&message)?);
|
|
println!("\n");
|
|
}
|
|
|
|
Ok(())
|
|
}
|