lastsummerkape commited on
Commit
37079c9
·
verified ·
1 Parent(s): 8cd9e82

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +23 -27
app.py CHANGED
@@ -1,69 +1,65 @@
1
- # app.py • LegalEasyAI • v0.1‑fix
2
  import os
3
  import gradio as gr
4
  from huggingface_hub import InferenceClient
5
 
6
- # ──────────────────────────────────────────────
7
  # 1. Подключение к модели через Inference API
8
- # ──────────────────────────────────────────────
9
- MODEL_NAME = "HuggingFaceH4/zephyr-7b-beta" # можешь заменить
10
- HF_TOKEN = os.getenv("HF_TOKEN") # секрет из Settings → Secrets
11
 
12
  if HF_TOKEN is None:
13
  raise RuntimeError(
14
- "Секрет HF_TOKEN не найден. Добавь его в Settings → Secrets."
15
  )
16
 
17
- # ✔️ Главная правка здесь — убираем repo_id, передаём модель первым аргументом
18
- client = InferenceClient(MODEL_NAME, token=HF_TOKEN)
19
 
20
- # ──────────────────────────────────────────────
21
- # 2. Генерация ответа (стриминг)
22
- # ──────────────────────────────────────────────
23
  SYSTEM_PROMPT = (
24
  "Ты — LegalEasy AI, ассистент‑юрист по законодательству Республики Беларусь. "
25
  "Отвечай кратко и точно, ссылаясь на статьи и пункты НПА."
26
  )
27
 
28
  def respond(message, history, system_message, max_tokens, temperature, top_p):
29
- messages = [{"role": "system", "content": system_message or SYSTEM_PROMPT}]
 
30
  for user_msg, bot_msg in history:
31
  if user_msg:
32
- messages.append({"role": "user", "content": user_msg})
33
  if bot_msg:
34
- messages.append({"role": "assistant", "content": bot_msg})
35
- messages.append({"role": "user", "content": message})
36
 
37
  partial = ""
38
  for chunk in client.chat_completion(
39
- messages=messages,
40
  max_tokens=max_tokens,
41
  stream=True,
42
  temperature=temperature,
43
  top_p=top_p,
44
  ):
45
- token = chunk.choices[0].delta.content
46
  partial += token
47
  yield partial
48
 
49
- # ──────────────────────────────────────────────
50
- # 3. Интерфейс Gradio
51
- # ──────────────────────────────────────────────
52
  demo = gr.ChatInterface(
53
  respond,
54
  additional_inputs=[
55
  gr.Textbox(value=SYSTEM_PROMPT,
56
  label="System‑prompt (можно изменить)"),
57
- gr.Slider(1, 2048, value=512, step=1, label="Max new tokens"),
58
- gr.Slider(0.1, 4.0, value=0.7, step=0.1, label="Temperature"),
59
- gr.Slider(0.1, 1.0, value=0.95,step=0.05,label="Top‑p"),
60
  ],
61
  title="⚖️ LegalEasy AI — демо",
62
  description="Спроси о праве РБ. Модель: Zephyr‑7B (Inference API).",
63
- examples=[
64
- "Какой срок исковой давности для оспаривания брака?",
65
- "Что означает принцип устойчивого водопользования?",
66
- ],
67
  )
68
 
69
  if __name__ == "__main__":
 
1
+ # app.py • LegalEasyAI • v0.2 (без examples, с рабочим InferenceClient)
2
  import os
3
  import gradio as gr
4
  from huggingface_hub import InferenceClient
5
 
6
+ # ──────────────────────────────────────────────────────────────
7
  # 1. Подключение к модели через Inference API
8
+ # ──────────────────────────────────────────────────────────────
9
+ MODEL_NAME = "HuggingFaceH4/zephyr-7b-beta" # можно заменить, напр. на IlyaGusev/saiga_mistral_7b_lora
10
+ HF_TOKEN = os.getenv("HF_TOKEN") # токен хранится в Settings → Secrets
11
 
12
  if HF_TOKEN is None:
13
  raise RuntimeError(
14
+ "Секрет HF_TOKEN не найден. Добавь его в Settings → Secrets, иначе API ограничит запросы."
15
  )
16
 
17
+ client = InferenceClient(MODEL_NAME, token=HF_TOKEN) # ✔️ актуальная сигнатура
 
18
 
19
+ # ──────────────────────────────────────────────────────────────
20
+ # 2. Функция генерации ответа
21
+ # ──────────────────────────────────────────────────────────────
22
  SYSTEM_PROMPT = (
23
  "Ты — LegalEasy AI, ассистент‑юрист по законодательству Республики Беларусь. "
24
  "Отвечай кратко и точно, ссылаясь на статьи и пункты НПА."
25
  )
26
 
27
  def respond(message, history, system_message, max_tokens, temperature, top_p):
28
+ # собираем историю в формате OpenAI‑Chat
29
+ msgs = [{"role": "system", "content": system_message or SYSTEM_PROMPT}]
30
  for user_msg, bot_msg in history:
31
  if user_msg:
32
+ msgs.append({"role": "user", "content": user_msg})
33
  if bot_msg:
34
+ msgs.append({"role": "assistant", "content": bot_msg})
35
+ msgs.append({"role": "user", "content": message})
36
 
37
  partial = ""
38
  for chunk in client.chat_completion(
39
+ messages=msgs,
40
  max_tokens=max_tokens,
41
  stream=True,
42
  temperature=temperature,
43
  top_p=top_p,
44
  ):
45
+ token = chunk.choices[0].delta.content or ""
46
  partial += token
47
  yield partial
48
 
49
+ # ──────────────────────────────────────────────────────────────
50
+ # 3. Интерфейс Gradio (без параметра examples)
51
+ # ──────────────────────────────────────────────────────────────
52
  demo = gr.ChatInterface(
53
  respond,
54
  additional_inputs=[
55
  gr.Textbox(value=SYSTEM_PROMPT,
56
  label="System‑prompt (можно изменить)"),
57
+ gr.Slider(1, 2048, value=512, step=1, label="Max new tokens"),
58
+ gr.Slider(0.1, 4.0, value=0.7, step=0.1, label="Temperature"),
59
+ gr.Slider(0.1, 1.0, value=0.95,step=0.05, label="Top‑p"),
60
  ],
61
  title="⚖️ LegalEasy AI — демо",
62
  description="Спроси о праве РБ. Модель: Zephyr‑7B (Inference API).",
 
 
 
 
63
  )
64
 
65
  if __name__ == "__main__":