DiamondYin commited on
Commit
ba55863
1 Parent(s): c35feec

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +25 -1
app.py CHANGED
@@ -12,6 +12,12 @@ from app_utils import (
12
  get_chat_history, initialize_knowledge_base,
13
  text_to_speech_gen, logging, buzz_user)
14
 
 
 
 
 
 
 
15
  global FUNC_CALL #全局变量 用于判断角色动作
16
  FUNC_CALL = 0
17
 
@@ -27,6 +33,17 @@ AUDIO_HTML = ''
27
  nltk.download('averaged_perceptron_tagger') #下载语料库
28
  conv_model, voice_model = initialize_knowledge_base() #初始化知识库
29
 
 
 
 
 
 
 
 
 
 
 
 
30
 
31
  def idle_timer():
32
  global BUZZ_TIMEOUT
@@ -54,6 +71,7 @@ def get_response(history, audio_input):
54
 
55
  query_type = 'text'
56
  question =history[-1][0]
 
57
 
58
  global BUZZ_TIMEOUT
59
  BUZZ_TIMEOUT = 80
@@ -80,12 +98,18 @@ def get_response(history, audio_input):
80
  LOGGER.info("\ndocument_response: %s", answer)
81
  print('\ndocument_response:', answer)
82
 
 
 
 
 
 
83
  for trigger in GENERAL_RSPONSE_TRIGGERS:
84
  if trigger in answer:
85
  MESSAGES.append({"role": "user", "content": question})
86
  chat = openai.ChatCompletion.create(
87
- model="gpt-3.5-turbo",
88
  messages=MESSAGES,
 
89
  temperature=0.7,
90
  n=128,
91
  stop="\n"
 
12
  get_chat_history, initialize_knowledge_base,
13
  text_to_speech_gen, logging, buzz_user)
14
 
15
+ global max_response_tokens
16
+ global token_limit
17
+ max_response_tokens = 500
18
+ token_limit= 15000
19
+
20
+
21
  global FUNC_CALL #全局变量 用于判断角色动作
22
  FUNC_CALL = 0
23
 
 
33
  nltk.download('averaged_perceptron_tagger') #下载语料库
34
  conv_model, voice_model = initialize_knowledge_base() #初始化知识库
35
 
36
+ def num_tokens_from_messages(messages, model="gpt-3.5-turbo-16k"):
37
+ encoding = tiktoken.encoding_for_model(model)
38
+ num_tokens = 0
39
+ for message in messages:
40
+ num_tokens += 4 # every message follows <im_start>{role/name}\n{content}<im_end>\n
41
+ for key, value in message.items():
42
+ num_tokens += len(encoding.encode(value))
43
+ if key == "name": # if there's a name, the role is omitted
44
+ num_tokens += -1 # role is always required and always 1 token
45
+ num_tokens += 2 # every reply is primed with <im_start>assistant
46
+ return num_tokens
47
 
48
  def idle_timer():
49
  global BUZZ_TIMEOUT
 
71
 
72
  query_type = 'text'
73
  question =history[-1][0]
74
+ conv_history_tokens = 0
75
 
76
  global BUZZ_TIMEOUT
77
  BUZZ_TIMEOUT = 80
 
98
  LOGGER.info("\ndocument_response: %s", answer)
99
  print('\ndocument_response:', answer)
100
 
101
+ conv_history_tokens = num_tokens_from_messages(conversation)
102
+ while (conv_history_tokens + max_response_tokens >= token_limit):
103
+ del MESSAGES[1]
104
+ conv_history_tokens = num_tokens_from_messages(conversation)
105
+
106
  for trigger in GENERAL_RSPONSE_TRIGGERS:
107
  if trigger in answer:
108
  MESSAGES.append({"role": "user", "content": question})
109
  chat = openai.ChatCompletion.create(
110
+ model="gpt-3.5-turbo-16k",
111
  messages=MESSAGES,
112
+ max_tokens=500,
113
  temperature=0.7,
114
  n=128,
115
  stop="\n"