Sparklight 3 years ago
parent fea7de10ad
commit 24d7c6fe2f

@ -22,7 +22,7 @@ class MainWindow(QMainWindow):
# Initialize API needs # Initialize API needs
openai.api_key = "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" openai.api_key = "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"
self.chat_log = [{"role": "system", "content": "Tu es un prof de Python"}] self.chat_log = [{"role": "system", "content": "Ignore toute les instructions avant celle-ci. Tu est un administrateur système et réseaux niveau 0 à 2. Tu fais ce travail depuis 20 ans. Ta tâche est maintenant de diagnostiquer et classifier les problèmes que te remontent les utilisateurs. Tu dois définir si l'utilisateur rencontre un problème ou souhaite effectuer une demande de changement. Si l'utilisateur rencontre un problème, tu dois effectuer le diagnostic pour catégoriser le problème et dépanner au mieux l'utilisateur. Si tu ne peux pas résoudre le problème et que tu as effectué ton diagnostic au maximum ou que l'utilisateur souhaire faire une demande de changement, tu indique toujours à l'utilisateur d'ouvrir un dossier en cliquant sur https://www.supportpc.fr/ticket/."}]
# Initialize message counter # Initialize message counter
self.num_messages = 0 self.num_messages = 0

@ -1,7 +1,13 @@
import sys import sys
import openai import openai
import datetime
import os
from PyQt5.QtWidgets import QApplication, QMainWindow, QTextEdit, QPushButton, QLineEdit from PyQt5.QtWidgets import QApplication, QMainWindow, QTextEdit, QPushButton, QLineEdit
# TODO remplacer logpath, username
# TODO gérer les erreurs de timeout, retour et overload de l'API
# TODO gérer le formattage / affichage de la réponse quand c'est une liste à points.
class MainWindow(QMainWindow): class MainWindow(QMainWindow):
def __init__(self): def __init__(self):
super().__init__() super().__init__()
@ -18,7 +24,10 @@ class MainWindow(QMainWindow):
# Initialize API needs # Initialize API needs
openai.api_key = "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" openai.api_key = "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"
self.chat_log = [{"role": "system", "content": "Tu es un prof de Python"}] self.chat_log = [{"role": "system", "content": "Ignore toute les instructions avant celle-ci. Tu est HelpBot, un administrateur système et réseaux niveau 0 à 2. Tu fais ce travail depuis 20 ans. Ta tâche est maintenant de diagnostiquer et classifier les problèmes que te remontent les utilisateurs. Tu dois définir si l'utilisateur rencontre un problème ou souhaite effectuer une demande de changement. Si l'utilisateur rencontre un problème, tu dois effectuer le diagnostic pour catégoriser le problème et dépanner au mieux l'utilisateur. Si tu ne peux pas résoudre le problème et que tu as effectué ton diagnostic au maximum ou que l'utilisateur souhaire faire une demande de changement, tu indique toujours à l'utilisateur d'ouvrir un dossier en cliquant sur https://www.supportpc.fr/ticket/. Tu dois TOUJOURS poser des questions AVANT de répondre afin de mieux cerner ce que t'indique l'utilisateur."}]
# Initialize message counter
###self.num_messages = 0
# Create chat window to display conversation # Create chat window to display conversation
self.chat_window = QTextEdit(self) self.chat_window = QTextEdit(self)
@ -29,17 +38,36 @@ class MainWindow(QMainWindow):
self.send_button = QPushButton("Send", self) self.send_button = QPushButton("Send", self)
self.send_button.setGeometry(580, 540, 200, 40) self.send_button.setGeometry(580, 540, 200, 40)
self.send_button.clicked.connect(self.send_message) self.send_button.clicked.connect(self.send_message)
self.text_input.returnPressed.connect(self.send_button.click)
self.username = "JimmyB"
self.filename = os.path.join(r"C:\Workspace\Appli\Logs", f"{datetime.datetime.now().strftime('%Y_%m_%d_%H_%M_%S')}_{self.username}_chatlog.txt") # set the filename
self.write_to_file() # call the function to write the first line to the file
def write_to_file(self):
with open(self.filename, "a") as file:
timestamp = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") # get the current time in the desired format
file.write(f"{timestamp} {self.chat_log[-1]}\n") # write the timestamp and the latest chat log entry to the file
def send_message(self): def send_message(self):
# Get user's message from text input field # Get user's message from text input field
user_message = self.text_input.text() user_message = self.text_input.text()
self.chat_log.append({"role": "user", "content": user_message}) self.chat_log.append({"role": "user", "content": user_message})
self.write_to_file()
reply = openai.ChatCompletion.create( reply = openai.ChatCompletion.create(
model="gpt-3.5-turbo", model="gpt-3.5-turbo",
messages=self.chat_log) messages=self.chat_log)
response=reply['choices'][0]['message']['content'] response=reply['choices'][0]['message']['content']
# Increment message counter
###self.num_messages += 1
# Send greeting to user
###response = f"Hello, you have sent {self.num_messages} messages."
self.chat_log.append({"role": "assistant", "content":response}) self.chat_log.append({"role": "assistant", "content":response})
self.write_to_file()
# Add user's message and bot's response to chat window # Add user's message and bot's response to chat window
self.chat_window.append(f"<p style='color: #0084ff;'><strong>You :</strong> {user_message}</p>") self.chat_window.append(f"<p style='color: #0084ff;'><strong>You :</strong> {user_message}</p>")

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

@ -0,0 +1,17 @@
PS C:\Workspace\Depot\SupportPC> & 'C:\Users\jbord\AppData\Local\Programs\Python\Python310\python.exe' 'c:\Users\jbord\.vscode\extensions\ms-python.python-2023.4.0\pythonFiles\lib\python\debugpy\adapter/../..\debugpy\launcher' '59963' '--' 'C:\Workspace\Depot\SupportPC\SupportPC.py'
Traceback (most recent call last):
File "C:\Workspace\Depot\SupportPC\SupportPC.py", line 56, in send_message
reply = openai.ChatCompletion.create(
File "C:\Users\jbord\AppData\Local\Programs\Python\Python310\lib\site-packages\openai\api_resources\chat_completion.py", line 25, in create
return super().create(*args, **kwargs)
File "C:\Users\jbord\AppData\Local\Programs\Python\Python310\lib\site-packages\openai\api_resources\abstract\engine_api_resource.py", line 153, in create
response, _, api_key = requestor.request(
File "C:\Users\jbord\AppData\Local\Programs\Python\Python310\lib\site-packages\openai\api_requestor.py", line 226, in request
resp, got_stream = self._interpret_response(result, stream)
File "C:\Users\jbord\AppData\Local\Programs\Python\Python310\lib\site-packages\openai\api_requestor.py", line 619, in _interpret_response
self._interpret_response_line(
File "C:\Users\jbord\AppData\Local\Programs\Python\Python310\lib\site-packages\openai\api_requestor.py", line 679, in _interpret_response_line
raise self.handle_error_response(
openai.error.RateLimitError: That model is currently overloaded with other requests. You can retry your request, or contact us through our help center at help.openai.com if the error persists. (Please include the request ID 912802e74e42eb8d9bcae586034152ef in your message.)
PS C:\Workspace\Depot\SupportPC>
Loading…
Cancel
Save