antimoda1 commited on
Commit
a9d8ae1
·
1 Parent(s): c751d7b

add hf logic

Browse files
Files changed (5) hide show
  1. app.py +2 -1
  2. generation.py +0 -35
  3. llm.py +20 -0
  4. requirements.txt +1 -1
  5. texts/реформа2012.md +1 -1
app.py CHANGED
@@ -3,7 +3,8 @@ import numpy as np
3
  import plotly.express as px
4
  import plotly.graph_objects as go
5
  import pandas as pd
6
- from generation import generate_with_ollama as get_llm_answer, wrap_prompt
 
7
  from retrieval import Retrieval
8
  from _2_splitting import YEAR_OLD, YEAR_NEW
9
  from vocabulary.parse_vocabulary import parse_vocabulary
 
3
  import plotly.express as px
4
  import plotly.graph_objects as go
5
  import pandas as pd
6
+ from generation import wrap_prompt
7
+ from llm import get_llm_answer
8
  from retrieval import Retrieval
9
  from _2_splitting import YEAR_OLD, YEAR_NEW
10
  from vocabulary.parse_vocabulary import parse_vocabulary
generation.py CHANGED
@@ -1,4 +1,3 @@
1
- from ollama import chat
2
  import warnings
3
  import re
4
  warnings.filterwarnings('ignore')
@@ -65,40 +64,6 @@ def lemmatize(text, vocabulary):
65
  return found_terms
66
 
67
 
68
- def generate_with_ollama(prompt):
69
- stream = chat(
70
- model='gemma3',
71
- messages=[{'role': 'user', 'content': prompt}],
72
- stream=True,
73
- )
74
-
75
- in_thinking = False
76
- content = ''
77
- thinking = ''
78
-
79
- """
80
- Ключевая особенность: модель может возвращать два типа данных:
81
- A. "Мысли" (chunk.message.thinking)
82
- B. Финальный ответ (chunk.message.content)
83
- """
84
-
85
- for chunk in stream:
86
- if chunk.message.thinking:
87
- if not in_thinking:
88
- in_thinking = True
89
- # При первом появлении "мыслей" выводится заголовок "Thinking:"
90
- yield chunk.message.thinking
91
- # accumulate the partial thinking
92
- thinking += chunk.message.thinking
93
- elif chunk.message.content:
94
- if in_thinking:
95
- in_thinking = False
96
- # Когда начинается финальный ответ, выводится заголовок "Answer:"
97
- yield chunk.message.content
98
- # accumulate the partial content
99
- content += chunk.message.content
100
-
101
-
102
  def wrap_prompt(retrieved_text, query_text, vocabula):
103
  tokens_from_query = lemmatize(query_text, vocabula)
104
  tokens_from_retrieved = lemmatize(retrieved_text, vocabula)
 
 
1
  import warnings
2
  import re
3
  warnings.filterwarnings('ignore')
 
64
  return found_terms
65
 
66
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
67
  def wrap_prompt(retrieved_text, query_text, vocabula):
68
  tokens_from_query = lemmatize(query_text, vocabula)
69
  tokens_from_retrieved = lemmatize(retrieved_text, vocabula)
llm.py ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ from huggingface_hub import InferenceClient
3
+
4
+ token = os.environ["HF_TOKEN"]
5
+ client = InferenceClient(
6
+ model="Qwen/Qwen3-0.6B",
7
+ token="HF_TOKEN"
8
+ )
9
+
10
+ def get_llm_answer(prompt):
11
+ stream = client.chat_completion(
12
+ messages=[{"role": "user", "content": prompt}],
13
+ max_tokens=5000,
14
+ stream=True
15
+ )
16
+
17
+ for chunk in stream:
18
+ delta = chunk.choices[0].delta.content
19
+ if delta:
20
+ yield delta
requirements.txt CHANGED
@@ -2,7 +2,7 @@ numpy==2.1.3
2
  pandas==2.2.3
3
  torch==2.9.1
4
  plotly== 5.24.1
5
- ollama==0.6.1
6
  gradio
7
  rank-bm25==0.2.2
8
  sentence-transformers==5.2.0
 
 
2
  pandas==2.2.3
3
  torch==2.9.1
4
  plotly== 5.24.1
 
5
  gradio
6
  rank-bm25==0.2.2
7
  sentence-transformers==5.2.0
8
+ huggingface_hub
texts/реформа2012.md CHANGED
@@ -36,7 +36,7 @@
36
 
37
  Получается, что из всех маршрутов, которые предполагалось отменить в 2012 году, все маршруты закрылись сами собой. И лишь один из них был открыт, но по инициативе уже городминистрации. Теперь же, что касается маршрутных такси. Тут тоже отмен довольно много, но по самой системе прошлись не сильно.
38
 
39
- 31 маршрутка ходила из Дашкой Песочни в Дягилево. Была отменена в 2019 году и тут скорее даже все-таки по инициативе городминистрации в рамках, так и начавшись в полноценной борьбы с маршрутками дублерами.
40
 
41
  43 маршрутка прекратила существование по инициативе перевозчика в середине десятых.
42
 
 
36
 
37
  Получается, что из всех маршрутов, которые предполагалось отменить в 2012 году, все маршруты закрылись сами собой. И лишь один из них был открыт, но по инициативе уже городминистрации. Теперь же, что касается маршрутных такси. Тут тоже отмен довольно много, но по самой системе прошлись не сильно.
38
 
39
+ 31 маршрутка ходила из Дашково-Песочни в Дягилево. Была отменена в 2019 году и тут скорее даже все-таки по инициативе городминистрации в рамках, так и начавшись в полноценной борьбы с маршрутками дублерами.
40
 
41
  43 маршрутка прекратила существование по инициативе перевозчика в середине десятых.
42