apimyllama 2.0.3

A Rust library for interacting with the APIMyLlama API.
Documentation
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,
}