llm-worker-rs/worker/examples/builder_basic.rs

48 lines
1.6 KiB
Rust

use std::collections::HashMap;
use worker::{LlmProvider, PromptContext, PromptError, Worker};
use worker_types::Message;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
// Example 1: Basic system prompt generator
fn system_prompt(ctx: &PromptContext, _messages: &[Message]) -> Result<String, PromptError> {
Ok(format!(
"You are helping with the project: {}",
ctx.workspace
.project_name
.clone()
.unwrap_or_else(|| "unknown".to_string())
))
}
let mut api_keys = HashMap::new();
api_keys.insert("claude".to_string(), std::env::var("ANTHROPIC_API_KEY")?);
let worker = Worker::builder()
.provider(LlmProvider::Claude)
.model("claude-3-sonnet-20240229")
.api_keys(api_keys)
.system_prompt(system_prompt)
.build()?;
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: &PromptContext, _messages: &[Message]) -> Result<String, PromptError> {
Ok("You are an expert code reviewer. Always provide constructive feedback.".to_string())
}
let _worker2 = Worker::builder()
.provider(LlmProvider::Claude)
.model("claude-3-sonnet-20240229")
.api_key("claude", std::env::var("ANTHROPIC_API_KEY")?)
.system_prompt(reviewer_prompt)
.build()?;
println!("✅ Worker created with custom role");
Ok(())
}