Add openrouter-rs dependency, review prompt, and markdown formatting. Update comment API to accept dynamic body. Adjust devcontainer for podman compatibility.
35 lines
982 B
Rust
35 lines
982 B
Rust
use openrouter_rs::{Message, api::chat::ChatCompletionRequest};
|
|
|
|
pub struct OpenRouterClient {
|
|
client: openrouter_rs::OpenRouterClient,
|
|
model: String,
|
|
}
|
|
|
|
impl OpenRouterClient {
|
|
pub fn new(token: &str, model: &str) -> anyhow::Result<Self> {
|
|
Ok(Self {
|
|
client: openrouter_rs::OpenRouterClient::builder()
|
|
.api_key(token)
|
|
.build()?,
|
|
model: String::from(model),
|
|
})
|
|
}
|
|
|
|
pub async fn chat(&self, msg: &str) -> anyhow::Result<String> {
|
|
let request = ChatCompletionRequest::builder()
|
|
.model(&self.model)
|
|
.messages(vec![Message::new(
|
|
openrouter_rs::types::Role::Developer,
|
|
msg,
|
|
)])
|
|
.build()?;
|
|
|
|
let response = self.client.chat().create(&request).await?;
|
|
|
|
response.choices[0]
|
|
.content()
|
|
.map(|msg| String::from(msg))
|
|
.ok_or(anyhow::anyhow!("No content"))
|
|
}
|
|
}
|