use ollama_rs::generation::completion::{request::GenerationRequest};
use ollama_rs::Ollama;
use futures::StreamExt;
use tauri::{AppHandle, Emitter};

#[tauri::command]
pub async fn translate_steam(content: &str, app_handle: AppHandle) -> Result<String, ()> {
    let model = "gemma2:2b".to_string();
    let prompt = format!(
        "你是一个专业翻译模型，任务是将给定的文本翻译成目标语言。请严格遵循以下规则：\n\
        只返回翻译结果，不要解释、不要问候、不要添加任何额外内容。\n\
        如果输入是英文，翻译成中文；如果是中文，翻译成英文。\n\
        示例1：\n\
        输入: 'Good morning.'\n\
        输出: '早上好。'\n\
        示例2：\n\
        输入: '这本书很有趣。'\n\
        输出: 'This book is very interesting.'\n\
        现在请翻译：\n\
        输入: '{}'\n\
        输出:",
        content
    );

    let ollama = Ollama::new("http://localhost".to_string(), 11434);
    let mut stream = ollama.generate_stream(GenerationRequest::new(model, prompt)).await.unwrap();

    while let Some(res) = stream.next().await {
        let responses = res.unwrap();
        for resp in responses {
            app_handle.emit("translate_steam" ,resp.response).unwrap();
        }
    }

    Ok("完成".to_string())
}