first commit
Browse files- app.py +299 -0
- requirements.txt +16 -0
app.py
ADDED
@@ -0,0 +1,299 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import json
|
2 |
+
import os
|
3 |
+
import random
|
4 |
+
|
5 |
+
import gradio as gr
|
6 |
+
import openai
|
7 |
+
import requests
|
8 |
+
from langchain.callbacks.base import CallbackManager
|
9 |
+
from langchain.callbacks.streaming_stdout import StreamingStdOutCallbackHandler
|
10 |
+
from langchain.chains import ConversationChain
|
11 |
+
from langchain.chat_models import ChatOpenAI
|
12 |
+
from langchain.memory import ConversationBufferWindowMemory
|
13 |
+
from langchain.prompts.chat import (ChatPromptTemplate,
|
14 |
+
HumanMessagePromptTemplate,
|
15 |
+
MessagesPlaceholder,
|
16 |
+
SystemMessagePromptTemplate)
|
17 |
+
from pydub import AudioSegment
|
18 |
+
from pydub.playback import play
|
19 |
+
|
20 |
+
# ไผ่ฉฑใใงใผใณ
|
21 |
+
conversation = None
|
22 |
+
|
23 |
+
# APIใญใผใฎ่จญๅฎ
|
24 |
+
#os.environ["OPENAI_API_KEY"] = ""
|
25 |
+
openai.api_key = os.getenv('OPENAI_API_KEY')
|
26 |
+
|
27 |
+
# ๆค็ดขAPIURL
|
28 |
+
search_url = 'https://greendb.shanri.co.jp/gd/search/'
|
29 |
+
|
30 |
+
# ่จญๅฎใใญใณใใ
|
31 |
+
character_setting = "ใใชใใฏ20ไปฃใฎ็่ญทๅธซใใใงใใๆใใๆงๆ ผใงไธๅฏงใชๅฃ่ชฟใงๅ็ญใใฆใใ ใใ"
|
32 |
+
|
33 |
+
def get_search_result(kw):
|
34 |
+
# getใกใฝใใใงsearch urlใซๅฏพใใฆGETใชใฏใจในใใ้ใ
|
35 |
+
r = requests.get(search_url, params={'kw':kw})
|
36 |
+
|
37 |
+
# JSONใฌในใใณในใใkotoba_shoujouใใในใฆๅๅพ
|
38 |
+
kotoba_shoujou = []
|
39 |
+
for hit in r.json()['hits']:
|
40 |
+
kotoba_shoujou.append(hit['_source']['kotoba_shoujou'])
|
41 |
+
|
42 |
+
# kotoba_shoujouๆๅญๅ้
ๅใ/ใง้ฃ็ต
|
43 |
+
kotoba_shoujou_str = '/'.join(kotoba_shoujou)
|
44 |
+
|
45 |
+
return kotoba_shoujou_str
|
46 |
+
|
47 |
+
def speechRecognitionModel(input, chatbot, shoujou, bui, when, how, status):
|
48 |
+
global conversation
|
49 |
+
if not conversation:
|
50 |
+
# ใใฃใใใใญใณใใใใณใใฌใผใ
|
51 |
+
prompt = ChatPromptTemplate.from_messages([
|
52 |
+
SystemMessagePromptTemplate.from_template(character_setting),
|
53 |
+
MessagesPlaceholder(variable_name="history"),
|
54 |
+
HumanMessagePromptTemplate.from_template("{input}")
|
55 |
+
])
|
56 |
+
|
57 |
+
# ใใฃใใใขใใซ
|
58 |
+
llm = ChatOpenAI(
|
59 |
+
model_name="gpt-3.5-turbo",
|
60 |
+
max_tokens=512,
|
61 |
+
temperature=0.2,
|
62 |
+
streaming=True,
|
63 |
+
callback_manager=CallbackManager([StreamingStdOutCallbackHandler()])
|
64 |
+
)
|
65 |
+
|
66 |
+
# ใกใขใช
|
67 |
+
memory = ConversationBufferWindowMemory(k=3, return_messages=True)
|
68 |
+
|
69 |
+
# ไผ่ฉฑใใงใผใณ
|
70 |
+
conversation = ConversationChain(memory=memory, prompt=prompt, llm=llm, verbose=False)
|
71 |
+
|
72 |
+
os.rename(input, input + '.wav')
|
73 |
+
file = open(input + '.wav', "rb")
|
74 |
+
result = openai.Audio.transcribe(file=file, model="whisper-1", response_format="text", language="ja")
|
75 |
+
message = f'ไปฅไธใซ็็ถใ็คบใใใญในใใใใใพใใ็็ถใใใคใใใใฉใใชใใคใใๅ ดๆใซใคใใฆjsonๅฝขๅผใงใพใจใใฆใใ ใใใ\n{result}'
|
76 |
+
response = conversation.predict(input=message)
|
77 |
+
|
78 |
+
# ๆๅญๅใ่พๆธใซๅคๆ
|
79 |
+
dict_data = json.loads(response)
|
80 |
+
|
81 |
+
# ่พๆธใฎใญใผใงๅคใซใขใฏใปใน
|
82 |
+
shoujou = dict_data["็็ถ"]
|
83 |
+
when = dict_data["ใใคใใ"]
|
84 |
+
how = dict_data["ใฉใใช"]
|
85 |
+
bui = dict_data["ใคใใๅ ดๆ"]
|
86 |
+
|
87 |
+
message = f'ไปฅไธใซๆฃ่
ใใใ็็ถใซใคใใฆ่ชฌๆใใๆ็ซ ใใใใพใใๅ็ญใฎใ็คผใจ็็ถใใใคใใใใฉใใชใใคใใๅ ดๆใชใฉใซใคใใฆใพใจใใฆใญใใใฃใฆใใ ใใใ\n{result}'
|
88 |
+
response = conversation.predict(input=message)
|
89 |
+
|
90 |
+
chatbot += [[result, response]]
|
91 |
+
chatbot += [[None, 'ๅผใ็ถใ่ณชๅใใใฆใใใ ใใพใใญใ']]
|
92 |
+
if shoujou == 'ไธๆ':
|
93 |
+
status = START
|
94 |
+
chatbot += [[None, '็็ถใซใคใใฆๆใใฆใใ ใใใ']]
|
95 |
+
elif bui == 'ไธๆ':
|
96 |
+
chatbot += [[None, 'ไฝใฎใฉใฎใใใ๏ผ้จไฝ๏ผใใคใใใ่ฉณใใๆใใฆใใ ใใใ']]
|
97 |
+
status = BUI
|
98 |
+
elif when == 'ไธๆ':
|
99 |
+
chatbot += [[None, 'ใใคใใ็็ถใๅงใพใใพใใใ๏ผ็ต้ใๆใใฆใใ ใใใ']]
|
100 |
+
status = WHEN
|
101 |
+
elif how == 'ไธๆ':
|
102 |
+
chatbot += [[None, 'ไปใใฉใฎใใใ็็ถใฏใ่พใใงใใ?']]
|
103 |
+
status = HOW
|
104 |
+
else:
|
105 |
+
chatbot += [[None, 'ไปใใใคใใจ้ใใชใจๆใ็็ถใๆใๅฝใใใใจใฏใใฃใใใใพใใใ']]
|
106 |
+
status = RELEVANCE
|
107 |
+
return chatbot, shoujou, bui, when, how, status
|
108 |
+
|
109 |
+
def user(message, history):
|
110 |
+
return "", history + [[message, None]]
|
111 |
+
|
112 |
+
def chat(history, status, suggest, shoujou, bui, hosoku, when, how, relevance, kiou, fukuyaku, allergy, family, job, drink, smoke, sports, stress, etc, result):
|
113 |
+
user_message = history[-1][0]
|
114 |
+
if status == START:
|
115 |
+
if shoujou == 'ไธๆ':
|
116 |
+
history[-1][1] = '็็ถใซใคใใฆๆใใฆใใ ใใใ'
|
117 |
+
else:
|
118 |
+
status += 1
|
119 |
+
if status == SYOUJOU:
|
120 |
+
status +=1
|
121 |
+
shoujou = user_message
|
122 |
+
history[-1][1] = 'ไฝใฎใฉใฎใใใ๏ผ้จไฝ๏ผใใคใใใ่ฉณใใๆใใฆใใ ใใใ'
|
123 |
+
elif status == BUI:
|
124 |
+
status += 1
|
125 |
+
bui = user_message
|
126 |
+
history[-1][1] = 'ๅ่ฃใฎไธญใใ็็ถใซ่ฟใใ็็ถใใจใฐใใใใใฐๅ
ฅๅใใฆใใ ใใใ\n็นใซใชใใใฐใจใณใฟใผใๅ
ฅๅใใฆใใ ใใใ'
|
127 |
+
suggest = get_search_result(shoujou).split('/')
|
128 |
+
suggest = random.sample(suggest, 20)
|
129 |
+
suggest = ' '.join(suggest)
|
130 |
+
elif status == HOSOKU:
|
131 |
+
hosoku = user_message
|
132 |
+
suggest = '็็ถใใจใฐใฎๅ่ฃใ่กจ็คบใใใพใใ'
|
133 |
+
message = f'็งใฏ็่ญทๅธซใงใใ็งใฏใๆฃ่
ๆงใซใไปๆฅใฏใฉใใช็็ถใงใๅฐใใงใใ๏ผใใจ่ณชๅใใๆฃ่
ๆงใฏใ{shoujou}ใใจ็ญใใพใใใใใใซใ็งใฏใไฝใฎใฉใฎใใใ๏ผ้จไฝ๏ผใใคใใใ่ฉณใใๆใใฆใใ ใใใใใจ่ณชๅใใๆฃ่
ๆงใฏใ{bui}ใใจ็ญใใพใใใไธ่จใฏ็็ถใซ้ขใใๅ็ญใงใใใใฏใใใใใใง็ญใใฆใใ ใใใ'
|
134 |
+
response = conversation.predict(input=message)
|
135 |
+
history[-1][1] = response
|
136 |
+
if 'ใฏใ' in response:
|
137 |
+
status += 1
|
138 |
+
message = f'ไปฅไธใฎๆ็ซ ใใพใจใใ็ขบ่ชใใฆใใ ใใใ\n{shoujou}ใ{bui}ใ{hosoku}'
|
139 |
+
response = conversation.predict(input=message)
|
140 |
+
history[-1][1] = f'{response}\nใใใใไธๆใ็็ถใใไผใใงใใใใใซ่ฒใ
่ณชๅใใพใใ\nใใคใใ็็ถใๅงใพใใพใใใ๏ผ็ต้ใๆใใฆใใ ใใใ'
|
141 |
+
else:
|
142 |
+
history[-1][1] = f'{response}\nใๅใซใชใใใใใๆนใใฆใใๅฐใ่ฉณใใ็็ถใใไผบใใงใใพใใ๏ผ'
|
143 |
+
elif status == WHEN:
|
144 |
+
status += 1
|
145 |
+
when = user_message
|
146 |
+
history[-1][1] = 'ใฉใฎใใใ็็ถใฏใ่พใใงใใ๏ผ'
|
147 |
+
elif status == HOW:
|
148 |
+
status += 1
|
149 |
+
how = user_message
|
150 |
+
history[-1][1] = 'ไปใใใคใใจ้ใใชใจๆใ็็ถใๆใๅฝใใใใจใฏใใฃใใใใพใใใ'
|
151 |
+
elif status == RELEVANCE:
|
152 |
+
status += 1
|
153 |
+
relevance = user_message
|
154 |
+
message = f'็งใฏ็่ญทๅธซใงใใไปฅไธใใพใจใใใพใจใใๆ็ซ ใ ใใ่จ่ผใใฆใใ ใใใ\n{shoujou}ใ{bui}ใ{hosoku}ใ{when}ใ{how}ใ{relevance}ใ'
|
155 |
+
response = conversation.predict(input=message)
|
156 |
+
history[-1][1] = response + '\nไปใพใงใใใฃใ็
ๆฐใ็พๅจๆฒป็ไธญใฎ็
ๆฐใฏใใใพใใ๏ผ'
|
157 |
+
elif status == KIOU:
|
158 |
+
status += 1
|
159 |
+
kiou = user_message
|
160 |
+
history[-1][1] = '็พๅจ้ฃฒใพใใฆใใใ่ฌใใตใใชใกใณใใฏใใใพใใ๏ผ'
|
161 |
+
elif status == FUKUYAKU:
|
162 |
+
status += 1
|
163 |
+
fukuyaku = user_message
|
164 |
+
history[-1][1] = 'ไฝ่ณชใซใคใใฆใไผบใใใใฆใใ ใใใ\nใป็นใซใชใ\nใปใขใฌใซใฎใผใใ\nใปไพฟ็งใใใใ\nใปไธ็ขใใใใ\nใปใใถใใใใ\nใป่ใๅผฑใ\nใปๅทใๆง\nใปใใฎไป'
|
165 |
+
elif status == ALLERGY:
|
166 |
+
status += 1
|
167 |
+
allergy = user_message
|
168 |
+
message = f'็งใฏ็่ญทๅธซใงใใไปฅไธใใพใจใใใพใจใใๆ็ซ ใ ใใ่จ่ผใใฆใใ ใใใ{kiou}ใ{fukuyaku}, {allergy}ใ'
|
169 |
+
response = conversation.predict(input=message)
|
170 |
+
history[-1][1] = f'{response}\nๅปๅธซใฏใใชใใใใ็่งฃใใฆๆฒป็ใใใใใจ่ใใฆใใพใใใ\nใใชใใฎใฉใคใในใฟใคใซใๅฐใใไผบใใใใฆใใ ใใใ\nใๅฎถๆใจไธ็ทใซไฝใใงใใพใใ๏ผใใใจใไธไบบๆฎใใใงใใ๏ผ'
|
171 |
+
elif status == FAMILY:
|
172 |
+
status += 1
|
173 |
+
family = user_message
|
174 |
+
message = f'็งใฏ็่ญทๅธซใงใใ็งใฏใๆฃ่
ๆงใซใใๅฎถๆใจไธ็ทใซไฝใใงใใพใใ๏ผใใใจใไธไบบๆฎใใใงใใ๏ผใใจ่ณชๅใใๆฃ่
ๆงใฏ\nใ{family}ใใจๅ็ญใใพใใใใใใฏ่ณชๅใซๅฏพใใ้ฉๅใชๅ็ญใงใใใใฏใใใใใใง็ญใใฆใใ ใใใ'
|
175 |
+
response = conversation.predict(input=message)
|
176 |
+
if 'ใฏใ' in response:
|
177 |
+
history[-1][1] = 'ใฉใใชใไปไบใใใใฆใใใฃใใใใพใใใ'
|
178 |
+
else:
|
179 |
+
history[-1][1] = 'ๆฌกใฎ่ณชๅใธใใคใใพใใญใ\nใฉใใชใไปไบใใใใฆใใใฃใใใใพใใใ'
|
180 |
+
elif status == JOB:
|
181 |
+
status += 1
|
182 |
+
job = user_message
|
183 |
+
message = f'็งใฏ็่ญทๅธซใงใใ็งใฏใๆฃ่
ๆงใซใใฉใใชใไปไบใใใใฆใใใฃใใใใพใใใใใจ่ณชๅใใๆฃ่
ๆงใฏ\nใ{job}ใใจๅ็ญใใพใใใใใใฏ่ณชๅใซๅฏพใใ้ฉๅใชๅ็ญใงใใใใฏใใใใใใง็ญใใฆใใ ใใใ'
|
184 |
+
response = conversation.predict(input=message)
|
185 |
+
if 'ใฏใ' in response:
|
186 |
+
history[-1][1] = 'ใ้
ใ้ฃฒใพใใพใใ๏ผ\nใปใ้
ใฏ้ฃฒใพใชใ\nใปใ้
ใ้ฃฒใโ๏ผใ้
ใฎ็จฎ้กใป้ใป้ ปๅบฆใๆใใฆใใ ใใใไพ๏ผ็ผถใใผใซ2ๆฌใๆฏๆฅ๏ผ'
|
187 |
+
else:
|
188 |
+
history[-1][1] = 'ๆฌกใฎ่ณชๅใธใใคใใพใใญใ\nใ้
ใ้ฃฒใพใใพใใ๏ผ\nใปใ้
ใฏ้ฃฒใพใชใ\nใปใ้
ใ้ฃฒใโ๏ผใ้
ใฎ็จฎ้กใป้ใป้ ปๅบฆใๆใใฆใใ ใใใไพ๏ผ๏ฟฝ๏ฟฝ๏ฟฝใใผใซ2ๆฌใๆฏๆฅ๏ผ'
|
189 |
+
elif status == DRINK:
|
190 |
+
status += 1
|
191 |
+
drink = user_message
|
192 |
+
message = f'็งใฏ็่ญทๅธซใงใใ็งใฏใๆฃ่
ๆงใซใใ้
ใ้ฃฒใพใใพใใ๏ผใ้
ใฎ็จฎ้กใป้ใป้ ปๅบฆใๆใใฆใใ ใใใใใจ่ณชๅใใๆฃ่
ๆงใฏ\nใ{drink}ใใจๅ็ญใใพใใใใใใฏ่ณชๅใซๅฏพใใ้ฉๅใชๅ็ญใงใใใใฏใใใใใใง็ญใใฆใใ ใใใ'
|
193 |
+
response = conversation.predict(input=message)
|
194 |
+
if 'ใฏใ' in response:
|
195 |
+
history[-1][1] = 'ใฟใใณใๅธใใใพใใ๏ผ\nใปใฟใใณใฏๅธใใชใ\nใปใฟใใณใฏไปฅๅๅธใฃใฆใใใใใใใปใฟใใณใๅธใโ๏ผไธๆฅไฝๆฌๅธใใพใใ๏ผ๏ผ'
|
196 |
+
else:
|
197 |
+
history[-1][1] = 'ๆฌกใฎ่ณชๅใธใใคใใพใใญใ\nใฟใใณใๅธใใใพใใ๏ผ\nใปใฟใใณใฏๅธใใชใ\nใปใฟใใณใฏไปฅๅๅธใฃใฆใใใใใใใปใฟใใณใๅธใโ๏ผไธๆฅไฝๆฌๅธใใพใใ๏ผ๏ผ'
|
198 |
+
elif status == SMOKE:
|
199 |
+
status += 1
|
200 |
+
smoke = user_message
|
201 |
+
message = f'็งใฏ็่ญทๅธซใงใใ็งใฏใๆฃ่
ๆงใซใใฟใใณใๅธใใใพใใ๏ผไธๆฅไฝๆฌๅธใใพใใ๏ผใใจ่ณชๅใใๆฃ่
ๆงใฏ\nใ{smoke}ใใจๅ็ญใใพใใใใใใฏ่ณชๅใซๅฏพใใ้ฉๅใชๅ็ญใงใใใใฏใใใใใใง็ญใใฆใใ ใใใ'
|
202 |
+
response = conversation.predict(input=message)
|
203 |
+
if 'ใฏใ' in response:
|
204 |
+
history[-1][1] = '้ๅใฏใใใพใใ๏ผ\nใป้ๅใฏใใชใ\nใป้ๅใใใโ๏ผใฉใใช้ๅใใใใพใใ๏ผ้ ปๅบฆใฏ๏ผ๏ผ'
|
205 |
+
else:
|
206 |
+
history[-1][1] = 'ๆฌกใฎ่ณชๅใธใใคใใพใใญใ\n้ๅใฏใใใพใใ๏ผ\nใป้ๅใฏใใชใ\nใป้ๅใใใโ๏ผใฉใใช้ๅใใใใพใใ๏ผ้ ปๅบฆใฏ๏ผ๏ผ'
|
207 |
+
elif status == SPORTS:
|
208 |
+
status += 1
|
209 |
+
sports = user_message
|
210 |
+
message = f'็งใฏ็่ญทๅธซใงใใ็งใฏใๆฃ่
ๆงใซใ้ๅใฏใใใพใใ๏ผใฉใใช้ๅใใใใพใใ๏ผ้ ปๅบฆใฏ๏ผใใจ่ณชๅใใๆฃ่
ๆงใฏ\nใ{sports}ใใจๅ็ญใใพใใใใใใฏ่ณชๅใซๅฏพใใ้ฉๅใชๅ็ญใงใใใใฏใใใใใใง็ญใใฆใใ ใใใ'
|
211 |
+
response = conversation.predict(input=message)
|
212 |
+
if 'ใฏใ' in response:
|
213 |
+
history[-1][1] = 'ๅคใฏๅๅ็ก็ ใใจใใฆใใพใใ๏ผ\nใป็ก็ ใใจใใฆใใ\nใป็ก็ ใใจใใฆใใชใโ๏ผใฉใใชใใจใงใๅฐใใงใใ๏ผ๏ผ'
|
214 |
+
else:
|
215 |
+
history[-1][1] = 'ๆฌกใฎ่ณชๅใธใใคใใพใใญใ\nๅคใฏๅๅ็ก็ ใใจใใฆใใพใใ๏ผ\nใป็ก็ ใใจใใฆใใ\nใป็ก็ ใใจใใฆใใชใโ๏ผใฉใใชใใจใงใๅฐใใงใใ๏ผ๏ผ'
|
216 |
+
elif status == STRESS:
|
217 |
+
status += 1
|
218 |
+
stress = user_message
|
219 |
+
message = f'็งใฏ็่ญทๅธซใงใใไปฅไธใใพใจใใใพใจใใๆ็ซ ใ ใใ่จ่ผใใฆใใ ใใใ{family}ใ{job}ใ{drink}ใ{smoke}ใ{sports}ใ{stress}ใ{etc}ใ'
|
220 |
+
response = conversation.predict(input=message)
|
221 |
+
history[-1][1] = f'{response}\nๆๅพใซไฝใๅปๅธซใซใไผใใใใใใใจใใ่ใใซใชใใใใใจใฏใใใพใใใ'
|
222 |
+
elif status == ETC:
|
223 |
+
etc = user_message
|
224 |
+
message = f'็งใฏ็่ญทๅธซใงใใไปฅไธใใพใจใใ็ฎๆกๆธใใง่จ่ผใใฆใใ ใใใ{shoujou}ใ{bui}ใ{hosoku}ใ{when}ใ{relevance}ใ{kiou}ใ{fukuyaku}ใ{allergy}ใ{family}ใ{job}ใ{drink}ใ{smoke}ใ{sports}ใ{stress}ใ{etc}ใ'
|
225 |
+
history[-1][1] = conversation.predict(input=message)
|
226 |
+
message = f'็งใฏ็่ญทๅธซใงใใไปฅไธใใพใจใใ็ฎๆกๆธใใง่จ่ผใใฆใใ ใใใ็็ถ๏ผ{shoujou}ใ้จไฝ๏ผ{bui}ใ่ฃ่ถณ๏ผ{hosoku}ใใใคใใ๏ผ{when}ใใใคใใจ้ใ๏ผ{relevance}ใๆขๅพ็๏ผ{kiou}ใๆ่ฌ๏ผ{fukuyaku}ใใขใฌใซใฎใผ๏ผ{allergy}ใๅฎถๆๆญด๏ผ{family}ใ่ทๆญด๏ผ{job}ใ้ฃฒ้
๏ผ{drink}ใๅซ็
๏ผ{smoke}ใ้ๅ๏ผ{sports}ใในใใฌใน๏ผ{stress}ใใใฎไป๏ผ{etc}ใ'
|
227 |
+
result = conversation.predict(input=message)
|
228 |
+
|
229 |
+
return history, status, suggest, shoujou, bui, hosoku, when, how, relevance, kiou, fukuyaku, allergy, family, job, drink, smoke, sports, stress, etc, result
|
230 |
+
|
231 |
+
def init_firstmsg():
|
232 |
+
history = [[None, 'ๅปๅธซใซ็็ถใไผใใใจใใซๅฝน็ซใคๅ่จบๅ่จบใในใฟใผใใใพใใญ๏ผ']]
|
233 |
+
history += [[None, 'ไปๆฅใฏใฉใใช็็ถใงใๅฐใใงใใ๏ผ']]
|
234 |
+
history += [[None, 'ใใคใใใใฉใใชใใฉใฎใใใใฎ็็ถใใใใงใใใใใใพใใใคใใๅ ดๆใชใฉใใไผใไธใใใ']]
|
235 |
+
history += [[None, 'ใใใงใฏ้ฒ้ณใใฟใณใๆผใใฆใ่ฉฑใใ ใใใ็ตใใใพใใใใใไธๅบฆ้ฒ้ณใใฟใณใๆผใใฆใใ ใใใ']]
|
236 |
+
|
237 |
+
return history
|
238 |
+
|
239 |
+
START = 0
|
240 |
+
SYOUJOU = 1
|
241 |
+
BUI = 2
|
242 |
+
HOSOKU = 3
|
243 |
+
WHEN = 4
|
244 |
+
HOW = 5
|
245 |
+
RELEVANCE = 6
|
246 |
+
KIOU = 7
|
247 |
+
FUKUYAKU = 8
|
248 |
+
ALLERGY = 9
|
249 |
+
FAMILY = 10
|
250 |
+
JOB = 11
|
251 |
+
DRINK = 12
|
252 |
+
SMOKE = 13
|
253 |
+
SPORTS = 14
|
254 |
+
STRESS = 15
|
255 |
+
ETC = 16
|
256 |
+
|
257 |
+
# ใใญใณใใจใณใ
|
258 |
+
with gr.Blocks() as demo:
|
259 |
+
with gr.Column(scale=0.6):
|
260 |
+
# ใณใณใใผใใณใ
|
261 |
+
firstmsg = gr.Chatbot()
|
262 |
+
audio = gr.inputs.Audio(source="microphone", type="filepath")
|
263 |
+
chatbot = gr.Chatbot()
|
264 |
+
msg = gr.Textbox(show_label = False)
|
265 |
+
gr.Markdown('---')
|
266 |
+
suggest = gr.Textbox(label = 'ๅ่ฃ', interactive = False, value = '็็ถใใจใฐใฎๅ่ฃใ่กจ็คบใใใพใใ')
|
267 |
+
status = gr.Number(value = START, visible = False)
|
268 |
+
shoujou = gr.Textbox(visible = False)
|
269 |
+
bui = gr.Textbox(visible = False)
|
270 |
+
hosoku = gr.Textbox(visible = False)
|
271 |
+
when = gr.Textbox(visible = False)
|
272 |
+
how = gr.Textbox(visible = False)
|
273 |
+
relevance = gr.Textbox(visible = False)
|
274 |
+
kiou = gr.Textbox(visible = False)
|
275 |
+
fukuyaku = gr.Textbox(visible = False)
|
276 |
+
allergy = gr.Textbox(visible = False)
|
277 |
+
family = gr.Textbox(visible = False)
|
278 |
+
job = gr.Textbox(visible = False)
|
279 |
+
drink = gr.Textbox(visible = False)
|
280 |
+
smoke = gr.Textbox(visible = False)
|
281 |
+
sports = gr.Textbox(visible = False)
|
282 |
+
stress = gr.Textbox(visible = False)
|
283 |
+
etc = gr.Textbox(visible = False)
|
284 |
+
result = gr.Textbox(label = 'ใพใจใ', interactive = False)
|
285 |
+
|
286 |
+
demo.load(init_firstmsg, None, firstmsg, queue=False)
|
287 |
+
|
288 |
+
audio.change(speechRecognitionModel, inputs=[audio, chatbot, shoujou, bui, when, how, status], outputs=[chatbot, shoujou, bui, when, how, status])
|
289 |
+
# audio.change(chat, [chatbot, status, suggest, shoujou, bui, hosoku, when, how, relevance, kiou, fukuyaku, allergy, family, job, drink, smoke, sports, stress, etc, result], [chatbot, status, suggest, shoujou, bui, hosoku, when, how, relevance, kiou, fukuyaku, allergy, family, job, drink, smoke, sports, stress, etc, result])
|
290 |
+
|
291 |
+
# demo.load(init_chatbot, None, chatbot, queue=False)
|
292 |
+
|
293 |
+
msg.submit(user, [msg, chatbot], [msg, chatbot], queue=False).then(
|
294 |
+
chat, [chatbot, status, suggest, shoujou, bui, hosoku, when, how, relevance, kiou, fukuyaku, allergy, family, job, drink, smoke, sports, stress, etc, result],
|
295 |
+
[chatbot, status, suggest, shoujou, bui, hosoku, when, how, relevance, kiou, fukuyaku, allergy, family, job, drink, smoke, sports, stress, etc, result]
|
296 |
+
)
|
297 |
+
|
298 |
+
if __name__ == "__main__":
|
299 |
+
demo.launch()
|
requirements.txt
ADDED
@@ -0,0 +1,16 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
langchain==0.0.125
|
2 |
+
openai==0.27.2
|
3 |
+
chromadb==0.3.14
|
4 |
+
pypdf==3.7.0
|
5 |
+
tiktoken==0.3.3
|
6 |
+
gradio
|
7 |
+
requests
|
8 |
+
gtts
|
9 |
+
pydub
|
10 |
+
|
11 |
+
transformers==4.24.0
|
12 |
+
torch==1.11.0
|
13 |
+
gradio==3.9.1
|
14 |
+
sentencepiece==0.1.97
|
15 |
+
fugashi==1.2.0
|
16 |
+
unidic-lite==1.0.8
|