31
Τέλος, το app.run ξεκινάει τη λειτουργεία του τοπικού Flask server. Το debugging
χρησιμοποιείται ώστε να μπορούν να εμφανιστούν errors που μπορεί να προκύψουν, αλλά και
για να ξεκινήσει ο server εκ νέου, σε περίπτωση που τροποποιηθεί ο κώδικας όσο τρέχει.
if __name__ == '__main__':
app.run(debug=True, host='127.0.0.1', port=5010)
Υλοποίηση Διεπαφής Συνομιλίας
Η διεπαφή συνομιλίας αναπτύχθηκε στο αρχείο chat.py και χρησιμοποιεί τη βιβλιοθήκη
Pygame για τη διαχείριση των γραφικών, καθώς και τις requests για την επικοινωνία με το API.
Βιβλιοθήκες που χρησιμοποιούνται:
● Pygame: module για τη δημιουργία γραφικών και διεπαφών για παιχνίδια σε Python
● requests: επιτρέπει την επικοινωνία του LLM με το API μέσω HTTP αιτημάτων.
●
textwrap: επιτρέπει την αναδίπλωση κειμένου
Επεξεργασία Εισόδου και Πλοήγηση στη Συνομιλία
Η κύρια λογική περιλαμβάνει μία while λούπα, μέσα από την οποία ο χρήστης μπορεί να
πληκτρολογήσει το κείμενο που θέλει να στείλει, ώστε να επικοινωνήσει με το LLM. Επιπλέον
μπορεί με τη χρήση των up και down arrow keys να γίνει scroll στο τυπωμένο κείμενο, ώστε ο
χρήστης να μπορεί να περιηγηθεί στη συνομιλία.
while not done:
if event.type == pygame.KEYDOWN:
if active:
if event.key == pygame.K_RETURN:# enter key is pressed
response = llm_response(input_text)
messages.append(("Me -> ", input_text))
messages.append(("LLM -> ", response))
input_text = '' # clear the input box
elif event.key == pygame.K_BACKSPACE:
input_text = input_text[:-1]
elif event.key == pygame.K_UP: # scroll up in input box
scroll_input += 10 # scroll speed
elif event.key == pygame.K_DOWN:
scroll_input -= 10 # scroll speed
else:
input_text += event.unicode
if not active:
if event.key == pygame.K_UP: # scroll up in messages
scroll_messages += 10 # scroll speed
elif event.key == pygame.K_DOWN:# scroll down in messages
scroll_messages -= 10 # scroll speed
if event.type == pygame.MOUSEWHEEL:
scroll_messages += 10*event.y # mouse scroll speed