use std::collections::HashMap; use worker::{LlmProvider, PromptError, SystemPromptContext, Worker}; use worker_types::Message; #[tokio::main] async fn main() -> Result<(), Box> { // Example 1: Basic system prompt generator fn system_prompt( ctx: &SystemPromptContext, _messages: &[Message], ) -> Result { Ok(format!( "You are helping with requests for model {} (provider {:?}).", ctx.model.model_name, ctx.model.provider )) } let mut api_keys = HashMap::new(); api_keys.insert("claude".to_string(), std::env::var("ANTHROPIC_API_KEY")?); let mut blueprint = Worker::blueprint(); blueprint .provider(LlmProvider::Claude) .model("claude-3-sonnet-20240229") .api_keys(api_keys) .system_prompt_fn(system_prompt); let worker = blueprint.instantiate()?; println!("✅ Worker created with builder pattern"); println!(" Provider: {:?}", worker.get_provider_name()); println!(" Model: {}", worker.get_model_name()); // Example 2: Different prompt generator fn reviewer_prompt( _ctx: &SystemPromptContext, _messages: &[Message], ) -> Result { Ok("You are an expert code reviewer. Always provide constructive feedback.".to_string()) } let mut reviewer_blueprint = Worker::blueprint(); reviewer_blueprint .provider(LlmProvider::Claude) .model("claude-3-sonnet-20240229") .api_key("claude", std::env::var("ANTHROPIC_API_KEY")?) .system_prompt_fn(reviewer_prompt); let _worker2 = reviewer_blueprint.instantiate()?; println!("✅ Worker created with custom role"); Ok(()) }