background image

 

 

30 

 

●  request: Λήψη δεδομένων από εισερχόμενα HTTP αιτήματα 

●  subprocess: Εκτέλεση εξωτερικών εντολών στο σύστημα, επιτρέποντας την εκτέλεση 

του LLM μέσω του τερματικού. 

 

Δημιουργία του Flask App 

Αρχικά δημιουργήθηκε ένα αντικείμενο Flask, το οποίο λειτουργεί ως κεντρική εφαρμογή. 

app = Flask(__name__) 

Εκτέλεση του LLM 

Η  συνάρτηση  run_the_llm

  εκτελεί  το  εξωτερικό  LLM  μέσω  της  γραμμής  εντολών.  Για  να 

πραγματοποιηθεί αυτή η διαδικασία, χρησιμοποιήθηκε το subprocess

14

. Επιπλέον έγινε χρήση 

του DEVNULL, ώστε να αποφευχθεί το μήνυμα σφάλματος: "failed to get console mode for 

stdout: The handle is invalid"

15

Έπειτα, με το try-except πραγματοποιήθηκε ομαλή διαχείριση 

του σφάλματος “stdout stderr

16

. 

def run_the_llm(message): 
    try: 
        llm_run = ['ollama', 'run', 'llama3:latest',  message]   

   output = subprocess.check_output(llm_run, encoding='utf-8', stdin=subprocess.DEVNULL) 
        return output.strip() 
    except subprocess.CalledProcessError as e: 
        print("Error running LLM :", e) 

        return "Error running LLM" 

Διαχείριση Αιτημάτων μέσω API 

Η διαχείριση της επικοινωνίας πραγματοποιείται μέσω ενός endpoint που λαμβάνει το 

μήνυμα του χρήστη και επιστρέφει την απάντηση του LLM. Mέσω του app.route στέλνονται 

τα δεδομένα στο Flask server από τη μέθοδο Post του chat.py (response = requests.post(url, 

json=data)).

  

 

Στη  συνάρτηση  take_a_response,  τα  δεδομένα  λαμβάνονται  και  δημιουργείται  ένα 

λεξικό-dictionary,  που  ονομάζεται  data  ώστε  να  είναι  προσβάσιμο  το  αρχείο  json.  Έπειτα 

επιστρέφεται το μήνυμα που λήφθηκε. 

@app.route('/take_a_response', methods=['POST']) 

def take_a_response():  #function to take the response from the llm as a text message 
    data = request.get_json() 
    message = data.get('message') 

    response = run_the_llm(message) 
    return jsonify({'response': response}) 

 

14

 

https://realpython.com/python-subprocess/

 

15

 

https://stackoverflow.com/questions/39563802/subprocess-calledprocesserror-what-is-the-error

 

16

 

https://stackoverflow.com/questions/40108816/python-running-as-windows-service-oserror-winerror-

6-the-handle-is-invalid