Merge pull request #20 from Gadzhi07/master

chat-gpt-3.5-turbo fix
This commit is contained in:
Abraham Tugalov
2023-04-17 21:07:13 +05:00
committed by GitHub

39
main.py
View File

@@ -10,6 +10,7 @@ import time
from ctypes import POINTER, cast
import openai
from openai import error
import pvporcupine
import simpleaudio as sa
import vosk
@@ -33,11 +34,8 @@ VA_CMD_LIST = yaml.safe_load(
)
# ChatGPT vars
message_log = [
{"role": "system", "content": "Ты голосовой ассистент из железного человека."}
]
# Set a flag to keep track of whether this is the first request in the conversation
first_request = True
system_message = {"role": "system", "content": "Ты голосовой ассистент из железного человека."}
message_log = [system_message]
# init openai
openai.api_key = config.OPENAI_TOKEN
@@ -63,14 +61,24 @@ def gpt_answer():
model_engine = "gpt-3.5-turbo"
max_tokens = 256 # default 1024
response = openai.ChatCompletion.create(
model=model_engine,
messages=message_log,
max_tokens=max_tokens,
temperature=0.7,
top_p=1,
stop=None
)
try:
response = openai.ChatCompletion.create(
model=model_engine,
messages=message_log,
max_tokens=max_tokens,
temperature=0.7,
top_p=1,
stop=None
)
except (error.TryAgain, error.ServiceUnavailableError):
return "ChatGPT перегружен!"
except openai.OpenAIError as ex:
# если ошибка - это макс длина контекста, то возвращаем ответ с очищенным контекстом
if ex.code == "context_length_exceeded":
message_log = [system_message, message_log[-1]]
return gpt_answer()
else:
return "OpenAI токен не рабочий."
# Find the first response from the chatbot that has text in it (some responses may not have text)
for choice in response.choices:
@@ -138,10 +146,7 @@ def va_respond(voice: str):
# tts.va_speak("Что?")
if fuzz.ratio(voice.join(voice.split()[:1]).strip(), "скажи") > 75:
if first_request:
message_log.append({"role": "user", "content": voice})
first_request = False
message_log.append({"role": "user", "content": voice})
response = gpt_answer()
message_log.append({"role": "assistant", "content": response})