Update app.py
Browse files
app.py
CHANGED
|
@@ -9,10 +9,11 @@ from typing import Tuple, Dict
|
|
| 9 |
# Конфигурация
|
| 10 |
# ------------------------------------------------------------
|
| 11 |
MODEL_NAMES = [
|
| 12 |
-
"
|
| 13 |
-
"
|
| 14 |
-
"
|
| 15 |
-
"
|
|
|
|
| 16 |
]
|
| 17 |
DEFAULT_MODEL = MODEL_NAMES[0]
|
| 18 |
|
|
@@ -29,7 +30,7 @@ def load_model(model_name: str):
|
|
| 29 |
"""Загружает токенизатор и модель, если ещё не загружены."""
|
| 30 |
if model_name not in model_cache:
|
| 31 |
tokenizer = AutoTokenizer.from_pretrained(model_name)
|
| 32 |
-
model = AutoModelForCausalLM.from_pretrained(model_name)
|
| 33 |
model_cache[model_name] = (tokenizer, model)
|
| 34 |
return model_cache[model_name]
|
| 35 |
|
|
@@ -65,8 +66,8 @@ def generate_response(
|
|
| 65 |
prompt = f"Документ: {document}\nВопрос по данным из документа: {question}\nОтвет на вопрос:"
|
| 66 |
|
| 67 |
messages = [
|
| 68 |
-
{"role": "system", "content": f"Ты бот, который дает короткий и чёткий ответ пользователю строго по данным из документа. Данные из документа
|
| 69 |
-
{"role": "user", "content": f"Вопрос по документу
|
| 70 |
]
|
| 71 |
|
| 72 |
# Загрузка модели
|
|
@@ -98,11 +99,8 @@ def generate_response(
|
|
| 98 |
temperature=temperature,
|
| 99 |
do_sample=True,
|
| 100 |
top_p=0.95,
|
| 101 |
-
num_return_sequences=1,
|
| 102 |
repetition_penalty=repetition_penalty, # штраф за повторяющиеся токены
|
| 103 |
-
no_repeat_ngram_size=2, # запрет повторения триграмм
|
| 104 |
early_stopping=True, # остановка при достижении eos_token
|
| 105 |
-
top_k=50,
|
| 106 |
pad_token_id=tokenizer.eos_token_id
|
| 107 |
)
|
| 108 |
latency = time.time() - start_time
|
|
|
|
| 9 |
# Конфигурация
|
| 10 |
# ------------------------------------------------------------
|
| 11 |
MODEL_NAMES = [
|
| 12 |
+
"Dilana/Llama-3.2-1B-Adaptive-RAG-v3",
|
| 13 |
+
"PleIAs/Pleias-RAG-350M",
|
| 14 |
+
"PleIAs/Pleias-RAG-1B",
|
| 15 |
+
"LiquidAI/LFM2-1.2B-RAG",
|
| 16 |
+
"MilyaShams/T-lite-it-1.0_Q4_0"
|
| 17 |
]
|
| 18 |
DEFAULT_MODEL = MODEL_NAMES[0]
|
| 19 |
|
|
|
|
| 30 |
"""Загружает токенизатор и модель, если ещё не загружены."""
|
| 31 |
if model_name not in model_cache:
|
| 32 |
tokenizer = AutoTokenizer.from_pretrained(model_name)
|
| 33 |
+
model = AutoModelForCausalLM.from_pretrained(model_name, device_map="auto")
|
| 34 |
model_cache[model_name] = (tokenizer, model)
|
| 35 |
return model_cache[model_name]
|
| 36 |
|
|
|
|
| 66 |
prompt = f"Документ: {document}\nВопрос по данным из документа: {question}\nОтвет на вопрос:"
|
| 67 |
|
| 68 |
messages = [
|
| 69 |
+
{"role": "system", "content": f"Ты бот, который дает короткий и чёткий ответ пользователю строго по данным из документа. Данные из документа: <document>{document}</document>"},
|
| 70 |
+
{"role": "user", "content": f"Вопрос по документу: {question}"}
|
| 71 |
]
|
| 72 |
|
| 73 |
# Загрузка модели
|
|
|
|
| 99 |
temperature=temperature,
|
| 100 |
do_sample=True,
|
| 101 |
top_p=0.95,
|
|
|
|
| 102 |
repetition_penalty=repetition_penalty, # штраф за повторяющиеся токены
|
|
|
|
| 103 |
early_stopping=True, # остановка при достижении eos_token
|
|
|
|
| 104 |
pad_token_id=tokenizer.eos_token_id
|
| 105 |
)
|
| 106 |
latency = time.time() - start_time
|