vyurchenko commited on
Commit
00b6f69
1 Parent(s): 0a3aaa1

add first chatbot version

Browse files
Files changed (4) hide show
  1. .gitignore +1 -0
  2. app.py +75 -4
  3. logs/results.csv +17 -0
  4. logs/results.ndjson +1 -0
.gitignore ADDED
@@ -0,0 +1 @@
 
 
1
+ .token
app.py CHANGED
@@ -1,7 +1,78 @@
 
 
 
 
 
 
 
 
1
  import gradio as gr
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2
 
3
- def greet(name):
4
- return "Hello " + name + "!!"
 
 
5
 
6
- iface = gr.Interface(fn=greet, inputs="text", outputs="text")
7
- iface.launch()
 
1
+ # import gradio as gr
2
+
3
+ # def greet(name):
4
+ # return "Hello " + name + "!!"
5
+
6
+ # iface.launch()
7
+
8
+
9
  import gradio as gr
10
+ import random
11
+ import time
12
+ import os
13
+ import openai
14
+ from datetime import datetime
15
+ import json
16
+
17
+ openai.api_key = ''
18
+
19
+ def send_openai_query(query):
20
+ response = openai.ChatCompletion.create(
21
+ model="gpt-3.5-turbo",
22
+ messages=[
23
+ {"role": "user", "content": query}
24
+ ] ,
25
+ # prompt=query,
26
+ temperature=0,
27
+ max_tokens=500,
28
+ top_p=1.0,
29
+ frequency_penalty=0.0,
30
+ presence_penalty=0.0,
31
+ # stop=["\n"]
32
+ )
33
+ return response['choices'][0]['message']['content']
34
+
35
+
36
+
37
+ with gr.Blocks() as demo:
38
+ gptkey = gr.Textbox(placeholder='input your chatGPT key', show_label=False)
39
+ chatbot = gr.Chatbot(elem_id="chatbot", show_label=False).style(height=300)
40
+ msg = gr.Textbox(show_label=False, placeholder='Input your query to chatGPT')
41
+ clear = gr.Button("Clear")
42
+
43
+ def user(user_message, gptkey, history):
44
+ if openai.api_key == '':
45
+ openai.api_key = gptkey.strip(' \r\n')
46
+ # print(f'FROM USER=<{openai.api_key}>')
47
+ return "", "Key accepted", history + [[user_message, '']]
48
+
49
+ def bot(history):
50
+ # print("HIST=", history)
51
+ query = history[-1][0]
52
+ # print(f'QUERY=<{query}>')
53
+ try:
54
+ result = send_openai_query(query)
55
+ except Exception as e:
56
+ result = 'Что-то пошло не так на стороне ChatGPT. Попробуйте повторить запрос'
57
+ # print(f'RESULT=<{result}>')
58
+ now = datetime.now()
59
+ dt_string = now.strftime("%d/%m/%Y %H:%M:%S")
60
+ d = {'time': dt_string,
61
+ 'query': query,
62
+ 'result': result}
63
+ d_json = json.dumps(d, ensure_ascii=False)
64
+ with open('logs/results.ndjson', 'a') as f:
65
+ f.write(d_json + '\r\n')
66
+ history[-1][1] = ''
67
+ for character in result:
68
+ history[-1][1] += character
69
+ time.sleep(0.02)
70
+ yield history
71
 
72
+ msg.submit(user, [msg, gptkey, chatbot], [msg, gptkey, chatbot], queue=False).then(
73
+ bot, chatbot, chatbot
74
+ )
75
+ clear.click(lambda: None, None, chatbot, queue=False)
76
 
77
+ demo.queue()
78
+ demo.launch()
logs/results.csv ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ 03/05/2023 12:39:22 как построить индекс для retrival системы в langchain Для построения индекса для системы ретриева в LangChain необходимо выполнить следующие шаги:
2
+
3
+ 1. Собрать коллекцию документов, которые будут индексироваться. Коллекция может быть любого размера и содержать документы на любом языке.
4
+
5
+ 2. Определить набор ключевых слов, которые будут использоваться для индексации документов. Ключевые слова могут быть выбраны на основе тематики документов или на основе частоты их употребления в коллекции.
6
+
7
+ 3. Привести все документы к нормализованному виду, убрав из них стоп-слова и приведя слова к их базовой форме.
8
+
9
+ 4. Разбить каждый документ на отдельные термины и присвоить каждому термину уникальный идентификатор.
10
+
11
+ 5. Создать инвертированный индекс, который будет содержать список всех терминов и ссылки на документы, в которых они встречаются.
12
+
13
+ 6. Оптимизировать индекс, чтобы он занимал минимальное количество места и был быстро доступен для поиска.
14
+
15
+ 7. Реализовать алгоритм поиска, который будет использовать индекс для быстрого поиска документов по ключевым словам.
16
+
17
+ 8. Протестировать систему на различных коллекциях документов и оптимизировать ее для максимальной эффективности и точности поиска.
logs/results.ndjson ADDED
@@ -0,0 +1 @@
 
 
1
+ {"time": "03/05/2023 12:44:28", "query": "как начать свое дело", "result": "1. Определите свою идею бизнеса: выберите область, которая вам интересна и в которой вы хотели бы работать.\n\n2. Исследуйте рынок: изучите конкурентов, потенциальных клиентов и их потребности.\n\n3. Напишите бизнес-план: определите цели, стратегию, финансовые показатели и план действий.\n\n4. Получите финансирование: найдите инвесторов, получите кредит или используйте свои сбережения.\n\n5. Зарегистрируйте свое дело: выберите форму собственности, зарегистрируйте свое предприятие и получите все необходимые лицензии и разрешения.\n\n6. Создайте команду: наймите сотрудников, которые помогут вам реализовать вашу идею.\n\n7. Рекламируйте свой бизнес: используйте различные каналы маркетинга, чтобы привлечь клиентов и расширить свой бизнес.\n\n8. Развивайте свой бизнес: следите за трендами рынка, улучшайте свой продукт и услуги, ищите новые возможности для роста."}