Τι είναι τα AI Skills & Tools

Πώς τα AI agents χρησιμοποιούν πακέτα δυνατοτήτων — από function calls έως MCP servers. Πρακτικός οδηγός για προγραμματιστές που χτίζουν με LLMs.

7 λεπτά ανάγνωσης Ενημερώθηκε: Απρίλιος 2026

🔧 Τι είναι ένα Skill;

Στο πλαίσιο των AI agents, ένα skill (επίσης ονομάζεται tool or function) είναι μια πακέτα, επαναχρησιμοποιήσιμη δυνατότητα που ένα LLM μπορεί να επικαλεστεί για να αλληλεπιδράσει με τον κόσμο έξω από το context window. Τα skills γεφυρώνουν το χάσμα μεταξύ κατανόησης γλώσσας και πραγματικής δράσης.

Κάθε skill έχει τέσσερα συστατικά:

  • Name — ένα μοναδικό αναγνωριστικό που το μοντέλο χρησιμοποιεί για να αναφερθεί στο skill (π.χ., web_search)
  • Description — φυσικό κείμενο που εξηγεί τι κάνει το skill και πότε να χρησιμοποιηθεί· το LLM το διαβάζει για να αποφασίσει πότε να καλέσει το skill
  • Input schema — μια δομημένη ορισμό των ορισμάτων (JSON Schema); το μοντέλο τα συμπληρώνει με βάση το έργο
  • Implementation — ο πραγματικός κώδικας που εκτελείται: μια κλήση API, ερώτημα βάσης δεδομένων, εντολή shell ή οποιαδήποτε άλλη λειτουργία

Παράδειγμα: A get_weather skill έχει την περιγραφή "Fetches current weather for a city", δέχεται { "city": "string" } ως είσοδο, και καλεί ένα weather API. Το LLM δεν βλέπει ποτέ το API key ή την HTTP κλήση — λαμβάνει απλώς το αποτέλεσμα πίσω ως κείμενο.

⚙️ Πώς λειτουργεί η κλήση εργαλείων

Όταν ένας agent έχει πρόσβαση σε skills, το LLM δεν τα καλεί απευθείας — αυτό requests μια κλήση παράγοντας ένα δομημένο output. Το runtime (ο κώδικάς σας) εκτελεί την πραγματική κλήση και επιστρέφει το αποτέλεσμα. Να ο πλήρης κύκλος:

  1. Εγγραφή εργαλείων (Tool registration) — Ο κώδικάς σας στέλνει στο μοντέλο μια λίστα διαθέσιμων skills με τις περιγραφές και τα σχήματά τους
  2. Συλλογισμός μοντέλου (Model reasoning) — Το LLM διαβάζει το έργο και τα διαθέσιμα εργαλεία, αποφασίζει ποιο εργαλείο να καλέσει και με ποια ορίσματα
  3. Αίτημα κλήσης εργαλείου (Tool call request) — Το μοντέλο εξάγει ένα δομημένο μήνυμα "tool call" (π.χ., { "tool": "web_search", "args": { "query": "current Gemini models" } })
  4. Execution — Ο runtime κώδικάς σας καλεί την πραγματική συνάρτηση, API ή υπηρεσία
  5. Εισαγωγή αποτελεσμάτων (Result injection) — Το αποτέλεσμα προστίθεται ξανά στο πλαίσιο της συνομιλίας
  6. Συνέχιση συλλογισμού (Continued reasoning) — Το μοντέλο διαβάζει το αποτέλεσμα και είτε καλεί άλλο εργαλείο, ζητά διευκρίνιση, είτε παράγει την τελική απάντηση

Αυτός ο βρόχος μπορεί να επαναληφθεί πολλές φορές σε μία στροφή. Ένα σύνθετο agentic task μπορεί να καλέσει 10–20 εργαλεία διαδοχικά πριν παράξει μια τελική απάντηση.

📊 Skills vs Plugins vs MCP Servers

Η ορολογία εξελίχθηκε γρήγορα. Να πώς τα concepts σχετίζονται ιστορικά:

