mirror of
https://github.com/YuuKi-OS/yuy-chat.git
synced 2026-02-18 22:01:09 +00:00
Actualizar hf_api.rs
This commit is contained in:
@@ -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_new_tokens: 512,
|
max_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())
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user