48 lines
1.6 KiB
Rust
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(())
|
|
}
|