EraNameΠώς λειτουργούσεStatus
2023 ChatGPT Plugins Επεκτάσεις που εγκαθιστούν οι χρήστες με OpenAPI spec; Το ChatGPT τις καλούσε μέσω HTTP Deprecated (replaced by GPTs + tools)
2023 OpenAI Function Calling API-level JSON Schema definitions; το μοντέλο εξάγει μια δομημένη function call, ο κώδικάς σας την εκτελεί Ενεργό — μετονομάστηκε σε "tool use"
2023– Tool Use / Skills Ίδιο με την κλήση συναρτήσεων· η Anthropic επινόησε το "tool use", άλλοι χρησιμοποιούν "skills" ή "functions" Ενεργό — τρέχον πρότυπο
2024– MCP Servers Τυποποιημένο πρωτόκολλο (Anthropic, Dec 2024) για πακετάρισμα και διανομή tool servers; οποιοδήποτε MCP client μπορεί να συνδεθεί με οποιονδήποτε MCP server Ενεργό — αναπτυσσόμενο οικοσύστημα

Κυρίως διάκριση: Η παραδοσιακή χρήση εργαλείων ορίζεται inline στον κώδικα της εφαρμογής σας. Τα MCP servers είναι αυτόνομες διεργασίες που εκθέτουν εργαλεία μέσω τυποποιημένου πρωτοκόλλου — καθιστώντας τα επανχρησιμοποιήσιμα ανάμεσα σε διαφορετικούς AI clients (Claude Desktop, Cursor, VS Code, custom agents). Διαβάστε περισσότερα: Τι είναι MCP.

🗂️ Κατηγορίες Εργαλείων & Επίπεδα Κινδύνου

Δεν φέρουν όλα τα εργαλεία τον ίδιο κίνδυνο. Ομαδοποίηση κατά επίπεδο κινδύνου βοηθά στον καθορισμό του χώρος δράσης (action space) και πού να προσθέσετε σημεία ελέγχου human-in-the-loop:

CategoryExamplesRiskRecommendation
Read-only web_search, read_file, get_weather, list_dir Low Επιτρέπεται αυτονοματικά; καταγράψτε όλες τις κλήσεις
Write (local) write_file, create_dir, edit_code Medium Περιορισμός σε sandboxed φάκελο εργασίας
Network / External send_email, post_to_slack, call_api Μεσαίο–Υψηλό (Medium–High) HITL έγκριση για μη αναστρέψιμες αποστολές
OS / Shell run_command, execute_script, install_package High Περιορίστε σε containerized περιβάλλον; απαιτείται HITL
Destructive delete_file, drop_table, revoke_access Critical Πάντοτε απαιτείται ρητή ανθρώπινη επιβεβαίωση

🏗️ Ανατομία ενός καλού Skill

Η πιο σημαντική σχεδιαστική απόφαση για ένα skill είναι το description. Το LLM διαβάζει περιγραφές για να αποφασίσει ποιο εργαλείο να καλέσει — μια κακώς γραμμένη περιγραφή οδηγεί σε λάθος επιλογή εργαλείου, απούσια κλήση ή ασαφή ορίσματα.

Τι κάνει μια περιγραφή αποτελεσματική

  • Να είστε σαφείς πότε να το χρησιμοποιείτε — "Χρησιμοποιήστε αυτό το εργαλείο όταν ο χρήστης ρωτά για πραγματικά δεδομένα ή τρέχοντα γεγονότα" είναι καλύτερο από το "Searches the web"
  • Δηλώστε τι ΔΕΝ κάνει — "Δεν επιστρέφει ιστορικά δεδομένα παλαιότερα των 30 ημερών"
  • Περιγράψτε τη μορφή εξόδου — "Επιστρέφει έναν JSON πίνακα αποτελεσμάτων αναζήτησης με πεδία title, url και snippet"
  • Κρατήστε την κάτω από 200 λέξεις — περιγραφές μεγαλύτερες από ~200 tokens μπορούν να υπερφορτώσουν την προσοχή του μοντέλου όταν έχουν καταχωρηθεί πολλά εργαλεία

Αρχές σχεδιασμού σχήματος

  • Υποχρεωτικά vs προαιρετικά — Επισημάνετε πεδία ως required μόνο αν είναι πραγματικά αναγκαία; προαιρετικά πεδία με defaults μειώνουν σφάλματα του μοντέλου
  • Χρησιμοποιήστε enums για περιορισμένες τιμές"format": {"enum": ["json", "markdown", "text"]} προλαμβάνει παραληρηματικές τιμές (hallucinated values)
  • Προτιμήστε idempotent εργαλεία — Τα εργαλεία που μπορούν να επαναληφθούν με ασφάλεια (αναγνώσεις, αναζητήσεις) είναι ασφαλέστερα από ενέργειες μίας χρήσης (αποστολές, διαγραφές)
  • Επιστρέψτε δομημένα δεδομένα — Οι JSON αποκρίσεις διευκολύνουν το μοντέλο να συλλογιστεί περισσότερο από αδόμητα text blobs

