48 lines
1.3 KiB
Rust
48 lines
1.3 KiB
Rust
use codemonkey::{create_ai_provider, AIProviderType, CompletionRequestBuilder, Message, MessageRole, Content};
|
|
use std::error::Error;
|
|
|
|
#[tokio::main]
|
|
async fn main() -> Result<(), Box<dyn Error>> {
|
|
|
|
let (mut provider, provider_type) = create_ai_provider(AIProviderType::OpenRouter)?;
|
|
|
|
let messages = vec![Message {
|
|
role: MessageRole::user,
|
|
content: Content::Text("Explain the concept of a factory design pattern in Rust.".to_string()),
|
|
name: None,
|
|
tool_calls: None,
|
|
tool_call_id: None,
|
|
}];
|
|
|
|
println!("Sending request to OpenRouter...");
|
|
let response = CompletionRequestBuilder::new(
|
|
&mut *provider,
|
|
"openai/gpt-oss-120b".to_string(), // Model name as specified by the user
|
|
messages,
|
|
provider_type, // Pass the provider_type
|
|
)
|
|
.temperature(1.0)
|
|
.max_tokens(8192)
|
|
.top_p(1.0)
|
|
.reasoning_effort("medium")
|
|
.stream(false)
|
|
.openrouter_options(|builder| {
|
|
builder.provider(
|
|
codemonkey::OpenRouterProviderOptionsBuilder::new()
|
|
.order(vec!["cerebras"])
|
|
.build(),
|
|
)
|
|
})
|
|
.completion()
|
|
.await?;
|
|
|
|
for choice in response.choices {
|
|
if let Some(content) = choice.message.content {
|
|
print!("{}", content);
|
|
}
|
|
}
|
|
println!();
|
|
|
|
Ok(())
|
|
}
|