VladimirVorobev commited on
Commit
d46785a
·
1 Parent(s): 2103a1a

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +28 -0
app.py CHANGED
@@ -61,6 +61,21 @@ cross_encoder_tokenizer = AutoTokenizer.from_pretrained(cross_encoder_checkpoint
61
  cross_encoder = pipeline('text-classification', model=cross_encoder_model, tokenizer=cross_encoder_tokenizer)
62
 
63
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
64
  def encode(docs):
65
  if type(docs) == str:
66
  docs = [docs]
@@ -147,11 +162,21 @@ def check_request_validity(func):
147
 
148
  @check_request_validity
149
  def fn(
 
 
150
  query,
151
  llm_type,
152
  llm_answer_type,
153
  use_llm_for_retriever
154
  ):
 
 
 
 
 
 
 
 
155
  # обогатим запрос с помощью LLM, чтобы поисковым моделям было проще найти нужный фрагмент с ответом
156
  retriever_ranker_query = update_query_with_llm(query, llm_type, use_llm_for_retriever)
157
 
@@ -178,11 +203,14 @@ def fn(
178
  demo = gr.Interface(
179
  fn=fn,
180
  inputs=[
 
 
181
  gr.Textbox(lines=3, label='Запрос', placeholder='Введите запрос'),
182
  gr.Dropdown(label='Тип LLM', choices=['ChatGPT', 'GigaChat', 'Без LLM'], value='ChatGPT'),
183
  gr.Dropdown(label='Тип итогового ответа LLM', choices=['Только цифры штрафа', 'Развернутый ответ'], value='Только цифры штрафа'),
184
  gr.Checkbox(label="Использовать LLM для Retriever'а", value=True, info="При использовании LLM для Retriever'а ко входному запросу будет добавляться промежуточный ответ LLM на запрос. Это способствует повышению качества поиска ответа."),
185
  gr.Checkbox(label="Использовать LLM для проверки валидности запроса", value=False)
 
186
  ],
187
  outputs=[
188
  gr.Textbox(label='Ответ'),
 
61
  cross_encoder = pipeline('text-classification', model=cross_encoder_model, tokenizer=cross_encoder_tokenizer)
62
 
63
 
64
+ def update_llm_api_key(api_key, llm_type):
65
+ if llm_type == 'ChatGPT':
66
+ chatgpt = OpenAI(
67
+ api_key=api_key,
68
+ )
69
+ llms['ChatGPT'] = chatgpt
70
+ else:
71
+ gigachat = GigaChat(
72
+ credentials=api_key,
73
+ scope='GIGACHAT_API_PERS',
74
+ verify_ssl_certs=False
75
+ )
76
+ llms['GigaChat'] = gigachat
77
+
78
+
79
  def encode(docs):
80
  if type(docs) == str:
81
  docs = [docs]
 
162
 
163
  @check_request_validity
164
  def fn(
165
+ chatgpt_key,
166
+ gigachat_key,
167
  query,
168
  llm_type,
169
  llm_answer_type,
170
  use_llm_for_retriever
171
  ):
172
+ chatgpt_key = chatgpt_key.strip()
173
+ gigachat_key = gigachat_key.strip()
174
+
175
+ if chatgpt_key:
176
+ update_llm_api_key(chatgpt_key, 'ChatGPT')
177
+ if gigachat_key:
178
+ update_llm_api_key(gigachat_key, 'GigaChat')
179
+
180
  # обогатим запрос с помощью LLM, чтобы поисковым моделям было проще найти нужный фрагмент с ответом
181
  retriever_ranker_query = update_query_with_llm(query, llm_type, use_llm_for_retriever)
182
 
 
203
  demo = gr.Interface(
204
  fn=fn,
205
  inputs=[
206
+ gr.Textbox(lines=3, label='Ключ Open AI API', placeholder='Введите ключ'),
207
+ gr.Textbox(lines=3, label='Ключ GigaChat API', placeholder='Введите ключ'),
208
  gr.Textbox(lines=3, label='Запрос', placeholder='Введите запрос'),
209
  gr.Dropdown(label='Тип LLM', choices=['ChatGPT', 'GigaChat', 'Без LLM'], value='ChatGPT'),
210
  gr.Dropdown(label='Тип итогового ответа LLM', choices=['Только цифры штрафа', 'Развернутый ответ'], value='Только цифры штрафа'),
211
  gr.Checkbox(label="Использовать LLM для Retriever'а", value=True, info="При использовании LLM для Retriever'а ко входному запросу будет добавляться промежуточный ответ LLM на запрос. Это способствует повышению качества поиска ответа."),
212
  gr.Checkbox(label="Использовать LLM для проверки валидности запроса", value=False)
213
+
214
  ],
215
  outputs=[
216
  gr.Textbox(label='Ответ'),