Make async (#5126)

Co-authored-by: Douwe Osinga <douwe@squareup.com>
This commit is contained in:
Douwe Osinga
2025-10-10 19:31:50 -04:00
committed by GitHub
parent 69a7b7fe5a
commit 1015064367
43 changed files with 343 additions and 480 deletions
+5 -6
View File
@@ -1,21 +1,20 @@
use std::sync::Arc;
use dotenvy::dotenv;
use futures::StreamExt;
use goose::agents::{Agent, AgentEvent, ExtensionConfig};
use goose::config::{DEFAULT_EXTENSION_DESCRIPTION, DEFAULT_EXTENSION_TIMEOUT};
use goose::conversation::message::Message;
use goose::conversation::Conversation;
use goose::providers::databricks::DatabricksProvider;
use goose::providers::create_with_named_model;
use goose::providers::databricks::DATABRICKS_DEFAULT_MODEL;
#[tokio::main]
async fn main() {
// Setup a model provider from env vars
let _ = dotenv();
let provider = Arc::new(DatabricksProvider::default());
let provider = create_with_named_model("databricks", DATABRICKS_DEFAULT_MODEL)
.await
.expect("Couldn't create provider");
// Setup an agent with the developer extension
let agent = Agent::new();
let _ = agent.update_provider(provider).await;
+3 -6
View File
@@ -1,22 +1,19 @@
use anyhow::Result;
use dotenvy::dotenv;
use goose::conversation::message::Message;
use goose::providers::{
base::{Provider, Usage},
databricks::DatabricksProvider,
};
use goose::providers::databricks::DATABRICKS_DEFAULT_MODEL;
use goose::providers::{base::Usage, create_with_named_model};
use tokio_stream::StreamExt;
#[tokio::main]
async fn main() -> Result<()> {
// Load environment variables from .env file
dotenv().ok();
// Clear any token to force OAuth
std::env::remove_var("DATABRICKS_TOKEN");
// Create the provider
let provider = DatabricksProvider::default();
let provider = create_with_named_model("databricks", DATABRICKS_DEFAULT_MODEL).await?;
// Create a simple message
let message = Message::user().with_text("Tell me a short joke about programming.");
+9 -8
View File
@@ -2,12 +2,14 @@ use anyhow::Result;
use base64::{engine::general_purpose::STANDARD as BASE64, Engine as _};
use dotenvy::dotenv;
use goose::conversation::message::Message;
use goose::providers::{
bedrock::BedrockProvider, databricks::DatabricksProvider, openai::OpenAiProvider,
};
use goose::providers::anthropic::ANTHROPIC_DEFAULT_MODEL;
use goose::providers::create_with_named_model;
use goose::providers::databricks::DATABRICKS_DEFAULT_MODEL;
use goose::providers::openai::OPEN_AI_DEFAULT_MODEL;
use rmcp::model::{CallToolRequestParam, Content, Tool};
use rmcp::object;
use std::fs;
use std::sync::Arc;
#[tokio::main]
async fn main() -> Result<()> {
@@ -15,12 +17,11 @@ async fn main() -> Result<()> {
dotenv().ok();
// Create providers
let providers: Vec<Box<dyn goose::providers::base::Provider + Send + Sync>> = vec![
Box::new(DatabricksProvider::default()),
Box::new(OpenAiProvider::default()),
Box::new(BedrockProvider::default()),
let providers: Vec<Arc<dyn goose::providers::base::Provider>> = vec![
create_with_named_model("databricks", DATABRICKS_DEFAULT_MODEL).await?,
create_with_named_model("openai", OPEN_AI_DEFAULT_MODEL).await?,
create_with_named_model("anthropic", ANTHROPIC_DEFAULT_MODEL).await?,
];
for provider in providers {
// Read and encode test image
let image_data = fs::read("crates/goose/examples/test_assets/test_image.png")?;