Nattapong Tapachoom
commited on
Commit
·
c484890
1
Parent(s):
18f1382
Add
Browse files
app.py
CHANGED
@@ -130,6 +130,10 @@ class LLMProvider:
|
|
130 |
return self._generate_openai(prompt, model, temperature, max_tokens)
|
131 |
elif self.provider == "huggingface":
|
132 |
return self._generate_huggingface(prompt, model, temperature, max_tokens)
|
|
|
|
|
|
|
|
|
133 |
else:
|
134 |
raise ValueError(f"ไม่รองรับ provider: {self.provider}")
|
135 |
except Exception as e:
|
@@ -164,6 +168,52 @@ class LLMProvider:
|
|
164 |
)
|
165 |
return response.choices[0].message.content
|
166 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
167 |
def _generate_huggingface(self, prompt, model, temperature, max_tokens):
|
168 |
headers = {"Authorization": f"Bearer {self.api_key}"}
|
169 |
response = requests.post(
|
@@ -546,7 +596,11 @@ def main_workflow(source_type, path_or_name, llm_provider_type, api_key, base_ur
|
|
546 |
# 3. Generate new samples
|
547 |
if n_generate > 0:
|
548 |
progress_text += f"✨ กำลัง generate {n_generate} samples ใหม่ ({generation_type})...\n"
|
549 |
-
|
|
|
|
|
|
|
|
|
550 |
samples.extend(new_samples)
|
551 |
progress_text += f"✅ Generate สำเร็จ {len(new_samples)} samples ใหม่\n"
|
552 |
|
@@ -565,14 +619,22 @@ def main_workflow(source_type, path_or_name, llm_provider_type, api_key, base_ur
|
|
565 |
# 5. Translation
|
566 |
if target_language and target_language != "none":
|
567 |
progress_text += f"🌐 กำลังแปลเป็น {target_language}...\n"
|
568 |
-
|
|
|
|
|
|
|
|
|
569 |
samples.extend(translated)
|
570 |
progress_text += f"✅ แปลภาษาสำเร็จ {len(translated)} samples\n"
|
571 |
|
572 |
# 6. Add multiple choice
|
573 |
if add_multiple_choice:
|
574 |
progress_text += "📝 กำลังเพิ่ม multiple choice options...\n"
|
575 |
-
|
|
|
|
|
|
|
|
|
576 |
progress_text += "✅ เพิ่ม multiple choice เสร็จสิ้น\n"
|
577 |
|
578 |
# 7. Export
|
|
|
130 |
return self._generate_openai(prompt, model, temperature, max_tokens)
|
131 |
elif self.provider == "huggingface":
|
132 |
return self._generate_huggingface(prompt, model, temperature, max_tokens)
|
133 |
+
elif self.provider == "deepseek":
|
134 |
+
return self._generate_deepseek(prompt, model, temperature, max_tokens)
|
135 |
+
elif self.provider == "hf_local":
|
136 |
+
return self._generate_hf_local(prompt, model, temperature, max_tokens)
|
137 |
else:
|
138 |
raise ValueError(f"ไม่รองรับ provider: {self.provider}")
|
139 |
except Exception as e:
|
|
|
168 |
)
|
169 |
return response.choices[0].message.content
|
170 |
|
171 |
+
def _generate_deepseek(self, prompt, model, temperature, max_tokens):
|
172 |
+
url = "https://api.deepseek.com/v1/chat/completions"
|
173 |
+
headers = {
|
174 |
+
"Authorization": f"Bearer {self.api_key}",
|
175 |
+
"Content-Type": "application/json"
|
176 |
+
}
|
177 |
+
payload = {
|
178 |
+
"model": model,
|
179 |
+
"messages": [
|
180 |
+
{"role": "user", "content": prompt}
|
181 |
+
],
|
182 |
+
"temperature": temperature,
|
183 |
+
"max_tokens": max_tokens
|
184 |
+
}
|
185 |
+
response = requests.post(url, headers=headers, json=payload)
|
186 |
+
response.raise_for_status()
|
187 |
+
result = response.json()
|
188 |
+
# DeepSeek API returns: {"choices":[{"message":{"role":"assistant","content":"..."}}], ...}
|
189 |
+
return result["choices"][0]["message"]["content"]
|
190 |
+
|
191 |
+
def _generate_hf_local(self, prompt, model, temperature, max_tokens):
|
192 |
+
# โหลดโมเดลและ tokenizer แค่ครั้งแรก (cache ใน instance)
|
193 |
+
if not hasattr(self, "_hf_local_model") or self._hf_local_model_name != model:
|
194 |
+
from transformers import AutoModelForCausalLM, AutoTokenizer
|
195 |
+
import torch
|
196 |
+
self._hf_local_model_name = model
|
197 |
+
self._hf_local_tokenizer = AutoTokenizer.from_pretrained(model)
|
198 |
+
self._hf_local_model = AutoModelForCausalLM.from_pretrained(model)
|
199 |
+
self._hf_local_model.eval()
|
200 |
+
tokenizer = self._hf_local_tokenizer
|
201 |
+
model = self._hf_local_model
|
202 |
+
import torch
|
203 |
+
inputs = tokenizer(prompt, return_tensors="pt")
|
204 |
+
with torch.no_grad():
|
205 |
+
outputs = model.generate(
|
206 |
+
**inputs,
|
207 |
+
max_new_tokens=max_tokens,
|
208 |
+
temperature=temperature,
|
209 |
+
do_sample=True
|
210 |
+
)
|
211 |
+
result = tokenizer.decode(outputs[0], skip_special_tokens=True)
|
212 |
+
# ตัด prompt ออกถ้ามี
|
213 |
+
if result.startswith(prompt):
|
214 |
+
result = result[len(prompt):].strip()
|
215 |
+
return result
|
216 |
+
|
217 |
def _generate_huggingface(self, prompt, model, temperature, max_tokens):
|
218 |
headers = {"Authorization": f"Bearer {self.api_key}"}
|
219 |
response = requests.post(
|
|
|
596 |
# 3. Generate new samples
|
597 |
if n_generate > 0:
|
598 |
progress_text += f"✨ กำลัง generate {n_generate} samples ใหม่ ({generation_type})...\n"
|
599 |
+
if llm_provider_type == "huggingface":
|
600 |
+
with gr.Progress(track_tqdm=True, desc="กำลัง generate ด้วย Hugging Face..."):
|
601 |
+
new_samples = generate_new_samples(samples, llm_provider, generation_type, n_generate, custom_prompt)
|
602 |
+
else:
|
603 |
+
new_samples = generate_new_samples(samples, llm_provider, generation_type, n_generate, custom_prompt)
|
604 |
samples.extend(new_samples)
|
605 |
progress_text += f"✅ Generate สำเร็จ {len(new_samples)} samples ใหม่\n"
|
606 |
|
|
|
619 |
# 5. Translation
|
620 |
if target_language and target_language != "none":
|
621 |
progress_text += f"🌐 กำลังแปลเป็น {target_language}...\n"
|
622 |
+
if llm_provider_type == "huggingface":
|
623 |
+
with gr.Progress(track_tqdm=True, desc="กำลังแปลด้วย Hugging Face..."):
|
624 |
+
translated = translate_to_multilingual(samples, llm_provider, target_language)
|
625 |
+
else:
|
626 |
+
translated = translate_to_multilingual(samples, llm_provider, target_language)
|
627 |
samples.extend(translated)
|
628 |
progress_text += f"✅ แปลภาษาสำเร็จ {len(translated)} samples\n"
|
629 |
|
630 |
# 6. Add multiple choice
|
631 |
if add_multiple_choice:
|
632 |
progress_text += "📝 กำลังเพิ่ม multiple choice options...\n"
|
633 |
+
if llm_provider_type == "huggingface":
|
634 |
+
with gr.Progress(track_tqdm=True, desc="กำลังเพิ่มตัวเลือกด้วย Hugging Face..."):
|
635 |
+
samples = add_multiple_choice_options(samples, llm_provider)
|
636 |
+
else:
|
637 |
+
samples = add_multiple_choice_options(samples, llm_provider)
|
638 |
progress_text += "✅ เพิ่ม multiple choice เสร็จสิ้น\n"
|
639 |
|
640 |
# 7. Export
|