tester1hf commited on
Commit
618d3a8
·
verified ·
1 Parent(s): 8cad4b0

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +25 -6
app.py CHANGED
@@ -1,5 +1,7 @@
1
  import gradio as gr
2
  from g4f.client import Client
 
 
3
 
4
  client = Client()
5
 
@@ -7,13 +9,30 @@ def get_task(prompt):
7
  return f'''Ты генерируешь скрипт продолжения прямой линии с Владимиром Владимировичем Путиным. Пиши в духе пропаганды пророссийской. Каждая реплика - не менее 150-200 символов. Английские названия при необходимости всегда транскрибируй кириллицей. Числительные также записывай кириллицей. Пиши в стиле кремлёвской пропаганды. Пиши в стереотипном стиле. Киселёв задаёт вопросы, обрашается к Путину как "Владимир Владимирович" или "Господин Президент". Путин отвечает. Всё максимально аутентично. Фразы Киселёва: {{"Киселёв":"фраза"}} Фразы Путина: {{"Путин":"фраза"}} Ответ дай в формате JSON без дополнительных символов: [{{"Киселёв":"фраза"}}, {{"Путин":"фраза"}} . . . ].
8
  Вопрос от пользователя поступил: "{prompt}"'''
9
 
 
 
 
 
 
 
 
 
 
 
 
10
  def generate_text(prompt):
11
- response = client.chat.completions.create(
12
- model="llama-3.3-70b",
13
- messages=[{"role": "user", "content": get_task(prompt)}],
14
- web_search=False
15
- )
16
- return response.choices[0].message.content
 
 
 
 
 
 
17
 
18
  examples = [
19
  "Почему такие высокие налоги?",
 
1
  import gradio as gr
2
  from g4f.client import Client
3
+ import re
4
+ import json
5
 
6
  client = Client()
7
 
 
9
  return f'''Ты генерируешь скрипт продолжения прямой линии с Владимиром Владимировичем Путиным. Пиши в духе пропаганды пророссийской. Каждая реплика - не менее 150-200 символов. Английские названия при необходимости всегда транскрибируй кириллицей. Числительные также записывай кириллицей. Пиши в стиле кремлёвской пропаганды. Пиши в стереотипном стиле. Киселёв задаёт вопросы, обрашается к Путину как "Владимир Владимирович" или "Господин Президент". Путин отвечает. Всё максимально аутентично. Фразы Киселёва: {{"Киселёв":"фраза"}} Фразы Путина: {{"Путин":"фраза"}} Ответ дай в формате JSON без дополнительных символов: [{{"Киселёв":"фраза"}}, {{"Путин":"фраза"}} . . . ].
10
  Вопрос от пользователя поступил: "{prompt}"'''
11
 
12
+ def validate_response(response):
13
+ try:
14
+ # Attempt to parse the response as JSON
15
+ data = json.loads(response)
16
+ # Check if the response is a list and follows the required pattern
17
+ if isinstance(data, list) and all(isinstance(item, dict) and len(item) == 1 for item in data):
18
+ return True
19
+ except json.JSONDecodeError:
20
+ pass
21
+ return False
22
+
23
  def generate_text(prompt):
24
+ max_retries = 4
25
+ for attempt in range(max_retries):
26
+ response = client.chat.completions.create(
27
+ model="llama-3.3-70b",
28
+ messages=[{"role": "user", "content": get_task(prompt)}],
29
+ web_search=False
30
+ )
31
+ response_text = response.choices[0].message.content
32
+ if validate_response(response_text):
33
+ return response_text
34
+ # If all retries fail, return a placeholder
35
+ return '[{"Киселёв":"К сожалению, не удалось расслышать вопрос. Пожалуйста, попробуйте еще раз."}, {"Путин":"Мы работаем над улучшением системы. Спасибо за понимание."}]'
36
 
37
  examples = [
38
  "Почему такие высокие налоги?",