💡 Πραγματικά παραδείγματα

Όνομα skillΤι κάνειΚύρια ορίσματαRisk
web_search Ερώτημα σε μηχανή αναζήτησης και επιστροφή κορυφαίων αποτελεσμάτων query: string, num_results?: number Low
read_file Ανάγνωση ενός αρχείου από τον φάκελο εργασίας path: string, offset?: number, limit?: number Low
write_file Δημιουργία ή αντικατάσταση αρχείου path: string, content: string Medium
run_tests Εκτέλεση του test suite του project και επιστροφή αποτελεσμάτων filter?: string Medium
browser_screenshot Πλοήγηση σε ένα URL και επιστροφή στιγμιότυπου οθόνης (screenshot) url: string Medium
send_email Αποστολή email σε έναν ή περισσότερους παραλήπτες to: string[], subject: string, body: string Υψηλό — πάντα HITL
run_shell Εκτέλεση οποιασδήποτε εντολής shell command: string, cwd?: string Υψηλό — απαιτείται sandbox

✅ Καλές Πρακτικές

Ελάχιστα δικαιώματα (Minimal permissions)

Παρέχετε σε κάθε agent μόνο τα εργαλεία που χρειάζεται για το συγκεκριμένο του έργο. Ένας agent που απαντά σε FAQ δεν χρειάζεται write_file or send_email. Όσο μικρότερος ο χώρος δράσης, τόσο μικρότερη η έκταση των επιπτώσεων εάν το agent χειραγωγηθεί. Βλέπε: Υπερβολική Αυτονομία.

Επιθεωρήστε όλες τις κλήσεις εργαλείων (Audit all tool calls)

Καταγράψτε κάθε κλήση εργαλείου με τα ορίσματά της και το αποτέλεσμα. Αυτό επιτρέπει debugging, κατανομή κόστους, και ανίχνευση ανωμαλιών (π.χ., ένας agent που διαβάζει ~/.ssh/ όταν θα έπρεπε να έχει πρόσβαση μόνο στον φάκελο του project). Πλατφόρμες AgentOps όπως LangSmith καθιστούν αυτό εύκολο.

Ανθρώπινη παρέμβαση για μη αναστρέψιμες ενέργειες

Οποιαδήποτε ενέργεια είναι δύσκολο ή αδύνατο να αναιρεθεί — αποστολή μηνυμάτων, διαγραφή δεδομένων, πραγματοποίηση αγορών — πρέπει να απαιτεί ρητή ανθρώπινη επιβεβαίωση πριν την εκτέλεση. Ενσωματώστε HITL σημεία ελέγχου στο runtime του agent σας, όχι μόνο στο prompt. Τα prompts μπορούν να αντικατασταθούν· ο κώδικας όχι.

Προσοχή στο tool poisoning

Εάν επιτρέπετε στους agents να εγκαθιστούν ή να ανακαλύπτουν δυναμικά MCP servers, ένας κακόβουλος server μπορεί να καταχωρήσει ένα εργαλείο με περιγραφή που περιέχει κρυφές εντολές. Πάντα ελέγχετε τις περιγραφές εργαλείων πριν τις προσθέσετε στο registry του agent σας. Βλέπε: Tool Poisoning.

Γράψτε σαφείς επιστροφές σφαλμάτων

Όταν ένα εργαλείο αποτυγχάνει, επιστρέψτε ένα δομημένο σφάλμα με αρκετό context για να ανακάμψει ή να κλιμακώσει το μοντέλο — όχι ένα ωμό exception stack trace. Παράδειγμα: { "error": "rate_limited", "retry_after": 5 }. Ένα καλά περιγραφόμενο σφάλμα επιτρέπει στον agent να επανεκκινήσει, να χρησιμοποιήσει εναλλακτικό εργαλείο, ή να ενημερώσει τον χρήστη με χάρη.