Νικόλαος Λυμπιτάκης, Κατασκευή ενός RAG Chatbot για
Ξενοδοχειακή Υποστήριξη
56
Η τελική εκτέλεση πραγματοποιείται μέσω του “AgentExecutor” (εικόνα 23) της
βιβλιοθήκης LangChain. Ο “AgentExecutor” λαμβάνει τον ορισμό του πράκτορα (agent)
και τα εργαλεία, και αναλαμβάνει την εκτέλεση του βρόχου ReAct. Διαχειρίζεται αυτόματα
τη μνήμη (memory), ενημερώνοντας το ιστορικό με τα νέα ζεύγη ερωτήσεων-απαντήσεων
μετά από κάθε ολοκληρωμένο κύκλο συνομιλίας. Το “verbose=True” στον
“AgentExecutor” είναι απαραίτητο για το debugging στο PyCharm, καθώς καταγράφει στην
κονσόλα κάθε βήμα της λογικής ReAct (Thought, Action, Observation). Επιτρέπει τον
άμεσο εντοπισμό σφαλμάτων στη ροή της συνομιλίας ή στις κλήσεις των εργαλείων,
διευκολύνοντας τον έλεγχο. Έτσι, ο προγραμματιστής μπορεί να παρακολουθεί την
εσωτερική "σκέψη" του πράκτορα σε πραγματικό χρόνο.
# Δηµιουργία του πράκτορα
agent = create_react_agent(llm, tools, prompt)
# Αρχικοποίηση του Executor µε ενσωµάτωση της µνήµης
agent_executor = AgentExecutor(
agent=agent,
tools=tools,
verbose=True,
memory=memory # Η µνήµη που µεταφέρεται από το session state
)
Εικόνα 23 : Kώδικας από chatbot_logic.py
Τέλος, η συνάρτηση επιστρέφει το αποτέλεσμα της εκτέλεσης μέσω της μεθόδου
“invoke” (εικόνα 24). Σε αυτό το σημείο, ο “AgentExecutor” αναλαμβάνει αυτόματα να
αντλήσει το ιστορικό από τη μνήμη, να το τοποθετήσει στη θέση {chat_history} της
προτροπής και, μετά την ολοκλήρωση της απάντησης, να αποθηκεύσει το νέο γύρο (turn)
στη μνήμη. Μέσω της μεθόδου “invoke”, το σύστημα επεξεργάζεται την είσοδο του
χρήστη, τη γλώσσα και τα παραδείγματα, επιστρέφοντας τελικά την απάντηση που θα
εμφανιστεί στο περιβάλλον διεπαφής.
response = agent_executor.invoke({
“input”: user_question,
“language”: language,
“examples”: examples
})
return response[“output”]
Εικόνα 24 : Kώδικας από chatbot_logic.py