Actualizar hf_api.rs

This commit is contained in:
awa
2026-02-16 11:21:20 -06:00
committed by GitHub
parent 63bd97a227
commit 9f3bd1f4e2

View File

@@ -1,28 +1,24 @@
use anyhow::Result; use anyhow::Result;
use reqwest::Client; use reqwest::Client;
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
use crate::config::YUUKI_API;
#[derive(Debug, Serialize)] #[derive(Debug, Serialize)]
struct HFRequest { struct YuukiRequest {
inputs: String, prompt: String,
parameters: HFParameters,
}
#[derive(Debug, Serialize)]
struct HFParameters {
temperature: f32, temperature: f32,
top_p: f32, top_p: f32,
max_new_tokens: u32, max_tokens: u32,
} }
#[derive(Debug, Deserialize)] #[derive(Debug, Deserialize)]
struct HFResponse { struct YuukiResponse {
generated_text: String, response: String,
} }
pub struct HuggingFaceAPI { pub struct HuggingFaceAPI {
client: Client, client: Client,
token: String, token: Option<String>,
model: String, model: String,
} }
@@ -30,41 +26,36 @@ impl HuggingFaceAPI {
pub fn new(token: String, org: String, model: String) -> Self { pub fn new(token: String, org: String, model: String) -> Self {
Self { Self {
client: Client::new(), client: Client::new(),
token, token: Some(token),
model: format!("{}/{}", org, model), model: format!("{}/{}", org, model),
} }
} }
pub async fn generate(&self, prompt: &str, temperature: f32, top_p: f32) -> Result<String> { pub async fn generate(&self, prompt: &str, temperature: f32, top_p: f32) -> Result<String> {
let url = format!("https://api-inference.huggingface.co/models/{}", self.model); // Use Yuuki API endpoint
let url = YUUKI_API;
let request = HFRequest { let request = YuukiRequest {
inputs: prompt.to_string(), prompt: prompt.to_string(),
parameters: HFParameters { temperature,
temperature, top_p,
top_p, max_tokens: 512,
max_new_tokens: 512,
},
}; };
let response = self let mut req = self.client.post(url).json(&request);
.client
.post(&url) // Add token if available (optional for public API)
.header("Authorization", format!("Bearer {}", self.token)) if let Some(token) = &self.token {
.json(&request) req = req.header("Authorization", format!("Bearer {}", token));
.send() }
.await?;
let response = req.send().await?;
if !response.status().is_success() { if !response.status().is_success() {
anyhow::bail!("HuggingFace API error: {}", response.status()); anyhow::bail!("Yuuki API error: {}", response.status());
} }
let hf_response: Vec<HFResponse> = response.json().await?; let yuuki_response: YuukiResponse = response.json().await?;
Ok(yuuki_response.response)
if let Some(first) = hf_response.first() {
Ok(first.generated_text.clone())
} else {
Ok(String::new())
}
} }
} }