use serde::{Deserialize, Serialize};
use std::error::Error;
use reqwest;
#[derive(Serialize, Deserialize, Debug)]
pub struct GenerateResponse {
pub generated_text: String,
}
pub struct ApiMyLlama {
server_ip: String,
server_port: u16,
}
impl ApiMyLlama {
pub fn new(server_ip: String, server_port: u16) -> Self {
ApiMyLlama { server_ip, server_port }
}
pub async fn generate(
&self,
api_key: &str,
prompt: &str,
model: &str,
stream: bool,
) -> Result<GenerateResponse, Box<dyn Error>> {
let url = format!("http://{}:{}/generate", self.server_ip, self.server_port);
let payload = serde_json::json!({
"apikey": api_key,
"prompt": prompt,
"model": model,
"stream": stream,
});
let client = reqwest::Client::new();
let response = client
.post(&url)
.json(&payload)
.send()
.await?
.json::<GenerateResponse>()
.await?;
Ok(response)
}
}
#[derive(Deserialize, Debug)]
pub struct HealthResponse {
pub status: String,
pub timestamp: String,
}