Spaces:
Running
Running
Veronika Belova
commited on
Commit
•
398d995
1
Parent(s):
ac2ec20
changed
Browse files- .gitignore +3 -3
- app.py +1 -1
- prompts/gemma_prompt.txt +6 -5
- utils/gemma_utils.py +44 -21
- utils/mlspace__private_key.txt +0 -51
.gitignore
CHANGED
@@ -1,4 +1,4 @@
|
|
1 |
.env
|
2 |
-
|
3 |
-
|
4 |
-
|
|
|
1 |
.env
|
2 |
+
__pycache__
|
3 |
+
mlspace__private_key.txt
|
4 |
+
rewrites-64f2b-firebase-adminsdk-mrs2y-1bd6e223b1.json
|
app.py
CHANGED
@@ -6,7 +6,7 @@ from utils.firebase_utils import save_vote
|
|
6 |
from utils.openai_utils import generate_rewrite
|
7 |
from utils.data_utils import load_data, get_random_review, read_prompt
|
8 |
from utils.gemma_utils import get_gemma_response
|
9 |
-
|
10 |
models = ["gpt-3.5-turbo", "gpt-4", "gpt-4o", "gpt-4o-mini", "princeton-nlp/gemma-2-9b-it-SimPO"]
|
11 |
|
12 |
def local_css(file_name):
|
|
|
6 |
from utils.openai_utils import generate_rewrite
|
7 |
from utils.data_utils import load_data, get_random_review, read_prompt
|
8 |
from utils.gemma_utils import get_gemma_response
|
9 |
+
|
10 |
models = ["gpt-3.5-turbo", "gpt-4", "gpt-4o", "gpt-4o-mini", "princeton-nlp/gemma-2-9b-it-SimPO"]
|
11 |
|
12 |
def local_css(file_name):
|
prompts/gemma_prompt.txt
CHANGED
@@ -2,8 +2,9 @@
|
|
2 |
**Ты профессиональный рерайтер.**
|
3 |
|
4 |
Твоя задача — переписать предоставленный текст, сохранив его смысл и основные знаки препинания, которые встречаются в оригинальном тексте,
|
5 |
-
но используя другие слова. Используй повседневный стиль
|
6 |
-
Избегай грамматических и стилистических
|
|
|
7 |
|
8 |
**Строго соблюдай следующий формат ответа и не добавляй ничего лишнего:**
|
9 |
|
@@ -17,9 +18,9 @@
|
|
17 |
|
18 |
**Важно:**
|
19 |
- Перепиши отзыв, сохраняя смысл, но используя другие слова.
|
20 |
-
- Добавь повседневную
|
21 |
-
-
|
22 |
- Верни только один рерайт в указанном формате.
|
23 |
- Игнорируй всё остальное и не добавляй дополнительных комментариев.
|
24 |
<end_of_turn>
|
25 |
-
<start_of_turn>model
|
|
|
2 |
**Ты профессиональный рерайтер.**
|
3 |
|
4 |
Твоя задача — переписать предоставленный текст, сохранив его смысл и основные знаки препинания, которые встречаются в оригинальном тексте,
|
5 |
+
но используя другие слова. Используй повседневный стиль речи, чтобы текст выглядел естественно и не был похож на сгенерированный.
|
6 |
+
Избегай грамматических и стилистических ошибок, грубостей, матных слов и жаргона. Не искажай факты и названия товаров.
|
7 |
+
|
8 |
|
9 |
**Строго соблюдай следующий формат ответа и не добавляй ничего лишнего:**
|
10 |
|
|
|
18 |
|
19 |
**Важно:**
|
20 |
- Перепиши отзыв, сохраняя смысл, но используя другие слова.
|
21 |
+
- Добавь повседневную речь.
|
22 |
+
- Обязательно соблюдай указанный формат с разделами, каждый из которых начинается с новой строки и отделён пустой строкой.
|
23 |
- Верни только один рерайт в указанном формате.
|
24 |
- Игнорируй всё остальное и не добавляй дополнительных комментариев.
|
25 |
<end_of_turn>
|
26 |
+
<start_of_turn>model
|
utils/gemma_utils.py
CHANGED
@@ -1,8 +1,6 @@
|
|
1 |
import json
|
2 |
import paramiko
|
3 |
-
import shlex
|
4 |
import os
|
5 |
-
from io import StringIO
|
6 |
|
7 |
def get_gemma_response(model_name, instruction):
|
8 |
hostname = "ssh-sr002-jupyter.ai.cloud.ru"
|
@@ -10,48 +8,73 @@ def get_gemma_response(model_name, instruction):
|
|
10 |
username = "gallant-hofstadter.ai0001819-00029"
|
11 |
private_key_path = "mlspace__private_key.txt"
|
12 |
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
|
17 |
-
ssh.connect(hostname=hostname, port=port, username=username, pkey=private_key)
|
18 |
|
19 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
20 |
|
21 |
payload = {
|
22 |
"model": model_name,
|
23 |
-
"prompt":
|
24 |
-
"max_tokens":
|
25 |
"temperature": 0.9,
|
26 |
"top_p": 0.7
|
27 |
}
|
28 |
|
29 |
-
payload_json = json.dumps(payload)
|
30 |
-
|
31 |
-
|
32 |
-
curl_command = f"curl -s -X POST http://localhost:8001/v1/completions -H 'Content-Type: application/json' -d {payload_escaped}"
|
33 |
|
34 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
35 |
|
36 |
-
|
37 |
-
|
|
|
|
|
38 |
|
39 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
40 |
|
41 |
if error:
|
42 |
print("Ошибка при выполнении команды на сервере:", error)
|
43 |
return None
|
44 |
|
|
|
|
|
|
|
|
|
45 |
try:
|
46 |
response_json = json.loads(response)
|
47 |
-
|
48 |
if 'choices' in response_json and response_json['choices']:
|
49 |
return response_json['choices'][0]['text'].strip()
|
50 |
else:
|
51 |
print("Некорректная структура ответа:", response_json)
|
52 |
return None
|
53 |
-
|
54 |
except json.JSONDecodeError as e:
|
55 |
print("Не удалось разобрать JSON-ответ:", e)
|
56 |
print("Полученный ответ:", response)
|
57 |
-
return None
|
|
|
|
|
|
|
|
|
|
|
|
1 |
import json
|
2 |
import paramiko
|
|
|
3 |
import os
|
|
|
4 |
|
5 |
def get_gemma_response(model_name, instruction):
|
6 |
hostname = "ssh-sr002-jupyter.ai.cloud.ru"
|
|
|
8 |
username = "gallant-hofstadter.ai0001819-00029"
|
9 |
private_key_path = "mlspace__private_key.txt"
|
10 |
|
11 |
+
if not os.path.exists(private_key_path):
|
12 |
+
print(f"Файл приватного ключа не найден: {private_key_path}")
|
13 |
+
return None
|
|
|
|
|
14 |
|
15 |
+
try:
|
16 |
+
private_key = paramiko.RSAKey.from_private_key_file(private_key_path)
|
17 |
+
ssh = paramiko.SSHClient()
|
18 |
+
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
|
19 |
+
ssh.connect(hostname=hostname, port=port, username=username, pkey=private_key)
|
20 |
+
print("Успешное SSH подключение")
|
21 |
+
except Exception as e:
|
22 |
+
print("Ошибка при подключении по SSH:", e)
|
23 |
+
return None
|
24 |
|
25 |
payload = {
|
26 |
"model": model_name,
|
27 |
+
"prompt": instruction,
|
28 |
+
"max_tokens": 600,
|
29 |
"temperature": 0.9,
|
30 |
"top_p": 0.7
|
31 |
}
|
32 |
|
33 |
+
payload_json = json.dumps(payload, ensure_ascii=False)
|
34 |
+
print(f"payload_json: {payload_json}")
|
|
|
|
|
35 |
|
36 |
+
curl_command = (
|
37 |
+
f"curl -s -X POST http://localhost:8000/v1/completions "
|
38 |
+
f"-H 'Content-Type: application/json' "
|
39 |
+
f"-H 'Authorization: Bearer token-abc123' "
|
40 |
+
f"-d '{payload_json}'"
|
41 |
+
)
|
42 |
+
print("Executing command:", curl_command)
|
43 |
|
44 |
+
try:
|
45 |
+
stdin, stdout, stderr = ssh.exec_command(curl_command)
|
46 |
+
response = stdout.read().decode('utf-8')
|
47 |
+
error = stderr.read().decode('utf-8')
|
48 |
|
49 |
+
print("Response:", response)
|
50 |
+
print("Error output:", error)
|
51 |
+
except Exception as e:
|
52 |
+
print("Ошибка при выполнении команды на сервере:", e)
|
53 |
+
return None
|
54 |
+
finally:
|
55 |
+
ssh.close()
|
56 |
|
57 |
if error:
|
58 |
print("Ошибка при выполнении команды на сервере:", error)
|
59 |
return None
|
60 |
|
61 |
+
if not response:
|
62 |
+
print("Получен пустой ответ от сервера.")
|
63 |
+
return None
|
64 |
+
|
65 |
try:
|
66 |
response_json = json.loads(response)
|
|
|
67 |
if 'choices' in response_json and response_json['choices']:
|
68 |
return response_json['choices'][0]['text'].strip()
|
69 |
else:
|
70 |
print("Некорректная структура ответа:", response_json)
|
71 |
return None
|
|
|
72 |
except json.JSONDecodeError as e:
|
73 |
print("Не удалось разобрать JSON-ответ:", e)
|
74 |
print("Полученный ответ:", response)
|
75 |
+
return None
|
76 |
+
|
77 |
+
|
78 |
+
|
79 |
+
|
80 |
+
|
utils/mlspace__private_key.txt
DELETED
@@ -1,51 +0,0 @@
|
|
1 |
-
-----BEGIN RSA PRIVATE KEY-----
|
2 |
-
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
-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
-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
-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
-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
-
fI4jfSccaPIhA7jpF7nbfkx1crlV8jFKMvXskQ7z6UMHCq6HMc44qf+m51a3kGN7
|
8 |
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-
hSYHJOY107dO0pmKi45iimYr1MGCfOT33KlXPUytfVfmFdhrQj0pRSlYT2OHlkLl
|
20 |
-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
-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
-
rTHk/nBTsaZ9aXFB49vxV6OBgNpU6MV6FvBmusy2hJuMVWa/0MV47LjRc7vr91dK
|
23 |
-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
-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
-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
-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
-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
-
OB3Iakxttkg/D+1SvoqH7jhx/R8rYtbILk6yjoPKtn8Etdne+hM2nEJzpFVQFF22
|
29 |
-
I8JuXVQROTJB7ZkCggEBAOH7RsG9lQp0qn8o1ke+zNNgyk6kQ5KIXJyZDs9VrrtD
|
30 |
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-
vdev7Jqdyb63U+iCOdP+CBxPM1zOOxWxcQCGki8gmE52YSAXqtWXWJ++ks0r
|
51 |
-
-----END RSA PRIVATE KEY-----
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|