diff --git a/translations/el/00-course-setup/README.md b/translations/el/00-course-setup/README.md index e2eed34a00..c64fb7fbbc 100644 --- a/translations/el/00-course-setup/README.md +++ b/translations/el/00-course-setup/README.md @@ -1,238 +1,234 @@ - -# Ξεκινώντας με αυτό το μάθημα - -Είμαστε πολύ ενθουσιασμένοι που ξεκινάς αυτό το μάθημα και ανυπομονούμε να δούμε τι θα σε εμπνεύσει να δημιουργήσεις με τη Γενετική Τεχνητή Νοημοσύνη! - -Για να εξασφαλίσουμε την επιτυχία σου, αυτή η σελίδα περιγράφει τα βήματα εγκατάστασης, τις τεχνικές απαιτήσεις και πού μπορείς να βρεις βοήθεια αν χρειαστεί. - -## Βήματα Εγκατάστασης - -Για να ξεκινήσεις το μάθημα, θα χρειαστεί να ολοκληρώσεις τα παρακάτω βήματα. - -### 1. Κάνε Fork το Repo - -[Κάνε fork σε αυτό το repo](https://github.com/microsoft/generative-ai-for-beginners/fork?WT.mc_id=academic-105485-koreyst) στον δικό σου λογαριασμό στο GitHub ώστε να μπορείς να αλλάξεις τον κώδικα και να ολοκληρώσεις τις προκλήσεις. Μπορείς επίσης να [βάλεις αστέρι (🌟) στο repo](https://docs.github.com/en/get-started/exploring-projects-on-github/saving-repositories-with-stars?WT.mc_id=academic-105485-koreyst) για να το βρίσκεις πιο εύκολα μαζί με σχετικά repos. - -### 2. Δημιούργησε ένα codespace - -Για να αποφύγεις προβλήματα με εξαρτήσεις όταν τρέχεις τον κώδικα, προτείνουμε να δουλέψεις το μάθημα σε ένα [GitHub Codespaces](https://github.com/features/codespaces?WT.mc_id=academic-105485-koreyst). - -Στο fork σου: **Code -> Codespaces -> New on main** - -![Διάλογος με κουμπιά για δημιουργία codespace](../../../00-course-setup/images/who-will-pay.webp) - -#### 2.1 Πρόσθεσε ένα secret - -1. ⚙️ Εικονίδιο γραναζιού -> Command Pallete-> Codespaces : Manage user secret -> Add a new secret. -2. Όνομα OPENAI_API_KEY, επικόλλησε το κλειδί σου, Αποθήκευση. - -### 3. Τι ακολουθεί; - -| Θέλω να… | Πήγαινε σε… | -|---------------------|-------------------------------------------------------------------------| -| Ξεκινήσω το Μάθημα 1| [`01-introduction-to-genai`](../01-introduction-to-genai/README.md) | -| Δουλέψω offline | [`setup-local.md`](02-setup-local.md) | -| Ρυθμίσω LLM Provider| [`providers.md`](providers.md) | -| Γνωρίσω άλλους μαθητές| [Join our Discord](https://aka.ms/genai-discord?WT.mc_id=academic-105485-koreyst) | - -## Επίλυση Προβλημάτων - -| Σύμπτωμα | Λύση | -|------------------------------------------|-----------------------------------------------------------------| -| Το build του container κολλάει > 10 λεπτά| **Codespaces ➜ “Rebuild Container”** | -| `python: command not found` | Το Terminal δεν συνδέθηκε· κάνε κλικ στο **+** ➜ *bash* | -| `401 Unauthorized` από OpenAI | Λάθος / ληγμένο `OPENAI_API_KEY` | -| VS Code δείχνει “Dev container mounting…”| Κάνε ανανέωση στο tab του browser—μερικές φορές χάνεται η σύνδεση| -| Λείπει το kernel στο Notebook | Μενού Notebook ➜ **Kernel ▸ Select Kernel ▸ Python 3** | - - Συστήματα Unix: - - ```bash - touch .env - ``` - - Windows: - - ```cmd - echo . > .env - ``` - -3. **Επεξεργασία του αρχείου `.env`**: Άνοιξε το αρχείο `.env` σε έναν text editor (π.χ. VS Code, Notepad++, ή όποιον άλλο editor). Πρόσθεσε την παρακάτω γραμμή, αντικαθιστώντας το `your_github_token_here` με το πραγματικό σου GitHub token: - - ```env - GITHUB_TOKEN=your_github_token_here - ``` - -4. **Αποθήκευσε το αρχείο**: Αποθήκευσε τις αλλαγές και κλείσε τον editor. - -5. **Εγκατάσταση του `python-dotenv`**: Αν δεν το έχεις ήδη, θα χρειαστεί να εγκαταστήσεις το πακέτο `python-dotenv` για να φορτώσεις τις μεταβλητές περιβάλλοντος από το `.env` αρχείο στην Python εφαρμογή σου. Μπορείς να το εγκαταστήσεις με `pip`: - - ```bash - pip install python-dotenv - ``` - -6. **Φόρτωσε τις μεταβλητές περιβάλλοντος στο Python script σου**: Στο Python script σου, χρησιμοποίησε το πακέτο `python-dotenv` για να φορτώσεις τις μεταβλητές από το `.env` αρχείο: - - ```python - from dotenv import load_dotenv - import os - - # Load environment variables from .env file - load_dotenv() - - # Access the GITHUB_TOKEN variable - github_token = os.getenv("GITHUB_TOKEN") - - print(github_token) - ``` - -Αυτό ήταν! Δημιούργησες με επιτυχία το αρχείο `.env`, πρόσθεσες το GitHub token σου και το φόρτωσες στην Python εφαρμογή σου. - -## Πώς να τρέξεις τοπικά στον υπολογιστή σου - -Για να τρέξεις τον κώδικα τοπικά στον υπολογιστή σου, θα χρειαστεί να έχεις κάποια έκδοση του [Python εγκατεστημένη](https://www.python.org/downloads/?WT.mc_id=academic-105485-koreyst). - -Για να χρησιμοποιήσεις το repository, πρέπει να το κάνεις clone: - -```shell -git clone https://github.com/microsoft/generative-ai-for-beginners -cd generative-ai-for-beginners -``` - -Μόλις έχεις όλα έτοιμα, μπορείς να ξεκινήσεις! - -## Προαιρετικά Βήματα - -### Εγκατάσταση Miniconda - -Το [Miniconda](https://conda.io/en/latest/miniconda.html?WT.mc_id=academic-105485-koreyst) είναι ένας ελαφρύς installer για την εγκατάσταση του [Conda](https://docs.conda.io/en/latest?WT.mc_id=academic-105485-koreyst), της Python, και μερικών πακέτων. -Το Conda είναι ένας διαχειριστής πακέτων που διευκολύνει τη δημιουργία και εναλλαγή μεταξύ διαφορετικών [**εικονικών περιβαλλόντων**](https://docs.python.org/3/tutorial/venv.html?WT.mc_id=academic-105485-koreyst) και πακέτων. Είναι επίσης χρήσιμο για την εγκατάσταση πακέτων που δεν υπάρχουν μέσω του `pip`. - -Μπορείς να ακολουθήσεις τον [οδηγό εγκατάστασης του MiniConda](https://docs.anaconda.com/free/miniconda/#quick-command-line-install?WT.mc_id=academic-105485-koreyst) για να το ρυθμίσεις. - -Αφού εγκαταστήσεις το Miniconda, πρέπει να κάνεις clone το [repository](https://github.com/microsoft/generative-ai-for-beginners/fork?WT.mc_id=academic-105485-koreyst) (αν δεν το έχεις ήδη). - -Στη συνέχεια, πρέπει να δημιουργήσεις ένα εικονικό περιβάλλον. Για να το κάνεις με το Conda, δημιούργησε ένα νέο αρχείο περιβάλλοντος (_environment.yml_). Αν δουλεύεις με Codespaces, δημιούργησέ το μέσα στον φάκελο `.devcontainer`, δηλαδή `.devcontainer/environment.yml`. - -Γέμισε το αρχείο περιβάλλοντος με το παρακάτω snippet: - -```yml -name: -channels: - - defaults - - microsoft -dependencies: - - python= - - openai - - python-dotenv - - pip - - pip: - - azure-ai-ml -``` - -Αν συναντήσεις σφάλματα με το conda, μπορείς να εγκαταστήσεις χειροκίνητα τις Microsoft AI Libraries με την παρακάτω εντολή στο terminal. - -``` -conda install -c microsoft azure-ai-ml -``` - -Το αρχείο περιβάλλοντος ορίζει τις εξαρτήσεις που χρειαζόμαστε. Το `` είναι το όνομα που θέλεις να δώσεις στο Conda περιβάλλον σου, και το `` είναι η έκδοση της Python που θέλεις να χρησιμοποιήσεις, π.χ. `3` είναι η τελευταία κύρια έκδοση. - -Αφού το κάνεις αυτό, μπορείς να δημιουργήσεις το Conda περιβάλλον σου τρέχοντας τις παρακάτω εντολές στο command line/terminal - -```bash -conda env create --name ai4beg --file .devcontainer/environment.yml # .devcontainer sub path applies to only Codespace setups -conda activate ai4beg -``` - -Ανατρέξτε στον [οδηγό για περιβάλλοντα Conda](https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html?WT.mc_id=academic-105485-koreyst) αν αντιμετωπίσεις προβλήματα. - -### Χρήση του Visual Studio Code με την επέκταση Python - -Προτείνουμε να χρησιμοποιήσεις τον editor [Visual Studio Code (VS Code)](https://code.visualstudio.com/?WT.mc_id=academic-105485-koreyst) με την [επέκταση Python](https://marketplace.visualstudio.com/items?itemName=ms-python.python&WT.mc_id=academic-105485-koreyst) εγκατεστημένη για αυτό το μάθημα. Αυτό είναι απλώς μια σύσταση και όχι απαίτηση. - -> **Note**: Ανοίγοντας το repository του μαθήματος στο VS Code, έχεις τη δυνατότητα να ρυθμίσεις το project μέσα σε container. Αυτό γίνεται λόγω του [ειδικού φακέλου `.devcontainer`](https://code.visualstudio.com/docs/devcontainers/containers?itemName=ms-python.python&WT.mc_id=academic-105485-koreyst) που υπάρχει στο repository. Περισσότερα γι’ αυτό αργότερα. - -> **Note**: Μόλις κάνεις clone και ανοίξεις τον φάκελο στο VS Code, θα σου προτείνει αυτόματα να εγκαταστήσεις την επέκταση Python. - -> **Note**: Αν το VS Code σου προτείνει να ξανανοίξεις το repository σε container, αρνήσου για να χρησιμοποιήσεις την τοπικά εγκατεστημένη έκδοση της Python. - -### Χρήση του Jupyter στον Browser - -Μπορείς επίσης να δουλέψεις το project χρησιμοποιώντας το [περιβάλλον Jupyter](https://jupyter.org?WT.mc_id=academic-105485-koreyst) απευθείας στον browser σου. Τόσο το κλασικό Jupyter όσο και το [Jupyter Hub](https://jupyter.org/hub?WT.mc_id=academic-105485-koreyst) προσφέρουν ένα ευχάριστο περιβάλλον ανάπτυξης με δυνατότητες όπως αυτόματη συμπλήρωση, επισήμανση κώδικα κ.ά. - -Για να ξεκινήσεις το Jupyter τοπικά, άνοιξε το terminal/command line, πήγαινε στον φάκελο του μαθήματος και εκτέλεσε: - -```bash -jupyter notebook -``` - -ή - -```bash -jupyterhub -``` - -Αυτό θα ξεκινήσει μια Jupyter instance και το URL για πρόσβαση θα εμφανιστεί στο παράθυρο της γραμμής εντολών. - -Μόλις μπεις στο URL, θα δεις τη δομή του μαθήματος και θα μπορείς να πλοηγηθείς σε οποιοδήποτε αρχείο `*.ipynb`. Για παράδειγμα, `08-building-search-applications/python/oai-solution.ipynb`. - -### Τρέξιμο σε container - -Μια εναλλακτική στο να ρυθμίσεις τα πάντα στον υπολογιστή σου ή στο Codespace είναι να χρησιμοποιήσεις ένα [container](../../../00-course-setup/). Ο ειδικός φάκελος `.devcontainer` στο repository του μαθήματος επιτρέπει στο VS Code να ρυθμίσει το project μέσα σε container. Εκτός Codespaces, αυτό απαιτεί εγκατάσταση του Docker και είναι λίγο πιο περίπλοκο, οπότε το προτείνουμε μόνο σε όσους έχουν εμπειρία με containers. - -Ένας από τους καλύτερους τρόπους να κρατήσεις ασφαλή τα API keys σου όταν χρησιμοποιείς GitHub Codespaces είναι μέσω των Codespace Secrets. Ακολούθησε τον [οδηγό διαχείρισης secrets στο Codespaces](https://docs.github.com/en/codespaces/managing-your-codespaces/managing-secrets-for-your-codespaces?WT.mc_id=academic-105485-koreyst) για να μάθεις περισσότερα. - -## Μαθήματα και Τεχνικές Απαιτήσεις - -Το μάθημα περιλαμβάνει 6 θεωρητικά μαθήματα και 6 μαθήματα με κώδικα. - -Για τα μαθήματα με κώδικα, χρησιμοποιούμε το Azure OpenAI Service. Θα χρειαστείς πρόσβαση στην υπηρεσία Azure OpenAI και ένα API key για να τρέξεις τον κώδικα. Μπορείς να κάνεις αίτηση για πρόσβαση [συμπληρώνοντας αυτή την αίτηση](https://azure.microsoft.com/products/ai-services/openai-service?WT.mc_id=academic-105485-koreyst). - -Όσο περιμένεις να εγκριθεί η αίτησή σου, κάθε μάθημα με κώδικα περιλαμβάνει και ένα αρχείο `README.md` όπου μπορείς να δεις τον κώδικα και τα αποτελέσματα. - -## Πρώτη φορά με το Azure OpenAI Service - -Αν είναι η πρώτη φορά που δουλεύεις με το Azure OpenAI service, ακολούθησε αυτόν τον οδηγό για το πώς να [δημιουργήσεις και να αναπτύξεις ένα Azure OpenAI Service resource.](https://learn.microsoft.com/azure/ai-services/openai/how-to/create-resource?pivots=web-portal&WT.mc_id=academic-105485-koreyst) - -## Πρώτη φορά με το OpenAI API - -Αν είναι η πρώτη φορά που δουλεύεις με το OpenAI API, ακολούθησε τον οδηγό για το πώς να [δημιουργήσεις και να χρησιμοποιήσεις το Interface.](https://platform.openai.com/docs/quickstart?context=pythont&WT.mc_id=academic-105485-koreyst) - -## Γνώρισε άλλους μαθητές - -Έχουμε δημιουργήσει κανάλια στον επίσημο [AI Community Discord server](https://aka.ms/genai-discord?WT.mc_id=academic-105485-koreyst) για να γνωρίσεις άλλους μαθητές. Είναι ένας εξαιρετικός τρόπος να δικτυωθείς με άλλους επιχειρηματίες, δημιουργούς, φοιτητές και όσους θέλουν να εξελιχθούν στη Γενετική Τεχνητή Νοημοσύνη. - -[![Join discord channel](https://dcbadge.limes.pink/api/server/ByRwuEEgH4)](https://aka.ms/genai-discord?WT.mc_id=academic-105485-koreyst) - -Η ομάδα του project θα είναι επίσης σε αυτόν τον Discord server για να βοηθήσει τους μαθητές. - -## Συνεισφορά - -Αυτό το μάθημα είναι μια πρωτοβουλία ανοιχτού κώδικα. Αν δεις σημεία για βελτίωση ή προβλήματα, δημιούργησε ένα [Pull Request](https://github.com/microsoft/generative-ai-for-beginners/pulls?WT.mc_id=academic-105485-koreyst) ή ανέφερε ένα [GitHub issue](https://github.com/microsoft/generative-ai-for-beginners/issues?WT.mc_id=academic-105485-koreyst). - -Η ομάδα του project θα παρακολουθεί όλες τις συνεισφορές. Η συνεισφορά σε ανοιχτό κώδικα είναι ένας εξαιρετικός τρόπος να χτίσεις την καριέρα σου στη Γενετική Τεχνητή Νοημοσύνη. - -Οι περισσότερες συνεισφορές απαιτούν να συμφωνήσεις με μια Συμφωνία Άδειας Συνεισφέροντα (CLA), δηλώνοντας ότι έχεις το δικαίωμα και πράγματι μας παραχωρείς τα δικαιώματα να χρησιμοποιήσουμε τη συνεισφορά σου. Για λεπτομέρειες, επισκέψου το [site της CLA, Contributor License Agreement](https://cla.microsoft.com?WT.mc_id=academic-105485-koreyst). - -Σημαντικό: όταν μεταφράζεις κείμενο σε αυτό το repo, βεβαιώσου ότι δεν χρησιμοποιείς αυτόματη μετάφραση. Θα ελέγξουμε τις μεταφράσεις μέσω της κοινότητας, οπότε παρακαλούμε να προσφέρεις εθελοντικά μόνο για γλώσσες στις οποίες είσαι άνετος. - -Όταν υποβάλλεις pull request, ένα CLA-bot θα ελέγξει αυτόματα αν χρειάζεται να παρέχεις CLA και θα διακοσμήσει το PR κατάλληλα (π.χ. label, σχόλιο). Απλώς ακολούθησε τις οδηγίες του bot. Θα χρειαστεί να το κάνεις μόνο μία φορά για όλα τα repos που χρησιμοποιούν το CLA μας. - -Αυτό το project ακολουθεί τον [Κώδικα Δεοντολογίας Microsoft Open Source](https://opensource.microsoft.com/codeofconduct/?WT.mc_id=academic-105485-koreyst). Για περισσότερες πληροφορίες διάβασε το FAQ του Κώδικα Δεοντολογίας ή επικοινώνησε με [Email opencode](opencode@microsoft.com) για επιπλέον ερωτήσεις ή σχόλια. - -## Ξεκινάμε! -Τώρα που ολοκληρώσατε τα απαραίτητα βήματα για να τελειώσετε αυτό το μάθημα, ας ξεκινήσουμε με μια [εισαγωγή στη Γενετική Τεχνητή Νοημοσύνη και τα LLMs](../01-introduction-to-genai/README.md?WT.mc_id=academic-105485-koreyst). - ---- - -**Αποποίηση Ευθύνης**: -Αυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία αυτόματης μετάφρασης AI [Co-op Translator](https://github.com/Azure/co-op-translator). Παρότι καταβάλλουμε προσπάθειες για ακρίβεια, παρακαλούμε να γνωρίζετε ότι οι αυτόματες μεταφράσεις ενδέχεται να περιέχουν σφάλματα ή ανακρίβειες. Το πρωτότυπο έγγραφο στη μητρική του γλώσσα πρέπει να θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε ευθύνη για τυχόν παρανοήσεις ή εσφαλμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης. \ No newline at end of file + +# Ξεκινώντας με αυτό το μάθημα + +Είμαστε πολύ ενθουσιασμένοι που ξεκινάτε αυτό το μάθημα και ανυπομονούμε να δούμε τι θα εμπνευστείτε να δημιουργήσετε με τη Γενετική Τεχνητή Νοημοσύνη! + +Για να εξασφαλίσουμε την επιτυχία σας, αυτή η σελίδα περιγράφει τα βήματα εγκατάστασης, τις τεχνικές απαιτήσεις και πού να βρείτε βοήθεια αν χρειαστεί. + +## Βήματα Εγκατάστασης + +Για να ξεκινήσετε αυτό το μάθημα, θα χρειαστεί να ολοκληρώσετε τα παρακάτω βήματα. + +### 1. Κλωνοποίηση αυτού του Αποθετηρίου + +[Κλωνοποιήστε ολόκληρο το αποθετήριο](https://github.com/microsoft/generative-ai-for-beginners/fork?WT.mc_id=academic-105485-koreyst) στον δικό σας λογαριασμό GitHub για να μπορείτε να αλλάξετε οποιονδήποτε κώδικα και να ολοκληρώσετε τις προκλήσεις. Μπορείτε επίσης να [προσθέσετε αστέρι (🌟) σε αυτό το αποθετήριο](https://docs.github.com/en/get-started/exploring-projects-on-github/saving-repositories-with-stars?WT.mc_id=academic-105485-koreyst) για να το βρίσκετε πιο εύκολα, καθώς και σχετικά αποθετήρια. + +### 2. Δημιουργία ενός Codespace + +Για να αποφύγετε προβλήματα εξαρτήσεων κατά την εκτέλεση του κώδικα, συνιστούμε να εκτελέσετε αυτό το μάθημα σε ένα [GitHub Codespaces](https://github.com/features/codespaces?WT.mc_id=academic-105485-koreyst). + +Στο κλωνοποιημένο αποθετήριο σας: **Code -> Codespaces -> New on main** + +![Διάλογος που δείχνει κουμπιά για τη δημιουργία ενός codespace](../../../00-course-setup/images/who-will-pay.webp) + +#### 2.1 Προσθήκη ενός μυστικού + +1. ⚙️ Εικονίδιο γραναζιού -> Command Pallete -> Codespaces : Manage user secret -> Add a new secret. +2. Όνομα OPENAI_API_KEY, επικολλήστε το κλειδί σας, Αποθήκευση. + +### 3. Τι ακολουθεί; + +| Θέλω να… | Πήγαινε στο… | +|---------------------|-------------------------------------------------------------------------| +| Ξεκινήστε το Μάθημα 1 | [`01-introduction-to-genai`](../01-introduction-to-genai/README.md) | +| Εργαστείτε εκτός σύνδεσης | [`setup-local.md`](02-setup-local.md) | +| Ρυθμίστε έναν Πάροχο LLM | [`providers.md`](03-providers.md) | +| Γνωρίστε άλλους μαθητές | [Γίνετε μέλος στο Discord μας](https://aka.ms/genai-discord?WT.mc_id=academic-105485-koreyst) | + +## Επίλυση Προβλημάτων + +| Σύμπτωμα | Λύση | +|-------------------------------------------|-----------------------------------------------------------------| +| Η κατασκευή του container κολλάει > 10 λεπτά | **Codespaces ➜ “Rebuild Container”** | +| `python: command not found` | Το τερματικό δεν συνδέθηκε· κάντε κλικ **+** ➜ *bash* | +| `401 Unauthorized` από OpenAI | Λάθος / ληγμένο `OPENAI_API_KEY` | +| Το VS Code δείχνει “Dev container mounting…” | Ανανεώστε την καρτέλα του προγράμματος περιήγησης—μερικές φορές το Codespaces χάνει τη σύνδεση | +| Λείπει ο πυρήνας του Notebook | Μενού Notebook ➜ **Kernel ▸ Select Kernel ▸ Python 3** | + + Συστήματα βασισμένα σε Unix: + + ```bash + touch .env + ``` + + Windows: + + ```cmd + echo . > .env + ``` + +3. **Επεξεργαστείτε το αρχείο `.env`**: Ανοίξτε το αρχείο `.env` σε έναν επεξεργαστή κειμένου (π.χ., VS Code, Notepad++ ή οποιονδήποτε άλλο επεξεργαστή). Προσθέστε την παρακάτω γραμμή στο αρχείο, αντικαθιστώντας το `your_github_token_here` με το πραγματικό σας GitHub token: + + ```env + GITHUB_TOKEN=your_github_token_here + ``` + +4. **Αποθηκεύστε το Αρχείο**: Αποθηκεύστε τις αλλαγές και κλείστε τον επεξεργαστή κειμένου. + +5. **Εγκαταστήστε το `python-dotenv`**: Αν δεν το έχετε ήδη, θα χρειαστεί να εγκαταστήσετε το πακέτο `python-dotenv` για να φορτώσετε μεταβλητές περιβάλλοντος από το αρχείο `.env` στην εφαρμογή Python σας. Μπορείτε να το εγκαταστήσετε χρησιμοποιώντας `pip`: + + ```bash + pip install python-dotenv + ``` + +6. **Φορτώστε Μεταβλητές Περιβάλλοντος στο Python Script σας**: Στο Python script σας, χρησιμοποιήστε το πακέτο `python-dotenv` για να φορτώσετε τις μεταβλητές περιβάλλοντος από το αρχείο `.env`: + + ```python + from dotenv import load_dotenv + import os + + # Load environment variables from .env file + load_dotenv() + + # Access the GITHUB_TOKEN variable + github_token = os.getenv("GITHUB_TOKEN") + + print(github_token) + ``` + +Αυτό είναι! Έχετε δημιουργήσει επιτυχώς ένα αρχείο `.env`, προσθέσατε το GitHub token σας και το φορτώσατε στην εφαρμογή Python σας. + +## Πώς να Εκτελέσετε τοπικά στον υπολογιστή σας + +Για να εκτελέσετε τον κώδικα τοπικά στον υπολογιστή σας, θα χρειαστεί να έχετε κάποια έκδοση του [Python εγκατεστημένη](https://www.python.org/downloads/?WT.mc_id=academic-105485-koreyst). + +Στη συνέχεια, για να χρησιμοποιήσετε το αποθετήριο, πρέπει να το κλωνοποιήσετε: + +```shell +git clone https://github.com/microsoft/generative-ai-for-beginners +cd generative-ai-for-beginners +``` + +Μόλις έχετε όλα τα αρχεία, μπορείτε να ξεκινήσετε! + +## Προαιρετικά Βήματα + +### Εγκατάσταση Miniconda + +[Miniconda](https://conda.io/en/latest/miniconda.html?WT.mc_id=academic-105485-koreyst) είναι ένας ελαφρύς εγκαταστάτης για την εγκατάσταση του [Conda](https://docs.conda.io/en/latest?WT.mc_id=academic-105485-koreyst), του Python, καθώς και μερικών πακέτων. +Το Conda είναι ένας διαχειριστής πακέτων που διευκολύνει τη ρύθμιση και την εναλλαγή μεταξύ διαφορετικών [**εικονικών περιβαλλόντων**](https://docs.python.org/3/tutorial/venv.html?WT.mc_id=academic-105485-koreyst) Python και πακέτων. Είναι επίσης χρήσιμο για την εγκατάσταση πακέτων που δεν είναι διαθέσιμα μέσω `pip`. + +Μπορείτε να ακολουθήσετε τον [οδηγό εγκατάστασης MiniConda](https://docs.anaconda.com/free/miniconda/#quick-command-line-install?WT.mc_id=academic-105485-koreyst) για να το ρυθμίσετε. + +Με το Miniconda εγκατεστημένο, πρέπει να κλωνοποιήσετε το [αποθετήριο](https://github.com/microsoft/generative-ai-for-beginners/fork?WT.mc_id=academic-105485-koreyst) (αν δεν το έχετε ήδη κάνει). + +Στη συνέχεια, πρέπει να δημιουργήσετε ένα εικονικό περιβάλλον. Για να το κάνετε αυτό με το Conda, δημιουργήστε ένα νέο αρχείο περιβάλλοντος (_environment.yml_). Αν ακολουθείτε μέσω Codespaces, δημιουργήστε το μέσα στον φάκελο `.devcontainer`, δηλαδή `.devcontainer/environment.yml`. + +Προσθέστε το παρακάτω απόσπασμα στο αρχείο περιβάλλοντος σας: + +```yml +name: +channels: + - defaults + - microsoft +dependencies: + - python= + - openai + - python-dotenv + - pip + - pip: + - azure-ai-ml +``` + +Αν αντιμετωπίσετε σφάλματα χρησιμοποιώντας το conda, μπορείτε να εγκαταστήσετε χειροκίνητα τις Βιβλιοθήκες AI της Microsoft χρησιμοποιώντας την παρακάτω εντολή σε ένα τερματικό. + +``` +conda install -c microsoft azure-ai-ml +``` + +Το αρχείο περιβάλλοντος καθορίζει τις εξαρτήσεις που χρειαζόμαστε. Το `` αναφέρεται στο όνομα που θέλετε να χρησιμοποιήσετε για το περιβάλλον Conda σας, και το `` είναι η έκδοση του Python που θέλετε να χρησιμοποιήσετε, για παράδειγμα, `3` είναι η τελευταία κύρια έκδοση του Python. + +Με αυτό ολοκληρωμένο, μπορείτε να δημιουργήσετε το περιβάλλον Conda σας εκτελώντας τις παρακάτω εντολές στη γραμμή εντολών/τερματικό σας: + +```bash +conda env create --name ai4beg --file .devcontainer/environment.yml # .devcontainer sub path applies to only Codespace setups +conda activate ai4beg +``` + +Ανατρέξτε στον [οδηγό περιβαλλόντων Conda](https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html?WT.mc_id=academic-105485-koreyst) αν αντιμετωπίσετε προβλήματα. + +### Χρήση του Visual Studio Code με την επέκταση υποστήριξης Python + +Συνιστούμε τη χρήση του [Visual Studio Code (VS Code)](https://code.visualstudio.com/?WT.mc_id=academic-105485-koreyst) με την [επέκταση υποστήριξης Python](https://marketplace.visualstudio.com/items?itemName=ms-python.python&WT.mc_id=academic-105485-koreyst) εγκατεστημένη για αυτό το μάθημα. Ωστόσο, αυτό είναι περισσότερο μια σύσταση και όχι απαραίτητη προϋπόθεση. + +> **Σημείωση**: Ανοίγοντας το αποθετήριο του μαθήματος στο VS Code, έχετε την επιλογή να ρυθμίσετε το έργο μέσα σε ένα container. Αυτό οφείλεται στον [ειδικό φάκελο `.devcontainer`](https://code.visualstudio.com/docs/devcontainers/containers?itemName=ms-python.python&WT.mc_id=academic-105485-koreyst) που βρίσκεται μέσα στο αποθετήριο του μαθήματος. Περισσότερα για αυτό αργότερα. + +> **Σημείωση**: Μόλις κλωνοποιήσετε και ανοίξετε τον φάκελο στο VS Code, θα σας προτείνει να εγκαταστήσετε μια επέκταση υποστήριξης Python. + +> **Σημείωση**: Αν το VS Code σας προτείνει να ανοίξετε ξανά το αποθετήριο σε ένα container, απορρίψτε αυτή την πρόταση για να χρησιμοποιήσετε την τοπικά εγκατεστημένη έκδοση του Python. + +### Χρήση του Jupyter στο Πρόγραμμα Περιήγησης + +Μπορείτε επίσης να εργαστείτε στο έργο χρησιμοποιώντας το [περιβάλλον Jupyter](https://jupyter.org?WT.mc_id=academic-105485-koreyst) απευθείας μέσα από το πρόγραμμα περιήγησής σας. Τόσο το κλασικό Jupyter όσο και το [Jupyter Hub](https://jupyter.org/hub?WT.mc_id=academic-105485-koreyst) παρέχουν ένα ευχάριστο περιβάλλον ανάπτυξης με χαρακτηριστικά όπως αυτόματη συμπλήρωση, επισήμανση κώδικα, κ.λπ. + +Για να ξεκινήσετε το Jupyter τοπικά, ανοίξτε το τερματικό/γραμμή εντολών, μεταβείτε στον φάκελο του μαθήματος και εκτελέστε: + +```bash +jupyter notebook +``` + +ή + +```bash +jupyterhub +``` + +Αυτό θα ξεκινήσει μια παρουσία του Jupyter και η διεύθυνση URL για πρόσβαση θα εμφανιστεί στο παράθυρο της γραμμής εντολών. + +Μόλις αποκτήσετε πρόσβαση στη διεύθυνση URL, θα πρέπει να δείτε τη δομή του μαθήματος και να μπορείτε να πλοηγηθείτε σε οποιοδήποτε αρχείο `*.ipynb`. Για παράδειγμα, `08-building-search-applications/python/oai-solution.ipynb`. + +### Εκτέλεση σε container + +Μια εναλλακτική λύση για τη ρύθμιση όλων στον υπολογιστή σας ή στο Codespace είναι η χρήση ενός [container](../../../00-course-setup/). Ο ειδικός φάκελος `.devcontainer` μέσα στο αποθετήριο του μαθήματος καθιστά δυνατή τη ρύθμιση του έργου μέσα σε ένα container μέσω του VS Code. Εκτός από το Codespaces, αυτό θα απαιτήσει την εγκατάσταση του Docker, και ειλικρινά, περιλαμβάνει αρκετή δουλειά, οπότε το συνιστούμε μόνο σε όσους έχουν εμπειρία με containers. + +Ένας από τους καλύτερους τρόπους για να διατηρήσετε ασφαλή τα API keys σας όταν χρησιμοποιείτε το GitHub Codespaces είναι μέσω της χρήσης των Secrets του Codespace. Ακολουθήστε τον [οδηγό διαχείρισης μυστικών του Codespaces](https://docs.github.com/en/codespaces/managing-your-codespaces/managing-secrets-for-your-codespaces?WT.mc_id=academic-105485-koreyst) για να μάθετε περισσότερα. + +## Μαθήματα και Τεχνικές Απαιτήσεις + +Το μάθημα περιλαμβάνει 6 μαθήματα εννοιών και 6 μαθήματα κώδικα. + +Για τα μαθήματα κώδικα, χρησιμοποιούμε την Υπηρεσία Azure OpenAI. Θα χρειαστείτε πρόσβαση στην υπηρεσία Azure OpenAI και ένα API key για να εκτελέσετε αυτόν τον κώδικα. Μπορείτε να κάνετε αίτηση για πρόσβαση [συμπληρώνοντας αυτή την αίτηση](https://azure.microsoft.com/products/ai-services/openai-service?WT.mc_id=academic-105485-koreyst). + +Ενώ περιμένετε να επεξεργαστεί η αίτησή σας, κάθε μάθημα κώδικα περιλαμβάνει επίσης ένα αρχείο `README.md` όπου μπορείτε να δείτε τον κώδικα και τα αποτελέσματα. + +## Χρήση της Υπηρεσίας Azure OpenAI για πρώτη φορά + +Αν είναι η πρώτη σας φορά που εργάζεστε με την υπηρεσία Azure OpenAI, παρακαλούμε ακολουθήστε αυτόν τον οδηγό για το πώς να [δημιουργήσετε και να αναπτύξετε έναν πόρο της Υπηρεσίας Azure OpenAI.](https://learn.microsoft.com/azure/ai-services/openai/how-to/create-resource?pivots=web-portal&WT.mc_id=academic-105485-koreyst) + +## Χρήση του OpenAI API για πρώτη φορά + +Αν είναι η πρώτη σας φορά που εργάζεστε με το OpenAI API, παρακαλούμε ακολουθήστε τον οδηγό για το πώς να [δημιουργήσετε και να χρησιμοποιήσετε τη διεπαφή.](https://platform.openai.com/docs/quickstart?context=pythont&WT.mc_id=academic-105485-koreyst) + +## Γνωρίστε Άλλους Μαθητές + +Έχουμε δημιουργήσει κανάλια στον επίσημο [Discord server της AI Κοινότητας](https://aka.ms/genai-discord?WT.mc_id=academic-105485-koreyst) για να γνωρίσετε άλλους μαθητές. Είναι ένας εξαιρετικός τρόπος να δικτυωθείτε με άλλους επιχειρηματίες, δημιουργούς, φοιτητές και οποιονδήποτε θέλει να εξελιχθεί στη Γενετική Τεχνητή Νοημοσύνη. + +[![Γίνετε μέλος στο κανάλι Discord](https://dcbadge.limes.pink/api/server/ByRwuEEgH4)](https://aka.ms/genai-discord?WT.mc_id=academic-105485-koreyst) + +Η ομάδα του έργου θα βρίσκεται επίσης σε αυτόν τον Discord server για να βοηθήσει οποιονδήποτε μαθητή. + +## Συνεισφορά + +Αυτό το μάθημα είναι μια πρωτοβουλία ανοιχτού κώδικα. Αν δείτε περιοχές για βελτίωση ή προβλήματα, παρακαλούμε δημιουργήστε ένα [Pull Request](https://github.com/microsoft/generative-ai-for-beginners/pulls?WT.mc_id=academic-105485-koreyst) ή καταγράψτε ένα [GitHub issue](https://github.com/microsoft/generative-ai-for-beginners/issues?WT.mc_id=academic-105485-koreyst). + +Η ομάδα του έργου θα παρακολουθεί όλες τις συνεισφορές. Η συνεισφορά σε ανοιχτό κώδικα είναι ένας καταπληκτικός τρόπος να χτίσετε την καριέρα σας στη Γενετική Τεχνητή Νοημοσύνη. + +Οι περισσότερες συνεισφορές απαιτούν να συμφωνήσετε με μια Συμφωνία Άδειας Χρήσης Συνεισφέροντος (CLA) δηλώνοντας ότι έχετε το δικαίωμα και πραγματικά παραχωρείτε σε εμάς τα δικαιώματα να χρησιμοποιήσουμε τη συνεισφορά σας. Για λεπτομέρειες, επισκεφθείτε τον [ιστότοπο CLA, Συμφωνία Άδειας Χρήσης Συνεισφέροντος](https://cla.microsoft.com?WT.mc_id=academic-105485-koreyst). + +Σημαντικό: όταν μεταφράζετε κείμενο σε αυτό το αποθετήριο, παρακαλούμε βεβαιωθείτε ότι δεν χρησιμοποιείτε μηχανική μετάφραση. Θα επαληθεύσουμε τις μεταφράσεις μέσω της κοινότητας, οπότε παρακαλούμε να προσφέρετε μεταφράσεις μόνο σε γλώσσες στις οποίες είστε επαρκείς. + +Όταν υποβάλετε ένα pull request, ένα CLA-bot θα καθορίσει αυτόματα αν χρειάζεται να παρέχετε CLA και θα διακοσμήσει το PR κατάλληλα (π.χ., ετικέτα, +Τώρα που έχετε ολοκληρώσει τα απαραίτητα βήματα για να ολοκληρώσετε αυτό το μάθημα, ας ξεκινήσουμε με μια [εισαγωγή στη Γενετική Τεχνητή Νοημοσύνη και τα LLMs](../01-introduction-to-genai/README.md?WT.mc_id=academic-105485-koreyst). + +--- + +**Αποποίηση ευθύνης**: +Αυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία μετάφρασης AI [Co-op Translator](https://github.com/Azure/co-op-translator). Παρόλο που καταβάλλουμε προσπάθειες για ακρίβεια, παρακαλούμε να έχετε υπόψη ότι οι αυτοματοποιημένες μεταφράσεις ενδέχεται να περιέχουν λάθη ή ανακρίβειες. Το πρωτότυπο έγγραφο στη μητρική του γλώσσα θα πρέπει να θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε ευθύνη για τυχόν παρεξηγήσεις ή εσφαλμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης. \ No newline at end of file diff --git a/translations/el/01-introduction-to-genai/README.md b/translations/el/01-introduction-to-genai/README.md index 6f4dc62c92..249ac56c0f 100644 --- a/translations/el/01-introduction-to-genai/README.md +++ b/translations/el/01-introduction-to-genai/README.md @@ -1,125 +1,117 @@ - -# Εισαγωγή στην Γενετική Τεχνητή Νοημοσύνη και τα Μεγάλα Γλωσσικά Μοντέλα - -[![Εισαγωγή στην Γενετική Τεχνητή Νοημοσύνη και τα Μεγάλα Γλωσσικά Μοντέλα](../../../translated_images/01-lesson-banner.2424cfd092f43366707ee2d15749f62f76f80ea3cb0816f4f31d0abd5ffd4dd1.el.png)](https://aka.ms/gen-ai-lesson-1-gh?WT.mc_id=academic-105485-koreyst) - -_(Κάντε κλικ στην εικόνα παραπάνω για να δείτε το βίντεο αυτής της ενότητας)_ - -Η Γενετική Τεχνητή Νοημοσύνη είναι μια μορφή τεχνητής νοημοσύνης ικανή να δημιουργεί κείμενο, εικόνες και άλλους τύπους περιεχομένου. Αυτό που την καθιστά εξαιρετική τεχνολογία είναι ότι εκδημοκρατίζει την ΤΝ, επιτρέποντας σε οποιονδήποτε να τη χρησιμοποιήσει με το απλό κείμενο μιας εντολής, μια πρόταση γραμμένη σε φυσική γλώσσα. Δεν χρειάζεται να μάθετε γλώσσες προγραμματισμού όπως Java ή SQL για να πετύχετε κάτι ουσιαστικό, αρκεί να χρησιμοποιήσετε τη δική σας γλώσσα, να δηλώσετε τι θέλετε και να λάβετε μια πρόταση από ένα μοντέλο ΤΝ. Οι εφαρμογές και ο αντίκτυπος είναι τεράστιοι: γράφετε ή κατανοείτε αναφορές, δημιουργείτε εφαρμογές και πολλά άλλα, όλα μέσα σε δευτερόλεπτα. - -Σε αυτό το πρόγραμμα σπουδών, θα εξερευνήσουμε πώς η startup μας αξιοποιεί τη γενετική ΤΝ για να ανοίξει νέους ορίζοντες στον χώρο της εκπαίδευσης και πώς αντιμετωπίζουμε τις αναπόφευκτες προκλήσεις που σχετίζονται με τις κοινωνικές επιπτώσεις της εφαρμογής της και τους τεχνολογικούς περιορισμούς. - -## Εισαγωγή - -Αυτή η ενότητα θα καλύψει: - -- Εισαγωγή στο επιχειρηματικό σενάριο: η ιδέα και η αποστολή της startup μας. -- Τη γενετική ΤΝ και πώς φτάσαμε στο σημερινό τεχνολογικό τοπίο. -- Τη λειτουργία ενός μεγάλου γλωσσικού μοντέλου. -- Κύριες δυνατότητες και πρακτικές χρήσεις των Μεγάλων Γλωσσικών Μοντέλων. - -## Στόχοι Μάθησης - -Μετά την ολοκλήρωση αυτής της ενότητας, θα κατανοείτε: - -- Τι είναι η γενετική ΤΝ και πώς λειτουργούν τα Μεγάλα Γλωσσικά Μοντέλα. -- Πώς μπορείτε να αξιοποιήσετε τα μεγάλα γλωσσικά μοντέλα για διάφορες χρήσεις, με έμφαση σε εκπαιδευτικά σενάρια. - -## Σενάριο: η εκπαιδευτική startup μας - -Η Γενετική Τεχνητή Νοημοσύνη (AI) αντιπροσωπεύει την κορυφή της τεχνολογίας ΤΝ, ωθώντας τα όρια του αδύνατου. Τα γενετικά μοντέλα ΤΝ έχουν πολλές δυνατότητες και εφαρμογές, αλλά σε αυτό το πρόγραμμα θα εξερευνήσουμε πώς φέρνουν επανάσταση στην εκπαίδευση μέσω μιας φανταστικής startup. Θα αναφερόμαστε σε αυτήν ως _η startup μας_. Η startup μας δραστηριοποιείται στον τομέα της εκπαίδευσης με την φιλόδοξη αποστολή - -> _να βελτιώσει την προσβασιμότητα στη μάθηση σε παγκόσμιο επίπεδο, εξασφαλίζοντας δίκαιη πρόσβαση στην εκπαίδευση και παρέχοντας εξατομικευμένες μαθησιακές εμπειρίες σε κάθε μαθητή, ανάλογα με τις ανάγκες του_. - -Η ομάδα της startup μας γνωρίζει ότι δεν θα μπορέσουμε να πετύχουμε αυτόν τον στόχο χωρίς να αξιοποιήσουμε ένα από τα πιο ισχυρά εργαλεία της σύγχρονης εποχής – τα Μεγάλα Γλωσσικά Μοντέλα (LLMs). - -Η γενετική ΤΝ αναμένεται να φέρει επανάσταση στον τρόπο που μαθαίνουμε και διδάσκουμε σήμερα, με τους μαθητές να έχουν στη διάθεσή τους εικονικούς δασκάλους 24 ώρες το 24ωρο που παρέχουν τεράστιες ποσότητες πληροφοριών και παραδειγμάτων, και τους εκπαιδευτικούς να μπορούν να χρησιμοποιούν καινοτόμα εργαλεία για να αξιολογούν τους μαθητές τους και να δίνουν ανατροφοδότηση. - -![Πέντε νέοι μαθητές κοιτούν μια οθόνη - εικόνα από DALLE2](../../../translated_images/students-by-DALLE2.b70fddaced1042ee47092320243050c4c9a7da78b31eeba515b09b2f0dca009b.el.png) - -Για αρχή, ας ορίσουμε μερικές βασικές έννοιες και ορολογίες που θα χρησιμοποιούμε σε όλο το πρόγραμμα. - -## Πώς φτάσαμε στη Γενετική Τεχνητή Νοημοσύνη; - -Παρά τον εξαιρετικό _θόρυβο_ που δημιουργήθηκε πρόσφατα με την ανακοίνωση των γενετικών μοντέλων ΤΝ, αυτή η τεχνολογία αναπτύσσεται εδώ και δεκαετίες, με τις πρώτες ερευνητικές προσπάθειες να χρονολογούνται από τη δεκαετία του ’60. Βρισκόμαστε πλέον σε ένα σημείο όπου η ΤΝ διαθέτει ανθρώπινες γνωστικές ικανότητες, όπως η συνομιλία, όπως φαίνεται για παράδειγμα από το [OpenAI ChatGPT](https://openai.com/chatgpt) ή το [Bing Chat](https://www.microsoft.com/edge/features/bing-chat?WT.mc_id=academic-105485-koreyst), που επίσης χρησιμοποιεί μοντέλο GPT για τις συνομιλίες αναζήτησης στο Bing. - -Κάνοντας ένα βήμα πίσω, τα πρώτα πρωτότυπα ΤΝ ήταν πληκτρολογημένοι chatbots, βασισμένα σε μια βάση γνώσεων που εξάγονταν από ομάδα ειδικών και αποθηκεύονταν σε υπολογιστή. Οι απαντήσεις στη βάση γνώσεων ενεργοποιούνταν από λέξεις-κλειδιά που εμφανίζονταν στο κείμενο εισόδου. Ωστόσο, σύντομα έγινε σαφές ότι αυτή η προσέγγιση, με τα πληκτρολογημένα chatbots, δεν κλιμακωνόταν καλά. - -### Μια στατιστική προσέγγιση στην ΤΝ: Μηχανική Μάθηση - -Ένα σημείο καμπής ήρθε τη δεκαετία του ’90, με την εφαρμογή μιας στατιστικής προσέγγισης στην ανάλυση κειμένου. Αυτό οδήγησε στην ανάπτυξη νέων αλγορίθμων – γνωστών ως μηχανική μάθηση – ικανών να μαθαίνουν πρότυπα από δεδομένα χωρίς να προγραμματίζονται ρητά. Αυτή η προσέγγιση επιτρέπει στις μηχανές να προσομοιώνουν την κατανόηση της ανθρώπινης γλώσσας: ένα στατιστικό μοντέλο εκπαιδεύεται σε ζεύγη κειμένου-ετικέτας, επιτρέποντας στο μοντέλο να ταξινομεί άγνωστο κείμενο εισόδου με μια προκαθορισμένη ετικέτα που αντιπροσωπεύει την πρόθεση του μηνύματος. - -### Νευρωνικά δίκτυα και σύγχρονοι εικονικοί βοηθοί - -Τα τελευταία χρόνια, η τεχνολογική εξέλιξη του υλικού, ικανή να διαχειρίζεται μεγαλύτερους όγκους δεδομένων και πιο σύνθετους υπολογισμούς, ενθάρρυνε την έρευνα στην ΤΝ, οδηγώντας στην ανάπτυξη προηγμένων αλγορίθμων μηχανικής μάθησης γνωστών ως νευρωνικά δίκτυα ή αλγόριθμοι βαθιάς μάθησης. - -Τα νευρωνικά δίκτυα (και ειδικά τα Επαναλαμβανόμενα Νευρωνικά Δίκτυα – RNNs) βελτίωσαν σημαντικά την επεξεργασία φυσικής γλώσσας, επιτρέποντας την αναπαράσταση του νοήματος του κειμένου με πιο ουσιαστικό τρόπο, λαμβάνοντας υπόψη το πλαίσιο μιας λέξης μέσα σε μια πρόταση. - -Αυτή είναι η τεχνολογία που τροφοδότησε τους εικονικούς βοηθούς που εμφανίστηκαν στην πρώτη δεκαετία του νέου αιώνα, πολύ ικανούς στην ερμηνεία της ανθρώπινης γλώσσας, στην αναγνώριση μιας ανάγκης και στην εκτέλεση μιας ενέργειας για την ικανοποίησή της – όπως η απάντηση με προκαθορισμένο σενάριο ή η χρήση υπηρεσίας τρίτου μέρους. - -### Σήμερα, η Γενετική Τεχνητή Νοημοσύνη - -Έτσι φτάσαμε στη σημερινή Γενετική ΤΝ, που μπορεί να θεωρηθεί ως υποσύνολο της βαθιάς μάθησης. - -![AI, ML, DL και Γενετική ΤΝ](../../../translated_images/AI-diagram.c391fa518451a40de58d4f792c88adb8568d8cb4c48eed6e97b6b16e621eeb77.el.png) - -Μετά από δεκαετίες έρευνας στον τομέα της ΤΝ, μια νέα αρχιτεκτονική μοντέλου – ονομάζεται _Transformer_ – ξεπέρασε τους περιορισμούς των RNNs, έχοντας τη δυνατότητα να επεξεργάζεται πολύ μεγαλύτερες ακολουθίες κειμένου ως είσοδο. Οι Transformers βασίζονται στον μηχανισμό προσοχής (attention), που επιτρέπει στο μοντέλο να δίνει διαφορετικά βάρη στα εισερχόμενα δεδομένα, «προσεχώντας περισσότερο» εκεί όπου συγκεντρώνεται η πιο σημαντική πληροφορία, ανεξάρτητα από τη σειρά τους στην ακολουθία κειμένου. - -Τα περισσότερα πρόσφατα γενετικά μοντέλα ΤΝ – γνωστά και ως Μεγάλα Γλωσσικά Μοντέλα (LLMs), αφού δουλεύουν με κείμενο ως είσοδο και έξοδο – βασίζονται σε αυτήν την αρχιτεκτονική. Το ενδιαφέρον με αυτά τα μοντέλα – εκπαιδευμένα σε τεράστιο όγκο μη επισημασμένων δεδομένων από διάφορες πηγές όπως βιβλία, άρθρα και ιστοσελίδες – είναι ότι μπορούν να προσαρμοστούν σε μεγάλη ποικιλία εργασιών και να παράγουν γραμματικά σωστό κείμενο με μια αίσθηση δημιουργικότητας. Έτσι, όχι μόνο βελτίωσαν απίστευτα την ικανότητα μιας μηχανής να «κατανοεί» ένα κείμενο εισόδου, αλλά και την ικανότητά τους να δημιουργούν μια πρωτότυπη απάντηση σε ανθρώπινη γλώσσα. - -## Πώς λειτουργούν τα μεγάλα γλωσσικά μοντέλα; - -Στο επόμενο κεφάλαιο θα εξερευνήσουμε διάφορους τύπους γενετικών μοντέλων ΤΝ, αλλά προς το παρόν ας δούμε πώς λειτουργούν τα μεγάλα γλωσσικά μοντέλα, με έμφαση στα μοντέλα OpenAI GPT (Generative Pre-trained Transformer). - -- **Tokenizer, από κείμενο σε αριθμούς**: Τα Μεγάλα Γλωσσικά Μοντέλα λαμβάνουν κείμενο ως είσοδο και παράγουν κείμενο ως έξοδο. Ωστόσο, ως στατιστικά μοντέλα, λειτουργούν πολύ καλύτερα με αριθμούς παρά με ακολουθίες κειμένου. Γι’ αυτό κάθε είσοδος στο μοντέλο επεξεργάζεται από έναν tokenizer, πριν χρησιμοποιηθεί από το βασικό μοντέλο. Ένα token είναι ένα κομμάτι κειμένου – που αποτελείται από μεταβλητό αριθμό χαρακτήρων, οπότε η κύρια δουλειά του tokenizer είναι να χωρίζει την είσοδο σε έναν πίνακα από tokens. Στη συνέχεια, κάθε token αντιστοιχίζεται σε έναν δείκτη token, που είναι ο ακέραιος κωδικός του αρχικού κομματιού κειμένου. - -![Παράδειγμα tokenization](../../../translated_images/tokenizer-example.80a5c151ee7d1bd485eff5aca60ac3d2c1eaaff4c0746e09b98c696c959afbfa.el.png) - -- **Πρόβλεψη tokens εξόδου**: Δίνοντας n tokens ως είσοδο (με μέγιστο n που διαφέρει ανά μοντέλο), το μοντέλο μπορεί να προβλέψει ένα token ως έξοδο. Αυτό το token ενσωματώνεται στην είσοδο της επόμενης επανάληψης, σε ένα μοτίβο επεκτεινόμενου παραθύρου, επιτρέποντας μια καλύτερη εμπειρία χρήστη με την παραγωγή μιας (ή πολλών) προτάσεων ως απάντηση. Αυτό εξηγεί γιατί, αν έχετε παίξει με το ChatGPT, ίσως έχετε παρατηρήσει ότι μερικές φορές σταματάει στη μέση μιας πρότασης. - -- **Διαδικασία επιλογής, κατανομή πιθανοτήτων**: Το token εξόδου επιλέγεται από το μοντέλο σύμφωνα με την πιθανότητα εμφάνισής του μετά την τρέχουσα ακολουθία κειμένου. Αυτό συμβαίνει γιατί το μοντέλο προβλέπει μια κατανομή πιθανοτήτων για όλα τα πιθανά «επόμενα tokens», υπολογισμένη βάσει της εκπαίδευσής του. Ωστόσο, δεν επιλέγεται πάντα το token με την υψηλότερη πιθανότητα. Προστίθεται ένα επίπεδο τυχαιότητας σε αυτή την επιλογή, ώστε το μοντέλο να λειτουργεί με μη ντετερμινιστικό τρόπο – δεν παίρνουμε ακριβώς την ίδια απάντηση για την ίδια είσοδο. Αυτό το επίπεδο τυχαιότητας προστίθεται για να προσομοιώσει τη διαδικασία δημιουργικής σκέψης και μπορεί να ρυθμιστεί μέσω μιας παραμέτρου του μοντέλου που ονομάζεται temperature. - -## Πώς μπορεί η startup μας να αξιοποιήσει τα Μεγάλα Γλωσσικά Μοντέλα; - -Τώρα που έχουμε καλύτερη κατανόηση της εσωτερικής λειτουργίας ενός μεγάλου γλωσσικού μοντέλου, ας δούμε μερικά πρακτικά παραδείγματα από τις πιο κοινές εργασίες που μπορούν να εκτελέσουν πολύ καλά, με έμφαση στο επιχειρηματικό μας σενάριο. Είπαμε ότι η κύρια ικανότητα ενός Μεγάλου Γλωσσικού Μοντέλου είναι _η δημιουργία κειμένου από το μηδέν, ξεκινώντας από μια κειμενική είσοδο, γραμμένη σε φυσική γλώσσα_. - -Αλλά τι είδους είσοδο και έξοδο κειμένου; -Η είσοδος ενός μεγάλου γλωσσικού μοντέλου είναι γνωστή ως prompt, ενώ η έξοδος ως completion, όρος που αναφέρεται στον μηχανισμό του μοντέλου να παράγει το επόμενο token για να ολοκληρώσει την τρέχουσα είσοδο. Θα εμβαθύνουμε στο τι είναι ένα prompt και πώς να το σχεδιάζουμε ώστε να αξιοποιούμε στο έπακρο το μοντέλο μας. Προς το παρόν, ας πούμε ότι ένα prompt μπορεί να περιλαμβάνει: - -- Μια **εντολή** που καθορίζει τον τύπο της εξόδου που περιμένουμε από το μοντέλο. Αυτή η εντολή μερικές φορές μπορεί να περιλαμβάνει παραδείγματα ή επιπλέον δεδομένα. - - 1. Περίληψη άρθρου, βιβλίου, κριτικών προϊόντων και άλλα, μαζί με εξαγωγή συμπερασμάτων από μη δομημένα δεδομένα. - - ![Παράδειγμα περίληψης](../../../translated_images/summarization-example.7b7ff97147b3d790477169f442b5e3f8f78079f152450e62c45dbdc23b1423c1.el.png) - - 2. Δημιουργική ιδέα και σχεδιασμός άρθρου, δοκιμίου, εργασίας ή άλλου. - - ![Παράδειγμα δημιουργικής γραφής](../../../translated_images/creative-writing-example.e24a685b5a543ad1287ad8f6c963019518920e92a1cf7510f354e85b0830fbe8.el.png) - -- Μια **ερώτηση**, διατυπωμένη ως συνομιλία με έναν πράκτορα. - - ![Παράδειγμα συνομιλίας](../../../translated_images/conversation-example.60c2afc0f595fa599f367d36ccc3909ffc15e1d5265cb33b907d3560f3d03116.el.png) - -- Ένα κομμάτι **κειμένου προς ολοκλήρωση**, που υποδηλώνει αίτημα για βοήθεια στη συγγραφή. - - ![Παράδειγμα ολοκλήρωσης κειμένου](../../../translated_images/text-completion-example.cbb0f28403d427524f8f8c935f84d084a9765b683a6bf37f977df3adb868b0e7.el.png) - -- Ένα κομμάτι **κώδικα** μαζί με αίτημα για εξήγηση και τεκμηρίωση, ή ένα σχόλιο που ζητά να παραχθεί κομμάτι κώδικα που εκτελεί συγκεκριμένη εργασία. - - ![Παράδειγμα κωδικοποίησης](../../../translated_images/coding-example.50ebabe8a6afff20267c91f18aab1957ddd9561ee2988b2362b7365aa6796935.el.png) - -Τα παραπάνω παραδείγματα είναι αρκετά απλά και δεν έχουν σκοπό να παρουσιάσουν εξαντλητικά τις δυνατότητες των Μεγάλων Γλωσσικών Μοντέλων. Σκοπός τους είναι να δείξουν το δυναμικό της γενετικής ΤΝ, ειδικά αλλά όχι αποκλειστικά σε εκπαιδευτικά πλαίσια. - -Επίσης, η έξοδος ενός γενετικού μοντέλου ΤΝ δεν είναι τέλεια και μερικές φορές η δημιουργικότητα του μοντέλου μπορεί να λειτουργήσει εναντίον του, παράγοντας -Πηγαίνετε στο Μάθημα 2 όπου θα δούμε πώς να [εξερευνήσουμε και να συγκρίνουμε διαφορετικούς τύπους LLM](../02-exploring-and-comparing-different-llms/README.md?WT.mc_id=academic-105485-koreyst)! - -**Αποποίηση ευθυνών**: -Αυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία αυτόματης μετάφρασης AI [Co-op Translator](https://github.com/Azure/co-op-translator). Παρόλο που επιδιώκουμε την ακρίβεια, παρακαλούμε να έχετε υπόψη ότι οι αυτόματες μεταφράσεις ενδέχεται να περιέχουν λάθη ή ανακρίβειες. Το πρωτότυπο έγγραφο στη γλώσσα του θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε ευθύνη για τυχόν παρεξηγήσεις ή λανθασμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης. \ No newline at end of file + +# Εισαγωγή στην Παραγωγική Τεχνητή Νοημοσύνη και τα Μεγάλα Γλωσσικά Μοντέλα + +[![Εισαγωγή στην Παραγωγική Τεχνητή Νοημοσύνη και τα Μεγάλα Γλωσσικά Μοντέλα](../../../translated_images/01-lesson-banner.2424cfd092f43366707ee2d15749f62f76f80ea3cb0816f4f31d0abd5ffd4dd1.el.png)](https://youtu.be/lFXQkBvEe0o?si=6ZBcQTwLJJDpnX0K) + +_(Κάντε κλικ στην εικόνα παραπάνω για να δείτε το βίντεο αυτού του μαθήματος)_ + +Η Παραγωγική Τεχνητή Νοημοσύνη είναι μια μορφή τεχνητής νοημοσύνης που μπορεί να δημιουργεί κείμενα, εικόνες και άλλους τύπους περιεχομένου. Αυτό που την καθιστά μια εκπληκτική τεχνολογία είναι ότι εκδημοκρατίζει την τεχνητή νοημοσύνη, καθώς οποιοσδήποτε μπορεί να τη χρησιμοποιήσει με μια απλή εντολή κειμένου, μια πρόταση γραμμένη σε φυσική γλώσσα. Δεν χρειάζεται να μάθετε μια γλώσσα όπως η Java ή η SQL για να πετύχετε κάτι αξιόλογο, το μόνο που χρειάζεστε είναι να χρησιμοποιήσετε τη γλώσσα σας, να δηλώσετε τι θέλετε και να λάβετε μια πρόταση από ένα μοντέλο τεχνητής νοημοσύνης. Οι εφαρμογές και ο αντίκτυπος αυτής της τεχνολογίας είναι τεράστιοι: μπορείτε να γράψετε ή να κατανοήσετε αναφορές, να δημιουργήσετε εφαρμογές και πολλά άλλα, όλα μέσα σε δευτερόλεπτα. + +Σε αυτό το πρόγραμμα σπουδών, θα εξερευνήσουμε πώς η startup μας αξιοποιεί την Παραγωγική Τεχνητή Νοημοσύνη για να ανοίξει νέες δυνατότητες στον κόσμο της εκπαίδευσης και πώς αντιμετωπίζουμε τις αναπόφευκτες προκλήσεις που σχετίζονται με τις κοινωνικές επιπτώσεις της εφαρμογής της και τους περιορισμούς της τεχνολογίας. + +## Εισαγωγή + +Αυτό το μάθημα θα καλύψει: + +- Εισαγωγή στο επιχειρηματικό σενάριο: η ιδέα και η αποστολή της startup μας. +- Την Παραγωγική Τεχνητή Νοημοσύνη και πώς φτάσαμε στο σημερινό τεχνολογικό τοπίο. +- Τον εσωτερικό μηχανισμό ενός μεγάλου γλωσσικού μοντέλου. +- Τις κύριες δυνατότητες και πρακτικές εφαρμογές των Μεγάλων Γλωσσικών Μοντέλων. + +## Στόχοι Μάθησης + +Μετά την ολοκλήρωση αυτού του μαθήματος, θα κατανοήσετε: + +- Τι είναι η Παραγωγική Τεχνητή Νοημοσύνη και πώς λειτουργούν τα Μεγάλα Γλωσσικά Μοντέλα. +- Πώς μπορείτε να αξιοποιήσετε τα Μεγάλα Γλωσσικά Μοντέλα για διάφορες εφαρμογές, με έμφαση στα εκπαιδευτικά σενάρια. + +## Σενάριο: η εκπαιδευτική μας startup + +Η Παραγωγική Τεχνητή Νοημοσύνη (AI) αντιπροσωπεύει την κορυφή της τεχνολογίας AI, ωθώντας τα όρια του τι θεωρούνταν κάποτε αδύνατο. Τα μοντέλα Παραγωγικής Τεχνητής Νοημοσύνης έχουν πολλές δυνατότητες και εφαρμογές, αλλά για αυτό το πρόγραμμα σπουδών θα εξερευνήσουμε πώς επαναστατεί στην εκπαίδευση μέσω μιας φανταστικής startup. Θα αναφερόμαστε σε αυτήν την startup ως _η startup μας_. Η startup μας δραστηριοποιείται στον εκπαιδευτικό τομέα με την φιλόδοξη αποστολή: + +> _να βελτιώσει την προσβασιμότητα στη μάθηση, σε παγκόσμια κλίμακα, εξασφαλίζοντας ισότιμη πρόσβαση στην εκπαίδευση και παρέχοντας εξατομικευμένες μαθησιακές εμπειρίες σε κάθε μαθητή, σύμφωνα με τις ανάγκες του_. + +Η ομάδα της startup μας γνωρίζει ότι δεν θα μπορέσει να επιτύχει αυτόν τον στόχο χωρίς να αξιοποιήσει ένα από τα πιο ισχυρά εργαλεία της σύγχρονης εποχής – τα Μεγάλα Γλωσσικά Μοντέλα (LLMs). + +Η Παραγωγική Τεχνητή Νοημοσύνη αναμένεται να επαναστατήσει τον τρόπο που μαθαίνουμε και διδάσκουμε σήμερα, με τους μαθητές να έχουν στη διάθεσή τους εικονικούς δασκάλους 24 ώρες την ημέρα που παρέχουν τεράστιες ποσότητες πληροφοριών και παραδειγμάτων, και τους δασκάλους να μπορούν να αξιοποιήσουν καινοτόμα εργαλεία για να αξιολογήσουν τους μαθητές τους και να δώσουν ανατροφοδότηση. + +![Πέντε νέοι μαθητές κοιτάζουν μια οθόνη - εικόνα από DALLE2](../../../translated_images/students-by-DALLE2.b70fddaced1042ee47092320243050c4c9a7da78b31eeba515b09b2f0dca009b.el.png) + +Για αρχή, ας ορίσουμε κάποιες βασικές έννοιες και ορολογία που θα χρησιμοποιούμε σε όλο το πρόγραμμα σπουδών. + +## Πώς φτάσαμε στην Παραγωγική Τεχνητή Νοημοσύνη; + +Παρά τον εξαιρετικό _θόρυβο_ που δημιουργήθηκε πρόσφατα από την ανακοίνωση των μοντέλων Παραγωγικής Τεχνητής Νοημοσύνης, αυτή η τεχνολογία αναπτύσσεται εδώ και δεκαετίες, με τις πρώτες ερευνητικές προσπάθειες να χρονολογούνται από τη δεκαετία του '60. Βρισκόμαστε πλέον σε ένα σημείο όπου η τεχνητή νοημοσύνη διαθέτει ανθρώπινες γνωστικές ικανότητες, όπως η συνομιλία, όπως φαίνεται για παράδειγμα από το [OpenAI ChatGPT](https://openai.com/chatgpt) ή το [Bing Chat](https://www.microsoft.com/edge/features/bing-chat?WT.mc_id=academic-105485-koreyst), που επίσης χρησιμοποιεί ένα μοντέλο GPT για τις συνομιλίες αναζήτησης στο Bing. + +Ας γυρίσουμε λίγο πίσω. Τα πρώτα πρωτότυπα της τεχνητής νοημοσύνης αποτελούνταν από γραπτά chatbots, που βασίζονταν σε μια βάση γνώσεων που εξάγονταν από μια ομάδα ειδικών και αναπαρίσταντο σε έναν υπολογιστή. Οι απαντήσεις στη βάση γνώσεων ενεργοποιούνταν από λέξεις-κλειδιά που εμφανίζονταν στο εισαγόμενο κείμενο. Ωστόσο, σύντομα έγινε σαφές ότι μια τέτοια προσέγγιση, χρησιμοποιώντας γραπτά chatbots, δεν μπορούσε να κλιμακωθεί αποτελεσματικά. + +### Στατιστική προσέγγιση στην τεχνητή νοημοσύνη: Μηχανική Μάθηση + +Ένα σημείο καμπής ήρθε κατά τη δεκαετία του '90, με την εφαρμογή μιας στατιστικής προσέγγισης στην ανάλυση κειμένου. Αυτό οδήγησε στην ανάπτυξη νέων αλγορίθμων – γνωστών ως μηχανική μάθηση – που ήταν ικανοί να μαθαίνουν μοτίβα από δεδομένα χωρίς να προγραμματίζονται ρητά. Αυτή η προσέγγιση επέτρεψε στις μηχανές να προσομοιώνουν την κατανόηση της ανθρώπινης γλώσσας: ένα στατιστικό μοντέλο εκπαιδεύεται σε ζεύγη κειμένου-ετικέτας, επιτρέποντας στο μοντέλο να ταξινομεί άγνωστο εισαγόμενο κείμενο με μια προκαθορισμένη ετικέτα που αντιπροσωπεύει την πρόθεση του μηνύματος. + +### Νευρωνικά δίκτυα και σύγχρονοι εικονικοί βοηθοί + +Τα τελευταία χρόνια, η τεχνολογική εξέλιξη του υλικού, που είναι ικανό να διαχειρίζεται μεγαλύτερες ποσότητες δεδομένων και πιο σύνθετους υπολογισμούς, ενθάρρυνε την έρευνα στην τεχνητή νοημοσύνη, οδηγώντας στην ανάπτυξη προηγμένων αλγορίθμων μηχανικής μάθησης, γνωστών ως νευρωνικά δίκτυα ή αλγορίθμων βαθιάς μάθησης. + +Τα νευρωνικά δίκτυα (και ειδικότερα τα Επαναληπτικά Νευρωνικά Δίκτυα – RNNs) βελτίωσαν σημαντικά την επεξεργασία φυσικής γλώσσας, επιτρέποντας την αναπαράσταση της σημασίας του κειμένου με πιο ουσιαστικό τρόπο, αξιολογώντας το πλαίσιο μιας λέξης μέσα σε μια πρόταση. + +Αυτή είναι η τεχνολογία που τροφοδότησε τους εικονικούς βοηθούς που γεννήθηκαν την πρώτη δεκαετία του νέου αιώνα, πολύ ικανούς να ερμηνεύουν την ανθρώπινη γλώσσα, να αναγνωρίζουν μια ανάγκη και να εκτελούν μια ενέργεια για να την ικανοποιήσουν – όπως να απαντούν με ένα προκαθορισμένο σενάριο ή να καταναλώνουν μια υπηρεσία τρίτου μέρους. + +### Σήμερα, Παραγωγική Τεχνητή Νοημοσύνη + +Έτσι φτάσαμε στη σημερινή Παραγωγική Τεχνητή Νοημοσύνη, η οποία μπορεί να θεωρηθεί ως υποσύνολο της βαθιάς μάθησης. + +![AI, ML, DL και Παραγωγική Τεχνητή Νοημοσύνη](../../../translated_images/AI-diagram.c391fa518451a40de58d4f792c88adb8568d8cb4c48eed6e97b6b16e621eeb77.el.png) + +Μετά από δεκαετίες έρευνας στον τομέα της τεχνητής νοημοσύνης, μια νέα αρχιτεκτονική μοντέλου – που ονομάζεται _Transformer_ – ξεπέρασε τα όρια των RNNs, καθώς μπορεί να λαμβάνει πολύ μεγαλύτερες ακολουθίες κειμένου ως εισαγωγή. Οι Transformers βασίζονται στον μηχανισμό προσοχής, επιτρέποντας στο μοντέλο να δίνει διαφορετικά βάρη στις εισαγωγές που λαμβάνει, «δίνοντας περισσότερη προσοχή» εκεί όπου συγκεντρώνεται η πιο σχετική πληροφορία, ανεξάρτητα από τη σειρά τους στην ακολουθία κειμένου. + +Τα περισσότερα από τα πρόσφατα μοντέλα Παραγωγικής Τεχνητής Νοημοσύνης – γνωστά επίσης ως Μεγάλα Γλωσσικά Μοντέλα (LLMs), καθώς λειτουργούν με κειμενικές εισαγωγές και εξαγωγές – βασίζονται πράγματι σε αυτήν την αρχιτεκτονική. Αυτό που είναι ενδιαφέρον σχετικά με αυτά τα μοντέλα – που εκπαιδεύονται σε τεράστιες ποσότητες μη επισημασμένων δεδομένων από διάφορες πηγές όπως βιβλία, άρθρα και ιστότοπους – είναι ότι μπορούν να προσαρμοστούν σε μια μεγάλη ποικιλία εργασιών και να δημιουργούν γραμματικά σωστό κείμενο με μια αίσθηση δημιουργικότητας. Έτσι, όχι μόνο βελτίωσαν απίστευτα την ικανότητα μιας μηχανής να «κατανοεί» ένα εισαγόμενο κείμενο, αλλά επέτρεψαν την ικανότητά της να δημιουργεί μια πρωτότυπη απάντηση σε ανθρώπινη γλώσσα. + +## Πώς λειτουργούν τα Μεγάλα Γλωσσικά Μοντέλα; + +Στο επόμενο κεφάλαιο θα εξερευνήσουμε διαφορετικούς τύπους μοντέλων Παραγωγικής Τεχνητής Νοημοσύνης, αλλά προς το παρόν ας δούμε πώς λειτουργούν τα Μεγάλα Γλωσσικά Μοντέλα, με έμφαση στα μοντέλα OpenAI GPT (Generative Pre-trained Transformer). + +- **Tokenizer, κείμενο σε αριθμούς**: Τα Μεγάλα Γλωσσικά Μοντέλα λαμβάνουν ένα κείμενο ως εισαγωγή και δημιουργούν ένα κείμενο ως εξαγωγή. Ωστόσο, ως στατιστικά μοντέλα, λειτουργούν πολύ καλύτερα με αριθμούς παρά με ακολουθίες κειμένου. Γι' αυτό κάθε εισαγωγή στο μοντέλο επεξεργάζεται από έναν tokenizer, πριν χρησιμοποιηθεί από τον πυρήνα του μοντέλου. Ένα token είναι ένα κομμάτι κειμένου – που αποτελείται από μεταβλητό αριθμό χαρακτήρων, οπότε το κύριο καθήκον του tokenizer είναι να διαχωρίζει την εισαγωγή σε έναν πίνακα tokens. Στη συνέχεια, κάθε token αντιστοιχίζεται με έναν δείκτη token, που είναι η ακέραια κωδικοποίηση του αρχικού κομματιού κειμένου. + +![Παράδειγμα tokenization](../../../translated_images/tokenizer-example.80a5c151ee7d1bd485eff5aca60ac3d2c1eaaff4c0746e09b98c696c959afbfa.el.png) + +- **Πρόβλεψη εξαγωγής tokens**: Δεδομένων n tokens ως εισαγωγή (με μέγιστο n που διαφέρει από μοντέλο σε μοντέλο), το μοντέλο είναι ικανό να προβλέψει ένα token ως εξαγωγή. Αυτό το token ενσωματώνεται στη συνέχεια στην εισαγωγή της επόμενης επανάληψης, σε ένα μοτίβο επεκτεινόμενου παραθύρου, επιτρέποντας μια καλύτερη εμπειρία χρήστη με την παροχή μιας (ή περισσότερων) προτάσεων ως απάντηση. Αυτό εξηγεί γιατί, αν έχετε παίξει ποτέ με το ChatGPT, μπορεί να έχετε παρατηρήσει ότι μερικές φορές φαίνεται να σταματά στη μέση μιας πρότασης. + +- **Διαδικασία επιλογής, κατανομή πιθανότητας**: Το εξαγόμενο token επιλέγεται από το μοντέλο σύμφωνα με την πιθανότητα εμφάνισής του μετά την τρέχουσα ακολουθία κειμένου. Αυτό συμβαίνει επειδή το μοντέλο προβλέπει μια κατανομή πιθανότητας για όλα τα πιθανά «επόμενα tokens», που υπολογίζεται βάσει της εκπαίδευσής του. Ωστόσο, δεν επιλέγεται πάντα το token με την υψηλότερη πιθανότητα από την προκύπτουσα κατανομή. Προστίθεται ένας βαθμός τυχαιότητας σε αυτήν την επιλογή, με τρόπο που το μοντέλο να λειτουργεί με μη ντετερμινιστικό τρόπο - δεν λαμβάνουμε την ίδια εξαγωγή για την ίδια εισαγωγή. Αυτός ο βαθμός τυχαιότητας προστίθεται για να προσομοιωθεί η διαδικασία δημιουργικής σκέψης και μπορεί να ρυθμιστεί χρησιμοποιώντας μια παράμετρο του μοντέλου που ονομάζεται θερμοκρασία. + +## Πώς μπορεί η startup μας να αξιοποιήσει τα Μεγάλα Γλωσσικά Μοντέλα; + +Τώρα που έχουμε καλύτερη κατανόηση του εσωτερικού μηχανισμού ενός μεγάλου γλωσσικού μοντέλου, ας δούμε μερικά πρακτικά παραδείγματα των πιο κοινών εργασιών που μπορούν να εκτελέσουν αρκετά καλά, με έμφαση στο επιχειρηματικό μας σενάριο. Είπαμε ότι η κύρια δυνατότητα ενός Μεγάλου Γλωσσικού Μοντέλου είναι _η δημιουργία κειμένου από το μηδέν, ξεκινώντας από μια κειμενική εισαγωγή, γραμμένη σε φυσική γλώσσα_. + +Αλλά τι είδους κειμενική εισαγωγή και εξαγωγή; +Η εισαγωγή ενός μεγάλου γλωσσικού μοντέλου είναι γνωστή ως prompt, ενώ η εξαγωγή είναι γνωστή ως completion, όρος που αναφέρεται στον μηχανισμό του μοντέλου να δημιουργεί το επόμενο token για να ολοκληρώσει την τρέχουσα εισαγωγή. Θα εμβαθύνουμε στο τι είναι ένα prompt και πώς να το σχεδιάσουμε με τρόπο που να αξιοποιούμε στο έπακρο το μοντέλο μας. Αλλά προς το παρόν, ας πούμε απλώς ότι ένα prompt μπορεί να περιλαμβάνει: + +- Μια **οδηγία** που καθορίζει τον τύπο εξαγωγής που περιμένουμε από το μοντέλο. Αυτή η οδηγία μπορεί μερικές φορές να περιλαμβάνει παραδείγματα ή πρόσθετα δεδομένα. + + 1. Περίληψη ενός άρθρου, βιβλίου, κριτικών προϊόντων και άλλα, μαζί με εξαγωγή πληροφοριών από μη δομημένα δεδομένα. + + ![Παράδειγμα περίληψης](../../../translated_images/summarization-example.7b7ff97147b3d790477169f442b5e3f8f78079f152450e62c45dbdc23b1423c1.el.png) + + 2. Δημιουργική ιδέα και σχεδιασμός ενός άρθρου, δοκιμίου, εργασίας ή άλλου. + + ![Παράδειγμα δημιουργικής γραφής](../../../translated_images/creative-writing-example.e24a685b5a543ad1287ad8f6c963019518920e92a1cf7510f354e85b0830fbe8.el.png) + +- Μια **ερώτηση**, που τίθεται με τη μορφή συνομιλίας με έναν πράκτορα. + + ![Παράδειγμα συνομιλίας](../../../translated_images/conversation-example.60c2afc0f595fa599f367d36ccc3909ffc15e1d5265cb33b907d3560f3d03116.el.png) + +- Ένα κομμάτι **κειμένου προς ολοκλήρωση**, που υπονοεί μια αί +Πηγαίνετε στο Μάθημα 2, όπου θα εξετάσουμε πώς να [εξερευνήσουμε και να συγκρίνουμε διαφορετικούς τύπους LLM](../02-exploring-and-comparing-different-llms/README.md?WT.mc_id=academic-105485-koreyst)! + +--- + +**Αποποίηση ευθύνης**: +Αυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία μετάφρασης AI [Co-op Translator](https://github.com/Azure/co-op-translator). Παρόλο που καταβάλλουμε προσπάθειες για ακρίβεια, παρακαλούμε να γνωρίζετε ότι οι αυτοματοποιημένες μεταφράσεις ενδέχεται να περιέχουν λάθη ή ανακρίβειες. Το πρωτότυπο έγγραφο στη μητρική του γλώσσα θα πρέπει να θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε ευθύνη για τυχόν παρεξηγήσεις ή εσφαλμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης. \ No newline at end of file diff --git a/translations/el/02-exploring-and-comparing-different-llms/README.md b/translations/el/02-exploring-and-comparing-different-llms/README.md index 28c71c1cdf..a82317a401 100644 --- a/translations/el/02-exploring-and-comparing-different-llms/README.md +++ b/translations/el/02-exploring-and-comparing-different-llms/README.md @@ -1,211 +1,212 @@ - -# Εξερευνώντας και συγκρίνοντας διαφορετικά LLMs - -[![Εξερευνώντας και συγκρίνοντας διαφορετικά LLMs](../../../translated_images/02-lesson-banner.ef94c84979f97f60f07e27d905e708cbcbdf78707120553ccab27d91c947805b.el.png)](https://aka.ms/gen-ai-lesson2-gh?WT.mc_id=academic-105485-koreyst) - -> _Κάντε κλικ στην εικόνα παραπάνω για να δείτε το βίντεο αυτής της ενότητας_ - -Με το προηγούμενο μάθημα, είδαμε πώς η Γενετική Τεχνητή Νοημοσύνη αλλάζει το τεχνολογικό τοπίο, πώς λειτουργούν τα Μεγάλα Γλωσσικά Μοντέλα (LLMs) και πώς μια επιχείρηση - όπως το startup μας - μπορεί να τα εφαρμόσει στις περιπτώσεις χρήσης της και να αναπτυχθεί! Σε αυτό το κεφάλαιο, θα συγκρίνουμε και θα αντιπαραβάλουμε διαφορετικούς τύπους μεγάλων γλωσσικών μοντέλων (LLMs) για να κατανοήσουμε τα πλεονεκτήματα και τα μειονεκτήματά τους. - -Το επόμενο βήμα στο ταξίδι του startup μας είναι να εξερευνήσουμε το τρέχον τοπίο των LLMs και να κατανοήσουμε ποια είναι κατάλληλα για την περίπτωσή μας. - -## Εισαγωγή - -Αυτό το μάθημα θα καλύψει: - -- Διαφορετικούς τύπους LLMs στο τρέχον τοπίο. -- Δοκιμές, επαναλήψεις και σύγκριση διαφορετικών μοντέλων για την περίπτωσή σας στο Azure. -- Πώς να αναπτύξετε ένα LLM. - -## Στόχοι μάθησης - -Μετά την ολοκλήρωση αυτού του μαθήματος, θα μπορείτε να: - -- Επιλέξετε το κατάλληλο μοντέλο για την περίπτωσή σας. -- Κατανοήσετε πώς να δοκιμάζετε, να επαναλαμβάνετε και να βελτιώνετε την απόδοση του μοντέλου σας. -- Γνωρίζετε πώς οι επιχειρήσεις αναπτύσσουν μοντέλα. - -## Κατανόηση διαφορετικών τύπων LLMs - -Τα LLMs μπορούν να κατηγοριοποιηθούν με βάση την αρχιτεκτονική τους, τα δεδομένα εκπαίδευσης και την περίπτωση χρήσης. Η κατανόηση αυτών των διαφορών θα βοηθήσει το startup μας να επιλέξει το κατάλληλο μοντέλο για το σενάριο και να κατανοήσει πώς να δοκιμάζει, να επαναλαμβάνει και να βελτιώνει την απόδοση. - -Υπάρχουν πολλοί διαφορετικοί τύποι μοντέλων LLM, και η επιλογή σας εξαρτάται από το τι σκοπεύετε να τα χρησιμοποιήσετε, τα δεδομένα σας, πόσα είστε διατεθειμένοι να πληρώσετε και άλλα. - -Ανάλογα με το αν σκοπεύετε να χρησιμοποιήσετε τα μοντέλα για κείμενο, ήχο, βίντεο, δημιουργία εικόνων κ.ά., μπορεί να επιλέξετε διαφορετικό τύπο μοντέλου. - -- **Αναγνώριση ήχου και ομιλίας**. Για αυτόν τον σκοπό, τα μοντέλα τύπου Whisper είναι εξαιρετική επιλογή καθώς είναι γενικής χρήσης και στοχεύουν στην αναγνώριση ομιλίας. Έχουν εκπαιδευτεί σε ποικίλο ήχο και μπορούν να εκτελέσουν πολυγλωσσική αναγνώριση ομιλίας. Μάθετε περισσότερα για τα [μοντέλα τύπου Whisper εδώ](https://platform.openai.com/docs/models/whisper?WT.mc_id=academic-105485-koreyst). - -- **Δημιουργία εικόνων**. Για δημιουργία εικόνων, τα DALL-E και Midjourney είναι δύο πολύ γνωστές επιλογές. Το DALL-E προσφέρεται από το Azure OpenAI. [Διαβάστε περισσότερα για το DALL-E εδώ](https://platform.openai.com/docs/models/dall-e?WT.mc_id=academic-105485-koreyst) και επίσης στο Κεφάλαιο 9 αυτού του προγράμματος σπουδών. - -- **Δημιουργία κειμένου**. Τα περισσότερα μοντέλα έχουν εκπαιδευτεί για δημιουργία κειμένου και έχετε μεγάλη ποικιλία επιλογών από GPT-3.5 έως GPT-4. Έρχονται με διαφορετικό κόστος, με το GPT-4 να είναι το πιο ακριβό. Αξίζει να εξερευνήσετε το [Azure OpenAI playground](https://oai.azure.com/portal/playground?WT.mc_id=academic-105485-koreyst) για να αξιολογήσετε ποια μοντέλα ταιριάζουν καλύτερα στις ανάγκες σας όσον αφορά τις δυνατότητες και το κόστος. - -- **Πολυμορφικότητα (Multi-modality)**. Αν θέλετε να χειριστείτε πολλαπλούς τύπους δεδομένων στην είσοδο και έξοδο, ίσως θελήσετε να εξετάσετε μοντέλα όπως [gpt-4 turbo με όραση ή gpt-4o](https://learn.microsoft.com/azure/ai-services/openai/concepts/models#gpt-4-and-gpt-4-turbo-models?WT.mc_id=academic-105485-koreyst) - τις πιο πρόσφατες εκδόσεις μοντέλων OpenAI - που μπορούν να συνδυάσουν την επεξεργασία φυσικής γλώσσας με την οπτική κατανόηση, επιτρέποντας αλληλεπιδράσεις μέσω πολυμορφικών διεπαφών. - -Η επιλογή μοντέλου σημαίνει ότι αποκτάτε κάποιες βασικές δυνατότητες, που όμως μπορεί να μην είναι αρκετές. Συχνά έχετε εταιρικά δεδομένα που πρέπει να τα γνωστοποιήσετε στο LLM. Υπάρχουν μερικές διαφορετικές επιλογές για το πώς να το προσεγγίσετε, περισσότερα γι’ αυτό στις επόμενες ενότητες. - -### Foundation Models έναντι LLMs - -Ο όρος Foundation Model επινοήθηκε από [ερευνητές του Stanford](https://arxiv.org/abs/2108.07258?WT.mc_id=academic-105485-koreyst) και ορίστηκε ως ένα μοντέλο AI που πληροί ορισμένα κριτήρια, όπως: - -- **Εκπαιδεύονται με μη επιβλεπόμενη ή αυτοεπιβλεπόμενη μάθηση**, δηλαδή εκπαιδεύονται σε μη επισημασμένα πολυμορφικά δεδομένα και δεν απαιτούν ανθρώπινη επισήμανση ή ετικετοποίηση για τη διαδικασία εκπαίδευσης. -- **Είναι πολύ μεγάλα μοντέλα**, βασισμένα σε πολύ βαθιά νευρωνικά δίκτυα εκπαιδευμένα σε δισεκατομμύρια παραμέτρους. -- **Συνήθως προορίζονται να λειτουργήσουν ως ‘βάση’ για άλλα μοντέλα**, δηλαδή μπορούν να χρησιμοποιηθούν ως αφετηρία για την κατασκευή άλλων μοντέλων μέσω fine-tuning. - -![Foundation Models έναντι LLMs](../../../translated_images/FoundationModel.e4859dbb7a825c94b284f17eae1c186aabc21d4d8644331f5b007d809cf8d0f2.el.png) - -Πηγή εικόνας: [Essential Guide to Foundation Models and Large Language Models | by Babar M Bhatti | Medium](https://thebabar.medium.com/essential-guide-to-foundation-models-and-large-language-models-27dab58f7404) - -Για να διευκρινίσουμε περαιτέρω αυτή τη διάκριση, ας πάρουμε ως παράδειγμα το ChatGPT. Για να δημιουργηθεί η πρώτη έκδοση του ChatGPT, ένα μοντέλο που ονομάζεται GPT-3.5 χρησίμευσε ως foundation model. Αυτό σημαίνει ότι η OpenAI χρησιμοποίησε κάποια δεδομένα ειδικά για συνομιλίες ώστε να δημιουργήσει μια προσαρμοσμένη έκδοση του GPT-3.5 που ήταν εξειδικευμένη στο να αποδίδει καλά σε σενάρια συνομιλίας, όπως τα chatbots. - -![Foundation Model](../../../translated_images/Multimodal.2c389c6439e0fc51b0b7b226d95d7d900d372ae66902d71b8ce5ec4951b8efbe.el.png) - -Πηγή εικόνας: [2108.07258.pdf (arxiv.org)](https://arxiv.org/pdf/2108.07258.pdf?WT.mc_id=academic-105485-koreyst) - -### Ανοιχτού Κώδικα έναντι Ιδιόκτητων Μοντέλων - -Ένας άλλος τρόπος κατηγοριοποίησης των LLMs είναι αν είναι ανοιχτού κώδικα ή ιδιόκτητα. - -Τα ανοιχτού κώδικα μοντέλα είναι διαθέσιμα στο κοινό και μπορούν να χρησιμοποιηθούν από οποιονδήποτε. Συχνά διατίθενται από την εταιρεία που τα δημιούργησε ή από την ερευνητική κοινότητα. Αυτά τα μοντέλα επιτρέπεται να ελέγχονται, να τροποποιούνται και να προσαρμόζονται για διάφορες περιπτώσεις χρήσης. Ωστόσο, δεν είναι πάντα βελτιστοποιημένα για παραγωγική χρήση και μπορεί να μην έχουν την ίδια απόδοση με τα ιδιόκτητα μοντέλα. Επιπλέον, η χρηματοδότηση για τα ανοιχτού κώδικα μοντέλα μπορεί να είναι περιορισμένη, και μπορεί να μην συντηρούνται μακροπρόθεσμα ή να μην ενημερώνονται με τις πιο πρόσφατες έρευνες. Παραδείγματα δημοφιλών ανοιχτού κώδικα μοντέλων είναι τα [Alpaca](https://crfm.stanford.edu/2023/03/13/alpaca.html?WT.mc_id=academic-105485-koreyst), [Bloom](https://huggingface.co/bigscience/bloom) και [LLaMA](https://llama.meta.com). - -Τα ιδιόκτητα μοντέλα ανήκουν σε εταιρείες και δεν είναι διαθέσιμα στο κοινό. Συχνά είναι βελτιστοποιημένα για παραγωγική χρήση. Ωστόσο, δεν επιτρέπεται να ελέγχονται, να τροποποιούνται ή να προσαρμόζονται για διαφορετικές περιπτώσεις χρήσης. Επιπλέον, δεν είναι πάντα δωρεάν και μπορεί να απαιτούν συνδρομή ή πληρωμή για χρήση. Οι χρήστες δεν έχουν έλεγχο στα δεδομένα που χρησιμοποιούνται για την εκπαίδευση του μοντέλου, οπότε πρέπει να εμπιστεύονται τον ιδιοκτήτη του μοντέλου για τη διασφάλιση της προστασίας δεδομένων και της υπεύθυνης χρήσης της AI. Παραδείγματα δημοφιλών ιδιόκτητων μοντέλων είναι τα [μοντέλα OpenAI](https://platform.openai.com/docs/models/overview?WT.mc_id=academic-105485-koreyst), [Google Bard](https://sapling.ai/llm/bard?WT.mc_id=academic-105485-koreyst) ή [Claude 2](https://www.anthropic.com/index/claude-2?WT.mc_id=academic-105485-koreyst). - -### Ενσωμάτωση (Embedding) έναντι Δημιουργίας Εικόνας έναντι Δημιουργίας Κειμένου και Κώδικα - -Τα LLMs μπορούν επίσης να κατηγοριοποιηθούν ανάλογα με το είδος της εξόδου που παράγουν. - -Τα embeddings είναι μοντέλα που μετατρέπουν το κείμενο σε αριθμητική μορφή, που ονομάζεται embedding, δηλαδή μια αριθμητική αναπαράσταση του εισαγόμενου κειμένου. Τα embeddings διευκολύνουν τις μηχανές να κατανοήσουν τις σχέσεις μεταξύ λέξεων ή προτάσεων και μπορούν να χρησιμοποιηθούν ως είσοδοι από άλλα μοντέλα, όπως μοντέλα ταξινόμησης ή ομαδοποίησης που έχουν καλύτερη απόδοση σε αριθμητικά δεδομένα. Τα μοντέλα embedding χρησιμοποιούνται συχνά για μεταφορά μάθησης, όπου ένα μοντέλο κατασκευάζεται για μια βοηθητική εργασία με άφθονα δεδομένα και στη συνέχεια τα βάρη του μοντέλου (embeddings) επαναχρησιμοποιούνται για άλλες εργασίες. Ένα παράδειγμα αυτής της κατηγορίας είναι τα [OpenAI embeddings](https://platform.openai.com/docs/models/embeddings?WT.mc_id=academic-105485-koreyst). - -![Embedding](../../../translated_images/Embedding.c3708fe988ccf76073d348483dbb7569f622211104f073e22e43106075c04800.el.png) - -Τα μοντέλα δημιουργίας εικόνων παράγουν εικόνες. Συχνά χρησιμοποιούνται για επεξεργασία εικόνας, σύνθεση εικόνας και μετάφραση εικόνας. Εκπαιδεύονται σε μεγάλα σύνολα δεδομένων εικόνων, όπως το [LAION-5B](https://laion.ai/blog/laion-5b/?WT.mc_id=academic-105485-koreyst), και μπορούν να δημιουργήσουν νέες εικόνες ή να επεξεργαστούν υπάρχουσες με τεχνικές όπως inpainting, υπερ-ανάλυση και χρωματισμό. Παραδείγματα είναι τα [DALL-E-3](https://openai.com/dall-e-3?WT.mc_id=academic-105485-koreyst) και τα [Stable Diffusion models](https://github.com/Stability-AI/StableDiffusion?WT.mc_id=academic-105485-koreyst). - -![Δημιουργία εικόνας](../../../translated_images/Image.349c080266a763fd255b840a921cd8fc526ed78dc58708fa569ff1873d302345.el.png) - -Τα μοντέλα δημιουργίας κειμένου και κώδικα παράγουν κείμενο ή κώδικα. Χρησιμοποιούνται συχνά για περίληψη κειμένου, μετάφραση και απάντηση σε ερωτήσεις. Εκπαιδεύονται σε μεγάλα σύνολα δεδομένων κειμένου, όπως το [BookCorpus](https://www.cv-foundation.org/openaccess/content_iccv_2015/html/Zhu_Aligning_Books_and_ICCV_2015_paper.html?WT.mc_id=academic-105485-koreyst), και μπορούν να δημιουργήσουν νέο κείμενο ή να απαντήσουν σε ερωτήσεις. Τα μοντέλα δημιουργίας κώδικα, όπως το [CodeParrot](https://huggingface.co/codeparrot?WT.mc_id=academic-105485-koreyst), εκπαιδεύονται σε μεγάλα σύνολα δεδομένων κώδικα, όπως το GitHub, και μπορούν να δημιουργήσουν νέο κώδικα ή να διορθώσουν σφάλματα σε υπάρχοντα. - -![Δημιουργία κειμένου και κώδικα](../../../translated_images/Text.a8c0cf139e5cc2a0cd3edaba8d675103774e6ddcb3c9fc5a98bb17c9a450e31d.el.png) - -### Encoder-Decoder έναντι Decoder-only - -Για να μιλήσουμε για τους διαφορετικούς τύπους αρχιτεκτονικής των LLMs, ας χρησιμοποιήσουμε μια αναλογία. - -Φανταστείτε ότι ο διευθυντής σας σας ανέθεσε να γράψετε ένα κουίζ για τους μαθητές. Έχετε δύο συναδέλφους· ο ένας επιβλέπει τη δημιουργία του περιεχομένου και ο άλλος την αναθεώρησή του. - -Ο δημιουργός περιεχομένου είναι σαν μοντέλο μόνο Decoder, μπορεί να δει το θέμα και τι έχετε ήδη γράψει και μετά να γράψει ένα μάθημα βασισμένο σε αυτό. Είναι πολύ καλός στο να γράφει ελκυστικό και ενημερωτικό περιεχόμενο, αλλά δεν είναι πολύ καλός στο να κατανοεί το θέμα και τους μαθησιακούς στόχους. Παραδείγματα μοντέλων Decoder είναι τα μοντέλα της οικογένειας GPT, όπως το GPT-3. - -Ο αναθεωρητής είναι σαν μοντέλο μόνο Encoder, κοιτάζει το γραμμένο μάθημα και τις απαντήσεις, παρατηρεί τη σχέση μεταξύ τους και κατανοεί το πλαίσιο, αλλά δεν είναι καλός στη δημιουργία περιεχομένου. Ένα παράδειγμα μοντέλου μόνο Encoder είναι το BERT. - -Φανταστείτε ότι μπορούμε να έχουμε κάποιον που να μπορεί και να δημιουργεί και να αναθεωρεί το κουίζ, αυτό είναι ένα μοντέλο Encoder-Decoder. Παραδείγματα είναι τα BART και T5. - -### Υπηρεσία έναντι Μοντέλου - -Τώρα, ας μιλήσουμε για τη διαφορά μεταξύ υπηρεσίας και μοντέλου. Μια υπηρεσία είναι ένα προϊόν που προσφέρεται από έναν πάροχο Cloud, και συχνά είναι ένας συνδυασμός μοντέλων, δεδομένων και άλλων στοιχείων. Ένα μοντέλο είναι ο βασικός πυρήνας μιας υπηρεσίας, και συνήθως είναι ένα foundation model, όπως ένα LLM. - -Οι υπηρεσίες είναι συχνά βελτιστοποιημένες για παραγωγική χρήση και είναι πιο εύκολες στη χρήση από τα μοντέλα, μέσω γραφικής διεπαφής. Ωστόσο, οι υπηρεσίες δεν είναι πάντα δωρεάν και μπορεί να απαιτούν συνδρομή ή πληρωμή, σε αντάλλαγμα για τη χρήση του εξοπλισμού και των πόρων του παρόχου, βελτιστοποιώντας τα έξοδα και διευκολύνοντας την κλιμάκωση. Ένα παράδειγμα υπηρεσίας είναι το [Azure OpenAI Service](https://learn.microsoft.com/azure/ai-services/openai/overview?WT.mc_id=academic-105485-koreyst), που προσφέρει χρέωση pay-as-you-go, δηλαδή οι χρήστες χρεώνονται ανάλογα με τη χρήση της υπηρεσίας. Επιπλέον, το Azure OpenAI Service προσφέρει ασφάλεια επιπέδου επιχείρησης και ένα πλαίσιο υπεύθυνης AI πάνω από τις δυνατότητες των μοντέλων. - -Τα μοντέλα είναι απλώς το Νευρωνικό Δίκτυο, με τις παραμέτρους, τα βάρη και άλλα. Επιτρέπουν στις εταιρείες να τρέχουν τοπικά, αλλά θα χρειαστεί να αγοράσουν εξοπλισμό, να δημιουργήσουν υποδομή για κλιμάκωση και να -Οι περισσότερες από τις μοντέλα που αναφέραμε στα προηγούμενα παραγράφους (μοντέλα OpenAI, ανοιχτού κώδικα μοντέλα όπως το Llama2, και transformers του Hugging Face) είναι διαθέσιμα στον [Κατάλογο Μοντέλων](https://learn.microsoft.com/azure/ai-studio/how-to/model-catalog-overview?WT.mc_id=academic-105485-koreyst) στο [Azure AI Studio](https://ai.azure.com/?WT.mc_id=academic-105485-koreyst). - -Το [Azure AI Studio](https://learn.microsoft.com/azure/ai-studio/what-is-ai-studio?WT.mc_id=academic-105485-koreyst) είναι μια πλατφόρμα στο Cloud σχεδιασμένη για προγραμματιστές, ώστε να δημιουργούν εφαρμογές γεννητικής AI και να διαχειρίζονται ολόκληρο τον κύκλο ανάπτυξης – από την πειραματική φάση μέχρι την αξιολόγηση – συνδυάζοντας όλες τις υπηρεσίες Azure AI σε ένα ενιαίο κέντρο με ένα εύχρηστο γραφικό περιβάλλον. Ο Κατάλογος Μοντέλων στο Azure AI Studio επιτρέπει στον χρήστη να: - -- Βρει το Foundation Model που τον ενδιαφέρει στον κατάλογο – είτε ιδιόκτητο είτε ανοιχτού κώδικα, φιλτράροντας ανά εργασία, άδεια χρήσης ή όνομα. Για να βελτιωθεί η αναζήτηση, τα μοντέλα οργανώνονται σε συλλογές, όπως η συλλογή Azure OpenAI, η συλλογή Hugging Face, και άλλες. - -![Model catalog](../../../translated_images/AzureAIStudioModelCatalog.3cf8a499aa8ba0314f2c73d4048b3225d324165f547525f5b7cfa5f6c9c68941.el.png) - -- Εξετάσει την κάρτα μοντέλου, που περιλαμβάνει λεπτομερή περιγραφή της προοριζόμενης χρήσης και των δεδομένων εκπαίδευσης, παραδείγματα κώδικα και αποτελέσματα αξιολόγησης στη βιβλιοθήκη εσωτερικών αξιολογήσεων. - -![Model card](../../../translated_images/ModelCard.598051692c6e400d681a713ba7717e8b6e5e65f08d12131556fcec0f1789459b.el.png) - -- Συγκρίνει benchmarks ανάμεσα σε μοντέλα και σύνολα δεδομένων που είναι διαθέσιμα στη βιομηχανία, για να αξιολογήσει ποιο καλύπτει καλύτερα το επιχειρηματικό σενάριο, μέσω του πίνακα [Model Benchmarks](https://learn.microsoft.com/azure/ai-studio/how-to/model-benchmarks?WT.mc_id=academic-105485-koreyst). - -![Model benchmarks](../../../translated_images/ModelBenchmarks.254cb20fbd06c03a4ca53994585c5ea4300a88bcec8eff0450f2866ee2ac5ff3.el.png) - -- Κάνει fine-tuning στο μοντέλο με προσαρμοσμένα δεδομένα εκπαίδευσης για να βελτιώσει την απόδοση σε συγκεκριμένο φόρτο εργασίας, αξιοποιώντας τις δυνατότητες πειραματισμού και παρακολούθησης του Azure AI Studio. - -![Model fine-tuning](../../../translated_images/FineTuning.aac48f07142e36fddc6571b1f43ea2e003325c9c6d8e3fc9d8834b771e308dbf.el.png) - -- Αναπτύσσει το αρχικό προεκπαιδευμένο μοντέλο ή την έκδοση με fine-tuning σε απομακρυσμένο endpoint πραγματικού χρόνου – managed compute – ή serverless API endpoint – [pay-as-you-go](https://learn.microsoft.com/azure/ai-studio/how-to/model-catalog-overview#model-deployment-managed-compute-and-serverless-api-pay-as-you-go?WT.mc_id=academic-105485-koreyst) – ώστε οι εφαρμογές να μπορούν να το χρησιμοποιούν. - -![Model deployment](../../../translated_images/ModelDeploy.890da48cbd0bccdb4abfc9257f3d884831e5d41b723e7d1ceeac9d60c3c4f984.el.png) - - -> [!NOTE] -> Δεν είναι όλα τα μοντέλα στον κατάλογο διαθέσιμα προς fine-tuning και/ή ανάπτυξη με pay-as-you-go. Ελέγξτε την κάρτα μοντέλου για λεπτομέρειες σχετικά με τις δυνατότητες και τους περιορισμούς του μοντέλου. - -## Βελτίωση αποτελεσμάτων LLM - -Έχουμε εξερευνήσει με την ομάδα startup μας διάφορους τύπους LLM και μια πλατφόρμα Cloud (Azure Machine Learning) που μας επιτρέπει να συγκρίνουμε διαφορετικά μοντέλα, να τα αξιολογούμε σε δοκιμαστικά δεδομένα, να βελτιώνουμε την απόδοσή τους και να τα αναπτύσσουμε σε endpoints για inference. - -Αλλά πότε πρέπει να σκεφτεί κάποιος να κάνει fine-tuning σε ένα μοντέλο αντί να χρησιμοποιήσει ένα προεκπαιδευμένο; Υπάρχουν άλλες μέθοδοι για να βελτιωθεί η απόδοση ενός μοντέλου σε συγκεκριμένους φόρτους εργασίας; - -Υπάρχουν αρκετές προσεγγίσεις που μια επιχείρηση μπορεί να χρησιμοποιήσει για να πάρει τα αποτελέσματα που χρειάζεται από ένα LLM. Μπορείτε να επιλέξετε διαφορετικούς τύπους μοντέλων με διαφορετικό βαθμό εκπαίδευσης όταν αναπτύσσετε ένα LLM σε παραγωγή, με διαφορετικά επίπεδα πολυπλοκότητας, κόστους και ποιότητας. Ακολουθούν μερικές διαφορετικές προσεγγίσεις: - -- **Prompt engineering με πλαίσιο (context)**. Η ιδέα είναι να παρέχετε αρκετό πλαίσιο όταν κάνετε prompt, ώστε να εξασφαλίσετε ότι θα λάβετε τις απαντήσεις που χρειάζεστε. - -- **Retrieval Augmented Generation, RAG**. Τα δεδομένα σας μπορεί να υπάρχουν σε μια βάση δεδομένων ή σε web endpoint, για παράδειγμα, και για να εξασφαλίσετε ότι αυτά τα δεδομένα, ή ένα υποσύνολό τους, περιλαμβάνονται τη στιγμή του prompt, μπορείτε να ανακτήσετε τα σχετικά δεδομένα και να τα ενσωματώσετε στο prompt του χρήστη. - -- **Fine-tuned μοντέλο**. Εδώ, έχετε εκπαιδεύσει περαιτέρω το μοντέλο με δικά σας δεδομένα, κάτι που κάνει το μοντέλο πιο ακριβές και ανταποκρινόμενο στις ανάγκες σας, αλλά μπορεί να είναι δαπανηρό. - -![LLMs deployment](../../../translated_images/Deploy.18b2d27412ec8c02871386cbe91097c7f2190a8c6e2be88f66392b411609a48c.el.png) - -Πηγή εικόνας: [Four Ways that Enterprises Deploy LLMs | Fiddler AI Blog](https://www.fiddler.ai/blog/four-ways-that-enterprises-deploy-llms?WT.mc_id=academic-105485-koreyst) - -### Prompt Engineering με Πλαίσιο - -Τα προεκπαιδευμένα LLM λειτουργούν πολύ καλά σε γενικευμένες εργασίες φυσικής γλώσσας, ακόμα και με ένα σύντομο prompt, όπως μια πρόταση για συμπλήρωση ή μια ερώτηση – τη λεγόμενη “zero-shot” μάθηση. - -Ωστόσο, όσο περισσότερο ο χρήστης μπορεί να διαμορφώσει το ερώτημά του, με μια λεπτομερή αίτηση και παραδείγματα – το Πλαίσιο (Context) – τόσο πιο ακριβής και κοντά στις προσδοκίες του χρήστη θα είναι η απάντηση. Σε αυτή την περίπτωση, μιλάμε για “one-shot” μάθηση αν το prompt περιλαμβάνει μόνο ένα παράδειγμα και “few-shot” μάθηση αν περιλαμβάνει πολλά παραδείγματα. Το prompt engineering με πλαίσιο είναι η πιο οικονομική προσέγγιση για να ξεκινήσετε. - -### Retrieval Augmented Generation (RAG) - -Τα LLM έχουν τον περιορισμό ότι μπορούν να χρησιμοποιήσουν μόνο τα δεδομένα που έχουν χρησιμοποιηθεί κατά την εκπαίδευσή τους για να παράγουν μια απάντηση. Αυτό σημαίνει ότι δεν γνωρίζουν τίποτα για γεγονότα που συνέβησαν μετά τη διαδικασία εκπαίδευσης και δεν έχουν πρόσβαση σε μη δημόσιες πληροφορίες (όπως εταιρικά δεδομένα). -Αυτό μπορεί να ξεπεραστεί μέσω του RAG, μιας τεχνικής που ενισχύει το prompt με εξωτερικά δεδομένα με τη μορφή τμημάτων εγγράφων, λαμβάνοντας υπόψη τα όρια μήκους του prompt. Υποστηρίζεται από εργαλεία βάσεων δεδομένων Vector (όπως το [Azure Vector Search](https://learn.microsoft.com/azure/search/vector-search-overview?WT.mc_id=academic-105485-koreyst)) που ανακτούν τα χρήσιμα τμήματα από διάφορες προκαθορισμένες πηγές δεδομένων και τα προσθέτουν στο Πλαίσιο του prompt. - -Αυτή η τεχνική είναι πολύ χρήσιμη όταν μια επιχείρηση δεν έχει αρκετά δεδομένα, χρόνο ή πόρους για fine-tuning ενός LLM, αλλά θέλει να βελτιώσει την απόδοση σε συγκεκριμένο φόρτο εργασίας και να μειώσει τον κίνδυνο ψευδών πληροφοριών, δηλαδή παραπληροφόρησης ή επιβλαβούς περιεχομένου. - -### Fine-tuned μοντέλο - -Το fine-tuning είναι μια διαδικασία που αξιοποιεί τη μεταφορά μάθησης (transfer learning) για να «προσαρμόσει» το μοντέλο σε μια κατώτερη εργασία ή για να λύσει ένα συγκεκριμένο πρόβλημα. Σε αντίθεση με τη few-shot μάθηση και το RAG, οδηγεί στη δημιουργία ενός νέου μοντέλου με ενημερωμένα βάρη και προκαταλήψεις. Απαιτεί ένα σύνολο παραδειγμάτων εκπαίδευσης που αποτελείται από μια είσοδο (το prompt) και την αντίστοιχη έξοδο (την ολοκλήρωση). - -Αυτή θα ήταν η προτιμώμενη προσέγγιση αν: - -- **Χρησιμοποιείτε fine-tuned μοντέλα**. Μια επιχείρηση θέλει να χρησιμοποιήσει λιγότερο ικανά μοντέλα με fine-tuning (όπως embedding models) αντί για μοντέλα υψηλής απόδοσης, οδηγώντας σε πιο οικονομική και γρήγορη λύση. - -- **Λαμβάνετε υπόψη τη λανθάνουσα κατάσταση (latency)**. Η λανθάνουσα κατάσταση είναι σημαντική για μια συγκεκριμένη χρήση, οπότε δεν είναι δυνατό να χρησιμοποιηθούν πολύ μεγάλα prompts ή ο αριθμός των παραδειγμάτων που πρέπει να μάθει το μοντέλο δεν ταιριάζει με το όριο μήκους του prompt. - -- **Θέλετε να είστε ενημερωμένοι**. Μια επιχείρηση διαθέτει πολλά ποιοτικά δεδομένα και ετικέτες αλήθειας (ground truth) και τους πόρους που απαιτούνται για να διατηρεί αυτά τα δεδομένα ενημερωμένα με την πάροδο του χρόνου. - -### Εκπαιδευμένο μοντέλο - -Η εκπαίδευση ενός LLM από το μηδέν είναι αναμφίβολα η πιο δύσκολη και πολύπλοκη προσέγγιση, που απαιτεί τεράστιες ποσότητες δεδομένων, εξειδικευμένους πόρους και κατάλληλη υπολογιστική ισχύ. Αυτή η επιλογή θα πρέπει να εξετάζεται μόνο σε σενάρια όπου μια επιχείρηση έχει μια ειδική περίπτωση χρήσης σε συγκεκριμένο τομέα και μεγάλο όγκο δεδομένων που σχετίζονται με τον τομέα αυτό. - -## Έλεγχος γνώσεων - -Ποια θα μπορούσε να είναι μια καλή προσέγγιση για να βελτιώσετε τα αποτελέσματα ολοκλήρωσης ενός LLM; - -1. Prompt engineering με πλαίσιο -1. RAG -1. Fine-tuned μοντέλο - -Α:3, αν έχετε τον χρόνο, τους πόρους και ποιοτικά δεδομένα, το fine-tuning είναι η καλύτερη επιλογή για να παραμένετε ενημερωμένοι. Ωστόσο, αν θέλετε να βελτιώσετε τα πράγματα και δεν έχετε χρόνο, αξίζει να εξετάσετε πρώτα το RAG. - -## 🚀 Πρόκληση - -Διαβάστε περισσότερα για το πώς μπορείτε να [χρησιμοποιήσετε το RAG](https://learn.microsoft.com/azure/search/retrieval-augmented-generation-overview?WT.mc_id=academic-105485-koreyst) για την επιχείρησή σας. - -## Μπράβο, Συνεχίστε τη Μάθησή σας - -Μετά την ολοκλήρωση αυτού του μαθήματος, ρίξτε μια ματιά στη [συλλογή μάθησης για Generative AI](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) για να συνεχίσετε να αναβαθμίζετε τις γνώσεις σας στην Γεννητική Τεχνητή Νοημοσύνη! - -Πηγαίνετε στο Μάθημα 3 όπου θα δούμε πώς να [δημιουργούμε με Generative AI με υπευθυνότητα](../03-using-generative-ai-responsibly/README.md?WT.mc_id=academic-105485-koreyst)! - -**Αποποίηση ευθυνών**: -Αυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία αυτόματης μετάφρασης AI [Co-op Translator](https://github.com/Azure/co-op-translator). Παρόλο που επιδιώκουμε την ακρίβεια, παρακαλούμε να έχετε υπόψη ότι οι αυτόματες μεταφράσεις ενδέχεται να περιέχουν λάθη ή ανακρίβειες. Το πρωτότυπο έγγραφο στη γλώσσα του θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε ευθύνη για τυχόν παρεξηγήσεις ή λανθασμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης. \ No newline at end of file + +# Εξερεύνηση και σύγκριση διαφορετικών LLMs + +[![Εξερεύνηση και σύγκριση διαφορετικών LLMs](../../../translated_images/02-lesson-banner.ef94c84979f97f60f07e27d905e708cbcbdf78707120553ccab27d91c947805b.el.png)](https://youtu.be/KIRUeDKscfI?si=8BHX1zvwzQBn-PlK) + +> _Κάντε κλικ στην εικόνα παραπάνω για να παρακολουθήσετε το βίντεο αυτού του μαθήματος_ + +Στο προηγούμενο μάθημα, είδαμε πώς η Γενετική Τεχνητή Νοημοσύνη αλλάζει το τεχνολογικό τοπίο, πώς λειτουργούν τα Μεγάλα Γλωσσικά Μοντέλα (LLMs) και πώς μια επιχείρηση - όπως η δική μας startup - μπορεί να τα εφαρμόσει στις περιπτώσεις χρήσης της και να αναπτυχθεί! Σε αυτό το κεφάλαιο, θα συγκρίνουμε και θα αντιπαραβάλουμε διαφορετικούς τύπους μεγάλων γλωσσικών μοντέλων (LLMs) για να κατανοήσουμε τα πλεονεκτήματα και τα μειονεκτήματά τους. + +Το επόμενο βήμα στο ταξίδι της startup μας είναι η εξερεύνηση του τρέχοντος τοπίου των LLMs και η κατανόηση ποια είναι κατάλληλα για την περίπτωση χρήσης μας. + +## Εισαγωγή + +Αυτό το μάθημα θα καλύψει: + +- Διαφορετικούς τύπους LLMs στο τρέχον τοπίο. +- Δοκιμή, επανάληψη και σύγκριση διαφορετικών μοντέλων για την περίπτωση χρήσης σας στο Azure. +- Πώς να αναπτύξετε ένα LLM. + +## Στόχοι Μάθησης + +Μετά την ολοκλήρωση αυτού του μαθήματος, θα μπορείτε να: + +- Επιλέξετε το κατάλληλο μοντέλο για την περίπτωση χρήσης σας. +- Κατανοήσετε πώς να δοκιμάσετε, να επαναλάβετε και να βελτιώσετε την απόδοση του μοντέλου σας. +- Γνωρίζετε πώς οι επιχειρήσεις αναπτύσσουν μοντέλα. + +## Κατανόηση διαφορετικών τύπων LLMs + +Τα LLMs μπορούν να κατηγοριοποιηθούν με βάση την αρχιτεκτονική τους, τα δεδομένα εκπαίδευσης και την περίπτωση χρήσης. Η κατανόηση αυτών των διαφορών θα βοηθήσει τη startup μας να επιλέξει το κατάλληλο μοντέλο για το σενάριο και να κατανοήσει πώς να δοκιμάσει, να επαναλάβει και να βελτιώσει την απόδοση. + +Υπάρχουν πολλοί διαφορετικοί τύποι LLM μοντέλων, και η επιλογή του μοντέλου εξαρτάται από το τι σκοπεύετε να τα χρησιμοποιήσετε, τα δεδομένα σας, πόσα είστε διατεθειμένοι να πληρώσετε και άλλα. + +Ανάλογα με το αν σκοπεύετε να χρησιμοποιήσετε τα μοντέλα για κείμενο, ήχο, βίντεο, δημιουργία εικόνων κ.λπ., μπορεί να επιλέξετε έναν διαφορετικό τύπο μοντέλου. + +- **Αναγνώριση ήχου και ομιλίας**. Για αυτόν τον σκοπό, τα μοντέλα τύπου Whisper είναι μια εξαιρετική επιλογή καθώς είναι γενικής χρήσης και προορίζονται για αναγνώριση ομιλίας. Είναι εκπαιδευμένα σε ποικίλο ήχο και μπορούν να εκτελέσουν πολυγλωσσική αναγνώριση ομιλίας. Μάθετε περισσότερα για τα [μοντέλα τύπου Whisper εδώ](https://platform.openai.com/docs/models/whisper?WT.mc_id=academic-105485-koreyst). + +- **Δημιουργία εικόνων**. Για τη δημιουργία εικόνων, το DALL-E και το Midjourney είναι δύο πολύ γνωστές επιλογές. Το DALL-E προσφέρεται από το Azure OpenAI. [Διαβάστε περισσότερα για το DALL-E εδώ](https://platform.openai.com/docs/models/dall-e?WT.mc_id=academic-105485-koreyst) και επίσης στο Κεφάλαιο 9 αυτού του προγράμματος σπουδών. + +- **Δημιουργία κειμένου**. Τα περισσότερα μοντέλα είναι εκπαιδευμένα στη δημιουργία κειμένου και έχετε μια μεγάλη ποικιλία επιλογών από το GPT-3.5 έως το GPT-4. Έρχονται με διαφορετικά κόστη, με το GPT-4 να είναι το πιο ακριβό. Αξίζει να εξετάσετε το [Azure OpenAI playground](https://oai.azure.com/portal/playground?WT.mc_id=academic-105485-koreyst) για να αξιολογήσετε ποια μοντέλα ταιριάζουν καλύτερα στις ανάγκες σας όσον αφορά τις δυνατότητες και το κόστος. + +- **Πολυτροπικότητα**. Εάν θέλετε να χειριστείτε πολλούς τύπους δεδομένων στην είσοδο και την έξοδο, ίσως θέλετε να εξετάσετε μοντέλα όπως [gpt-4 turbo με όραση ή gpt-4o](https://learn.microsoft.com/azure/ai-services/openai/concepts/models#gpt-4-and-gpt-4-turbo-models?WT.mc_id=academic-105485-koreyst) - οι τελευταίες εκδόσεις των μοντέλων OpenAI - που είναι ικανά να συνδυάσουν την επεξεργασία φυσικής γλώσσας με την οπτική κατανόηση, επιτρέποντας αλληλεπιδράσεις μέσω πολυτροπικών διεπαφών. + +Η επιλογή ενός μοντέλου σημαίνει ότι αποκτάτε κάποιες βασικές δυνατότητες, που μπορεί να μην είναι αρκετές όμως. Συχνά έχετε δεδομένα συγκεκριμένα για την εταιρεία που πρέπει με κάποιο τρόπο να τα γνωστοποιήσετε στο LLM. Υπάρχουν μερικές διαφορετικές επιλογές για το πώς να το προσεγγίσετε, περισσότερα για αυτό στις επόμενες ενότητες. + +### Μοντέλα Βάσης έναντι LLMs + +Ο όρος Μοντέλο Βάσης [δημιουργήθηκε από ερευνητές του Stanford](https://arxiv.org/abs/2108.07258?WT.mc_id=academic-105485-koreyst) και ορίζεται ως ένα μοντέλο AI που ακολουθεί κάποια κριτήρια, όπως: + +- **Εκπαιδεύονται χρησιμοποιώντας μη εποπτευόμενη μάθηση ή αυτοεποπτευόμενη μάθηση**, που σημαίνει ότι εκπαιδεύονται σε μη επισημασμένα πολυτροπικά δεδομένα και δεν απαιτούν ανθρώπινη σχολιασμό ή επισήμανση δεδομένων για τη διαδικασία εκπαίδευσής τους. +- **Είναι πολύ μεγάλα μοντέλα**, βασισμένα σε πολύ βαθιά νευρωνικά δίκτυα εκπαιδευμένα σε δισεκατομμύρια παραμέτρους. +- **Συνήθως προορίζονται να χρησιμεύσουν ως "βάση" για άλλα μοντέλα**, που σημαίνει ότι μπορούν να χρησιμοποιηθούν ως σημείο εκκίνησης για την κατασκευή άλλων μοντέλων, κάτι που μπορεί να γίνει με τη λεπτομερή προσαρμογή. + +![Μοντέλα Βάσης έναντι LLMs](../../../translated_images/FoundationModel.e4859dbb7a825c94b284f17eae1c186aabc21d4d8644331f5b007d809cf8d0f2.el.png) + +Πηγή εικόνας: [Essential Guide to Foundation Models and Large Language Models | από τον Babar M Bhatti | Medium +](https://thebabar.medium.com/essential-guide-to-foundation-models-and-large-language-models-27dab58f7404) + +Για να διευκρινίσουμε περαιτέρω αυτή τη διάκριση, ας πάρουμε το ChatGPT ως παράδειγμα. Για να δημιουργηθεί η πρώτη έκδοση του ChatGPT, ένα μοντέλο που ονομάζεται GPT-3.5 χρησίμευσε ως το μοντέλο βάσης. Αυτό σημαίνει ότι η OpenAI χρησιμοποίησε κάποια δεδομένα ειδικά για συνομιλίες για να δημιουργήσει μια προσαρμοσμένη έκδοση του GPT-3.5 που ήταν εξειδικευμένη στο να αποδίδει καλά σε σενάρια συνομιλιών, όπως chatbots. + +![Μοντέλο Βάσης](../../../translated_images/Multimodal.2c389c6439e0fc51b0b7b226d95d7d900d372ae66902d71b8ce5ec4951b8efbe.el.png) + +Πηγή εικόνας: [2108.07258.pdf (arxiv.org)](https://arxiv.org/pdf/2108.07258.pdf?WT.mc_id=academic-105485-koreyst) + +### Ανοιχτού Κώδικα έναντι Ιδιόκτητων Μοντέλων + +Μια άλλη κατηγοριοποίηση των LLMs είναι αν είναι ανοιχτού κώδικα ή ιδιόκτητα. + +Τα μοντέλα ανοιχτού κώδικα είναι μοντέλα που είναι διαθέσιμα στο κοινό και μπορούν να χρησιμοποιηθούν από οποιονδήποτε. Συχνά διατίθενται από την εταιρεία που τα δημιούργησε ή από την ερευνητική κοινότητα. Αυτά τα μοντέλα επιτρέπεται να επιθεωρηθούν, να τροποποιηθούν και να προσαρμοστούν για τις διάφορες περιπτώσεις χρήσης στα LLMs. Ωστόσο, δεν είναι πάντα βελτιστοποιημένα για χρήση σε παραγωγή και μπορεί να μην είναι τόσο αποδοτικά όσο τα ιδιόκτητα μοντέλα. Επιπλέον, η χρηματοδότηση για μοντέλα ανοιχτού κώδικα μπορεί να είναι περιορισμένη και μπορεί να μην συντηρούνται μακροπρόθεσμα ή να μην ενημερώνονται με την τελευταία έρευνα. Παραδείγματα δημοφιλών μοντέλων ανοιχτού κώδικα περιλαμβάνουν [Alpaca](https://crfm.stanford.edu/2023/03/13/alpaca.html?WT.mc_id=academic-105485-koreyst), [Bloom](https://huggingface.co/bigscience/bloom) και [LLaMA](https://llama.meta.com). + +Τα ιδιόκτητα μοντέλα είναι μοντέλα που ανήκουν σε μια εταιρεία και δεν είναι διαθέσιμα στο κοινό. Αυτά τα μοντέλα συχνά βελτιστοποιούνται για χρήση σε παραγωγή. Ωστόσο, δεν επιτρέπεται να επιθεωρηθούν, να τροποποιηθούν ή να προσαρμοστούν για διαφορετικές περιπτώσεις χρήσης. Επιπλέον, δεν είναι πάντα διαθέσιμα δωρεάν και μπορεί να απαιτούν συνδρομή ή πληρωμή για χρήση. Επίσης, οι χρήστες δεν έχουν έλεγχο στα δεδομένα που χρησιμοποιούνται για την εκπαίδευση του μοντέλου, πράγμα που σημαίνει ότι πρέπει να εμπιστευτούν τον ιδιοκτήτη του μοντέλου για τη δέσμευση στην προστασία της ιδιωτικότητας των δεδομένων και τη χρήση της AI με υπευθυνότητα. Παραδείγματα δημοφιλών ιδιόκτητων μοντέλων περιλαμβάνουν [OpenAI models](https://platform.openai.com/docs/models/overview?WT.mc_id=academic-105485-koreyst), [Google Bard](https://sapling.ai/llm/bard?WT.mc_id=academic-105485-koreyst) ή [Claude 2](https://www.anthropic.com/index/claude-2?WT.mc_id=academic-105485-koreyst). + +### Ενσωμάτωση έναντι Δημιουργίας Εικόνων έναντι Δημιουργίας Κειμένου και Κώδικα + +Τα LLMs μπορούν επίσης να κατηγοριοποιηθούν με βάση την έξοδο που παράγουν. + +Οι ενσωματώσεις είναι ένα σύνολο μοντέλων που μπορούν να μετατρέψουν το κείμενο σε αριθμητική μορφή, που ονομάζεται ενσωμάτωση, η οποία είναι μια αριθμητική αναπαράσταση του εισαγόμενου κειμένου. Οι ενσωματώσεις διευκολύνουν τις μηχανές να κατανοήσουν τις σχέσεις μεταξύ λέξεων ή προτάσεων και μπορούν να καταναλωθούν ως είσοδοι από άλλα μοντέλα, όπως μοντέλα ταξινόμησης ή μοντέλα ομαδοποίησης που έχουν καλύτερη απόδοση σε αριθμητικά δεδομένα. Τα μοντέλα ενσωμάτωσης χρησιμοποιούνται συχνά για μεταφορά μάθησης, όπου ένα μοντέλο κατασκευάζεται για μια υποκατάστατη εργασία για την οποία υπάρχει αφθονία δεδομένων και στη συνέχεια τα βάρη του μοντέλου (ενσωματώσεις) επαναχρησιμοποιούνται για άλλες εργασίες. Ένα παράδειγμα αυτής της κατηγορίας είναι [OpenAI embeddings](https://platform.openai.com/docs/models/embeddings?WT.mc_id=academic-105485-koreyst). + +![Ενσωμάτωση](../../../translated_images/Embedding.c3708fe988ccf76073d348483dbb7569f622211104f073e22e43106075c04800.el.png) + +Τα μοντέλα δημιουργίας εικόνων είναι μοντέλα που δημιουργούν εικόνες. Αυτά τα μοντέλα χρησιμοποιούνται συχνά για επεξεργασία εικόνων, σύνθεση εικόνων και μετάφραση εικόνων. Τα μοντέλα δημιουργίας εικόνων εκπαιδεύονται συχνά σε μεγάλα σύνολα δεδομένων εικόνων, όπως [LAION-5B](https://laion.ai/blog/laion-5b/?WT.mc_id=academic-105485-koreyst), και μπορούν να χρησιμοποιηθούν για τη δημιουργία νέων εικόνων ή για την επεξεργασία υπαρχουσών εικόνων με τεχνικές inpainting, υπερ-ανάλυσης και χρωματισμού. Παραδείγματα περιλαμβάνουν [DALL-E-3](https://openai.com/dall-e-3?WT.mc_id=academic-105485-koreyst) και [Stable Diffusion models](https://github.com/Stability-AI/StableDiffusion?WT.mc_id=academic-105485-koreyst). + +![Δημιουργία εικόνων](../../../translated_images/Image.349c080266a763fd255b840a921cd8fc526ed78dc58708fa569ff1873d302345.el.png) + +Τα μοντέλα δημιουργίας κειμένου και κώδικα είναι μοντέλα που δημιουργούν κείμενο ή κώδικα. Αυτά τα μοντέλα χρησιμοποιούνται συχνά για σύνοψη κειμένου, μετάφραση και απάντηση σε ερωτήσεις. Τα μοντέλα δημιουργίας κειμένου εκπαιδεύονται συχνά σε μεγάλα σύνολα δεδομένων κειμένου, όπως [BookCorpus](https://www.cv-foundation.org/openaccess/content_iccv_2015/html/Zhu_Aligning_Books_and_ICCV_2015_paper.html?WT.mc_id=academic-105485-koreyst), και μπορούν να χρησιμοποιηθούν για τη δημιουργία νέου κειμένου ή για την απάντηση σε ερωτήσεις. Τα μοντέλα δημιουργίας κώδικα, όπως [CodeParrot](https://huggingface.co/codeparrot?WT.mc_id=academic-105485-koreyst), εκπαιδεύονται συχνά σε μεγάλα σύνολα δεδομένων κώδικα, όπως το GitHub, και μπορούν να χρησιμοποιηθούν για τη δημιουργία νέου κώδικα ή για τη διόρθωση σφαλμάτων σε υπάρχοντα κώδικα. + +![Δημιουργία κειμένου και κώδικα](../../../translated_images/Text.a8c0cf139e5cc2a0cd3edaba8d675103774e6ddcb3c9fc5a98bb17c9a450e31d.el.png) + +### Encoder-Decoder έναντι Μόνο Decoder + +Για να μιλήσουμε για τους διαφορετικούς τύπους αρχιτεκτονικής των LLMs, ας χρησιμοποιήσουμε μια αναλογία. + +Φανταστείτε ότι ο διευθυντής σας σας ανέθεσε να γράψετε ένα κουίζ για τους μαθητές. Έχετε δύο συναδέλφους: ο ένας είναι υπεύθυνος για τη δημιουργία του περιεχομένου και ο άλλος για την αναθεώρησή του. + +Ο δημιουργός περιεχομένου είναι σαν ένα μοντέλο Μόνο Decoder, μπορεί να δει το θέμα και να δει τι έχετε ήδη γράψει και στη συνέχεια να γράψει ένα μάθημα βάσει αυτού. Είναι πολύ καλός στο να γράφει ενδιαφέρον και ενημερωτικό περιεχόμενο, αλλά δεν είναι πολύ καλός στο να κατανοεί το θέμα και τους μαθησιακούς στόχους. Μερικά παραδείγματα μοντέλων Μόνο Decoder είναι τα μοντέλα της οικογένειας GPT, όπως το GPT-3. + +Ο αναθεωρητής είναι σαν ένα μοντέλο Μόνο Encoder, κοιτάζει το μάθημα που έχει γραφτεί και τις απαντήσεις, παρατηρώντας τη σχέση μεταξύ τους και κατανοώντας το πλαίσιο, αλλά δεν είναι καλός στη δημιουργία περιεχομένου. Ένα παράδειγμα μοντέλου Μόνο Encoder θα ήταν το BERT. + +Φανταστείτε ότι μπορούμε να έχουμε κάποιον που θα μπορούσε να δημιουργήσει και να αναθεωρήσει το κουίζ, αυτό είναι ένα μοντέλο Encoder-Decoder. Μερικά παραδείγματα θα ήταν το BART και το T5. + +### Υπηρεσία έναντι Μοντέλου + +Τώρα, ας μιλήσουμε για τη διαφορά μεταξύ μιας υπηρεσίας και ενός μοντέλου. Μια υπηρεσία είναι ένα προϊόν που προσφέρεται από έναν πάροχο υπηρεσιών cloud και είναι συχνά ένας συνδυασμός μοντέλων, δεδομένων και άλλων στοιχείων. Ένα μοντέλο είναι το βασικό στοιχείο μιας υπηρεσίας και είναι συχνά ένα μοντέλο βάσης, όπως ένα LLM. + +Οι υπηρεσίες συχνά βελτιστοποιούνται για χρήση σε παραγωγή και είναι συχνά πιο εύκολες στη χρήση από τα μοντέλα, μέσω μιας γραφικής διεπαφής χρήστη. Ωστόσο, οι υπηρεσίες δεν είναι πάντα διαθέσιμες δωρεάν και μπορεί να απαιτούν συνδρομή ή πληρωμή για χρήση, σε αντάλλαγμα +Τα περισσότερα από τα μοντέλα που αναφέραμε στις προηγούμενες παραγράφους (μοντέλα της OpenAI, μοντέλα ανοιχτού κώδικα όπως το Llama2 και οι μετασχηματιστές του Hugging Face) είναι διαθέσιμα στον [Κατάλογο Μοντέλων](https://learn.microsoft.com/azure/ai-studio/how-to/model-catalog-overview?WT.mc_id=academic-105485-koreyst) στο [Azure AI Studio](https://ai.azure.com/?WT.mc_id=academic-105485-koreyst). + +Το [Azure AI Studio](https://learn.microsoft.com/azure/ai-studio/what-is-ai-studio?WT.mc_id=academic-105485-koreyst) είναι μια πλατφόρμα Cloud σχεδιασμένη για προγραμματιστές, ώστε να δημιουργούν εφαρμογές γενετικής τεχνητής νοημοσύνης και να διαχειρίζονται ολόκληρο τον κύκλο ανάπτυξης - από την πειραματική φάση έως την αξιολόγηση - συνδυάζοντας όλες τις υπηρεσίες Azure AI σε έναν ενιαίο κόμβο με ένα εύχρηστο γραφικό περιβάλλον. Ο Κατάλογος Μοντέλων στο Azure AI Studio επιτρέπει στον χρήστη να: + +- Βρει το Foundation Model που τον ενδιαφέρει στον κατάλογο - είτε ιδιόκτητο είτε ανοιχτού κώδικα, φιλτράροντας ανάλογα με την εργασία, την άδεια ή το όνομα. Για να βελτιωθεί η αναζήτηση, τα μοντέλα είναι οργανωμένα σε συλλογές, όπως η συλλογή Azure OpenAI, η συλλογή Hugging Face και άλλες. + +![Κατάλογος μοντέλων](../../../translated_images/AzureAIStudioModelCatalog.3cf8a499aa8ba0314f2c73d4048b3225d324165f547525f5b7cfa5f6c9c68941.el.png) + +- Εξετάσει την κάρτα του μοντέλου, η οποία περιλαμβάνει λεπτομερή περιγραφή της προτεινόμενης χρήσης και των δεδομένων εκπαίδευσης, δείγματα κώδικα και αποτελέσματα αξιολόγησης από τη βιβλιοθήκη εσωτερικών αξιολογήσεων. + +![Κάρτα μοντέλου](../../../translated_images/ModelCard.598051692c6e400d681a713ba7717e8b6e5e65f08d12131556fcec0f1789459b.el.png) + +- Συγκρίνει benchmarks μεταξύ μοντέλων και datasets που είναι διαθέσιμα στη βιομηχανία, για να αξιολογήσει ποιο ταιριάζει στο επιχειρηματικό σενάριο, μέσω του πίνακα [Model Benchmarks](https://learn.microsoft.com/azure/ai-studio/how-to/model-benchmarks?WT.mc_id=academic-105485-koreyst). + +![Benchmarks μοντέλων](../../../translated_images/ModelBenchmarks.254cb20fbd06c03a4ca53994585c5ea4300a88bcec8eff0450f2866ee2ac5ff3.el.png) + +- Προσαρμόσει το μοντέλο σε δεδομένα εκπαίδευσης που έχει ο ίδιος, για να βελτιώσει την απόδοση του μοντέλου σε συγκεκριμένο φόρτο εργασίας, αξιοποιώντας τις δυνατότητες πειραματισμού και παρακολούθησης του Azure AI Studio. + +![Fine-tuning μοντέλου](../../../translated_images/FineTuning.aac48f07142e36fddc6571b1f43ea2e003325c9c6d8e3fc9d8834b771e308dbf.el.png) + +- Αναπτύξει το αρχικό προεκπαιδευμένο μοντέλο ή την προσαρμοσμένη έκδοση σε απομακρυσμένη πραγματική πρόβλεψη - διαχειριζόμενη υπολογιστική ισχύ - ή σε serverless API endpoint - [pay-as-you-go](https://learn.microsoft.com/azure/ai-studio/how-to/model-catalog-overview#model-deployment-managed-compute-and-serverless-api-pay-as-you-go?WT.mc_id=academic-105485-koreyst) - για να επιτρέψει στις εφαρμογές να το χρησιμοποιούν. + +![Ανάπτυξη μοντέλου](../../../translated_images/ModelDeploy.890da48cbd0bccdb4abfc9257f3d884831e5d41b723e7d1ceeac9d60c3c4f984.el.png) + +> [!NOTE] +> Δεν είναι όλα τα μοντέλα στον κατάλογο διαθέσιμα για fine-tuning και/ή ανάπτυξη με pay-as-you-go. Ελέγξτε την κάρτα του μοντέλου για λεπτομέρειες σχετικά με τις δυνατότητες και τους περιορισμούς του μοντέλου. + +## Βελτίωση αποτελεσμάτων LLM + +Έχουμε εξερευνήσει με την ομάδα του startup μας διάφορους τύπους LLMs και μια πλατφόρμα Cloud (Azure Machine Learning) που μας επιτρέπει να συγκρίνουμε διαφορετικά μοντέλα, να τα αξιολογούμε σε δεδομένα δοκιμών, να βελτιώνουμε την απόδοση και να τα αναπτύσσουμε σε endpoints πρόβλεψης. + +Αλλά πότε πρέπει να εξετάσουν το ενδεχόμενο fine-tuning ενός μοντέλου αντί να χρησιμοποιήσουν ένα προεκπαιδευμένο; Υπάρχουν άλλες προσεγγίσεις για τη βελτίωση της απόδοσης του μοντέλου σε συγκεκριμένους φόρτους εργασίας; + +Υπάρχουν διάφορες προσεγγίσεις που μπορεί να χρησιμοποιήσει μια επιχείρηση για να επιτύχει τα αποτελέσματα που χρειάζεται από ένα LLM. Μπορείτε να επιλέξετε διαφορετικούς τύπους μοντέλων με διαφορετικούς βαθμούς εκπαίδευσης κατά την ανάπτυξη ενός LLM στην παραγωγή, με διαφορετικά επίπεδα πολυπλοκότητας, κόστους και ποιότητας. Ακολουθούν μερικές διαφορετικές προσεγγίσεις: + +- **Prompt engineering με context**. Η ιδέα είναι να παρέχετε αρκετό context όταν κάνετε prompt, ώστε να εξασφαλίσετε ότι θα λάβετε τις απαντήσεις που χρειάζεστε. + +- **Retrieval Augmented Generation, RAG**. Τα δεδομένα σας μπορεί να υπάρχουν σε μια βάση δεδομένων ή σε ένα web endpoint, για παράδειγμα. Για να διασφαλίσετε ότι αυτά τα δεδομένα ή ένα υποσύνολό τους περιλαμβάνονται κατά τη διαδικασία του prompt, μπορείτε να ανακτήσετε τα σχετικά δεδομένα και να τα κάνετε μέρος του prompt του χρήστη. + +- **Fine-tuned μοντέλο**. Εδώ, εκπαιδεύετε περαιτέρω το μοντέλο με τα δικά σας δεδομένα, κάτι που οδηγεί το μοντέλο να είναι πιο ακριβές και να ανταποκρίνεται καλύτερα στις ανάγκες σας, αλλά μπορεί να είναι δαπανηρό. + +![Ανάπτυξη LLMs](../../../translated_images/Deploy.18b2d27412ec8c02871386cbe91097c7f2190a8c6e2be88f66392b411609a48c.el.png) + +Πηγή εικόνας: [Four Ways that Enterprises Deploy LLMs | Fiddler AI Blog](https://www.fiddler.ai/blog/four-ways-that-enterprises-deploy-llms?WT.mc_id=academic-105485-koreyst) + +### Prompt Engineering με Context + +Τα προεκπαιδευμένα LLMs λειτουργούν πολύ καλά σε γενικευμένες εργασίες φυσικής γλώσσας, ακόμα και όταν καλούνται με ένα σύντομο prompt, όπως μια πρόταση για ολοκλήρωση ή μια ερώτηση – η λεγόμενη “zero-shot” μάθηση. + +Ωστόσο, όσο περισσότερο ο χρήστης μπορεί να διαμορφώσει το ερώτημά του, με μια λεπτομερή αίτηση και παραδείγματα – το Context – τόσο πιο ακριβής και κοντά στις προσδοκίες του χρήστη θα είναι η απάντηση. Σε αυτή την περίπτωση, μιλάμε για “one-shot” μάθηση αν το prompt περιλαμβάνει μόνο ένα παράδειγμα και “few-shot” μάθηση αν περιλαμβάνει πολλαπλά παραδείγματα. Το prompt engineering με context είναι η πιο οικονομική προσέγγιση για να ξεκινήσετε. + +### Retrieval Augmented Generation (RAG) + +Τα LLMs έχουν τον περιορισμό ότι μπορούν να χρησιμοποιούν μόνο τα δεδομένα που έχουν χρησιμοποιηθεί κατά την εκπαίδευσή τους για να δημιουργήσουν μια απάντηση. Αυτό σημαίνει ότι δεν γνωρίζουν τίποτα για γεγονότα που συνέβησαν μετά τη διαδικασία εκπαίδευσής τους και δεν μπορούν να έχουν πρόσβαση σε μη δημόσιες πληροφορίες (όπως δεδομένα εταιρείας). + +Αυτό μπορεί να ξεπεραστεί μέσω του RAG, μιας τεχνικής που ενισχύει το prompt με εξωτερικά δεδομένα με τη μορφή τμημάτων εγγράφων, λαμβάνοντας υπόψη τα όρια μήκους του prompt. Αυτό υποστηρίζεται από εργαλεία βάσεων δεδομένων Vector (όπως το [Azure Vector Search](https://learn.microsoft.com/azure/search/vector-search-overview?WT.mc_id=academic-105485-koreyst)) που ανακτούν τα χρήσιμα τμήματα από προκαθορισμένες πηγές δεδομένων και τα προσθέτουν στο Context του prompt. + +Αυτή η τεχνική είναι πολύ χρήσιμη όταν μια επιχείρηση δεν έχει αρκετά δεδομένα, αρκετό χρόνο ή πόρους για να προσαρμόσει ένα LLM, αλλά θέλει να βελτιώσει την απόδοση σε έναν συγκεκριμένο φόρτο εργασίας και να μειώσει τους κινδύνους παραποιήσεων, δηλαδή παραπλανητικών ή επιβλαβών περιεχομένων. + +### Fine-tuned μοντέλο + +Το fine-tuning είναι μια διαδικασία που αξιοποιεί τη μεταφορά μάθησης για να "προσαρμόσει" το μοντέλο σε μια εργασία downstream ή να λύσει ένα συγκεκριμένο πρόβλημα. Σε αντίθεση με τη few-shot μάθηση και το RAG, οδηγεί στη δημιουργία ενός νέου μοντέλου, με ενημερωμένα βάρη και προκαταλήψεις. Απαιτεί ένα σύνολο παραδειγμάτων εκπαίδευσης που αποτελείται από μία είσοδο (το prompt) και την αντίστοιχη έξοδο (την ολοκλήρωση). + +Αυτή θα ήταν η προτιμώμενη προσέγγιση αν: + +- **Χρήση fine-tuned μοντέλων**. Μια επιχείρηση θα ήθελε να χρησιμοποιήσει fine-tuned λιγότερο ικανές μοντέλα (όπως embedding models) αντί για μοντέλα υψηλής απόδοσης, οδηγώντας σε μια πιο οικονομική και γρήγορη λύση. + +- **Λαμβάνοντας υπόψη την καθυστέρηση**. Η καθυστέρηση είναι σημαντική για μια συγκεκριμένη περίπτωση χρήσης, οπότε δεν είναι δυνατό να χρησιμοποιηθούν πολύ μεγάλα prompts ή ο αριθμός των παραδειγμάτων που πρέπει να μάθει το μοντέλο δεν ταιριάζει με το όριο μήκους του prompt. + +- **Παραμένοντας ενημερωμένοι**. Μια επιχείρηση έχει πολλά δεδομένα υψηλής ποιότητας και ετικέτες αλήθειας και τους πόρους που απαιτούνται για να διατηρήσει αυτά τα δεδομένα ενημερωμένα με την πάροδο του χρόνου. + +### Εκπαιδευμένο μοντέλο + +Η εκπαίδευση ενός LLM από την αρχή είναι αναμφίβολα η πιο δύσκολη και η πιο περίπλοκη προσέγγιση που μπορεί να υιοθετηθεί, απαιτώντας τεράστιες ποσότητες δεδομένων, εξειδικευμένους πόρους και κατάλληλη υπολογιστική ισχύ. Αυτή η επιλογή θα πρέπει να εξεταστεί μόνο σε ένα σενάριο όπου μια επιχείρηση έχει μια περίπτωση χρήσης που αφορά συγκεκριμένο τομέα και μια μεγάλη ποσότητα δεδομένων που επικεντρώνονται στον τομέα. + +## Έλεγχος γνώσεων + +Ποια θα μπορούσε να είναι μια καλή προσέγγιση για τη βελτίωση των αποτελεσμάτων ολοκλήρωσης ενός LLM; + +1. Prompt engineering με context +1. RAG +1. Fine-tuned μοντέλο + +Α:3, αν έχετε τον χρόνο και τους πόρους και δεδομένα υψηλής ποιότητας, το fine-tuning είναι η καλύτερη επιλογή για να παραμείνετε ενημερωμένοι. Ωστόσο, αν θέλετε να βελτιώσετε τα πράγματα και σας λείπει ο χρόνος, αξίζει να εξετάσετε πρώτα το RAG. + +## 🚀 Πρόκληση + +Διαβάστε περισσότερα για το πώς μπορείτε να [χρησιμοποιήσετε το RAG](https://learn.microsoft.com/azure/search/retrieval-augmented-generation-overview?WT.mc_id=academic-105485-koreyst) για την επιχείρησή σας. + +## Καλή δουλειά, συνεχίστε τη μάθηση σας + +Αφού ολοκληρώσετε αυτό το μάθημα, δείτε τη [Συλλογή Μάθησης Γενετικής Τεχνητής Νοημοσύνης](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) για να συνεχίσετε να αναβαθμίζετε τις γνώσεις σας στη Γενετική Τεχνητή Νοημοσύνη! + +Προχωρήστε στο Μάθημα 3, όπου θα εξετάσουμε πώς να [δημιουργούμε με Γενετική Τεχνητή Νοημοσύνη με Υπευθυνότητα](../03-using-generative-ai-responsibly/README.md?WT.mc_id=academic-105485-koreyst)! + +--- + +**Αποποίηση ευθύνης**: +Αυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία αυτόματης μετάφρασης [Co-op Translator](https://github.com/Azure/co-op-translator). Παρόλο που καταβάλλουμε προσπάθειες για ακρίβεια, παρακαλούμε να έχετε υπόψη ότι οι αυτόματες μεταφράσεις ενδέχεται να περιέχουν λάθη ή ανακρίβειες. Το πρωτότυπο έγγραφο στη μητρική του γλώσσα θα πρέπει να θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε ευθύνη για τυχόν παρεξηγήσεις ή εσφαλμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης. \ No newline at end of file diff --git a/translations/el/03-using-generative-ai-responsibly/README.md b/translations/el/03-using-generative-ai-responsibly/README.md index 0cb59a854d..ebbd6df895 100644 --- a/translations/el/03-using-generative-ai-responsibly/README.md +++ b/translations/el/03-using-generative-ai-responsibly/README.md @@ -1,145 +1,145 @@ - -# Χρήση της Γενετικής Τεχνητής Νοημοσύνης με Υπευθυνότητα - -[![Χρήση της Γενετικής Τεχνητής Νοημοσύνης με Υπευθυνότητα](../../../translated_images/03-lesson-banner.1ed56067a452d97709d51f6cc8b6953918b2287132f4909ade2008c936cd4af9.el.png)](https://aka.ms/gen-ai-lesson3-gh?WT.mc_id=academic-105485-koreyst) - -> _Κάντε κλικ στην εικόνα παραπάνω για να δείτε το βίντεο αυτού του μαθήματος_ - -Είναι εύκολο να μαγευτεί κανείς από την Τεχνητή Νοημοσύνη και ειδικά από τη Γενετική Τεχνητή Νοημοσύνη, αλλά πρέπει να σκεφτεί πώς να τη χρησιμοποιήσει με υπευθυνότητα. Πρέπει να λάβετε υπόψη πώς να διασφαλίσετε ότι το αποτέλεσμα είναι δίκαιο, μη βλαβερό και άλλα. Αυτό το κεφάλαιο στοχεύει να σας δώσει το πλαίσιο που αναφέρθηκε, τι πρέπει να σκεφτείτε και πώς να κάνετε ενεργά βήματα για να βελτιώσετε τη χρήση της ΤΝ. - -## Εισαγωγή - -Αυτό το μάθημα θα καλύψει: - -- Γιατί πρέπει να δίνετε προτεραιότητα στην Υπεύθυνη Τεχνητή Νοημοσύνη όταν δημιουργείτε εφαρμογές Γενετικής ΤΝ. -- Βασικές αρχές της Υπεύθυνης ΤΝ και πώς σχετίζονται με τη Γενετική ΤΝ. -- Πώς να εφαρμόσετε αυτές τις αρχές της Υπεύθυνης ΤΝ μέσω στρατηγικής και εργαλείων. - -## Στόχοι Μάθησης - -Μετά την ολοκλήρωση αυτού του μαθήματος θα γνωρίζετε: - -- Τη σημασία της Υπεύθυνης ΤΝ κατά την ανάπτυξη εφαρμογών Γενετικής ΤΝ. -- Πότε να σκεφτείτε και να εφαρμόσετε τις βασικές αρχές της Υπεύθυνης ΤΝ κατά την ανάπτυξη εφαρμογών Γενετικής ΤΝ. -- Ποια εργαλεία και στρατηγικές είναι διαθέσιμα για να εφαρμόσετε την έννοια της Υπεύθυνης ΤΝ στην πράξη. - -## Αρχές της Υπεύθυνης Τεχνητής Νοημοσύνης - -Ο ενθουσιασμός για τη Γενετική ΤΝ δεν ήταν ποτέ μεγαλύτερος. Αυτός ο ενθουσιασμός έχει φέρει πολλούς νέους προγραμματιστές, προσοχή και χρηματοδότηση σε αυτόν τον τομέα. Ενώ αυτό είναι πολύ θετικό για όποιον θέλει να δημιουργήσει προϊόντα και εταιρείες με Γενετική ΤΝ, είναι επίσης σημαντικό να προχωράμε με υπευθυνότητα. - -Καθ’ όλη τη διάρκεια αυτού του μαθήματος, εστιάζουμε στην ανάπτυξη της startup μας και του προϊόντος εκπαίδευσης ΤΝ. Θα χρησιμοποιήσουμε τις αρχές της Υπεύθυνης ΤΝ: Δικαιοσύνη, Συμπερίληψη, Αξιοπιστία/Ασφάλεια, Ασφάλεια & Ιδιωτικότητα, Διαφάνεια και Λογοδοσία. Με αυτές τις αρχές, θα εξερευνήσουμε πώς σχετίζονται με τη χρήση της Γενετικής ΤΝ στα προϊόντα μας. - -## Γιατί να Δώσετε Προτεραιότητα στην Υπεύθυνη ΤΝ - -Κατά την ανάπτυξη ενός προϊόντος, η ανθρωποκεντρική προσέγγιση, κρατώντας το συμφέρον του χρήστη στο επίκεντρο, οδηγεί στα καλύτερα αποτελέσματα. - -Η μοναδικότητα της Γενετικής ΤΝ είναι η ικανότητά της να δημιουργεί χρήσιμες απαντήσεις, πληροφορίες, καθοδήγηση και περιεχόμενο για τους χρήστες. Αυτό μπορεί να γίνει χωρίς πολλές χειροκίνητες ενέργειες, οδηγώντας σε εντυπωσιακά αποτελέσματα. Χωρίς σωστό σχεδιασμό και στρατηγικές, δυστυχώς μπορεί να οδηγήσει και σε βλαβερά αποτελέσματα για τους χρήστες, το προϊόν και την κοινωνία συνολικά. - -Ας δούμε μερικά (αλλά όχι όλα) από αυτά τα πιθανά βλαβερά αποτελέσματα: - -### Παραισθήσεις - -Οι παραισθήσεις είναι ένας όρος που χρησιμοποιείται για να περιγράψει όταν ένα LLM παράγει περιεχόμενο που είναι είτε εντελώς ανορθολογικό είτε γνωρίζουμε ότι είναι λανθασμένο βάσει άλλων πηγών πληροφορίας. - -Ας πάρουμε για παράδειγμα ότι δημιουργούμε μια λειτουργία για την startup μας που επιτρέπει στους φοιτητές να κάνουν ιστορικές ερωτήσεις σε ένα μοντέλο. Ένας φοιτητής ρωτάει: `Ποιος ήταν ο μοναδικός επιζών του Τιτανικού;` - -Το μοντέλο παράγει μια απάντηση όπως η παρακάτω: - -![Prompt saying "Who was the sole survivor of the Titanic"](../../../03-using-generative-ai-responsibly/images/ChatGPT-titanic-survivor-prompt.webp) - -> _(Πηγή: [Flying bisons](https://flyingbisons.com?WT.mc_id=academic-105485-koreyst))_ - -Αυτή είναι μια πολύ σίγουρη και λεπτομερής απάντηση. Δυστυχώς, είναι λανθασμένη. Ακόμα και με μια μικρή έρευνα, κάποιος θα ανακάλυπτε ότι υπήρχαν περισσότεροι από ένας επιζώντες του ναυαγίου του Τιτανικού. Για έναν φοιτητή που μόλις ξεκινά να ερευνά το θέμα, αυτή η απάντηση μπορεί να είναι αρκετά πειστική ώστε να μην αμφισβητηθεί και να θεωρηθεί ως γεγονός. Οι συνέπειες αυτού μπορεί να κάνουν το σύστημα ΤΝ αναξιόπιστο και να επηρεάσουν αρνητικά τη φήμη της startup μας. - -Με κάθε νέα έκδοση οποιουδήποτε LLM, έχουμε δει βελτιώσεις στην απόδοση όσον αφορά τη μείωση των παραισθήσεων. Ακόμα και με αυτή τη βελτίωση, εμείς ως δημιουργοί εφαρμογών και χρήστες πρέπει να παραμένουμε ενήμεροι για αυτούς τους περιορισμούς. - -### Βλαβερό Περιεχόμενο - -Στην προηγούμενη ενότητα καλύψαμε πότε ένα LLM παράγει λανθασμένες ή ανορθόδοξες απαντήσεις. Ένας άλλος κίνδυνος που πρέπει να γνωρίζουμε είναι όταν ένα μοντέλο απαντά με βλαβερό περιεχόμενο. - -Βλαβερό περιεχόμενο ορίζεται ως: - -- Παροχή οδηγιών ή ενθάρρυνση αυτοτραυματισμού ή βλάβης σε συγκεκριμένες ομάδες. -- Μισαλλόδοξο ή υποτιμητικό περιεχόμενο. -- Καθοδήγηση στον σχεδιασμό οποιουδήποτε είδους επίθεσης ή βίαιων ενεργειών. -- Παροχή οδηγιών για εύρεση παράνομου περιεχομένου ή διάπραξη παράνομων πράξεων. -- Εμφάνιση σεξουαλικά ρητού περιεχομένου. - -Για την startup μας, θέλουμε να βεβαιωθούμε ότι έχουμε τα κατάλληλα εργαλεία και στρατηγικές για να αποτρέψουμε την εμφάνιση αυτού του είδους περιεχομένου στους φοιτητές. - -### Έλλειψη Δικαιοσύνης - -Η δικαιοσύνη ορίζεται ως «η διασφάλιση ότι ένα σύστημα ΤΝ είναι απαλλαγμένο από προκαταλήψεις και διακρίσεις και ότι αντιμετωπίζει όλους δίκαια και ισότιμα». Στον κόσμο της Γενετικής ΤΝ, θέλουμε να διασφαλίσουμε ότι οι αποκλειστικές κοσμοθεωρίες για περιθωριοποιημένες ομάδες δεν ενισχύονται από τα αποτελέσματα του μοντέλου. - -Αυτού του είδους τα αποτελέσματα δεν είναι μόνο καταστροφικά για τη δημιουργία θετικών εμπειριών προϊόντος για τους χρήστες μας, αλλά προκαλούν και περαιτέρω κοινωνική βλάβη. Ως δημιουργοί εφαρμογών, πρέπει πάντα να έχουμε στο μυαλό μας ένα ευρύ και ποικιλόμορφο κοινό χρηστών όταν αναπτύσσουμε λύσεις με Γενετική ΤΝ. - -## Πώς να Χρησιμοποιήσετε τη Γενετική ΤΝ με Υπευθυνότητα - -Τώρα που έχουμε αναγνωρίσει τη σημασία της Υπεύθυνης Γενετικής ΤΝ, ας δούμε 4 βήματα που μπορούμε να ακολουθήσουμε για να δημιουργήσουμε τις λύσεις ΤΝ με υπευθυνότητα: - -![Mitigate Cycle](../../../translated_images/mitigate-cycle.babcd5a5658e1775d5f2cb47f2ff305cca090400a72d98d0f9e57e9db5637c72.el.png) - -### Μέτρηση Πιθανών Βλαβών - -Στον έλεγχο λογισμικού, δοκιμάζουμε τις αναμενόμενες ενέργειες ενός χρήστη σε μια εφαρμογή. Ομοίως, η δοκιμή ενός ποικίλου συνόλου prompts που οι χρήστες πιθανότατα θα χρησιμοποιήσουν είναι ένας καλός τρόπος για να μετρήσουμε πιθανές βλάβες. - -Επειδή η startup μας αναπτύσσει ένα εκπαιδευτικό προϊόν, θα ήταν καλό να προετοιμάσουμε μια λίστα με prompts σχετικά με την εκπαίδευση. Αυτό μπορεί να καλύπτει ένα συγκεκριμένο μάθημα, ιστορικά γεγονότα και prompts για τη ζωή των φοιτητών. - -### Μείωση Πιθανών Βλαβών - -Ήρθε η ώρα να βρούμε τρόπους για να αποτρέψουμε ή να περιορίσουμε τις πιθανές βλάβες που προκαλούνται από το μοντέλο και τις απαντήσεις του. Μπορούμε να το δούμε σε 4 διαφορετικά επίπεδα: - -![Mitigation Layers](../../../translated_images/mitigation-layers.377215120b9a1159a8c3982c6bbcf41b6adf8c8fa04ce35cbaeeb13b4979cdfc.el.png) - -- **Μοντέλο**. Επιλογή του κατάλληλου μοντέλου για τη σωστή περίπτωση χρήσης. Μεγαλύτερα και πιο σύνθετα μοντέλα όπως το GPT-4 μπορεί να αυξήσουν τον κίνδυνο βλαβερού περιεχομένου όταν εφαρμόζονται σε μικρότερες και πιο συγκεκριμένες περιπτώσεις. Η χρήση των δεδομένων εκπαίδευσης για fine-tuning μειώνει επίσης τον κίνδυνο βλαβερού περιεχομένου. - -- **Σύστημα Ασφαλείας**. Ένα σύστημα ασφαλείας είναι ένα σύνολο εργαλείων και ρυθμίσεων στην πλατφόρμα που εξυπηρετεί το μοντέλο και βοηθά στη μείωση της βλάβης. Ένα παράδειγμα είναι το σύστημα φιλτραρίσματος περιεχομένου στην υπηρεσία Azure OpenAI. Τα συστήματα πρέπει επίσης να ανιχνεύουν επιθέσεις jailbreak και ανεπιθύμητες δραστηριότητες όπως αιτήματα από bots. - -- **Μεταπροτροπή (Metaprompt)**. Οι μεταπροτροπές και η θεμελίωση (grounding) είναι τρόποι με τους οποίους μπορούμε να κατευθύνουμε ή να περιορίσουμε το μοντέλο βάσει συγκεκριμένων συμπεριφορών και πληροφοριών. Αυτό μπορεί να γίνει με τη χρήση εισόδων συστήματος για τον ορισμό ορίων του μοντέλου. Επιπλέον, παρέχοντας αποτελέσματα που είναι πιο σχετικά με το πεδίο ή το αντικείμενο του συστήματος. - -Μπορεί επίσης να χρησιμοποιηθούν τεχνικές όπως το Retrieval Augmented Generation (RAG) ώστε το μοντέλο να αντλεί πληροφορίες μόνο από μια επιλογή αξιόπιστων πηγών. Υπάρχει μάθημα αργότερα σε αυτό το μάθημα για [την ανάπτυξη εφαρμογών αναζήτησης](../08-building-search-applications/README.md?WT.mc_id=academic-105485-koreyst) - -- **Εμπειρία Χρήστη**. Το τελικό επίπεδο είναι όπου ο χρήστης αλληλεπιδρά άμεσα με το μοντέλο μέσω της διεπαφής της εφαρμογής μας. Με αυτόν τον τρόπο μπορούμε να σχεδιάσουμε το UI/UX ώστε να περιορίσουμε τον χρήστη στους τύπους εισόδων που μπορεί να στείλει στο μοντέλο, καθώς και το κείμενο ή τις εικόνες που εμφανίζονται στον χρήστη. Κατά την ανάπτυξη της εφαρμογής ΤΝ, πρέπει επίσης να είμαστε διαφανείς σχετικά με το τι μπορεί και τι δεν μπορεί να κάνει η εφαρμογή Γενετικής ΤΝ. - -Έχουμε ολόκληρο μάθημα αφιερωμένο στο [Σχεδιασμό UX για Εφαρμογές ΤΝ](../12-designing-ux-for-ai-applications/README.md?WT.mc_id=academic-105485-koreyst) - -- **Αξιολόγηση μοντέλου**. Η εργασία με LLM μπορεί να είναι δύσκολη επειδή δεν έχουμε πάντα έλεγχο στα δεδομένα με τα οποία εκπαιδεύτηκε το μοντέλο. Παρ’ όλα αυτά, πρέπει πάντα να αξιολογούμε την απόδοση και τα αποτελέσματα του μοντέλου. Είναι σημαντικό να μετράμε την ακρίβεια, την ομοιότητα, τη θεμελίωση και τη συνάφεια του αποτελέσματος. Αυτό βοηθά στην παροχή διαφάνειας και εμπιστοσύνης σε ενδιαφερόμενους και χρήστες. - -### Λειτουργία μιας Υπεύθυνης Λύσης Γενετικής ΤΝ - -Η δημιουργία μιας λειτουργικής πρακτικής γύρω από τις εφαρμογές ΤΝ είναι το τελικό στάδιο. Αυτό περιλαμβάνει συνεργασία με άλλα τμήματα της startup μας όπως το Νομικό και την Ασφάλεια για να διασφαλίσουμε τη συμμόρφωση με όλες τις κανονιστικές πολιτικές. Πριν από την κυκλοφορία, θέλουμε επίσης να δημιουργήσουμε σχέδια για την παράδοση, τη διαχείριση περιστατικών και την επαναφορά, ώστε να αποτρέψουμε οποιαδήποτε βλάβη στους χρήστες μας από την ανάπτυξη προβλημάτων. - -## Εργαλεία - -Παρόλο που η ανάπτυξη λύσεων Υπεύθυνης ΤΝ μπορεί να φαίνεται απαιτητική, είναι μια προσπάθεια που αξίζει τον κόπο. Καθώς ο τομέας της Γενετικής ΤΝ αναπτύσσεται, περισσότερα εργαλεία που βοηθούν τους προγραμματιστές να ενσωματώνουν υπευθυνότητα στις ροές εργασίας τους θα ωριμάσουν. Για παράδειγμα, το [Azure AI Content Safety](https://learn.microsoft.com/azure/ai-services/content-safety/overview?WT.mc_id=academic-105485-koreyst) μπορεί να βοηθήσει στην ανίχνευση βλαβερού περιεχομένου και εικόνων μέσω ενός API αιτήματος. - -## Έλεγχος Γνώσεων - -Ποια είναι μερικά πράγματα που πρέπει να προσέξετε για να διασφαλίσετε υπεύθυνη χρήση της ΤΝ; - -1. Ότι η απάντηση είναι σωστή. -1. Η βλαβερή χρήση, ότι η ΤΝ δεν χρησιμοποιείται για εγκληματικούς σκοπούς. -1. Η διασφάλιση ότι η ΤΝ είναι απαλλαγμένη από προκαταλήψεις και διακρίσεις. - -Α: Οι απαντήσεις 2 και 3 είναι σωστές. Η Υπεύθυνη ΤΝ σας βοηθά να σκεφτείτε πώς να μειώσετε τις βλαβερές επιπτώσεις, τις προκαταλήψεις και άλλα. - -## 🚀 Πρόκληση - -Διαβάστε για το [Azure AI Content Safety](https://learn.microsoft.com/azure/ai-services/content-safety/overview?WT.mc_id=academic-105485-koreyst) και δείτε τι μπορείτε να υιοθετήσετε για τη δική σας χρήση. - -## Μπράβο, Συνεχίστε τη Μάθησή σας - -Μετά την ολοκλήρωση αυτού του μαθήματος, ρίξτε μια ματιά στη [συλλογή μάθησης για Γενετική ΤΝ](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) για να συνεχίσετε να εξελίσσετε τις γνώσεις σας στη Γενετική ΤΝ! - -Πηγαίνετε στο Μάθημα 4 όπου θα δούμε τα [Βασικά του Prompt Engineering](../04-prompt-engineering-fundamentals/README.md?WT.mc_id=academic-105485-koreyst)! - -**Αποποίηση ευθυνών**: -Αυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία αυτόματης μετάφρασης AI [Co-op Translator](https://github.com/Azure/co-op-translator). Παρόλο που επιδιώκουμε την ακρίβεια, παρακαλούμε να έχετε υπόψη ότι οι αυτόματες μεταφράσεις ενδέχεται να περιέχουν λάθη ή ανακρίβειες. Το πρωτότυπο έγγραφο στη γλώσσα του θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε ευθύνη για τυχόν παρεξηγήσεις ή λανθασμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης. \ No newline at end of file + +# Χρήση της Γενετικής Τεχνητής Νοημοσύνης Υπεύθυνα + +[![Χρήση της Γενετικής Τεχνητής Νοημοσύνης Υπεύθυνα](../../../translated_images/03-lesson-banner.1ed56067a452d97709d51f6cc8b6953918b2287132f4909ade2008c936cd4af9.el.png)](https://youtu.be/YOp-e1GjZdA?si=7Wv4wu3x44L1DCVj) + +> _Κάντε κλικ στην εικόνα παραπάνω για να δείτε το βίντεο αυτού του μαθήματος_ + +Είναι εύκολο να εντυπωσιαστεί κανείς από την Τεχνητή Νοημοσύνη και ειδικά από τη Γενετική Τεχνητή Νοημοσύνη, αλλά πρέπει να σκεφτείτε πώς να τη χρησιμοποιήσετε υπεύθυνα. Πρέπει να λάβετε υπόψη σας πώς να διασφαλίσετε ότι τα αποτελέσματα είναι δίκαια, μη επιβλαβή και πολλά άλλα. Αυτό το κεφάλαιο στοχεύει να σας παρέχει το απαραίτητο πλαίσιο, τι να λάβετε υπόψη και πώς να κάνετε ενεργά βήματα για να βελτιώσετε τη χρήση της Τεχνητής Νοημοσύνης. + +## Εισαγωγή + +Αυτό το μάθημα θα καλύψει: + +- Γιατί πρέπει να δώσετε προτεραιότητα στην Υπεύθυνη Τεχνητή Νοημοσύνη όταν δημιουργείτε εφαρμογές Γενετικής Τεχνητής Νοημοσύνης. +- Βασικές αρχές της Υπεύθυνης Τεχνητής Νοημοσύνης και πώς σχετίζονται με τη Γενετική Τεχνητή Νοημοσύνη. +- Πώς να εφαρμόσετε αυτές τις αρχές της Υπεύθυνης Τεχνητής Νοημοσύνης μέσω στρατηγικής και εργαλείων. + +## Στόχοι Μάθησης + +Μετά την ολοκλήρωση αυτού του μαθήματος θα γνωρίζετε: + +- Τη σημασία της Υπεύθυνης Τεχνητής Νοημοσύνης όταν δημιουργείτε εφαρμογές Γενετικής Τεχνητής Νοημοσύνης. +- Πότε να σκεφτείτε και να εφαρμόσετε τις βασικές αρχές της Υπεύθυνης Τεχνητής Νοημοσύνης όταν δημιουργείτε εφαρμογές Γενετικής Τεχνητής Νοημοσύνης. +- Ποια εργαλεία και στρατηγικές είναι διαθέσιμα για να εφαρμόσετε την έννοια της Υπεύθυνης Τεχνητής Νοημοσύνης. + +## Αρχές Υπεύθυνης Τεχνητής Νοημοσύνης + +Ο ενθουσιασμός για τη Γενετική Τεχνητή Νοημοσύνη δεν ήταν ποτέ μεγαλύτερος. Αυτός ο ενθουσιασμός έχει φέρει πολλούς νέους προγραμματιστές, προσοχή και χρηματοδότηση σε αυτόν τον τομέα. Παρόλο που αυτό είναι πολύ θετικό για όσους θέλουν να δημιουργήσουν προϊόντα και εταιρείες χρησιμοποιώντας τη Γενετική Τεχνητή Νοημοσύνη, είναι επίσης σημαντικό να προχωρήσουμε υπεύθυνα. + +Καθ' όλη τη διάρκεια αυτού του μαθήματος, επικεντρωνόμαστε στη δημιουργία της startup μας και του εκπαιδευτικού προϊόντος Τεχνητής Νοημοσύνης. Θα χρησιμοποιήσουμε τις αρχές της Υπεύθυνης Τεχνητής Νοημοσύνης: Δικαιοσύνη, Συμπερίληψη, Αξιοπιστία/Ασφάλεια, Ασφάλεια & Ιδιωτικότητα, Διαφάνεια και Λογοδοσία. Με αυτές τις αρχές, θα εξερευνήσουμε πώς σχετίζονται με τη χρήση της Γενετικής Τεχνητής Νοημοσύνης στα προϊόντα μας. + +## Γιατί Πρέπει να Δώσετε Προτεραιότητα στην Υπεύθυνη Τεχνητή Νοημοσύνη + +Όταν δημιουργείτε ένα προϊόν, η προσέγγιση που επικεντρώνεται στον άνθρωπο, έχοντας κατά νου το καλύτερο συμφέρον του χρήστη, οδηγεί στα καλύτερα αποτελέσματα. + +Η μοναδικότητα της Γενετικής Τεχνητής Νοημοσύνης είναι η δύναμή της να δημιουργεί χρήσιμες απαντήσεις, πληροφορίες, καθοδήγηση και περιεχόμενο για τους χρήστες. Αυτό μπορεί να γίνει χωρίς πολλά χειροκίνητα βήματα, κάτι που μπορεί να οδηγήσει σε πολύ εντυπωσιακά αποτελέσματα. Χωρίς σωστό σχεδιασμό και στρατηγικές, μπορεί δυστυχώς να οδηγήσει σε επιβλαβή αποτελέσματα για τους χρήστες σας, το προϊόν σας και την κοινωνία συνολικά. + +Ας δούμε μερικά (αλλά όχι όλα) από αυτά τα πιθανά επιβλαβή αποτελέσματα: + +### Παραισθήσεις + +Οι παραισθήσεις είναι ένας όρος που χρησιμοποιείται για να περιγράψει όταν ένα LLM παράγει περιεχόμενο που είναι είτε εντελώς παράλογο είτε κάτι που γνωρίζουμε ότι είναι λανθασμένο βάσει άλλων πηγών πληροφοριών. + +Ας πάρουμε για παράδειγμα ότι δημιουργούμε μια λειτουργία για τη startup μας που επιτρέπει στους μαθητές να κάνουν ιστορικές ερωτήσεις σε ένα μοντέλο. Ένας μαθητής ρωτά την ερώτηση `Ποιος ήταν ο μοναδικός επιζών του Τιτανικού;` + +Το μοντέλο παράγει μια απάντηση όπως η παρακάτω: + +![Ερώτηση "Ποιος ήταν ο μοναδικός επιζών του Τιτανικού"](../../../03-using-generative-ai-responsibly/images/ChatGPT-titanic-survivor-prompt.webp) + +> _(Πηγή: [Flying bisons](https://flyingbisons.com?WT.mc_id=academic-105485-koreyst))_ + +Αυτή είναι μια πολύ σίγουρη και λεπτομερής απάντηση. Δυστυχώς, είναι λανθασμένη. Ακόμη και με μια ελάχιστη ποσότητα έρευνας, κάποιος θα ανακαλύψει ότι υπήρχαν περισσότεροι από ένας επιζώντες από την καταστροφή του Τιτανικού. Για έναν μαθητή που μόλις ξεκινά να ερευνά αυτό το θέμα, αυτή η απάντηση μπορεί να είναι αρκετά πειστική ώστε να μην αμφισβητηθεί και να θεωρηθεί ως γεγονός. Οι συνέπειες αυτού μπορεί να οδηγήσουν το σύστημα Τεχνητής Νοημοσύνης να είναι αναξιόπιστο και να επηρεάσει αρνητικά τη φήμη της startup μας. + +Με κάθε επανάληψη οποιουδήποτε LLM, έχουμε δει βελτιώσεις στην απόδοση γύρω από την ελαχιστοποίηση των παραισθήσεων. Ακόμη και με αυτή τη βελτίωση, εμείς ως δημιουργοί εφαρμογών και χρήστες πρέπει να παραμένουμε ενήμεροι για αυτούς τους περιορισμούς. + +### Επιβλαβές Περιεχόμενο + +Καλύψαμε στην προηγούμενη ενότητα όταν ένα LLM παράγει λανθασμένες ή παράλογες απαντήσεις. Ένας άλλος κίνδυνος που πρέπει να γνωρίζουμε είναι όταν ένα μοντέλο απαντά με επιβλαβές περιεχόμενο. + +Το επιβλαβές περιεχόμενο μπορεί να οριστεί ως: + +- Παροχή οδηγιών ή ενθάρρυνση αυτοτραυματισμού ή βλάβης σε συγκεκριμένες ομάδες. +- Μίσος ή υποτιμητικό περιεχόμενο. +- Καθοδήγηση για τον σχεδιασμό οποιουδήποτε τύπου επίθεσης ή βίαιων πράξεων. +- Παροχή οδηγιών για το πώς να βρει κανείς παράνομο περιεχόμενο ή να διαπράξει παράνομες πράξεις. +- Εμφάνιση σεξουαλικά ρητού περιεχομένου. + +Για τη startup μας, θέλουμε να βεβαιωθούμε ότι έχουμε τα κατάλληλα εργαλεία και στρατηγικές για να αποτρέψουμε την εμφάνιση αυτού του είδους περιεχομένου στους μαθητές. + +### Έλλειψη Δικαιοσύνης + +Η δικαιοσύνη ορίζεται ως «η διασφάλιση ότι ένα σύστημα Τεχνητής Νοημοσύνης είναι απαλλαγμένο από προκαταλήψεις και διακρίσεις και ότι αντιμετωπίζει όλους δίκαια και ισότιμα». Στον κόσμο της Γενετικής Τεχνητής Νοημοσύνης, θέλουμε να διασφαλίσουμε ότι οι αποκλειστικές κοσμοθεωρίες των περιθωριοποιημένων ομάδων δεν ενισχύονται από την έξοδο του μοντέλου. + +Αυτοί οι τύποι εξόδων δεν είναι μόνο καταστροφικοί για τη δημιουργία θετικών εμπειριών προϊόντων για τους χρήστες μας, αλλά προκαλούν επίσης περαιτέρω κοινωνική βλάβη. Ως δημιουργοί εφαρμογών, πρέπει πάντα να έχουμε κατά νου μια ευρεία και ποικιλόμορφη βάση χρηστών όταν δημιουργούμε λύσεις με Γενετική Τεχνητή Νοημοσύνη. + +## Πώς να Χρησιμοποιήσετε τη Γενετική Τεχνητή Νοημοσύνη Υπεύθυνα + +Τώρα που έχουμε εντοπίσει τη σημασία της Υπεύθυνης Γενετικής Τεχνητής Νοημοσύνης, ας δούμε 4 βήματα που μπορούμε να κάνουμε για να δημιουργήσουμε τις λύσεις Τεχνητής Νοημοσύνης μας υπεύθυνα: + +![Κύκλος Μείωσης](../../../translated_images/mitigate-cycle.babcd5a5658e1775d5f2cb47f2ff305cca090400a72d98d0f9e57e9db5637c72.el.png) + +### Μέτρηση Πιθανών Βλαβών + +Στον έλεγχο λογισμικού, δοκιμάζουμε τις αναμενόμενες ενέργειες ενός χρήστη σε μια εφαρμογή. Παρομοίως, η δοκιμή ενός ποικίλου συνόλου ερωτημάτων που είναι πιο πιθανό να χρησιμοποιήσουν οι χρήστες είναι ένας καλός τρόπος για να μετρήσουμε πιθανές βλάβες. + +Δεδομένου ότι η startup μας δημιουργεί ένα εκπαιδευτικό προϊόν, θα ήταν καλό να προετοιμάσουμε μια λίστα με ερωτήματα που σχετίζονται με την εκπαίδευση. Αυτό θα μπορούσε να καλύπτει ένα συγκεκριμένο θέμα, ιστορικά γεγονότα και ερωτήματα σχετικά με τη ζωή των μαθητών. + +### Μείωση Πιθανών Βλαβών + +Ήρθε η ώρα να βρούμε τρόπους όπου μπορούμε να αποτρέψουμε ή να περιορίσουμε την πιθανή βλάβη που προκαλείται από το μοντέλο και τις απαντήσεις του. Μπορούμε να το δούμε σε 4 διαφορετικά επίπεδα: + +![Επίπεδα Μείωσης](../../../translated_images/mitigation-layers.377215120b9a1159a8c3982c6bbcf41b6adf8c8fa04ce35cbaeeb13b4979cdfc.el.png) + +- **Μοντέλο**. Επιλέγοντας το σωστό μοντέλο για τη σωστή περίπτωση χρήσης. Μεγαλύτερα και πιο σύνθετα μοντέλα όπως το GPT-4 μπορεί να προκαλέσουν μεγαλύτερο κίνδυνο επιβλαβούς περιεχομένου όταν εφαρμόζονται σε μικρότερες και πιο συγκεκριμένες περιπτώσεις χρήσης. Η χρήση των δεδομένων εκπαίδευσής σας για λεπτομερή προσαρμογή μειώνει επίσης τον κίνδυνο επιβλαβούς περιεχομένου. + +- **Σύστημα Ασφάλειας**. Ένα σύστημα ασφάλειας είναι ένα σύνολο εργαλείων και ρυθμίσεων στην πλατφόρμα που εξυπηρετεί το μοντέλο και βοηθά στη μείωση της βλάβης. Ένα παράδειγμα αυτού είναι το σύστημα φιλτραρίσματος περιεχομένου στην υπηρεσία Azure OpenAI. Τα συστήματα πρέπει επίσης να ανιχνεύουν επιθέσεις jailbreak και ανεπιθύμητη δραστηριότητα όπως αιτήματα από bots. + +- **Μεταπροτροπή**. Οι μεταπροτροπές και η θεμελίωση είναι τρόποι με τους οποίους μπορούμε να κατευθύνουμε ή να περιορίσουμε το μοντέλο βάσει συγκεκριμένων συμπεριφορών και πληροφοριών. Αυτό θα μπορούσε να είναι η χρήση εισόδων συστήματος για τον ορισμό συγκεκριμένων ορίων του μοντέλου. Επιπλέον, η παροχή εξόδων που είναι πιο σχετικές με το πεδίο ή τον τομέα του συστήματος. + +Μπορεί επίσης να είναι η χρήση τεχνικών όπως η Ανάκτηση Ενισχυμένης Γενετικής (RAG) για να έχει το μοντέλο πρόσβαση μόνο σε πληροφορίες από μια επιλογή αξιόπιστων πηγών. Υπάρχει ένα μάθημα αργότερα σε αυτό το μάθημα για [δημιουργία εφαρμογών αναζήτησης](../08-building-search-applications/README.md?WT.mc_id=academic-105485-koreyst) + +- **Εμπειρία Χρήστη**. Το τελικό επίπεδο είναι εκεί όπου ο χρήστης αλληλεπιδρά άμεσα με το μοντέλο μέσω της διεπαφής της εφαρμογής μας με κάποιο τρόπο. Με αυτόν τον τρόπο μπορούμε να σχεδιάσουμε το UI/UX για να περιορίσουμε τον χρήστη στους τύπους εισόδων που μπορεί να στείλει στο μοντέλο καθώς και το κείμενο ή τις εικόνες που εμφανίζονται στον χρήστη. Κατά την ανάπτυξη της εφαρμογής Τεχνητής Νοημοσύνης, πρέπει επίσης να είμαστε διαφανείς σχετικά με το τι μπορεί και τι δεν μπορεί να κάνει η εφαρμογή Γενετικής Τεχνητής Νοημοσύνης μας. + +Έχουμε ένα ολόκληρο μάθημα αφιερωμένο στο [Σχεδιασμό UX για Εφαρμογές Τεχνητής Νοημοσύνης](../12-designing-ux-for-ai-applications/README.md?WT.mc_id=academic-105485-koreyst) + +- **Αξιολόγηση μοντέλου**. Η εργασία με LLMs μπορεί να είναι δύσκολη επειδή δεν έχουμε πάντα έλεγχο στα δεδομένα που εκπαιδεύτηκε το μοντέλο. Παρ' όλα αυτά, πρέπει πάντα να αξιολογούμε την απόδοση και τα αποτελέσματα του μοντέλου. Είναι ακόμα σημαντικό να μετράμε την ακρίβεια, την ομοιότητα, τη θεμελίωση και τη συνάφεια των εξόδων του μοντέλου. Αυτό βοηθά στην παροχή διαφάνειας και εμπιστοσύνης στους ενδιαφερόμενους και στους χρήστες. + +### Λειτουργία Υπεύθυνης Λύσης Γενετικής Τεχνητής Νοημοσύνης + +Η δημιουργία μιας λειτουργικής πρακτικής γύρω από τις εφαρμογές Τεχνητής Νοημοσύνης σας είναι το τελικό στάδιο. Αυτό περιλαμβάνει τη συνεργασία με άλλα μέρη της startup μας όπως το Νομικό και την Ασφάλεια για να διασφαλίσουμε ότι συμμορφωνόμαστε με όλες τις κανονιστικές πολιτικές. Πριν από την κυκλοφορία, θέλουμε επίσης να δημιουργήσουμε σχέδια γύρω από την παράδοση, τη διαχείριση περιστατικών και την αναίρεση για να αποτρέψουμε οποιαδήποτε βλάβη στους χρήστες μας από την ανάπτυξη. + +## Εργαλεία + +Ενώ η εργασία για την ανάπτυξη λύσεων Υπεύθυνης Τεχνητής Νοημοσύνης μπορεί να φαίνεται πολύπλοκη, είναι μια εργασία που αξίζει τον κόπο. Καθώς ο τομέας της Γενετικής Τεχνητής Νοημοσύνης μεγαλώνει, περισσότερα εργαλεία για να βοηθήσουν τους προγραμματιστές να ενσωματώσουν αποτελεσματικά την υπευθυνότητα στις ροές εργασίας τους θα ωριμάσουν. Για παράδειγμα, το [Azure AI Content Safety](https://learn.microsoft.com/azure/ai-services/content-safety/overview?WT.mc_id=academic-105485-koreyst) μπορεί να βοηθήσει στην ανίχνευση επιβλαβούς περιεχομένου και εικόνων μέσω ενός αιτήματος API. + +## Έλεγχος Γνώσεων + +Ποια είναι μερικά πράγματα που πρέπει να προσέξετε για να διασφαλίσετε την υπεύθυνη χρήση της Τεχνητής Νοημοσύνης; + +1. Ότι η απάντηση είναι σωστή. +1. Επιβλαβής χρήση, ότι η Τεχνητή Νοημοσύνη δεν χρησιμοποιείται για εγκληματικούς σκοπούς. +1. Διασφάλιση ότι η Τεχνητή Νοημοσύνη είναι απαλλαγμένη από προκαταλήψεις και διακρίσεις. + +Α: Οι 2 και 3 είναι σωστές. Η Υπεύθυνη Τεχνητή Νοημοσύνη σας βοηθά να εξετάσετε πώς να μειώσετε τις επιβλαβείς επιπτώσεις και τις προκαταλήψεις και πολλά άλλα. + +## 🚀 Πρόκληση + +Διαβάστε για το [Azure AI Content Safety](https://learn.microsoft.com/azure/ai-services/content-safety/overview?WT.mc_id=academic-105485-koreyst) και δείτε τι μπορείτε να υιοθετήσετε για τη χρήση σας. + +## Εξαιρετική Δουλειά, Συνεχίστε τη Μάθηση + +Μετά την ολοκλήρωση αυτού του μαθήματος, δείτε τη [Συλλογή Μάθησης Γενε + +--- + +**Αποποίηση ευθύνης**: +Αυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία μετάφρασης AI [Co-op Translator](https://github.com/Azure/co-op-translator). Παρόλο που καταβάλλουμε προσπάθειες για ακρίβεια, παρακαλούμε να έχετε υπόψη ότι οι αυτοματοποιημένες μεταφράσεις ενδέχεται να περιέχουν λάθη ή ανακρίβειες. Το πρωτότυπο έγγραφο στη μητρική του γλώσσα θα πρέπει να θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε ευθύνη για τυχόν παρεξηγήσεις ή εσφαλμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης. \ No newline at end of file diff --git a/translations/el/04-prompt-engineering-fundamentals/README.md b/translations/el/04-prompt-engineering-fundamentals/README.md index 442a72c39f..905511ef5c 100644 --- a/translations/el/04-prompt-engineering-fundamentals/README.md +++ b/translations/el/04-prompt-engineering-fundamentals/README.md @@ -1,69 +1,69 @@ # Θεμελιώδεις Αρχές της Μηχανικής Προτροπών -[![Θεμελιώδεις Αρχές της Μηχανικής Προτροπών](../../../translated_images/04-lesson-banner.a2c90deba7fedacda69f35b41636a8951ec91c2e33f5420b1254534ac85bc18e.el.png)](https://aka.ms/gen-ai-lesson4-gh?WT.mc_id=academic-105485-koreyst) +[![Θεμελιώδεις Αρχές της Μηχανικής Προτροπών](../../../translated_images/04-lesson-banner.a2c90deba7fedacda69f35b41636a8951ec91c2e33f5420b1254534ac85bc18e.el.png)](https://youtu.be/GElCu2kUlRs?si=qrXsBvXnCW12epb8) ## Εισαγωγή -Αυτό το κεφάλαιο καλύπτει βασικές έννοιες και τεχνικές για τη δημιουργία αποτελεσματικών προτροπών σε μοντέλα γενετικής τεχνητής νοημοσύνης. Ο τρόπος που γράφετε την προτροπή σας σε ένα LLM έχει σημασία. Μια προσεκτικά σχεδιασμένη προτροπή μπορεί να επιτύχει καλύτερη ποιότητα απαντήσεων. Αλλά τι ακριβώς σημαίνουν όροι όπως _προτροπή_ και _μηχανική προτροπών_; Και πώς μπορώ να βελτιώσω την _είσοδο προτροπής_ που στέλνω στο LLM; Αυτά είναι τα ερωτήματα που θα προσπαθήσουμε να απαντήσουμε σε αυτό το κεφάλαιο και το επόμενο. +Αυτό το κεφάλαιο καλύπτει βασικές έννοιες και τεχνικές για τη δημιουργία αποτελεσματικών προτροπών σε μοντέλα γενετικής τεχνητής νοημοσύνης. Ο τρόπος με τον οποίο γράφετε την προτροπή σας σε ένα LLM έχει σημασία. Μια προσεκτικά σχεδιασμένη προτροπή μπορεί να οδηγήσει σε καλύτερης ποιότητας απαντήσεις. Αλλά τι ακριβώς σημαίνουν όροι όπως _προτροπή_ και _μηχανική προτροπών_; Και πώς μπορώ να βελτιώσω την _εισαγωγή προτροπής_ που στέλνω στο LLM; Αυτά είναι τα ερωτήματα που θα προσπαθήσουμε να απαντήσουμε σε αυτό το κεφάλαιο και το επόμενο. -Η _Γενετική Τεχνητή Νοημοσύνη_ είναι ικανή να δημιουργεί νέο περιεχόμενο (π.χ., κείμενο, εικόνες, ήχο, κώδικα κ.λπ.) ως απάντηση σε αιτήματα χρηστών. Το επιτυγχάνει χρησιμοποιώντας _Μεγάλα Γλωσσικά Μοντέλα_ όπως η σειρά GPT ("Generative Pre-trained Transformer") της OpenAI, που είναι εκπαιδευμένα για χρήση φυσικής γλώσσας και κώδικα. +Η _Γενετική Τεχνητή Νοημοσύνη_ είναι ικανή να δημιουργεί νέο περιεχόμενο (π.χ., κείμενο, εικόνες, ήχο, κώδικα κ.λπ.) ως απάντηση σε αιτήματα χρηστών. Το επιτυγχάνει χρησιμοποιώντας _Μεγάλα Γλωσσικά Μοντέλα_ όπως η σειρά GPT ("Generative Pre-trained Transformer") της OpenAI, που είναι εκπαιδευμένα να χρησιμοποιούν φυσική γλώσσα και κώδικα. -Οι χρήστες μπορούν πλέον να αλληλεπιδρούν με αυτά τα μοντέλα χρησιμοποιώντας γνωστά πρότυπα όπως η συνομιλία, χωρίς να χρειάζονται τεχνική εξειδίκευση ή εκπαίδευση. Τα μοντέλα βασίζονται στις _προτροπές_ - οι χρήστες στέλνουν ένα κείμενο (προτροπή) και λαμβάνουν την απάντηση της τεχνητής νοημοσύνης (ολοκλήρωση). Στη συνέχεια, μπορούν να "συνομιλήσουν με την τεχνητή νοημοσύνη" επαναληπτικά, σε συνομιλίες πολλών γύρων, βελτιώνοντας την προτροπή τους μέχρι η απάντηση να ανταποκρίνεται στις προσδοκίες τους. +Οι χρήστες μπορούν πλέον να αλληλεπιδρούν με αυτά τα μοντέλα χρησιμοποιώντας γνωστά παραδείγματα όπως η συνομιλία, χωρίς να χρειάζονται τεχνική εξειδίκευση ή εκπαίδευση. Τα μοντέλα είναι _βασισμένα σε προτροπές_ - οι χρήστες στέλνουν μια εισαγωγή κειμένου (προτροπή) και λαμβάνουν την απάντηση της τεχνητής νοημοσύνης (ολοκλήρωση). Στη συνέχεια, μπορούν να "συνομιλήσουν με την τεχνητή νοημοσύνη" επαναληπτικά, σε συνομιλίες πολλαπλών γύρων, βελτιώνοντας την προτροπή τους μέχρι η απάντηση να ανταποκρίνεται στις προσδοκίες τους. Οι "προτροπές" γίνονται πλέον η κύρια _διεπαφή προγραμματισμού_ για εφαρμογές γενετικής τεχνητής νοημοσύνης, καθοδηγώντας τα μοντέλα για το τι πρέπει να κάνουν και επηρεάζοντας την ποιότητα των απαντήσεων που επιστρέφονται. Η "Μηχανική Προτροπών" είναι ένας ταχέως αναπτυσσόμενος τομέας μελέτης που επικεντρώνεται στον _σχεδιασμό και τη βελτιστοποίηση_ των προτροπών για την παροχή συνεπών και ποιοτικών απαντήσεων σε μεγάλη κλίμακα. ## Στόχοι Μάθησης -Σε αυτό το μάθημα, θα μάθουμε τι είναι η Μηχανική Προτροπών, γιατί έχει σημασία και πώς μπορούμε να δημιουργήσουμε πιο αποτελεσματικές προτροπές για ένα συγκεκριμένο μοντέλο και στόχο εφαρμογής. Θα κατανοήσουμε βασικές έννοιες και βέλτιστες πρακτικές για τη μηχανική προτροπών - και θα μάθουμε για ένα διαδραστικό περιβάλλον "sandbox" σε Jupyter Notebooks όπου μπορούμε να δούμε αυτές τις έννοιες να εφαρμόζονται σε πραγματικά παραδείγματα. +Σε αυτό το μάθημα, θα μάθουμε τι είναι η Μηχανική Προτροπών, γιατί είναι σημαντική και πώς μπορούμε να δημιουργήσουμε πιο αποτελεσματικές προτροπές για ένα συγκεκριμένο μοντέλο και στόχο εφαρμογής. Θα κατανοήσουμε βασικές έννοιες και βέλτιστες πρακτικές για τη μηχανική προτροπών - και θα μάθουμε για ένα διαδραστικό περιβάλλον "sandbox" Jupyter Notebooks όπου μπορούμε να δούμε αυτές τις έννοιες να εφαρμόζονται σε πραγματικά παραδείγματα. Μέχρι το τέλος αυτού του μαθήματος θα είμαστε σε θέση να: -1. Εξηγήσουμε τι είναι η μηχανική προτροπών και γιατί έχει σημασία. -2. Περιγράψουμε τα συστατικά μιας προτροπής και πώς χρησιμοποιούνται. +1. Εξηγήσουμε τι είναι η μηχανική προτροπών και γιατί είναι σημαντική. +2. Περιγράψουμε τα στοιχεία μιας προτροπής και πώς χρησιμοποιούνται. 3. Μάθουμε βέλτιστες πρακτικές και τεχνικές για τη μηχανική προτροπών. -4. Εφαρμόσουμε τις τεχνικές που μάθαμε σε πραγματικά παραδείγματα, χρησιμοποιώντας ένα OpenAI endpoint. +4. Εφαρμόσουμε τις τεχνικές που μάθαμε σε πραγματικά παραδείγματα, χρησιμοποιώντας ένα endpoint του OpenAI. ## Βασικοί Όροι -Μηχανική Προτροπών: Η πρακτική του σχεδιασμού και της βελτίωσης εισόδων για την καθοδήγηση των μοντέλων τεχνητής νοημοσύνης προς την παραγωγή επιθυμητών αποτελεσμάτων. +Μηχανική Προτροπών: Η πρακτική του σχεδιασμού και της βελτίωσης εισαγωγών για την καθοδήγηση των μοντέλων τεχνητής νοημοσύνης προς την παραγωγή επιθυμητών αποτελεσμάτων. Tokenization: Η διαδικασία μετατροπής κειμένου σε μικρότερες μονάδες, που ονομάζονται tokens, τις οποίες ένα μοντέλο μπορεί να κατανοήσει και να επεξεργαστεί. -Instruction-Tuned LLMs: Μεγάλα Γλωσσικά Μοντέλα (LLMs) που έχουν βελτιστοποιηθεί με συγκεκριμένες οδηγίες για τη βελτίωση της ακρίβειας και της συνάφειας των απαντήσεων τους. +Instruction-Tuned LLMs: Μεγάλα Γλωσσικά Μοντέλα (LLMs) που έχουν προσαρμοστεί με συγκεκριμένες οδηγίες για τη βελτίωση της ακρίβειας και της συνάφειας των απαντήσεων τους. ## Περιβάλλον Μάθησης -Η μηχανική προτροπών είναι προς το παρόν περισσότερο τέχνη παρά επιστήμη. Ο καλύτερος τρόπος για να βελτιώσουμε τη διαίσθησή μας για αυτήν είναι να _εξασκηθούμε περισσότερο_ και να υιοθετήσουμε μια προσέγγιση δοκιμής και σφάλματος που συνδυάζει εξειδίκευση στον τομέα εφαρμογής με προτεινόμενες τεχνικές και βελτιστοποιήσεις συγκεκριμένες για το μοντέλο. +Η μηχανική προτροπών είναι προς το παρόν περισσότερο τέχνη παρά επιστήμη. Ο καλύτερος τρόπος για να βελτιώσουμε τη διαίσθησή μας για αυτήν είναι να _εξασκηθούμε περισσότερο_ και να υιοθετήσουμε μια προσέγγιση δοκιμής και σφάλματος που συνδυάζει την εξειδίκευση στον τομέα εφαρμογής με τις συνιστώμενες τεχνικές και τις βελτιστοποιήσεις που είναι ειδικές για το μοντέλο. Το Jupyter Notebook που συνοδεύει αυτό το μάθημα παρέχει ένα περιβάλλον _sandbox_ όπου μπορείτε να δοκιμάσετε όσα μαθαίνετε - είτε κατά τη διάρκεια του μαθήματος είτε ως μέρος της πρόκλησης κώδικα στο τέλος. Για να εκτελέσετε τις ασκήσεις, θα χρειαστείτε: -1. **Ένα Azure OpenAI API key** - το endpoint υπηρεσίας για ένα αναπτυγμένο LLM. -2. **Ένα Python Runtime** - στο οποίο μπορεί να εκτελεστεί το Notebook. +1. **Ένα κλειδί API του Azure OpenAI** - το endpoint υπηρεσίας για ένα αναπτυγμένο LLM. +2. **Ένα περιβάλλον εκτέλεσης Python** - στο οποίο μπορεί να εκτελεστεί το Notebook. 3. **Τοπικές Μεταβλητές Περιβάλλοντος** - _ολοκληρώστε τα βήματα [SETUP](./../00-course-setup/02-setup-local.md?WT.mc_id=academic-105485-koreyst) τώρα για να είστε έτοιμοι_. -Το notebook περιλαμβάνει _ασκήσεις εκκίνησης_ - αλλά σας ενθαρρύνουμε να προσθέσετε δικά σας τμήματα _Markdown_ (περιγραφή) και _Code_ (αιτήματα προτροπών) για να δοκιμάσετε περισσότερα παραδείγματα ή ιδέες - και να χτίσετε τη διαίσθησή σας για το σχεδιασμό προτροπών. +Το notebook περιλαμβάνει _ασκήσεις εκκίνησης_ - αλλά σας ενθαρρύνουμε να προσθέσετε τις δικές σας ενότητες _Markdown_ (περιγραφή) και _Code_ (αιτήματα προτροπών) για να δοκιμάσετε περισσότερα παραδείγματα ή ιδέες - και να χτίσετε τη διαίσθησή σας για το σχεδιασμό προτροπών. ## Εικονογραφημένος Οδηγός -Θέλετε να αποκτήσετε μια γενική εικόνα για το τι καλύπτει αυτό το μάθημα πριν εμβαθύνετε; Ρίξτε μια ματιά σε αυτόν τον εικονογραφημένο οδηγό, που σας δίνει μια αίσθηση των κύριων θεμάτων που καλύπτονται και των βασικών σημείων που πρέπει να σκεφτείτε σε καθένα από αυτά. Ο χάρτης πορείας του μαθήματος σας οδηγεί από την κατανόηση των βασικών εννοιών και προκλήσεων στην αντιμετώπισή τους με σχετικές τεχνικές μηχανικής προτροπών και βέλτιστες πρακτικές. Σημειώστε ότι η ενότητα "Προχωρημένες Τεχνικές" σε αυτόν τον οδηγό αναφέρεται σε περιεχόμενο που καλύπτεται στο _επόμενο_ κεφάλαιο αυτού του προγράμματος σπουδών. +Θέλετε να αποκτήσετε μια γενική εικόνα για το τι καλύπτει αυτό το μάθημα πριν βουτήξετε; Δείτε αυτόν τον εικονογραφημένο οδηγό, που σας δίνει μια αίσθηση των κύριων θεμάτων που καλύπτονται και των βασικών σημείων που πρέπει να σκεφτείτε σε καθένα από αυτά. Ο χάρτης πορείας του μαθήματος σας οδηγεί από την κατανόηση των βασικών εννοιών και προκλήσεων στην αντιμετώπισή τους με σχετικές τεχνικές μηχανικής προτροπών και βέλτιστες πρακτικές. Σημειώστε ότι η ενότητα "Προχωρημένες Τεχνικές" σε αυτόν τον οδηγό αναφέρεται σε περιεχόμενο που καλύπτεται στο _επόμενο_ κεφάλαιο αυτού του προγράμματος σπουδών. ![Εικονογραφημένος Οδηγός για τη Μηχανική Προτροπών](../../../translated_images/04-prompt-engineering-sketchnote.d5f33336957a1e4f623b826195c2146ef4cc49974b72fa373de6929b474e8b70.el.png) -## Η Νεοφυής Επιχείρησή μας +## Η Startup μας -Ας μιλήσουμε τώρα για το πώς _αυτό το θέμα_ σχετίζεται με την αποστολή της νεοφυούς επιχείρησής μας να [φέρουμε καινοτομία AI στην εκπαίδευση](https://educationblog.microsoft.com/2023/06/collaborating-to-bring-ai-innovation-to-education?WT.mc_id=academic-105485-koreyst). Θέλουμε να δημιουργήσουμε εφαρμογές τεχνητής νοημοσύνης για _προσωποποιημένη μάθηση_ - οπότε ας σκεφτούμε πώς διαφορετικοί χρήστες της εφαρμογής μας μπορεί να "σχεδιάσουν" προτροπές: +Ας μιλήσουμε τώρα για το πώς _αυτό το θέμα_ σχετίζεται με την αποστολή της startup μας να [φέρουμε καινοτομία AI στην εκπαίδευση](https://educationblog.microsoft.com/2023/06/collaborating-to-bring-ai-innovation-to-education?WT.mc_id=academic-105485-koreyst). Θέλουμε να δημιουργήσουμε εφαρμογές τεχνητής νοημοσύνης για _προσωποποιημένη μάθηση_ - οπότε ας σκεφτούμε πώς διαφορετικοί χρήστες της εφαρμογής μας μπορεί να "σχεδιάσουν" προτροπές: - **Διαχειριστές** μπορεί να ζητήσουν από την AI να _αναλύσει δεδομένα προγράμματος σπουδών για να εντοπίσει κενά στην κάλυψη_. Η AI μπορεί να συνοψίσει τα αποτελέσματα ή να τα απεικονίσει με κώδικα. - **Εκπαιδευτικοί** μπορεί να ζητήσουν από την AI να _δημιουργήσει ένα σχέδιο μαθήματος για ένα συγκεκριμένο κοινό και θέμα_. Η AI μπορεί να δημιουργήσει το προσωποποιημένο σχέδιο σε μια καθορισμένη μορφή. - **Μαθητές** μπορεί να ζητήσουν από την AI να _τους διδάξει ένα δύσκολο θέμα_. Η AI μπορεί τώρα να καθοδηγήσει τους μαθητές με μαθήματα, υποδείξεις και παραδείγματα προσαρμοσμένα στο επίπεδό τους. -Αυτό είναι μόνο η κορυφή του παγόβουνου. Ρίξτε μια ματιά στο [Prompts For Education](https://github.com/microsoft/prompts-for-edu/tree/main?WT.mc_id=academic-105485-koreyst) - μια βιβλιοθήκη προτροπών ανοιχτού κώδικα που έχει επιμεληθεί από ειδικούς στην εκπαίδευση - για να αποκτήσετε μια ευρύτερη αίσθηση των δυνατοτήτων! _Δοκιμάστε να εκτελέσετε μερικές από αυτές τις προτροπές στο sandbox ή χρησιμοποιώντας το OpenAI Playground για να δείτε τι συμβαίνει!_ +Αυτό είναι μόνο η κορυφή του παγόβουνου. Δείτε [Prompts For Education](https://github.com/microsoft/prompts-for-edu/tree/main?WT.mc_id=academic-105485-koreyst) - μια βιβλιοθήκη προτροπών ανοιχτού κώδικα που έχει επιμεληθεί από ειδικούς στην εκπαίδευση - για να αποκτήσετε μια ευρύτερη αίσθηση των δυνατοτήτων! _Δοκιμάστε να εκτελέσετε μερικές από αυτές τις προτροπές στο sandbox ή χρησιμοποιώντας το OpenAI Playground για να δείτε τι συμβαίνει!_ ## Καλές Πρακτικές Ερωτημάτων -Τώρα που γνωρίζουμε πώς μπορούν να _κατασκευαστούν_ τα ερωτήματα, μπορούμε να αρχίσουμε να σκεφτόμαστε πώς να τα _σχεδιάσουμε_ ώστε να αντικατοπτρίζουν τις καλύτερες πρακτικές. Μπορούμε να το σκεφτούμε σε δύο μέρη - έχοντας τη σωστή _νοοτροπία_ και εφαρμόζοντας τις σωστές _τεχνικές_. +Τώρα που γνωρίζουμε πώς μπορούν να _κατασκευαστούν_ τα ερωτήματα, μπορούμε να αρχίσουμε να σκεφτόμαστε πώς να τα _σχεδιάσουμε_ ώστε να αντικατοπτρίζουν τις καλές πρακτικές. Μπορούμε να το σκεφτούμε σε δύο μέρη - έχοντας τη σωστή _νοοτροπία_ και εφαρμόζοντας τις σωστές _τεχνικές_. ### Νοοτροπία Μηχανικής Ερωτημάτων -Η μηχανική ερωτημάτων είναι μια διαδικασία δοκιμής και σφάλματος, οπότε κρατήστε τρεις ευρείς καθοδηγητικούς παράγοντες στο μυαλό σας: +Η Μηχανική Ερωτημάτων είναι μια διαδικασία δοκιμής και σφάλματος, οπότε κρατήστε τρεις ευρείς καθοδηγητικούς παράγοντες στο μυαλό σας: -1. **Η κατανόηση του τομέα έχει σημασία.** Η ακρίβεια και η συνάφεια της απάντησης είναι συνάρτηση του _τομέα_ στον οποίο λειτουργεί η εφαρμογή ή ο χρήστης. Εφαρμόστε τη διαίσθηση και την εξειδίκευσή σας στον τομέα για να **προσαρμόσετε περαιτέρω τις τεχνικές**. Για παράδειγμα, ορίστε _προσωπικότητες συγκεκριμένες για τον τομέα_ στα ερωτήματα συστήματος ή χρησιμοποιήστε _πρότυπα συγκεκριμένα για τον τομέα_ στα ερωτήματα χρήστη. Παρέχετε δευτερεύον περιεχόμενο που αντικατοπτρίζει πλαίσια συγκεκριμένα για τον τομέα ή χρησιμοποιήστε _ενδείξεις και παραδείγματα συγκεκριμένα για τον τομέα_ για να καθοδηγήσετε το μοντέλο προς οικείες μορφές χρήσης. +1. **Η Κατανόηση του Τομέα Έχει Σημασία.** Η ακρίβεια και η συνάφεια της απάντησης είναι συνάρτηση του _τομέα_ στον οποίο λειτουργεί η εφαρμογή ή ο χρήστης. Εφαρμόστε τη διαίσθηση και την εξειδίκευσή σας στον τομέα για να **προσαρμόσετε περαιτέρω τις τεχνικές**. Για παράδειγμα, ορίστε _προσωπικότητες συγκεκριμένες για τον τομέα_ στα ερωτήματα του συστήματος σας ή χρησιμοποιήστε _πρότυπα συγκεκριμένα για τον τομέα_ στα ερωτήματα του χρήστη σας. Παρέχετε δευτερεύον περιεχόμενο που αντικατοπτρίζει πλαίσια συγκεκριμένα για τον τομέα ή χρησιμοποιήστε _υποδείξεις και παραδείγματα συγκεκριμένα για τον τομέα_ για να καθοδηγήσετε το μοντέλο προς οικείες μορφές χρήσης. -2. **Η κατανόηση του μοντέλου έχει σημασία.** Γνωρίζουμε ότι τα μοντέλα είναι στοχαστικά από τη φύση τους. Αλλά οι υλοποιήσεις των μοντέλων μπορεί επίσης να διαφέρουν ως προς το σύνολο δεδομένων εκπαίδευσης που χρησιμοποιούν (προεκπαιδευμένη γνώση), τις δυνατότητες που παρέχουν (π.χ., μέσω API ή SDK) και τον τύπο περιεχομένου για τον οποίο είναι βελτιστοποιημένα (π.χ., κώδικας έναντι εικόνων έναντι κειμένου). Κατανοήστε τα πλεονεκτήματα και τους περιορισμούς του μοντέλου που χρησιμοποιείτε και χρησιμοποιήστε αυτή τη γνώση για να _προτεραιοποιήσετε εργασίες_ ή να δημιουργήσετε _προσαρμοσμένα πρότυπα_ που είναι βελτιστοποιημένα για τις δυνατότητες του μοντέλου. +2. **Η Κατανόηση του Μοντέλου Έχει Σημασία.** Γνωρίζουμε ότι τα μοντέλα είναι στοχαστικά από τη φύση τους. Αλλά οι υλοποιήσεις των μοντέλων μπορεί επίσης να διαφέρουν όσον αφορά το σύνολο δεδομένων εκπαίδευσης που χρησιμοποιούν (προεκπαιδευμένη γνώση), τις δυνατότητες που παρέχουν (π.χ., μέσω API ή SDK) και τον τύπο περιεχομένου για τον οποίο είναι βελτιστοποιημένα (π.χ., κώδικας έναντι εικόνων έναντι κειμένου). Κατανοήστε τα πλεονεκτήματα και τους περιορισμούς του μοντέλου που χρησιμοποιείτε και χρησιμοποιήστε αυτή τη γνώση για να _προτεραιοποιήσετε εργασίες_ ή να δημιουργήσετε _προσαρμοσμένα πρότυπα_ που είναι βελτιστοποιημένα για τις δυνατότητες του μοντέλου. -3. **Η επανάληψη και η επικύρωση έχουν σημασία.** Τα μοντέλα εξελίσσονται γρήγορα, όπως και οι τεχνικές για τη μηχανική ερωτημάτων. Ως ειδικός στον τομέα, μπορεί να έχετε άλλο πλαίσιο ή κριτήρια για τη _δική σας_ συγκεκριμένη εφαρμογή, που μπορεί να μην ισχύουν για την ευρύτερη κοινότητα. Χρησιμοποιήστε εργαλεία και τεχνικές μηχανικής ερωτημάτων για να "εκκινήσετε" τη δημιουργία ερωτημάτων, στη συνέχεια επαναλάβετε και επικυρώστε τα αποτελέσματα χρησιμοποιώντας τη δική σας διαίσθηση και εξειδίκευση στον τομέα. Καταγράψτε τις γνώσεις σας και δημιουργήστε μια **βάση γνώσεων** (π.χ., βιβλιοθήκες ερωτημάτων) που μπορούν να χρησιμοποιηθούν ως νέα βάση από άλλους, για ταχύτερες επαναλήψεις στο μέλλον. +3. **Η Επανάληψη και η Επικύρωση Έχουν Σημασία.** Τα μοντέλα εξελίσσονται γρήγορα, όπως και οι τεχνικές για τη μηχανική ερωτημάτων. Ως ειδικός στον τομέα, μπορεί να έχετε άλλο πλαίσιο ή κριτήρια για τη _δική σας_ συγκεκριμένη εφαρμογή, που μπορεί να μην ισχύουν για την ευρύτερη κοινότητα. Χρησιμοποιήστε εργαλεία και τεχνικές μηχανικής ερωτημάτων για να "ξεκινήσετε" τη δημιουργία ερωτημάτων, στη συνέχεια επαναλάβετε και επικυρώστε τα αποτελέσματα χρησιμοποιώντας τη δική σας διαίσθηση και εξειδίκευση στον τομέα. Καταγράψτε τις γνώσεις σας και δημιουργήστε μια **βάση γνώσεων** (π.χ., βιβλιοθήκες ερωτημάτων) που μπορούν να χρησιμοποιηθούν ως νέα βάση από άλλους, για ταχύτερες επαναλήψεις στο μέλλον. ## Καλές Πρακτικές Ας δούμε τώρα κοινές καλές πρακτικές που συνιστώνται από [OpenAI](https://help.openai.com/en/articles/6654000-best-practices-for-prompt-engineering-with-openai-api?WT.mc_id=academic-105485-koreyst) και [Azure OpenAI](https://learn.microsoft.com/azure/ai-services/openai/concepts/prompt-engineering#best-practices?WT.mc_id=academic-105485-koreyst) επαγγελματίες. -| Τι | Γιατί | +| Τι | Γιατί | | :-------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| Αξιολογήστε τα πιο πρόσφατα μοντέλα. | Οι νέες γενιές μοντέλων είναι πιθανό να έχουν βελτιωμένα χαρακτηριστικά και ποιότητα - αλλά μπορεί επίσης να έχουν υψηλότερο κόστος. Αξιολογήστε τα για τον αντίκτυπο και στη συνέχεια λάβετε αποφάσεις μετανάστευσης. | -| Διαχωρίστε οδηγίες και πλαίσιο | Ελέγξτε αν το μοντέλο/πάροχος σας ορίζει _διαχωριστικά_ για να διακρίνει οδηγίες, κύριο και δευτερεύον περιεχόμενο πιο καθαρά. Αυτό μπορεί να βοηθήσει τα μοντέλα να αποδώσουν πιο ακριβή βάρη στα tokens. | +| Αξιολογήστε τα πιο πρόσφατα μοντέλα. | Οι νέες γενιές μοντέλων είναι πιθανό να έχουν βελτιωμένα χαρακτηριστικά και ποιότητα - αλλά μπορεί επίσης να έχουν υψηλότερο κόστος. Αξιολογήστε τα για τον αντίκτυπο και στη συνέχεια λάβετε αποφάσεις για τη μετάβαση. | +| Διαχωρίστε οδηγίες και πλαίσιο | Ελέγξτε αν το μοντέλο/πάροχος σας ορίζει _διαχωριστικά_ για να διακρίνει οδηγίες, κύριο και δευτερεύον περιεχόμενο πιο καθαρά. Αυτό μπορεί να βοηθήσει τα μοντέλα να αποδώσουν βάρη πιο ακριβώς στα tokens. | | Να είστε συγκεκριμένοι και σαφείς | Δώστε περισσότερες λεπτομέρειες για το επιθυμητό πλαίσιο, αποτέλεσμα, μήκος, μορφή, στυλ κ.λπ. Αυτό θα βελτιώσει τόσο την ποιότητα όσο και τη συνέπεια των απαντήσεων. Καταγράψτε συνταγές σε επαναχρησιμοποιήσιμα πρότυπα. | -| Να είστε περιγραφικοί, χρησιμοποιήστε παραδείγματα | Τα μοντέλα μπορεί να ανταποκρίνονται καλύτερα σε μια προσέγγιση "δείξε και πες". Ξεκινήστε με μια προσέγγιση `zero-shot` όπου δίνετε μια οδηγία (αλλά χωρίς παραδείγματα) και στη συνέχεια δοκιμάστε `few-shot` ως βελτίωση, παρέχοντας μερικά παραδείγματα της επιθυμητής εξόδου. Χρησιμοποιήστε αναλογίες. | -| Χρησιμοποιήστε ενδείξεις για να εκκινήσετε ολοκληρώσεις | Κατευθύνετε το προς ένα επιθυμητό αποτέλεσμα δίνοντάς του μερικές αρχικές λέξεις ή φράσεις που μπορεί να χρησιμοποιήσει ως αφετηρία για την απάντηση. | -| Επαναλάβετε | Μερικές φορές μπορεί να χρειαστεί να επαναλάβετε τον εαυτό σας στο μοντέλο. Δώστε οδηγίες πριν και μετά το κύριο περιεχόμενο, χρησιμοποιήστε μια οδηγία και μια ένδειξη κ.λπ. Επαναλάβετε και επικυρώστε για να δείτε τι λειτουργεί. | -| Η σειρά έχει σημασία | Η σειρά με την οποία παρουσιάζετε πληροφορίες στο μοντέλο μπορεί να επηρεάσει την έξοδο, ακόμη και στα παραδείγματα εκμάθησης, λόγω της προκατάληψης πρόσφατης μνήμης. Δοκιμάστε διαφορετικές επιλογές για να δείτε τι λειτουργεί καλύτερα. | -| Δώστε στο μοντέλο μια "έξοδο" | Δώστε στο μοντέλο μια _εναλλακτική_ απάντηση που μπορεί να παρέχει αν δεν μπορεί να ολοκληρώσει την εργασία για οποιονδήποτε λόγο. Αυτό μπορεί να μειώσει τις πιθανότητες να δημιουργήσει ψευδείς ή κατασκευασμένες απαντήσεις. | +| Να είστε περιγραφικοί, χρησιμοποιήστε παραδείγματα | Τα μοντέλα μπορεί να ανταποκρίνονται καλύτερα σε μια προσέγγιση "δείξε και πες". Ξεκινήστε με μια προσέγγιση `zero-shot` όπου δίνετε μια οδηγία (αλλά χωρίς παραδείγματα) και στη συνέχεια δοκιμάστε `few-shot` ως βελτίωση, παρέχοντας μερικά παραδείγματα του επιθυμητού αποτελέσματος. Χρησιμοποιήστε αναλογίες. | +| Χρησιμοποιήστε υποδείξεις για να ξεκινήσετε τις απαντήσεις | Κατευθύνετε το προς ένα επιθυμητό αποτέλεσμα δίνοντάς του κάποιες αρχικές λέξεις ή φράσεις που μπορεί να χρησιμοποιήσει ως αφετηρία για την απάντηση. | +| Επαναλάβετε | Μερικές φορές μπορεί να χρειαστεί να επαναλάβετε τον εαυτό σας στο μοντέλο. Δώστε οδηγίες πριν και μετά το κύριο περιεχόμενο, χρησιμοποιήστε μια οδηγία και μια υπόδειξη κ.λπ. Επαναλάβετε και επικυρώστε για να δείτε τι λειτουργεί. | +| Η σειρά έχει σημασία | Η σειρά με την οποία παρουσιάζετε πληροφορίες στο μοντέλο μπορεί να επηρεάσει το αποτέλεσμα, ακόμη και στα παραδείγματα εκμάθησης, λόγω της προκατάληψης της πρόσφατης μνήμης. Δοκιμάστε διαφορετικές επιλογές για να δείτε τι λειτουργεί καλύτερα. | +| Δώστε στο μοντέλο μια "διέξοδο" | Δώστε στο μοντέλο μια _εναλλακτική_ απάντηση που μπορεί να παρέχει αν δεν μπορεί να ολοκληρώσει την εργασία για οποιονδήποτε λόγο. Αυτό μπορεί να μειώσει τις πιθανότητες το μοντέλο να δημιουργήσει ψευδείς ή κατασκευασμένες απαντήσεις. | | | | -Όπως με κάθε καλή πρακτική, θυμηθείτε ότι _η εμπειρία σας μπορεί να διαφέρει_ ανάλογα με το μοντέλο, την εργασία και τον τομέα. Χρησιμοποιήστε αυτές ως αφετηρία και επαναλάβετε για να βρείτε τι λειτουργεί καλύτερα για εσάς. Επαναξιολογείτε συνεχώς τη διαδικασία μηχανικής ερωτημάτων καθώς γίνονται διαθέσιμα νέα μοντέλα και εργαλεία, με έμφαση στην κλιμακωσιμότητα της διαδικασίας και την ποιότητα των απαντήσεων. +Όπως με κάθε καλή πρακτική, θυμηθείτε ότι _η εμπειρία σας μπορεί να διαφέρει_ ανάλογα με το μοντέλο, την εργασία και τον τομέα. Χρησιμοποιήστε αυτές ως αφετηρία και επαναλάβετε για να βρείτε τι λειτουργεί καλύτερα για εσάς. Επαναξιολογείτε συνεχώς τη διαδικασία μηχανικής ερωτημάτων σας καθώς γίνονται διαθέσιμα νέα μοντέλα και εργαλεία, με έμφαση στην κλιμακωσιμότητα της διαδικασίας και την ποιότητα των απαντήσεων. - -# Δημιουργία κώδικα για ένα Python Web API - -Σε αυτόν τον οδηγό, θα μάθουμε πώς να δημιουργήσουμε ένα απλό Web API χρησιμοποιώντας Python. Θα χρησιμοποιήσουμε το πλαίσιο Flask για να δημιουργήσουμε endpoints που θα ανταποκρίνονται σε αιτήματα HTTP. - -## Βήματα - -1. Εγκατάσταση του Flask: - Χρησιμοποιήστε την εντολή `pip install Flask` για να εγκαταστήσετε το Flask. - -2. Δημιουργία της εφαρμογής: - Δημιουργήστε ένα αρχείο `app.py` και γράψτε τον βασικό κώδικα για την εφαρμογή Flask. - -3. Ορισμός routes: - Προσθέστε endpoints που θα χειρίζονται αιτήματα GET, POST, κλπ. - -4. Εκτέλεση της εφαρμογής: - Τρέξτε την εφαρμογή και δοκιμάστε τα endpoints χρησιμοποιώντας εργαλεία όπως το Postman ή το curl. - -## Παράδειγμα κώδικα - -```python -from flask import Flask, jsonify, request - -app = Flask(__name__) - -# Απλό endpoint που επιστρέφει ένα μήνυμα καλωσορίσματος -@app.route('/hello', methods=['GET']) -def hello(): - return jsonify({"message": "Γεια σου, κόσμε!"}) - -# Endpoint που δέχεται δεδομένα μέσω POST και τα επιστρέφει -@app.route('/echo', methods=['POST']) -def echo(): - data = request.get_json() - return jsonify({"you_sent": data}) - -if __name__ == '__main__': - app.run(debug=True) -``` - -## Συμβουλές - -- Χρησιμοποιήστε το `debug=True` μόνο κατά την ανάπτυξη. -- Εξετάστε το ενδεχόμενο χρήσης περιβαλλοντικών μεταβλητών για ρυθμίσεις. -- Προσθέστε κατάλληλο χειρισμό σφαλμάτων για πιο αξιόπιστη εφαρμογή. - -Με αυτά τα βήματα, μπορείτε να δημιουργήσετε ένα βασικό Web API σε Python και να το επεκτείνετε ανάλογα με τις ανάγκες σας. -```python -#import necessary libraries -import flask -from flask import request, jsonify - -#create an instance of the Flask class -app = flask.Flask(__name__) - -#create an endpoint for the API -@app.route('/api/v1/endpoint', methods=['GET']) -def api_endpoint(): - #get the request data - data = request.get_json() - - #process the data - result = process_data(data) - - #return the result - return jsonify(result) - -#function to process the data -def process_data(data): - #process the data - result = {'result': 'success'} - - #return the result - return result - -#run the Flask app -if __name__ == '__main__': - app.run() - -``` - -Η εκτέλεση του prompt ξανά μας δίνει αυτό το αποτέλεσμα: - -```python -#import necessary libraries -import flask -from flask import request, jsonify - -#create a Flask app -app = flask.Flask(__name__) - -#create a route for the API -@app.route('/api', methods=['GET']) -def api_call(): - #get the data from the request - data = request.get_json() - - #process the data - result = process_data(data) - - #return the result - return jsonify(result) - -#define the process_data function -def process_data(data): - #do something with the data - result = data + 1 - - #return the result - return result - -#run the app -if __name__ == '__main__': - app.run() - -``` - -Υπάρχει μόνο μια μικρή διαφορά ανάμεσα σε αυτά τα δύο αποτελέσματα. Ας κάνουμε το αντίθετο αυτή τη φορά, ας ορίσουμε τη θερμοκρασία στο 0.9: - -```python -# Import necessary libraries -import flask -from flask import request, jsonify - -# Create a Flask app -app = flask.Flask(__name__) - -# Create a route for the API -@app.route('/api', methods=['GET']) -def api_call(): - # Get the data from the request - data = request.args - - # Process the data - result = process_data(data) - - # Return the result - return jsonify(result) - -# Function to process the data -def process_data(data): - # Do something with the data - result = data + 1 - - # Return the result - return result - -# Run the app -if __name__ == '__main__': - app.run() - -``` - -και η δεύτερη προσπάθεια με τιμή θερμοκρασίας 0.9: - -```python -import flask -from flask import request, jsonify - -# create the Flask app -app = flask.Flask(__name__) -app.config['DEBUG'] = True - -# create some test data -books = [ - {'id': 0, 'title': 'A Fire Upon The Deep', 'author': 'Vernor Vinge', 'first_sentence': 'The coldsleep itself was dreamless.', 'year_published': '1992'}, - {'id': 1, 'title': 'The Ones Who Walk Away From Omelas', 'author': 'Ursula K. Le Guin', 'first_sentence': 'With a clamor of bells that set the swallows soaring, the Festival of Summer came to the city Omelas, bright-towered by the sea.', 'published': '1973'}, - {'id': 2, 'title': 'Dhalgren', 'author': 'Samuel R. Delany', 'first_sentence': 'to wound the autumnal city.', 'published': '1975'} -] - -# create an endpoint -@app.route('/', methods=['GET']) -def home(): - return '''

Welcome to our book API!

''' - -@app.route('/api/v1/resources/books - -``` - -Όπως βλέπετε, τα αποτελέσματα δεν θα μπορούσαν να είναι πιο διαφορετικά. - -> Note, ότι υπάρχουν και άλλες παράμετροι που μπορείτε να αλλάξετε για να διαφοροποιήσετε το αποτέλεσμα, όπως top-k, top-p, repetition penalty, length penalty και diversity penalty, αλλά αυτές είναι εκτός του πεδίου αυτού του μαθήματος. - -## Καλές πρακτικές - -Υπάρχουν πολλές πρακτικές που μπορείτε να εφαρμόσετε για να προσπαθήσετε να πάρετε αυτό που θέλετε. Θα βρείτε το δικό σας στυλ καθώς χρησιμοποιείτε το prompting όλο και περισσότερο. - -Επιπλέον των τεχνικών που καλύψαμε, υπάρχουν κάποιες καλές πρακτικές που αξίζει να λάβετε υπόψη όταν κάνετε prompting σε ένα LLM. - -Ακολουθούν μερικές καλές πρακτικές που μπορείτε να σκεφτείτε: - -- **Καθορίστε το πλαίσιο**. Το πλαίσιο έχει σημασία, όσο πιο συγκεκριμένα μπορείτε να ορίσετε όπως το πεδίο, το θέμα κτλ., τόσο το καλύτερο. -- Περιορίστε το αποτέλεσμα. Αν θέλετε συγκεκριμένο αριθμό αντικειμένων ή συγκεκριμένο μήκος, καθορίστε το. -- **Καθορίστε τι και πώς**. Θυμηθείτε να αναφέρετε τόσο τι θέλετε όσο και πώς το θέλετε, για παράδειγμα "Δημιουργήστε ένα Python Web API με διαδρομές products και customers, χωρισμένο σε 3 αρχεία". -- **Χρησιμοποιήστε πρότυπα**. Συχνά, θα θέλετε να εμπλουτίσετε τα prompts σας με δεδομένα από την εταιρεία σας. Χρησιμοποιήστε πρότυπα για αυτό. Τα πρότυπα μπορούν να έχουν μεταβλητές που αντικαθιστάτε με πραγματικά δεδομένα. -- **Ορθογραφείτε σωστά**. Τα LLM μπορεί να σας δώσουν σωστή απάντηση, αλλά αν ορθογραφείτε σωστά, θα πάρετε καλύτερη απάντηση. - -## Άσκηση - -Εδώ είναι κώδικας σε Python που δείχνει πώς να φτιάξετε ένα απλό API χρησιμοποιώντας Flask: - -```python -from flask import Flask, request - -app = Flask(__name__) - -@app.route('/') -def hello(): - name = request.args.get('name', 'World') - return f'Hello, {name}!' - -if __name__ == '__main__': - app.run() -``` - -Χρησιμοποιήστε έναν AI βοηθό όπως το GitHub Copilot ή το ChatGPT και εφαρμόστε την τεχνική "self-refine" για να βελτιώσετε τον κώδικα. - -## Λύση - -Παρακαλώ προσπαθήστε να λύσετε την άσκηση προσθέτοντας κατάλληλα prompts στον κώδικα. - -> [!TIP] -> Διατυπώστε ένα prompt που να ζητά βελτίωση, είναι καλή ιδέα να περιορίσετε πόσες βελτιώσεις θέλετε. Μπορείτε επίσης να ζητήσετε να βελτιωθεί με συγκεκριμένο τρόπο, π.χ. αρχιτεκτονική, απόδοση, ασφάλεια κτλ. - -[Solution](../../../05-advanced-prompts/python/aoai-solution.py) - -## Έλεγχος γνώσεων - -Γιατί θα χρησιμοποιούσα chain-of-thought prompting; Δείξτε μου 1 σωστή απάντηση και 2 λανθασμένες. - -1. Για να διδάξω το LLM πώς να λύσει ένα πρόβλημα. -1. B, Για να διδάξω το LLM να βρίσκει λάθη στον κώδικα. -1. C, Για να δώσω εντολή στο LLM να βρει διαφορετικές λύσεις. - -Α: 1, επειδή το chain-of-thought αφορά το να δείξετε στο LLM πώς να λύσει ένα πρόβλημα παρέχοντάς του μια σειρά βημάτων, παρόμοια προβλήματα και πώς λύθηκαν. - -## 🚀 Πρόκληση - -Μόλις χρησιμοποιήσατε την τεχνική self-refine στην άσκηση. Πάρτε οποιοδήποτε πρόγραμμα έχετε φτιάξει και σκεφτείτε ποιες βελτιώσεις θα θέλατε να εφαρμόσετε. Τώρα χρησιμοποιήστε την τεχνική self-refine για να εφαρμόσετε τις προτεινόμενες αλλαγές. Τι πιστεύετε για το αποτέλεσμα, καλύτερο ή χειρότερο; - -## Μπράβο! Συνεχίστε τη μάθησή σας - -Αφού ολοκληρώσετε αυτό το μάθημα, ρίξτε μια ματιά στη [συλλογή μας για τη Μάθηση Γεννητικής AI](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) για να συνεχίσετε να ανεβάζετε το επίπεδο των γνώσεών σας στη Γεννητική AI! - -Πηγαίνετε στο Μάθημα 6 όπου θα εφαρμόσουμε τις γνώσεις μας στο Prompt Engineering φτιάχνοντας [εφαρμογές δημιουργίας κειμένου](../06-text-generation-apps/README.md?WT.mc_id=academic-105485-koreyst) - -**Αποποίηση ευθυνών**: -Αυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία αυτόματης μετάφρασης AI [Co-op Translator](https://github.com/Azure/co-op-translator). Παρόλο που επιδιώκουμε την ακρίβεια, παρακαλούμε να έχετε υπόψη ότι οι αυτόματες μεταφράσεις ενδέχεται να περιέχουν λάθη ή ανακρίβειες. Το πρωτότυπο έγγραφο στη γλώσσα του θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε ευθύνη για τυχόν παρεξηγήσεις ή λανθασμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης. \ No newline at end of file + +# Δημιουργία Προχωρημένων Προτροπών + +[![Δημιουργία Προχωρημένων Προτροπών](../../../translated_images/05-lesson-banner.522610fd4a2cd82dbed66bb7e6fe104ed6da172e085dbb4d9100b28dc73ed435.el.png)](https://youtu.be/BAjzkaCdRok?si=NmUIyRf7-cDgbjtt) + +Ας ανακεφαλαιώσουμε μερικά από τα μαθήματα του προηγούμενου κεφαλαίου: + +> Η _μηχανική προτροπών_ είναι η διαδικασία με την οποία **κατευθύνουμε το μοντέλο προς πιο σχετικές απαντήσεις** παρέχοντας πιο χρήσιμες οδηγίες ή πλαίσιο. + +Υπάρχουν επίσης δύο βήματα για τη συγγραφή προτροπών: η κατασκευή της προτροπής, παρέχοντας σχετικό πλαίσιο, και η _βελτιστοποίηση_, δηλαδή πώς να βελτιώνουμε σταδιακά την προτροπή. + +Σε αυτό το σημείο, έχουμε μια βασική κατανόηση του πώς να γράφουμε προτροπές, αλλά χρειάζεται να εμβαθύνουμε. Σε αυτό το κεφάλαιο, θα περάσετε από τη δοκιμή διάφορων προτροπών στην κατανόηση του γιατί μια προτροπή είναι καλύτερη από μια άλλη. Θα μάθετε πώς να κατασκευάζετε προτροπές ακολουθώντας βασικές τεχνικές που μπορούν να εφαρμοστούν σε οποιοδήποτε LLM. + +## Εισαγωγή + +Σε αυτό το κεφάλαιο, θα καλύψουμε τα εξής θέματα: + +- Επέκταση της γνώσης σας στη μηχανική προτροπών εφαρμόζοντας διαφορετικές τεχνικές στις προτροπές σας. +- Διαμόρφωση των προτροπών σας ώστε να ποικίλλει το αποτέλεσμα. + +## Στόχοι μάθησης + +Μετά την ολοκλήρωση αυτού του μαθήματος, θα μπορείτε να: + +- Εφαρμόζετε τεχνικές μηχανικής προτροπών που βελτιώνουν το αποτέλεσμα των προτροπών σας. +- Εκτελείτε προτροπές που είναι είτε ποικίλες είτε ντετερμινιστικές. + +## Μηχανική προτροπών + +Η μηχανική προτροπών είναι η διαδικασία δημιουργίας προτροπών που θα παράγουν το επιθυμητό αποτέλεσμα. Η μηχανική προτροπών δεν αφορά μόνο τη συγγραφή μιας κειμενικής προτροπής. Δεν είναι μια επιστημονική πειθαρχία, αλλά περισσότερο ένα σύνολο τεχνικών που μπορείτε να εφαρμόσετε για να πετύχετε το επιθυμητό αποτέλεσμα. + +### Ένα παράδειγμα προτροπής + +Ας πάρουμε μια βασική προτροπή όπως αυτή: + +> Δημιούργησε 10 ερωτήσεις για τη γεωγραφία. + +Σε αυτή την προτροπή, εφαρμόζετε στην πραγματικότητα ένα σύνολο διαφορετικών τεχνικών προτροπών. + +Ας το αναλύσουμε. + +- **Πλαίσιο**, καθορίζετε ότι πρέπει να αφορά τη "γεωγραφία". +- **Περιορισμός του αποτελέσματος**, θέλετε όχι περισσότερες από 10 ερωτήσεις. + +### Περιορισμοί απλών προτροπών + +Ίσως να μην πετύχετε το επιθυμητό αποτέλεσμα. Θα δημιουργηθούν ερωτήσεις, αλλά η γεωγραφία είναι ένα μεγάλο θέμα και ίσως να μην πάρετε αυτό που θέλετε για τους εξής λόγους: + +- **Μεγάλο θέμα**, δεν ξέρετε αν θα αφορά χώρες, πρωτεύουσες, ποτάμια κ.λπ. +- **Μορφή**, τι γίνεται αν θέλατε οι ερωτήσεις να έχουν συγκεκριμένη μορφή; + +Όπως βλέπετε, υπάρχουν πολλά που πρέπει να ληφθούν υπόψη κατά τη δημιουργία προτροπών. + +Μέχρι στιγμής, έχουμε δει ένα απλό παράδειγμα προτροπής, αλλά η γενετική τεχνητή νοημοσύνη είναι ικανή για πολύ περισσότερα ώστε να βοηθήσει ανθρώπους σε διάφορους ρόλους και βιομηχανίες. Ας εξερευνήσουμε μερικές βασικές τεχνικές στη συνέχεια. + +### Τεχνικές για προτροπές + +Πρώτα, πρέπει να κατανοήσουμε ότι η δημιουργία προτροπών είναι μια _αναδυόμενη_ ιδιότητα ενός LLM, που σημαίνει ότι δεν είναι μια δυνατότητα ενσωματωμένη στο μοντέλο αλλά κάτι που ανακαλύπτουμε καθώς χρησιμοποιούμε το μοντέλο. + +Υπάρχουν μερικές βασικές τεχνικές που μπορούμε να χρησιμοποιήσουμε για να δημιουργήσουμε προτροπές σε ένα LLM. Ας τις εξερευνήσουμε. + +- **Προτροπή μηδενικών παραδειγμάτων**, αυτή είναι η πιο βασική μορφή προτροπής. Είναι μια απλή προτροπή που ζητά απάντηση από το LLM βασισμένη αποκλειστικά στα δεδομένα εκπαίδευσής του. +- **Προτροπή λίγων παραδειγμάτων**, αυτός ο τύπος προτροπής καθοδηγεί το LLM παρέχοντας 1 ή περισσότερα παραδείγματα στα οποία μπορεί να βασιστεί για να δημιουργήσει την απάντησή του. +- **Αλυσίδα σκέψης**, αυτός ο τύπος προτροπής λέει στο LLM πώς να αναλύσει ένα πρόβλημα σε βήματα. +- **Παραγόμενη γνώση**, για να βελτιώσετε την απάντηση μιας προτροπής, μπορείτε να παρέχετε επιπλέον γεγονότα ή γνώση μαζί με την προτροπή σας. +- **Από το λιγότερο στο περισσότερο**, όπως η αλυσίδα σκέψης, αυτή η τεχνική αφορά την ανάλυση ενός προβλήματος σε μια σειρά βημάτων και στη συνέχεια την εκτέλεση αυτών των βημάτων με τη σειρά. +- **Αυτοβελτίωση**, αυτή η τεχνική αφορά την κριτική της απάντησης του LLM και στη συνέχεια την απαίτηση για βελτίωση. +- **Μαιευτική προτροπή**, εδώ θέλετε να διασφαλίσετε ότι η απάντηση του LLM είναι σωστή και του ζητάτε να εξηγήσει διάφορα μέρη της απάντησης. Αυτή είναι μια μορφή αυτοβελτίωσης. + +### Προτροπή μηδενικών παραδειγμάτων + +Αυτό το στυλ προτροπής είναι πολύ απλό, αποτελείται από μια μόνο προτροπή. Αυτή η τεχνική είναι πιθανώς αυτή που χρησιμοποιείτε καθώς αρχίζετε να μαθαίνετε για τα LLM. Να ένα παράδειγμα: + +- Προτροπή: "Τι είναι η Άλγεβρα;" +- Απάντηση: "Η Άλγεβρα είναι ένας κλάδος των μαθηματικών που μελετά μαθηματικά σύμβολα και τους κανόνες για τη διαχείρισή τους." + +### Προτροπή λίγων παραδειγμάτων + +Αυτό το στυλ προτροπής βοηθά το μοντέλο παρέχοντας μερικά παραδείγματα μαζί με το αίτημα. Αποτελείται από μια μόνο προτροπή με επιπλέον δεδομένα συγκεκριμένα για την εργασία. Να ένα παράδειγμα: + +- Προτροπή: "Γράψε ένα ποίημα στο στυλ του Σαίξπηρ. Εδώ είναι μερικά παραδείγματα από σονέτα του Σαίξπηρ: + Σονέτο 18: 'Να σε συγκρίνω με μια καλοκαιρινή μέρα; Είσαι πιο όμορφος και πιο ήπιος...' + Σονέτο 116: 'Ας μην υπάρξουν εμπόδια στον γάμο των αληθινών μυαλών. Η αγάπη δεν είναι αγάπη που αλλάζει όταν βρίσκει αλλαγή...' + Σονέτο 132: 'Αγαπώ τα μάτια σου, και αυτά, σαν να με λυπούνται, γνωρίζοντας την καρδιά σου που με βασανίζει με περιφρόνηση,...' + Τώρα, γράψε ένα σονέτο για την ομορφιά της σελήνης." +- Απάντηση: "Στον ουρανό, η σελήνη απαλά λάμπει, Σε ασημένιο φως που ρίχνει τη γλυκιά της χάρη,..." + +Τα παραδείγματα παρέχουν στο LLM το πλαίσιο, τη μορφή ή το στυλ του επιθυμητού αποτελέσματος. Βοηθούν το μοντέλο να κατανοήσει τη συγκεκριμένη εργασία και να δημιουργήσει πιο ακριβείς και σχετικές απαντήσεις. + +### Αλυσίδα σκέψης + +Η αλυσίδα σκέψης είναι μια πολύ ενδιαφέρουσα τεχνική καθώς αφορά τη λήψη του LLM μέσω μιας σειράς βημάτων. Η ιδέα είναι να δώσετε οδηγίες στο LLM με τέτοιο τρόπο ώστε να κατανοήσει πώς να κάνει κάτι. Σκεφτείτε το εξής παράδειγμα, με και χωρίς αλυσίδα σκέψης: + + - Προτροπή: "Η Άλις έχει 5 μήλα, πετάει 3 μήλα, δίνει 2 στον Μπομπ και ο Μπομπ της επιστρέφει ένα, πόσα μήλα έχει η Άλις;" + - Απάντηση: 5 + +Το LLM απαντά με 5, που είναι λάθος. Η σωστή απάντηση είναι 1 μήλο, δεδομένου του υπολογισμού (5 -3 -2 + 1 = 1). + +Πώς μπορούμε να διδάξουμε στο LLM να το κάνει σωστά; + +Ας δοκιμάσουμε την αλυσίδα σκέψης. Εφαρμόζοντας την αλυσίδα σκέψης σημαίνει: + +1. Δώστε στο LLM ένα παρόμοιο παράδειγμα. +1. Δείξτε τον υπολογισμό και πώς να τον υπολογίσει σωστά. +1. Παρέχετε την αρχική προτροπή. + +Να πώς: + +- Προτροπή: "Η Λίζα έχει 7 μήλα, πετάει 1 μήλο, δίνει 4 μήλα στον Μπαρτ και ο Μπαρτ της επιστρέφει ένα: + 7 -1 = 6 + 6 -4 = 2 + 2 +1 = 3 + Η Άλις έχει 5 μήλα, πετάει 3 μήλα, δίνει 2 στον Μπομπ και ο Μπομπ της επιστρέφει ένα, πόσα μήλα έχει η Άλις;" + Απάντηση: 1 + +Παρατηρήστε πώς γράφουμε σημαντικά μεγαλύτερες προτροπές με ένα άλλο παράδειγμα, έναν υπολογισμό και στη συνέχεια την αρχική προτροπή και φτάνουμε στη σωστή απάντηση 1. + +Όπως βλέπετε, η αλυσίδα σκέψης είναι μια πολύ ισχυρή τεχνική. + +### Παραγόμενη γνώση + +Πολλές φορές όταν θέλετε να κατασκευάσετε μια προτροπή, θέλετε να το κάνετε χρησιμοποιώντας δεδομένα της δικής σας εταιρείας. Θέλετε μέρος της προτροπής να προέρχεται από την εταιρεία και το άλλο μέρος να είναι η πραγματική προτροπή που σας ενδιαφέρει. + +Ως παράδειγμα, αυτή είναι η μορφή που μπορεί να έχει η προτροπή σας αν εργάζεστε στον τομέα των ασφαλίσεων: + +```text +{{company}}: {{company_name}} +{{products}}: +{{products_list}} +Please suggest an insurance given the following budget and requirements: +Budget: {{budget}} +Requirements: {{requirements}} +``` + +Πάνω, βλέπετε πώς η προτροπή κατασκευάζεται χρησιμοποιώντας ένα πρότυπο. Στο πρότυπο υπάρχουν αρκετές μεταβλητές, που σημειώνονται με `{{variable}}`, οι οποίες θα αντικατασταθούν με πραγματικές τιμές από ένα API της εταιρείας. + +Να ένα παράδειγμα του πώς μπορεί να μοιάζει η προτροπή αφού οι μεταβλητές έχουν αντικατασταθεί με περιεχόμενο από την εταιρεία σας: + +```text +Insurance company: ACME Insurance +Insurance products (cost per month): +- Car, cheap, 500 USD +- Car, expensive, 1100 USD +- Home, cheap, 600 USD +- Home, expensive, 1200 USD +- Life, cheap, 100 USD + +Please suggest an insurance given the following budget and requirements: +Budget: $1000 +Requirements: Car, Home, and Life insurance +``` + +Η εκτέλεση αυτής της προτροπής μέσω ενός LLM θα παράγει μια απάντηση όπως αυτή: + +```output +Given the budget and requirements, we suggest the following insurance package from ACME Insurance: +- Car, cheap, 500 USD +- Home, cheap, 600 USD +- Life, cheap, 100 USD +Total cost: $1,200 USD +``` + +Όπως βλέπετε, προτείνει επίσης την Ασφάλεια Ζωής, κάτι που δεν θα έπρεπε. Αυτό το αποτέλεσμα είναι μια ένδειξη ότι πρέπει να βελτιστοποιήσουμε την προτροπή αλλάζοντάς την ώστε να είναι πιο σαφής σχετικά με το τι μπορεί να επιτρέψει. Μετά από κάποια _δοκιμή και σφάλμα_, φτάνουμε στην εξής προτροπή: + +```text +Insurance company: ACME Insurance +Insurance products (cost per month): +- type: Car, cheap, cost: 500 USD +- type: Car, expensive, cost: 1100 USD +- type: Home, cheap, cost: 600 USD +- type: Home, expensive, cost: 1200 USD +- type: Life, cheap, cost: 100 USD + +Please suggest an insurance given the following budget and requirements: +Budget: $1000 restrict choice to types: Car, Home +``` + +Παρατηρήστε πώς η προσθήκη _τύπου_ και _κόστους_ και επίσης η χρήση της λέξης-κλειδί _περιορισμός_ βοηθά το LLM να κατανοήσει τι θέλουμε. + +Τώρα παίρνουμε την εξής απάντηση: + +```output +Given the budget and requirements, we suggest the Car, Cheap insurance product which costs 500 USD per month. +``` + +Το νόημα αυτού του παραδείγματος ήταν να δείξει ότι, παρόλο που χρησιμοποιούμε μια βασική τεχνική όπως η _παραγόμενη γνώση_, στις περισσότερες περιπτώσεις πρέπει να βελτιστοποιήσουμε την προτροπή για να πετύχουμε το επιθυμητό αποτέλεσμα. + +### Από το λιγότερο στο περισσότερο + +Η ιδέα με την προτροπή από το λιγότερο στο περισσότερο είναι να αναλύσετε ένα μεγαλύτερο πρόβλημα σε υποπροβλήματα. Με αυτόν τον τρόπο, βοηθάτε να καθοδηγήσετε το LLM στο πώς να "κατακτήσει" το μεγαλύτερο πρόβλημα. Ένα καλό παράδειγμα θα μπορούσε να είναι για την επιστήμη δεδομένων όπου μπορείτε να ζητήσετε από το LLM να διαιρέσει ένα πρόβλημα ως εξής: + +> Προτροπή: Πώς να εκτελέσετε επιστήμη δεδομένων σε 5 βήματα; + +Με την απάντηση του AI βοηθού: + +1. Συλλογή δεδομένων +1. Καθαρισμός δεδομένων +1. Ανάλυση δεδομένων +1. Οπτικοποίηση δεδομένων +1. Παρουσίαση δεδομένων + +### Αυτοβελτίωση, κριτική των αποτελεσμάτων + +Με τις γενετικές AI και τα LLM, δεν μπορείτε να εμπιστευτείτε το αποτέλεσμα. Πρέπει να το επαληθεύσετε. Εξάλλου, το LLM απλώς σας παρουσιάζει τι είναι πιο πιθανό να πει στη συνέχεια, όχι τι είναι σωστό. Επομένως, μια καλή ιδέα είναι να ζητήσετε από το LLM να κρίνει τον εαυτό του, κάτι που μας οδηγεί στην τεχνική της αυτοβελτίωσης. + +Πώς λειτουργεί είναι ότι ακολουθείτε τα εξής βήματα: + +1. Αρχική προτροπή ζητώντας από το LLM να λύσει ένα πρόβλημα +1. Το LLM απαντά +1. Κρίνετε την απάντηση και ζητάτε από το AI να τη βελτιώσει +1. Το LLM απαντά ξανά, αυτή τη φορά λαμβάνοντας υπόψη την κριτική και προτείνει λύσεις που σκέφτηκε + +Μπορείτε να επαναλάβετε αυτή τη διαδικασία όσες φορές θέλετε. + +Να ένα παράδειγμα χρησιμοποιώντας αυτή την τεχνική: + +> Προτροπή: "Δημιούργησε ένα Python Web API με διαδρομές προϊόντων και πελατών" + +Απάντηση AI: + +```python +import flask +app = Flask(__name__) + +@app.route('/products') +def products(): + return 'Products' + +@app.route('/customers') +def customers(): + return 'Customers' +``` + +> Προτροπή: πρότεινε 3 βελτιώσεις για τον παραπάνω κώδικα + +Απάντηση AI: + +```text +Sure, here are three suggestions to improve the code: + +Import the correct module: The first line should import Flask instead of flask. The correct import statement should be from flask import Flask. + +Add a main function: Add a if __name__ == '__main__': block to the end of the file to run the application when the file is executed. + +Use f-strings: Use f-strings to format the return statements in the route functions. For example, return 'Products' can be changed to return f'This is the {request.path} page'. +``` + +```python +from flask import Flask, request + +app = Flask(__name__) + +@app.route('/products') +def products(): + return f'This is the {request.path} page' + +@app.route('/customers') +def customers(): + return f'This is the {request.path} page' + +if __name__ == '__main__': + app.run() +``` + +Όπως βλέπετε, η παραπάνω απάντηση του AI βελτιώνει τον πρώτο προτεινόμενο κώδικα χάρη στην κριτική της πρώτης απάντησης. + +### Μαιευτική προτροπή + +Η μαιευτική προτροπή είναι μια τεχνική που μοιάζει με την αυτοβελτίωση αλλά αφορά περισσότερο το να ζητάτε από το LLM να εξηγήσει τον εαυτό του. Ο στόχος είναι να μειώσετε τις ασυνέπειες στην απάντηση του LLM ώστε να διασφαλίσετε ότι φτάνει στη σωστή απάντηση. Η διαδικασία που πρέπει να ακολουθήσετε είναι: + +1. Ζητήστε από το LLM να απαντήσει σε μια ερώτηση +1. Για κάθε μέρος της απάντησης, ζητήστε από το LLM να το εξηγήσει πιο αναλυτικά. +1. Αν υπάρχουν ασυνέπειες, απορρίψτε τα μέρη που είναι ασυνεπή. + +Επαναλάβετε τα βήματα 2 και 3 μέχρι να έχετε εξετάσει όλα τα μέρη και να είστε ικανοποιημένοι με την απάντηση. + +Να ένα παράδειγμα προτροπής: + +> Προτροπή: Πώς μπορώ να δημιουργήσω ένα σχέδιο κρίσης για την αντιμετώπιση μιας πανδημίας σε 5 βήματα; +> Απάντηση LLM: + +```text +1. Identify the risks +1. Identify the stakeholders +1. Identify the resources +1. Identify the actions +1. Identify the communication channels +``` + +Έχει εντοπίσει 5 βήματα, αλλά μπορούμε να καθορίσουμε αν αυτό είναι σωστό; Ας ζητήσουμε από το LLM να εξηγήσει κάθε βήμα: + +> Προτροπή: Εξήγησε το πρώτο βήμα πιο αναλυτικά, ποιοι είναι οι κίνδυνοι μιας πανδημίας; + +```text +The risks are the following: + +- Loss of life +- Loss of business +- Loss of reputation +- Loss of customers +- Loss of employees +``` + +Σε αυτό το σημείο, θέλουμε να βεβαιωθούμε ότι το LLM είναι σωστό, οπότε του ζητάμε να εξηγήσει τον πρώτο κίνδυνο πιο αναλυτικά και ελπίζουμε ότι είναι συνεπές με την παραπάνω απάντηση: + +> Προτροπή: Σε μια πανδημία, ποιος είναι ο μεγαλύτερος κίνδυνος και +Όπως μπορείτε να δείτε, τα αποτελέσματα δεν θα μπορούσαν να είναι πιο ποικίλα. + +> Σημειώστε ότι υπάρχουν περισσότερες παράμετροι που μπορείτε να αλλάξετε για να διαφοροποιήσετε την έξοδο, όπως top-k, top-p, repetition penalty, length penalty και diversity penalty, αλλά αυτές είναι εκτός του πεδίου αυτής της διδακτικής ενότητας. + +## Καλές πρακτικές + +Υπάρχουν πολλές πρακτικές που μπορείτε να εφαρμόσετε για να πετύχετε το επιθυμητό αποτέλεσμα. Θα βρείτε το δικό σας στυλ καθώς χρησιμοποιείτε το prompting όλο και περισσότερο. + +Εκτός από τις τεχνικές που έχουμε καλύψει, υπάρχουν κάποιες καλές πρακτικές που πρέπει να λάβετε υπόψη όταν κάνετε prompting σε ένα LLM. + +Ακολουθούν κάποιες καλές πρακτικές που πρέπει να λάβετε υπόψη: + +- **Καθορίστε το πλαίσιο**. Το πλαίσιο έχει σημασία, όσο περισσότερο μπορείτε να καθορίσετε, όπως το πεδίο, το θέμα κ.λπ., τόσο το καλύτερο. +- Περιορίστε την έξοδο. Αν θέλετε έναν συγκεκριμένο αριθμό στοιχείων ή ένα συγκεκριμένο μήκος, καθορίστε το. +- **Καθορίστε τι και πώς**. Θυμηθείτε να αναφέρετε τόσο τι θέλετε όσο και πώς το θέλετε, για παράδειγμα "Δημιουργήστε ένα Python Web API με routes για προϊόντα και πελάτες, χωρίστε το σε 3 αρχεία". +- **Χρησιμοποιήστε πρότυπα**. Συχνά, θα θέλετε να εμπλουτίσετε τα prompts σας με δεδομένα από την εταιρεία σας. Χρησιμοποιήστε πρότυπα για να το κάνετε αυτό. Τα πρότυπα μπορούν να έχουν μεταβλητές που αντικαθιστάτε με πραγματικά δεδομένα. +- **Γράψτε σωστά**. Τα LLMs μπορεί να σας παρέχουν μια σωστή απάντηση, αλλά αν γράψετε σωστά, θα λάβετε μια καλύτερη απάντηση. + +## Εργασία + +Ακολουθεί κώδικας σε Python που δείχνει πώς να δημιουργήσετε ένα απλό API χρησιμοποιώντας Flask: + +```python +from flask import Flask, request + +app = Flask(__name__) + +@app.route('/') +def hello(): + name = request.args.get('name', 'World') + return f'Hello, {name}!' + +if __name__ == '__main__': + app.run() +``` + +Χρησιμοποιήστε έναν AI βοηθό όπως το GitHub Copilot ή το ChatGPT και εφαρμόστε την τεχνική "self-refine" για να βελτιώσετε τον κώδικα. + +## Λύση + +Προσπαθήστε να λύσετε την εργασία προσθέτοντας κατάλληλα prompts στον κώδικα. + +> [!TIP] +> Διατυπώστε ένα prompt για να ζητήσετε βελτίωση, είναι καλή ιδέα να περιορίσετε πόσες βελτιώσεις. Μπορείτε επίσης να ζητήσετε να βελτιωθεί με συγκεκριμένο τρόπο, για παράδειγμα αρχιτεκτονική, απόδοση, ασφάλεια κ.λπ. + +[Λύση](../../../05-advanced-prompts/python/aoai-solution.py) + +## Έλεγχος γνώσεων + +Γιατί να χρησιμοποιήσω το chain-of-thought prompting; Δείξτε μου 1 σωστή απάντηση και 2 λανθασμένες απαντήσεις. + +1. Για να διδάξω στο LLM πώς να λύσει ένα πρόβλημα. +1. B, Για να διδάξω στο LLM να βρει σφάλματα στον κώδικα. +1. C, Για να δώσω οδηγίες στο LLM να βρει διαφορετικές λύσεις. + +Α: 1, επειδή το chain-of-thought αφορά το να δείξετε στο LLM πώς να λύσει ένα πρόβλημα παρέχοντάς του μια σειρά βημάτων, και παρόμοια προβλήματα και πώς λύθηκαν. + +## 🚀 Πρόκληση + +Μόλις χρησιμοποιήσατε την τεχνική self-refine στην εργασία. Πάρτε οποιοδήποτε πρόγραμμα έχετε δημιουργήσει και σκεφτείτε ποιες βελτιώσεις θα θέλατε να εφαρμόσετε σε αυτό. Τώρα χρησιμοποιήστε την τεχνική self-refine για να εφαρμόσετε τις προτεινόμενες αλλαγές. Τι πιστεύετε για το αποτέλεσμα, καλύτερο ή χειρότερο; + +## Μπράβο! Συνεχίστε την εκμάθηση σας + +Αφού ολοκληρώσετε αυτό το μάθημα, δείτε τη [Συλλογή Εκμάθησης Γενετικής Τεχνητής Νοημοσύνης](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) για να συνεχίσετε να αναβαθμίζετε τις γνώσεις σας στη Γενετική Τεχνητή Νοημοσύνη! + +Προχωρήστε στο Μάθημα 6 όπου θα εφαρμόσουμε τις γνώσεις μας για το Prompt Engineering [δημιουργώντας εφαρμογές παραγωγής κειμένου](../06-text-generation-apps/README.md?WT.mc_id=academic-105485-koreyst) + +--- + +**Αποποίηση ευθύνης**: +Αυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία μετάφρασης AI [Co-op Translator](https://github.com/Azure/co-op-translator). Παρόλο που καταβάλλουμε προσπάθειες για ακρίβεια, παρακαλούμε να γνωρίζετε ότι οι αυτοματοποιημένες μεταφράσεις ενδέχεται να περιέχουν λάθη ή ανακρίβειες. Το πρωτότυπο έγγραφο στη μητρική του γλώσσα θα πρέπει να θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε ευθύνη για τυχόν παρεξηγήσεις ή εσφαλμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης. \ No newline at end of file diff --git a/translations/el/06-text-generation-apps/README.md b/translations/el/06-text-generation-apps/README.md index c5a1b55789..15ce4455bf 100644 --- a/translations/el/06-text-generation-apps/README.md +++ b/translations/el/06-text-generation-apps/README.md @@ -1,561 +1,581 @@ - -# Δημιουργία Εφαρμογών Γεννήτριας Κειμένου - -[![Building Text Generation Applications](../../../translated_images/06-lesson-banner.a5c629f990a636c852353c5533f1a6a218ece579005e91f96339d508d9cf8f47.el.png)](https://aka.ms/gen-ai-lesson6-gh?WT.mc_id=academic-105485-koreyst) - -> _(Κάντε κλικ στην εικόνα παραπάνω για να δείτε το βίντεο αυτής της ενότητας)_ - -Μέχρι τώρα μέσα από αυτό το πρόγραμμα σπουδών έχετε δει ότι υπάρχουν βασικές έννοιες όπως τα prompts και ακόμη και ολόκληρος κλάδος που ονομάζεται "μηχανική των prompts". Πολλά εργαλεία με τα οποία μπορείτε να αλληλεπιδράσετε, όπως το ChatGPT, το Office 365, το Microsoft Power Platform και άλλα, σας υποστηρίζουν χρησιμοποιώντας prompts για να πετύχετε κάτι. - -Για να προσθέσετε μια τέτοια εμπειρία σε μια εφαρμογή, πρέπει να κατανοήσετε έννοιες όπως τα prompts, τις ολοκληρώσεις (completions) και να επιλέξετε μια βιβλιοθήκη για να δουλέψετε. Αυτό ακριβώς θα μάθετε σε αυτό το κεφάλαιο. - -## Εισαγωγή - -Σε αυτό το κεφάλαιο, θα: - -- Μάθετε για τη βιβλιοθήκη openai και τις βασικές της έννοιες. -- Δημιουργήσετε μια εφαρμογή γεννήτριας κειμένου χρησιμοποιώντας το openai. -- Κατανοήσετε πώς να χρησιμοποιείτε έννοιες όπως prompt, temperature και tokens για να φτιάξετε μια εφαρμογή γεννήτριας κειμένου. - -## Στόχοι μάθησης - -Στο τέλος αυτής της ενότητας, θα μπορείτε να: - -- Εξηγήσετε τι είναι μια εφαρμογή γεννήτριας κειμένου. -- Δημιουργήσετε μια εφαρμογή γεννήτριας κειμένου χρησιμοποιώντας το openai. -- Ρυθμίσετε την εφαρμογή σας ώστε να χρησιμοποιεί περισσότερα ή λιγότερα tokens και να αλλάζετε τη θερμοκρασία, για πιο ποικίλη έξοδο. - -## Τι είναι μια εφαρμογή γεννήτριας κειμένου; - -Κανονικά, όταν δημιουργείτε μια εφαρμογή, έχει κάποιο είδος διεπαφής όπως η εξής: - -- Βασισμένη σε εντολές. Οι εφαρμογές κονσόλας είναι τυπικές εφαρμογές όπου πληκτρολογείτε μια εντολή και αυτή εκτελεί μια εργασία. Για παράδειγμα, το `git` είναι μια εφαρμογή βασισμένη σε εντολές. -- Διεπαφή χρήστη (UI). Κάποιες εφαρμογές έχουν γραφικές διεπαφές χρήστη (GUIs) όπου κάνετε κλικ σε κουμπιά, εισάγετε κείμενο, επιλέγετε επιλογές και άλλα. - -### Οι εφαρμογές κονσόλας και UI έχουν περιορισμούς - -Συγκρίνετε το με μια εφαρμογή βασισμένη σε εντολές όπου πληκτρολογείτε μια εντολή: - -- **Είναι περιορισμένη**. Δεν μπορείτε απλά να πληκτρολογήσετε οποιαδήποτε εντολή, μόνο αυτές που υποστηρίζει η εφαρμογή. -- **Ειδική γλώσσα**. Κάποιες εφαρμογές υποστηρίζουν πολλές γλώσσες, αλλά από προεπιλογή η εφαρμογή είναι φτιαγμένη για μια συγκεκριμένη γλώσσα, ακόμα κι αν μπορείτε να προσθέσετε υποστήριξη για περισσότερες. - -### Πλεονεκτήματα των εφαρμογών γεννήτριας κειμένου - -Πώς διαφέρει λοιπόν μια εφαρμογή γεννήτριας κειμένου; - -Σε μια εφαρμογή γεννήτριας κειμένου, έχετε μεγαλύτερη ευελιξία, δεν περιορίζεστε σε ένα σύνολο εντολών ή σε μια συγκεκριμένη γλώσσα εισόδου. Αντίθετα, μπορείτε να χρησιμοποιήσετε φυσική γλώσσα για να αλληλεπιδράσετε με την εφαρμογή. Ένα ακόμα πλεονέκτημα είναι ότι επειδή αλληλεπιδράτε ήδη με μια πηγή δεδομένων που έχει εκπαιδευτεί σε ένα τεράστιο σώμα πληροφοριών, ενώ μια παραδοσιακή εφαρμογή μπορεί να περιορίζεται σε ό,τι υπάρχει σε μια βάση δεδομένων. - -### Τι μπορώ να φτιάξω με μια εφαρμογή γεννήτριας κειμένου; - -Υπάρχουν πολλά πράγματα που μπορείτε να δημιουργήσετε. Για παράδειγμα: - -- **Ένα chatbot**. Ένα chatbot που απαντά σε ερωτήσεις για θέματα, όπως η εταιρεία σας και τα προϊόντα της, θα μπορούσε να είναι μια καλή επιλογή. -- **Βοηθό**. Τα LLMs είναι εξαιρετικά σε πράγματα όπως η περίληψη κειμένου, η εξαγωγή πληροφοριών από κείμενο, η παραγωγή κειμένου όπως βιογραφικά και άλλα. -- **Βοηθό κώδικα**. Ανάλογα με το γλωσσικό μοντέλο που χρησιμοποιείτε, μπορείτε να φτιάξετε έναν βοηθό κώδικα που σας βοηθά να γράφετε κώδικα. Για παράδειγμα, μπορείτε να χρησιμοποιήσετε προϊόντα όπως το GitHub Copilot καθώς και το ChatGPT για να σας βοηθήσουν να γράψετε κώδικα. - -## Πώς μπορώ να ξεκινήσω; - -Πρέπει να βρείτε έναν τρόπο να ενσωματωθείτε με ένα LLM, που συνήθως περιλαμβάνει τις εξής δύο προσεγγίσεις: - -- Χρήση API. Εδώ κατασκευάζετε αιτήματα web με το prompt σας και λαμβάνετε πίσω το παραγόμενο κείμενο. -- Χρήση βιβλιοθήκης. Οι βιβλιοθήκες βοηθούν να κρύψετε τις κλήσεις API και να τις κάνετε πιο εύκολες στη χρήση. - -## Βιβλιοθήκες/SDKs - -Υπάρχουν μερικές γνωστές βιβλιοθήκες για εργασία με LLMs όπως: - -- **openai**, αυτή η βιβλιοθήκη κάνει εύκολη τη σύνδεση με το μοντέλο σας και την αποστολή prompts. - -Έπειτα υπάρχουν βιβλιοθήκες που λειτουργούν σε υψηλότερο επίπεδο όπως: - -- **Langchain**. Το Langchain είναι γνωστό και υποστηρίζει Python. -- **Semantic Kernel**. Το Semantic Kernel είναι μια βιβλιοθήκη της Microsoft που υποστηρίζει τις γλώσσες C#, Python και Java. - -## Πρώτη εφαρμογή με χρήση openai - -Ας δούμε πώς μπορούμε να φτιάξουμε την πρώτη μας εφαρμογή, ποιες βιβλιοθήκες χρειαζόμαστε, πόσο απαιτείται και λοιπά. - -### Εγκατάσταση openai - -Υπάρχουν πολλές βιβλιοθήκες για αλληλεπίδραση με το OpenAI ή το Azure OpenAI. Είναι δυνατή η χρήση πολλών γλωσσών προγραμματισμού όπως C#, Python, JavaScript, Java και άλλες. Επιλέξαμε να χρησιμοποιήσουμε τη βιβλιοθήκη `openai` για Python, οπότε θα χρησιμοποιήσουμε το `pip` για να την εγκαταστήσουμε. - -```bash -pip install openai -``` - -### Δημιουργία πόρου - -Πρέπει να ακολουθήσετε τα εξής βήματα: - -- Δημιουργήστε λογαριασμό στο Azure [https://azure.microsoft.com/free/](https://azure.microsoft.com/free/?WT.mc_id=academic-105485-koreyst). -- Αποκτήστε πρόσβαση στο Azure OpenAI. Μεταβείτε στο [https://learn.microsoft.com/azure/ai-services/openai/overview#how-do-i-get-access-to-azure-openai](https://learn.microsoft.com/azure/ai-services/openai/overview#how-do-i-get-access-to-azure-openai?WT.mc_id=academic-105485-koreyst) και ζητήστε πρόσβαση. - - > [!NOTE] - > Τη στιγμή που γράφεται αυτό, πρέπει να κάνετε αίτηση για πρόσβαση στο Azure OpenAI. - -- Εγκαταστήστε Python -- Έχετε δημιουργήσει έναν πόρο Azure OpenAI Service. Δείτε αυτόν τον οδηγό για το πώς να [δημιουργήσετε πόρο](https://learn.microsoft.com/azure/ai-services/openai/how-to/create-resource?pivots=web-portal?WT.mc_id=academic-105485-koreyst). - -### Εντοπισμός κλειδιού API και endpoint - -Σε αυτό το σημείο, πρέπει να πείτε στη βιβλιοθήκη `openai` ποιο κλειδί API να χρησιμοποιήσει. Για να βρείτε το κλειδί API, μεταβείτε στην ενότητα "Keys and Endpoint" του πόρου Azure OpenAI και αντιγράψτε την τιμή "Key 1". - -![Keys and Endpoint resource blade in Azure Portal](https://learn.microsoft.com/azure/ai-services/openai/media/quickstarts/endpoint.png?WT.mc_id=academic-105485-koreyst) - -Τώρα που έχετε αντιγράψει αυτές τις πληροφορίες, ας δώσουμε οδηγίες στις βιβλιοθήκες να τις χρησιμοποιήσουν. - -> [!NOTE] -> Αξίζει να διαχωρίσετε το κλειδί API από τον κώδικά σας. Μπορείτε να το κάνετε χρησιμοποιώντας μεταβλητές περιβάλλοντος. -> -> - Ορίστε τη μεταβλητή περιβάλλοντος `OPENAI_API_KEY` στο κλειδί API σας. -> `export OPENAI_API_KEY='sk-...'` - -### Ρύθμιση παραμέτρων Azure - -Αν χρησιμοποιείτε Azure OpenAI, έτσι ρυθμίζετε την παραμετροποίηση: - -```python -openai.api_type = 'azure' -openai.api_key = os.environ["OPENAI_API_KEY"] -openai.api_version = '2023-05-15' -openai.api_base = os.getenv("API_BASE") -``` - -Παραπάνω ορίζουμε τα εξής: - -- `api_type` σε `azure`. Αυτό λέει στη βιβλιοθήκη να χρησιμοποιήσει το Azure OpenAI και όχι το OpenAI. -- `api_key`, αυτό είναι το κλειδί API που βρήκατε στο Azure Portal. -- `api_version`, αυτή είναι η έκδοση του API που θέλετε να χρησιμοποιήσετε. Τη στιγμή που γράφεται αυτό, η πιο πρόσφατη έκδοση είναι η `2023-05-15`. -- `api_base`, αυτό είναι το endpoint του API. Μπορείτε να το βρείτε στο Azure Portal δίπλα στο κλειδί API σας. - -> [!NOTE] > Η `os.getenv` είναι μια συνάρτηση που διαβάζει μεταβλητές περιβάλλοντος. Μπορείτε να τη χρησιμοποιήσετε για να διαβάσετε μεταβλητές όπως `OPENAI_API_KEY` και `API_BASE`. Ορίστε αυτές τις μεταβλητές στο τερματικό σας ή χρησιμοποιώντας μια βιβλιοθήκη όπως το `dotenv`. - -## Δημιουργία κειμένου - -Ο τρόπος για να δημιουργήσετε κείμενο είναι να χρησιμοποιήσετε την κλάση `Completion`. Να ένα παράδειγμα: - -```python -prompt = "Complete the following: Once upon a time there was a" - -completion = openai.Completion.create(model="davinci-002", prompt=prompt) -print(completion.choices[0].text) -``` - -Στον παραπάνω κώδικα, δημιουργούμε ένα αντικείμενο completion και περνάμε το μοντέλο που θέλουμε να χρησιμοποιήσουμε και το prompt. Έπειτα τυπώνουμε το παραγόμενο κείμενο. - -### Συνομιλίες (Chat completions) - -Μέχρι τώρα, έχετε δει πώς χρησιμοποιούμε το `Completion` για να δημιουργήσουμε κείμενο. Αλλά υπάρχει μια άλλη κλάση που ονομάζεται `ChatCompletion` και είναι πιο κατάλληλη για chatbots. Να ένα παράδειγμα χρήσης της: - -```python -import openai - -openai.api_key = "sk-..." - -completion = openai.ChatCompletion.create(model="gpt-3.5-turbo", messages=[{"role": "user", "content": "Hello world"}]) -print(completion.choices[0].message.content) -``` - -Περισσότερα για αυτή τη λειτουργία σε επόμενο κεφάλαιο. - -## Άσκηση - η πρώτη σας εφαρμογή γεννήτριας κειμένου - -Τώρα που μάθαμε πώς να ρυθμίσουμε και να παραμετροποιήσουμε το openai, ήρθε η ώρα να φτιάξετε την πρώτη σας εφαρμογή γεννήτριας κειμένου. Για να φτιάξετε την εφαρμογή, ακολουθήστε τα βήματα: - -1. Δημιουργήστε ένα εικονικό περιβάλλον και εγκαταστήστε το openai: - - ```bash - python -m venv venv - source venv/bin/activate - pip install openai - ``` - - > [!NOTE] - > Αν χρησιμοποιείτε Windows, πληκτρολογήστε `venv\Scripts\activate` αντί για `source venv/bin/activate`. - - > [!NOTE] - > Εντοπίστε το κλειδί Azure OpenAI πηγαίνοντας στο [https://portal.azure.com/](https://portal.azure.com/?WT.mc_id=academic-105485-koreyst), αναζητήστε `Open AI`, επιλέξτε τον πόρο `Open AI resource` και μετά επιλέξτε `Keys and Endpoint` και αντιγράψτε την τιμή `Key 1`. - -1. Δημιουργήστε ένα αρχείο _app.py_ και βάλτε τον παρακάτω κώδικα: - - ```python - import openai - - openai.api_key = "" - - openai.api_type = 'azure' - openai.api_version = '2023-05-15' - openai.api_base = "" - deployment_name = "" - - # add your completion code - prompt = "Complete the following: Once upon a time there was a" - messages = [{"role": "user", "content": prompt}] - - # make completion - completion = openai.chat.completions.create(model=deployment_name, messages=messages) - - # print response - print(completion.choices[0].message.content) - ``` - - > [!NOTE] - > Αν χρησιμοποιείτε Azure OpenAI, πρέπει να ορίσετε το `api_type` σε `azure` και το `api_key` στο κλειδί Azure OpenAI. - - Θα δείτε μια έξοδο όπως η παρακάτω: - - ```output - very unhappy _____. - - Once upon a time there was a very unhappy mermaid. - ``` - -## Διαφορετικοί τύποι prompts, για διαφορετικές χρήσεις - -Τώρα έχετε δει πώς να δημιουργείτε κείμενο χρησιμοποιώντας ένα prompt. Έχετε ακόμη ένα πρόγραμμα σε λειτουργία που μπορείτε να τροποποιήσετε και να αλλάξετε για να παράγετε διαφορετικούς τύπους κειμένου. - -Τα prompts μπορούν να χρησιμοποιηθούν για κάθε είδους εργασίες. Για παράδειγμα: - -- **Δημιουργία τύπου κειμένου**. Για παράδειγμα, μπορείτε να δημιουργήσετε ένα ποίημα, ερωτήσεις για κουίζ κ.ά. -- **Αναζήτηση πληροφοριών**. Μπορείτε να χρησιμοποιήσετε prompts για να αναζητήσετε πληροφορίες όπως το παράδειγμα 'Τι σημαίνει CORS στην ανάπτυξη ιστοσελίδων;'. -- **Δημιουργία κώδικα**. Μπορείτε να χρησιμοποιήσετε prompts για να δημιουργήσετε κώδικα, για παράδειγμα να αναπτύξετε μια κανονική έκφραση για την επικύρωση email ή γιατί όχι να δημιουργήσετε ολόκληρο πρόγραμμα, όπως μια web εφαρμογή; - -## Μια πιο πρακτική περίπτωση: γεννήτρια συνταγών - -Φανταστείτε ότι έχετε υλικά στο σπίτι και θέλετε να μαγειρέψετε κάτι. Για αυτό χρειάζεστε μια συνταγή. Ένας τρόπος να βρείτε συνταγές είναι να χρησιμοποιήσετε μια μηχανή αναζήτησης ή να χρησιμοποιήσετε ένα LLM για αυτό. - -Μπορείτε να γράψετε ένα prompt ως εξής: - -> "Δείξε μου 5 συνταγές για πιάτο με τα εξής υλικά: κοτόπουλο, πατάτες και καρότα. Για κάθε συνταγή, να αναφέρονται όλα τα υλικά που χρησιμοποιούνται" - -Με το παραπάνω prompt, μπορεί να λάβετε μια απάντηση παρόμοια με: - -```output -1. Roasted Chicken and Vegetables: -Ingredients: -- 4 chicken thighs -- 2 potatoes, cut into cubes -- 2 carrots, cut into cubes -- 2 tablespoons olive oil -- 2 cloves garlic, minced -- 1 teaspoon dried thyme -- 1 teaspoon dried oregano -- Salt and pepper, to taste - -2. Chicken and Potato Stew: -Ingredients: -- 2 tablespoons olive oil -- 1 onion, diced -- 2 cloves garlic, minced -- 2 chicken breasts, cut into cubes -- 2 potatoes, cut into cubes -- 2 carrots, cut into cubes -- 1 teaspoon dried oregano -- 1 teaspoon dried thyme -- 1 cup chicken broth -- Salt and pepper, to taste - -3. Chicken and Potato Bake: -Ingredients: -- 2 tablespoons olive oil -- 2 chicken breasts, cut into cubes -- 2 potatoes, cut into cubes -- 2 carrots, cut into cubes -- 1 onion, diced -- 2 cloves garlic, minced -- 1 teaspoon dried oregano -- 1 teaspoon dried thyme -- 1 cup chicken broth -- Salt and pepper, to taste - -4. Chicken and Potato Soup: -Ingredients: -- 2 tablespoons olive oil -- 1 onion, diced -- 2 cloves garlic, minced -- 2 chicken breasts, cut into cubes -- 2 potatoes, cut into cubes -- 2 carrots, cut into cubes -- 1 teaspoon dried oregano -- 1 teaspoon dried thyme -- 4 cups chicken broth -- Salt and pepper, to taste - -5. Chicken and Potato Hash: -Ingredients: -- 2 tablespoons olive oil -- 2 chicken breasts, cut into cubes -- 2 potatoes, cut into cubes -- 2 carrots, cut into cubes -- 1 onion, diced -- 2 cloves garlic, minced -- 1 teaspoon dried oregano -``` - -Αυτό το αποτέλεσμα είναι υπέροχο, ξέρω τι να μαγειρέψω. Σε αυτό το σημείο, χρήσιμες βελτιώσεις θα μπορούσαν να είναι: - -- Φιλτράρισμα υλικών που δεν μου αρέσουν ή είμαι αλλεργικός. -- Δημιουργία λίστας αγορών, σε περίπτωση που δεν έχω όλα τα υλικά στο σπίτι. - -Για τις παραπάνω περιπτώσεις, ας προσθέσουμε ένα επιπλέον prompt: - -> "Παρακαλώ αφαίρεσε τις συνταγές με σκόρδο γιατί είμαι αλλεργικός και αντικατέστησέ το με κάτι άλλο. Επίσης, δημιούργησε μια λίστα αγορών για τις συνταγές, λαμβάνοντας υπόψη ότι ήδη έχω κοτόπουλο, πατάτες και καρότα στο σπίτι." - -Τώρα έχετε ένα νέο αποτέλεσμα, συγκεκριμένα: - -```output -1. Roasted Chicken and Vegetables: -Ingredients: -- 4 chicken thighs -- 2 potatoes, cut into cubes -- 2 carrots, cut into cubes -- 2 tablespoons olive oil -- 1 teaspoon dried thyme -- 1 teaspoon dried oregano -- Salt and pepper, to taste - -2. Chicken and Potato Stew: -Ingredients: -- 2 tablespoons olive oil -- 1 onion, diced -- 2 chicken breasts, cut into cubes -- 2 potatoes, cut into cubes -- 2 carrots, cut into cubes -- 1 teaspoon dried oregano -- 1 teaspoon dried thyme -- 1 cup chicken broth -- Salt and pepper, to taste - -3. Chicken and Potato Bake: -Ingredients: -- 2 tablespoons olive oil -- 2 chicken breasts, cut into cubes -- 2 potatoes, cut into cubes -- 2 carrots, cut into cubes -- 1 onion, diced -- 1 teaspoon dried oregano -- 1 teaspoon dried thyme -- 1 cup chicken broth -- Salt and pepper, to taste - -4. Chicken and Potato Soup: -Ingredients: -- 2 tablespoons olive oil -- 1 onion, diced -- 2 chicken breasts, cut into cubes -- 2 potatoes, cut into cubes -- 2 carrots, cut into cubes -- 1 teaspoon dried oregano -- 1 teaspoon dried thyme -- 4 cups chicken broth -- Salt and pepper, to taste - -5. Chicken and Potato Hash: -Ingredients: -- 2 tablespoons olive oil -- 2 chicken breasts, cut into cubes -- 2 potatoes, cut into cubes -- 2 carrots, cut into cubes -- 1 onion, diced -- 1 teaspoon dried oregano - -Shopping List: -- Olive oil -- Onion -- Thyme -- Oregano -- Salt -- Pepper -``` - -Αυτές είναι οι πέντε συνταγές σας, χωρίς να αναφέρεται σκόρδο και έχετε επίσης μια λίστα αγορών λαμβάνοντας υπόψη όσα ήδη έχετε στο σπίτι. - -## Άσκηση - φτιάξτε μια γεννήτρια συνταγών - -Τώρα που παίξαμε ένα σενάριο, ας γράψουμε κώδικα που να ταιριάζει με το παραδειγματικό σενάριο. Για να το κάνετε, ακολουθήστε τα βήματα: - -1. Χρησιμοποιήστε το υπάρχον αρχείο _app.py_ ως αφετηρία -1. Εντοπίστε τη μεταβλητή `prompt` και αλλάξτε τον κώδικά της ως εξής: - - ```python - prompt = "Show me 5 recipes for a dish with the following ingredients: chicken, potatoes, and carrots. Per recipe, list all the ingredients used" - ``` - - Αν τρέξετε τώρα τον κώδικα, θα δείτε μια έξοδο παρόμοια με: - - ```output - -Chicken Stew with Potatoes and Carrots: 3 tablespoons oil, 1 onion, chopped, 2 cloves garlic, minced, 1 carrot, peeled and chopped, 1 potato, peeled and chopped, 1 bay leaf, 1 thyme sprig, 1/2 teaspoon salt, 1/4 teaspoon black pepper, 1 1/2 cups chicken broth, 1/2 cup dry white wine, 2 tablespoons chopped fresh parsley, 2 tablespoons unsalted butter, 1 1/2 pounds boneless, skinless chicken thighs, cut into 1-inch pieces - -Oven-Roasted Chicken with Potatoes and Carrots: 3 tablespoons extra-virgin olive oil, 1 tablespoon Dijon mustard, 1 tablespoon chopped fresh rosemary, 1 tablespoon chopped fresh thyme, 4 cloves garlic, minced, 1 1/2 pounds small red potatoes, quartered, 1 1/2 pounds carrots, quartered lengthwise, 1/2 teaspoon salt, 1/4 teaspoon black pepper, 1 (4-pound) whole chicken - -Chicken, Potato, and Carrot Casserole: cooking spray, 1 large onion, chopped, 2 cloves garlic, minced, 1 carrot, peeled and shredded, 1 potato, peeled and shredded, 1/2 teaspoon dried thyme leaves, 1/4 teaspoon salt, 1/4 teaspoon black pepper, 2 cups fat-free, low-sodium chicken broth, 1 cup frozen peas, 1/4 cup all-purpose flour, 1 cup 2% reduced-fat milk, 1/4 cup grated Parmesan cheese - - -One Pot Chicken and Potato Dinner: 2 tablespoons olive oil, 1 pound boneless, skinless chicken thighs, cut into 1-inch pieces, 1 large onion, chopped, 3 cloves garlic, minced, 1 carrot, peeled and chopped, 1 potato, peeled and chopped, 1 bay leaf, 1 thyme sprig, 1/2 teaspoon salt, 1/4 teaspoon black pepper, 2 cups chicken broth, 1/2 cup dry white wine - - -Chicken, Potato, and Carrot Curry: 1 tablespoon vegetable oil, 1 large onion, chopped, 2 cloves garlic, minced, 1 carrot, peeled and chopped, 1 potato, peeled and chopped, 1 teaspoon ground coriander, 1 teaspoon ground cumin, 1/2 teaspoon ground turmeric, 1/2 teaspoon ground ginger, 1/4 teaspoon cayenne pepper, 2 cups chicken broth, 1/2 cup dry white wine, 1 (15-ounce) can chickpeas, drained and rinsed, 1/2 cup raisins, 1/2 cup chopped fresh cilantro - ``` - - > NOTE, το LLM σας δεν είναι ντετερμινιστικό, οπότε μπορεί να έχετε διαφορετικά αποτελέσματα κάθε φορά που τρέχετε το πρόγραμμα. - - Τέλεια, ας δούμε πώς μπορούμε να βελτιώσουμε τα πράγματα. Για να τα βελτιώσουμε, θέλουμε να κάνουμε τον κώδικα ευέλικτο, ώστε τα υλικά και ο αριθμός των συνταγών να μπορούν να αλλάζουν και να βελτιώνονται. - -1. Ας αλλάξουμε τον κώδικα ως εξής: - - ```python - no_recipes = input("No of recipes (for example, 5): ") - - ingredients = input("List of ingredients (for example, chicken, potatoes, and carrots): ") - - # interpolate the number of recipes into the prompt an ingredients - prompt = f"Show me {no_recipes} recipes for a dish with the following ingredients: {ingredients}. Per recipe, list all the ingredients used" - ``` - - Ένα παράδειγμα εκτέλεσης του κώδικα μπορεί να μοιάζει με: - - ```output - No of recipes (for example, 5): 3 - List of ingredients (for example, chicken, potatoes, and carrots): milk,strawberries - - -Strawberry milk shake: milk, strawberries, sugar, vanilla extract, ice cubes - -Strawberry shortcake: milk, flour, baking powder, sugar, salt, unsalted butter, strawberries, whipped cream - -Strawberry milk: milk, strawberries, sugar, vanilla extract - ``` - -### Βελτίωση με προσθήκη φίλτρου και λίστας αγορών - -Τώρα έχουμε μια λειτουργική εφαρμογή που μπορεί να παράγει συνταγές και είναι ευέλικτη καθώς βασίζεται σε εισόδους από τον χρήστη, τόσο για τον αριθμό των συνταγών όσο και για τα υλικά που χρησιμοποιούνται. - -Για περαιτέρω βελτίωση, θέλουμε -1. Κάνουμε ένα νέο αίτημα, αλλά λαμβάνοντας υπόψη και τον αριθμό των tokens που ζητήσαμε στο πρώτο prompt, οπότε αυτή τη φορά ορίζουμε το `max_tokens` σε 1200. - - ```python - completion = openai.Completion.create(engine=deployment_name, prompt=new_prompt, max_tokens=1200) - ``` - - Δοκιμάζοντας αυτόν τον κώδικα, καταλήγουμε στην εξής έξοδο: - - ```output - No of recipes (for example, 5): 2 - List of ingredients (for example, chicken, potatoes, and carrots): apple,flour - Filter (for example, vegetarian, vegan, or gluten-free): sugar - - - -Apple and flour pancakes: 1 cup flour, 1/2 tsp baking powder, 1/2 tsp baking soda, 1/4 tsp salt, 1 tbsp sugar, 1 egg, 1 cup buttermilk or sour milk, 1/4 cup melted butter, 1 Granny Smith apple, peeled and grated - -Apple fritters: 1-1/2 cups flour, 1 tsp baking powder, 1/4 tsp salt, 1/4 tsp baking soda, 1/4 tsp nutmeg, 1/4 tsp cinnamon, 1/4 tsp allspice, 1/4 cup sugar, 1/4 cup vegetable shortening, 1/4 cup milk, 1 egg, 2 cups shredded, peeled apples - Shopping list: - -Flour, baking powder, baking soda, salt, sugar, egg, buttermilk, butter, apple, nutmeg, cinnamon, allspice - ``` - -## Βελτιώστε τη ρύθμισή σας - -Αυτό που έχουμε μέχρι τώρα είναι κώδικας που λειτουργεί, αλλά υπάρχουν κάποιες βελτιώσεις που θα πρέπει να κάνουμε για να το κάνουμε ακόμα καλύτερο. Κάποια πράγματα που πρέπει να κάνουμε είναι: - -- **Διαχωρίστε τα μυστικά από τον κώδικα**, όπως το API key. Τα μυστικά δεν ανήκουν στον κώδικα και πρέπει να αποθηκεύονται σε ασφαλές μέρος. Για να διαχωρίσουμε τα μυστικά από τον κώδικα, μπορούμε να χρησιμοποιήσουμε μεταβλητές περιβάλλοντος και βιβλιοθήκες όπως το `python-dotenv` για να τα φορτώνουμε από ένα αρχείο. Δείτε πώς θα ήταν αυτό στον κώδικα: - - 1. Δημιουργήστε ένα αρχείο `.env` με το παρακάτω περιεχόμενο: - - ```bash - OPENAI_API_KEY=sk-... - ``` - - -> Σημείωση, για το Azure, πρέπει να ορίσετε τις παρακάτω μεταβλητές περιβάλλοντος: - - ```bash - OPENAI_API_TYPE=azure - OPENAI_API_VERSION=2023-05-15 - OPENAI_API_BASE= - ``` - - Στον κώδικα, θα φορτώνατε τις μεταβλητές περιβάλλοντος ως εξής: - - ```python - from dotenv import load_dotenv - - load_dotenv() - - openai.api_key = os.environ["OPENAI_API_KEY"] - ``` - -- **Λίγα λόγια για το μήκος των tokens**. Πρέπει να σκεφτούμε πόσα tokens χρειαζόμαστε για να δημιουργήσουμε το κείμενο που θέλουμε. Τα tokens κοστίζουν χρήματα, οπότε όπου είναι δυνατόν, καλό είναι να είμαστε οικονομικοί με τον αριθμό των tokens που χρησιμοποιούμε. Για παράδειγμα, μπορούμε να διατυπώσουμε το prompt έτσι ώστε να χρησιμοποιούμε λιγότερα tokens; - - Για να αλλάξετε τα tokens που χρησιμοποιούνται, μπορείτε να χρησιμοποιήσετε την παράμετρο `max_tokens`. Για παράδειγμα, αν θέλετε να χρησιμοποιήσετε 100 tokens, θα κάνατε: - - ```python - completion = client.chat.completions.create(model=deployment, messages=messages, max_tokens=100) - ``` - -- **Πειραματισμός με τη θερμοκρασία (temperature)**. Η θερμοκρασία είναι κάτι που δεν έχουμε αναφέρει μέχρι τώρα, αλλά είναι σημαντικό πλαίσιο για το πώς λειτουργεί το πρόγραμμα μας. Όσο μεγαλύτερη είναι η τιμή της θερμοκρασίας, τόσο πιο τυχαία θα είναι η έξοδος. Αντίθετα, όσο μικρότερη είναι η τιμή της θερμοκρασίας, τόσο πιο προβλέψιμη θα είναι η έξοδος. Σκεφτείτε αν θέλετε παραλλαγές στην έξοδό σας ή όχι. - - Για να αλλάξετε τη θερμοκρασία, μπορείτε να χρησιμοποιήσετε την παράμετρο `temperature`. Για παράδειγμα, αν θέλετε να χρησιμοποιήσετε θερμοκρασία 0.5, θα κάνατε: - - ```python - completion = client.chat.completions.create(model=deployment, messages=messages, temperature=0.5) - ``` - - > Σημείωση, όσο πιο κοντά στο 1.0, τόσο πιο ποικίλη η έξοδος. - -## Ανάθεση - -Για αυτή την ανάθεση, μπορείτε να επιλέξετε τι θέλετε να φτιάξετε. - -Ορίστε μερικές προτάσεις: - -- Βελτιώστε την εφαρμογή δημιουργίας συνταγών για να την κάνετε ακόμα καλύτερη. Πειραματιστείτε με τις τιμές της θερμοκρασίας και τα prompts για να δείτε τι μπορείτε να πετύχετε. -- Δημιουργήστε έναν "σύντροφο μελέτης". Αυτή η εφαρμογή θα πρέπει να μπορεί να απαντά σε ερωτήσεις για ένα θέμα, για παράδειγμα Python, μπορείτε να έχετε prompts όπως "Τι είναι ένα συγκεκριμένο θέμα στην Python;", ή να έχετε ένα prompt που λέει, δείξε μου κώδικα για ένα συγκεκριμένο θέμα κτλ. -- Ιστορικό bot, κάντε την ιστορία να ζωντανέψει, δώστε εντολή στο bot να υποδυθεί έναν συγκεκριμένο ιστορικό χαρακτήρα και ρωτήστε το για τη ζωή και την εποχή του. - -## Λύση - -### Σύντροφος μελέτης - -Παρακάτω είναι ένα αρχικό prompt, δείτε πώς μπορείτε να το χρησιμοποιήσετε και να το προσαρμόσετε στα μέτρα σας. - -```text -- "You're an expert on the Python language - - Suggest a beginner lesson for Python in the following format: - - Format: - - concepts: - - brief explanation of the lesson: - - exercise in code with solutions" -``` - -### Ιστορικό bot - -Ορίστε μερικά prompts που θα μπορούσατε να χρησιμοποιήσετε: - -```text -- "You are Abe Lincoln, tell me about yourself in 3 sentences, and respond using grammar and words like Abe would have used" -- "You are Abe Lincoln, respond using grammar and words like Abe would have used: - - Tell me about your greatest accomplishments, in 300 words" -``` - -## Έλεγχος γνώσεων - -Τι κάνει η έννοια της θερμοκρασίας (temperature); - -1. Ελέγχει πόσο τυχαία είναι η έξοδος. -1. Ελέγχει πόσο μεγάλη είναι η απάντηση. -1. Ελέγχει πόσα tokens χρησιμοποιούνται. - -## 🚀 Πρόκληση - -Κατά την εργασία στην ανάθεση, δοκιμάστε να μεταβάλλετε τη θερμοκρασία, δοκιμάστε να την ορίσετε σε 0, 0.5 και 1. Θυμηθείτε ότι το 0 είναι η λιγότερο ποικίλη και το 1 η πιο ποικίλη. Ποια τιμή λειτουργεί καλύτερα για την εφαρμογή σας; - -## Μπράβο! Συνεχίστε τη μάθησή σας - -Αφού ολοκληρώσετε αυτό το μάθημα, ρίξτε μια ματιά στη [Συλλογή Μάθησης για Generative AI](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) για να συνεχίσετε να ανεβάζετε το επίπεδο των γνώσεών σας στο Generative AI! - -Πηγαίνετε στο Μάθημα 7 όπου θα δούμε πώς να [δημιουργούμε εφαρμογές συνομιλίας](../07-building-chat-applications/README.md?WT.mc_id=academic-105485-koreyst)! - -**Αποποίηση ευθυνών**: -Αυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία αυτόματης μετάφρασης AI [Co-op Translator](https://github.com/Azure/co-op-translator). Παρόλο που επιδιώκουμε την ακρίβεια, παρακαλούμε να γνωρίζετε ότι οι αυτόματες μεταφράσεις ενδέχεται να περιέχουν λάθη ή ανακρίβειες. Το πρωτότυπο έγγραφο στη μητρική του γλώσσα πρέπει να θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε ευθύνη για τυχόν παρεξηγήσεις ή λανθασμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης. \ No newline at end of file + +# Δημιουργία Εφαρμογών Παραγωγής Κειμένου + +[![Δημιουργία Εφαρμογών Παραγωγής Κειμένου](../../../translated_images/06-lesson-banner.a5c629f990a636c852353c5533f1a6a218ece579005e91f96339d508d9cf8f47.el.png)](https://youtu.be/0Y5Luf5sRQA?si=t_xVg0clnAI4oUFZ) + +> _(Κάντε κλικ στην εικόνα παραπάνω για να δείτε το βίντεο αυτού του μαθήματος)_ + +Μέχρι τώρα, μέσα από αυτό το πρόγραμμα σπουδών, έχετε δει βασικές έννοιες όπως τα prompts και ακόμη και μια ολόκληρη επιστήμη που ονομάζεται "prompt engineering". Πολλά εργαλεία με τα οποία μπορείτε να αλληλεπιδράσετε, όπως το ChatGPT, το Office 365, το Microsoft Power Platform και άλλα, σας υποστηρίζουν στη χρήση prompts για να επιτύχετε κάτι. + +Για να προσθέσετε μια τέτοια εμπειρία σε μια εφαρμογή, πρέπει να κατανοήσετε έννοιες όπως τα prompts, οι ολοκληρώσεις και να επιλέξετε μια βιβλιοθήκη για να δουλέψετε. Αυτό ακριβώς θα μάθετε σε αυτό το κεφάλαιο. + +## Εισαγωγή + +Σε αυτό το κεφάλαιο, θα: + +- Μάθετε για τη βιβλιοθήκη openai και τις βασικές της έννοιες. +- Δημιουργήσετε μια εφαρμογή παραγωγής κειμένου χρησιμοποιώντας το openai. +- Κατανοήσετε πώς να χρησιμοποιείτε έννοιες όπως το prompt, τη θερμοκρασία και τα tokens για να δημιουργήσετε μια εφαρμογή παραγωγής κειμένου. + +## Στόχοι μάθησης + +Στο τέλος αυτού του μαθήματος, θα μπορείτε να: + +- Εξηγήσετε τι είναι μια εφαρμογή παραγωγής κειμένου. +- Δημιουργήσετε μια εφαρμογή παραγωγής κειμένου χρησιμοποιώντας το openai. +- Ρυθμίσετε την εφαρμογή σας ώστε να χρησιμοποιεί περισσότερα ή λιγότερα tokens και να αλλάξετε τη θερμοκρασία για ποικίλα αποτελέσματα. + +## Τι είναι μια εφαρμογή παραγωγής κειμένου; + +Συνήθως, όταν δημιουργείτε μια εφαρμογή, έχει κάποιο είδος διεπαφής όπως οι παρακάτω: + +- Βασισμένη σε εντολές. Οι εφαρμογές κονσόλας είναι τυπικές εφαρμογές όπου πληκτρολογείτε μια εντολή και εκτελεί μια εργασία. Για παράδειγμα, το `git` είναι μια εφαρμογή βασισμένη σε εντολές. +- Διεπαφή χρήστη (UI). Ορισμένες εφαρμογές έχουν γραφικές διεπαφές χρήστη (GUIs) όπου κάνετε κλικ σε κουμπιά, εισάγετε κείμενο, επιλέγετε επιλογές και άλλα. + +### Οι εφαρμογές κονσόλας και UI έχουν περιορισμούς + +Συγκρίνετε το με μια εφαρμογή βασισμένη σε εντολές όπου πληκτρολογείτε μια εντολή: + +- **Είναι περιορισμένη**. Δεν μπορείτε απλά να πληκτρολογήσετε οποιαδήποτε εντολή, μόνο αυτές που υποστηρίζει η εφαρμογή. +- **Ειδική γλώσσα**. Ορισμένες εφαρμογές υποστηρίζουν πολλές γλώσσες, αλλά από προεπιλογή η εφαρμογή είναι κατασκευασμένη για μια συγκεκριμένη γλώσσα, ακόμη και αν μπορείτε να προσθέσετε υποστήριξη για περισσότερες γλώσσες. + +### Πλεονεκτήματα των εφαρμογών παραγωγής κειμένου + +Πώς είναι διαφορετική μια εφαρμογή παραγωγής κειμένου; + +Σε μια εφαρμογή παραγωγής κειμένου, έχετε περισσότερη ευελιξία, δεν περιορίζεστε σε ένα σύνολο εντολών ή μια συγκεκριμένη γλώσσα εισόδου. Αντίθετα, μπορείτε να χρησιμοποιήσετε φυσική γλώσσα για να αλληλεπιδράσετε με την εφαρμογή. Ένα άλλο πλεονέκτημα είναι ότι ήδη αλληλεπιδράτε με μια πηγή δεδομένων που έχει εκπαιδευτεί σε ένα τεράστιο σώμα πληροφοριών, ενώ μια παραδοσιακή εφαρμογή μπορεί να περιορίζεται σε ό,τι υπάρχει σε μια βάση δεδομένων. + +### Τι μπορώ να δημιουργήσω με μια εφαρμογή παραγωγής κειμένου; + +Υπάρχουν πολλά πράγματα που μπορείτε να δημιουργήσετε. Για παράδειγμα: + +- **Ένα chatbot**. Ένα chatbot που απαντά σε ερωτήσεις για θέματα, όπως η εταιρεία σας και τα προϊόντα της, θα μπορούσε να είναι μια καλή επιλογή. +- **Βοηθός**. Τα LLMs είναι εξαιρετικά σε πράγματα όπως η περίληψη κειμένου, η εξαγωγή πληροφοριών από κείμενο, η παραγωγή κειμένου όπως βιογραφικά και άλλα. +- **Βοηθός κώδικα**. Ανάλογα με το μοντέλο γλώσσας που χρησιμοποιείτε, μπορείτε να δημιουργήσετε έναν βοηθό κώδικα που σας βοηθά να γράψετε κώδικα. Για παράδειγμα, μπορείτε να χρησιμοποιήσετε ένα προϊόν όπως το GitHub Copilot καθώς και το ChatGPT για να σας βοηθήσει να γράψετε κώδικα. + +## Πώς μπορώ να ξεκινήσω; + +Πρέπει να βρείτε έναν τρόπο να ενσωματωθείτε με ένα LLM, κάτι που συνήθως περιλαμβάνει τις εξής δύο προσεγγίσεις: + +- Χρήση API. Εδώ κατασκευάζετε αιτήματα ιστού με το prompt σας και λαμβάνετε πίσω το παραγόμενο κείμενο. +- Χρήση βιβλιοθήκης. Οι βιβλιοθήκες βοηθούν στην απλοποίηση των κλήσεων API και καθιστούν τη χρήση τους ευκολότερη. + +## Βιβλιοθήκες/SDKs + +Υπάρχουν μερικές γνωστές βιβλιοθήκες για εργασία με LLMs όπως: + +- **openai**, αυτή η βιβλιοθήκη διευκολύνει τη σύνδεση με το μοντέλο σας και την αποστολή prompts. + +Επιπλέον, υπάρχουν βιβλιοθήκες που λειτουργούν σε υψηλότερο επίπεδο όπως: + +- **Langchain**. Το Langchain είναι γνωστό και υποστηρίζει Python. +- **Semantic Kernel**. Το Semantic Kernel είναι μια βιβλιοθήκη της Microsoft που υποστηρίζει τις γλώσσες C#, Python και Java. + +## Πρώτη εφαρμογή με χρήση openai + +Ας δούμε πώς μπορούμε να δημιουργήσουμε την πρώτη μας εφαρμογή, ποιες βιβλιοθήκες χρειαζόμαστε, πόσο απαιτείται και ούτω καθεξής. + +### Εγκατάσταση openai + +Υπάρχουν πολλές βιβλιοθήκες για την αλληλεπίδραση με το OpenAI ή το Azure OpenAI. Είναι δυνατό να χρησιμοποιήσετε πολλές γλώσσες προγραμματισμού όπως C#, Python, JavaScript, Java και άλλες. Έχουμε επιλέξει να χρησιμοποιήσουμε τη βιβλιοθήκη Python `openai`, οπότε θα χρησιμοποιήσουμε το `pip` για να την εγκαταστήσουμε. + +```bash +pip install openai +``` + +### Δημιουργία πόρου + +Πρέπει να εκτελέσετε τα παρακάτω βήματα: + +- Δημιουργήστε έναν λογαριασμό στο Azure [https://azure.microsoft.com/free/](https://azure.microsoft.com/free/?WT.mc_id=academic-105485-koreyst). +- Αποκτήστε πρόσβαση στο Azure OpenAI. Μεταβείτε στο [https://learn.microsoft.com/azure/ai-services/openai/overview#how-do-i-get-access-to-azure-openai](https://learn.microsoft.com/azure/ai-services/openai/overview#how-do-i-get-access-to-azure-openai?WT.mc_id=academic-105485-koreyst) και ζητήστε πρόσβαση. + + > [!NOTE] + > Τη στιγμή της συγγραφής, πρέπει να υποβάλετε αίτηση για πρόσβαση στο Azure OpenAI. + +- Εγκαταστήστε το Python +- Δημιουργήστε έναν πόρο Azure OpenAI Service. Δείτε αυτόν τον οδηγό για το πώς να [δημιουργήσετε έναν πόρο](https://learn.microsoft.com/azure/ai-services/openai/how-to/create-resource?pivots=web-portal?WT.mc_id=academic-105485-koreyst). + +### Εντοπισμός API key και endpoint + +Σε αυτό το σημείο, πρέπει να πείτε στη βιβλιοθήκη `openai` ποιο API key να χρησιμοποιήσει. Για να βρείτε το API key σας, μεταβείτε στην ενότητα "Keys and Endpoint" του πόρου Azure OpenAI και αντιγράψτε την τιμή "Key 1". + +![Keys and Endpoint resource blade in Azure Portal](https://learn.microsoft.com/azure/ai-services/openai/media/quickstarts/endpoint.png?WT.mc_id=academic-105485-koreyst) + +Τώρα που έχετε αντιγράψει αυτές τις πληροφορίες, ας δώσουμε οδηγίες στις βιβλιοθήκες να τις χρησιμοποιήσουν. + +> [!NOTE] +> Αξίζει να διαχωρίσετε το API key σας από τον κώδικα σας. Μπορείτε να το κάνετε χρησιμοποιώντας μεταβλητές περιβάλλοντος. +> +> - Ορίστε τη μεταβλητή περιβάλλοντος `OPENAI_API_KEY` στο API key σας. +> `export OPENAI_API_KEY='sk-...'` + +### Ρύθμιση παραμέτρων Azure + +Αν χρησιμοποιείτε το Azure OpenAI, δείτε πώς να ρυθμίσετε τις παραμέτρους: + +```python +openai.api_type = 'azure' +openai.api_key = os.environ["OPENAI_API_KEY"] +openai.api_version = '2023-05-15' +openai.api_base = os.getenv("API_BASE") +``` + +Πάνω, ορίζουμε τα εξής: + +- `api_type` σε `azure`. Αυτό λέει στη βιβλιοθήκη να χρησιμοποιήσει το Azure OpenAI και όχι το OpenAI. +- `api_key`, αυτό είναι το API key σας που βρίσκεται στο Azure Portal. +- `api_version`, αυτή είναι η έκδοση του API που θέλετε να χρησιμοποιήσετε. Τη στιγμή της συγγραφής, η τελευταία έκδοση είναι η `2023-05-15`. +- `api_base`, αυτό είναι το endpoint του API. Μπορείτε να το βρείτε στο Azure Portal δίπλα στο API key σας. + +> [!NOTE] > Το `os.getenv` είναι μια συνάρτηση που διαβάζει μεταβλητές περιβάλλοντος. Μπορείτε να τη χρησιμοποιήσετε για να διαβάσετε μεταβλητές περιβάλλοντος όπως `OPENAI_API_KEY` και `API_BASE`. Ορίστε αυτές τις μεταβλητές περιβάλλοντος στο τερματικό σας ή χρησιμοποιώντας μια βιβλιοθήκη όπως το `dotenv`. + +## Δημιουργία κειμένου + +Ο τρόπος για να δημιουργήσετε κείμενο είναι να χρησιμοποιήσετε την κλάση `Completion`. Δείτε ένα παράδειγμα: + +```python +prompt = "Complete the following: Once upon a time there was a" + +completion = openai.Completion.create(model="davinci-002", prompt=prompt) +print(completion.choices[0].text) +``` + +Στον παραπάνω κώδικα, δημιουργούμε ένα αντικείμενο ολοκλήρωσης και περνάμε το μοντέλο που θέλουμε να χρησιμοποιήσουμε και το prompt. Στη συνέχεια, εκτυπώνουμε το παραγόμενο κείμενο. + +### Ολοκληρώσεις συνομιλίας + +Μέχρι τώρα, έχετε δει πώς χρησιμοποιούμε την `Completion` για να δημιουργήσουμε κείμενο. Αλλά υπάρχει μια άλλη κλάση που ονομάζεται `ChatCompletion` που είναι πιο κατάλληλη για chatbots. Δείτε ένα παράδειγμα χρήσης της: + +```python +import openai + +openai.api_key = "sk-..." + +completion = openai.ChatCompletion.create(model="gpt-3.5-turbo", messages=[{"role": "user", "content": "Hello world"}]) +print(completion.choices[0].message.content) +``` + +Περισσότερα για αυτή τη λειτουργικότητα σε ένα επόμενο κεφάλαιο. + +## Άσκηση - η πρώτη σας εφαρμογή παραγωγής κειμένου + +Τώρα που μάθαμε πώς να ρυθμίσουμε και να διαμορφώσουμε το openai, είναι ώρα να δημιουργήσουμε την πρώτη σας εφαρμογή παραγωγής κειμένου. Για να δημιουργήσετε την εφαρμογή σας, ακολουθήστε αυτά τα βήματα: + +1. Δημιουργήστε ένα εικονικό περιβάλλον και εγκαταστήστε το openai: + + ```bash + python -m venv venv + source venv/bin/activate + pip install openai + ``` + + > [!NOTE] + > Αν χρησιμοποιείτε Windows, πληκτρολογήστε `venv\Scripts\activate` αντί για `source venv/bin/activate`. + + > [!NOTE] + > Εντοπίστε το Azure OpenAI key σας μεταβαίνοντας στο [https://portal.azure.com/](https://portal.azure.com/?WT.mc_id=academic-105485-koreyst) και αναζητήστε `Open AI`, επιλέξτε τον πόρο `Open AI` και στη συνέχεια επιλέξτε `Keys and Endpoint` και αντιγράψτε την τιμή `Key 1`. + +1. Δημιουργήστε ένα αρχείο _app.py_ και δώστε του τον παρακάτω κώδικα: + + ```python + import openai + + openai.api_key = "" + + openai.api_type = 'azure' + openai.api_version = '2023-05-15' + openai.api_base = "" + deployment_name = "" + + # add your completion code + prompt = "Complete the following: Once upon a time there was a" + messages = [{"role": "user", "content": prompt}] + + # make completion + completion = openai.chat.completions.create(model=deployment_name, messages=messages) + + # print response + print(completion.choices[0].message.content) + ``` + + > [!NOTE] + > Αν χρησιμοποιείτε το Azure OpenAI, πρέπει να ορίσετε το `api_type` σε `azure` και να ορίσετε το `api_key` στο Azure OpenAI key σας. + + Θα πρέπει να δείτε ένα αποτέλεσμα όπως το παρακάτω: + + ```output + very unhappy _____. + + Once upon a time there was a very unhappy mermaid. + ``` + +## Διαφορετικοί τύποι prompts για διαφορετικά πράγματα + +Τώρα έχετε δει πώς να δημιουργείτε κείμενο χρησιμοποιώντας ένα prompt. Έχετε ακόμη και ένα πρόγραμμα που λειτουργεί και μπορείτε να το τροποποιήσετε και να το αλλάξετε για να δημιουργήσετε διαφορετικούς τύπους κειμένου. + +Τα prompts μπορούν να χρησιμοποιηθούν για διάφορες εργασίες. Για παράδειγμα: + +- **Δημιουργία τύπου κειμένου**. Για παράδειγμα, μπορείτε να δημιουργήσετε ένα ποίημα, ερωτήσεις για ένα κουίζ κ.λπ. +- **Αναζήτηση πληροφοριών**. Μπορείτε να χρησιμοποιήσετε prompts για να αναζητήσετε πληροφορίες όπως το παρακάτω παράδειγμα 'Τι σημαίνει CORS στην ανάπτυξη ιστού;'. +- **Δημιουργία κώδικα**. Μπορείτε να χρησιμοποιήσετε prompts για να δημιουργήσετε κώδικα, για παράδειγμα να αναπτύξετε μια κανονική έκφραση που χρησιμοποιείται για την επικύρωση email ή γιατί όχι να δημιουργήσετε ένα ολόκληρο πρόγραμμα, όπως μια εφαρμογή ιστού; + +## Μια πιο πρακτική περίπτωση: δημιουργός συνταγών + +Φανταστείτε ότι έχετε υλικά στο σπίτι και θέλετε να μαγειρέψετε κάτι. Για αυτό, χρειάζεστε μια συνταγή. Ένας τρόπος για να βρείτε συνταγές είναι να χρησιμοποιήσετε μια μηχανή αναζήτησης ή θα μπορούσατε να χρησιμοποιήσετε ένα LLM. + +Θα μπορούσατε να γράψετε ένα prompt όπως το εξής: + +> "Δείξε μου 5 συνταγές για ένα πιάτο με τα εξής υλικά: κοτόπουλο, πατάτες και καρότα. Για κάθε συνταγή, απαρίθμησε όλα τα υλικά που χρησιμοποιούνται" + +Δεδομένου του παραπάνω prompt, μπορεί να λάβετε μια απάντηση παρόμοια με: + +```output +1. Roasted Chicken and Vegetables: +Ingredients: +- 4 chicken thighs +- 2 potatoes, cut into cubes +- 2 carrots, cut into cubes +- 2 tablespoons olive oil +- 2 cloves garlic, minced +- 1 teaspoon dried thyme +- 1 teaspoon dried oregano +- Salt and pepper, to taste + +2. Chicken and Potato Stew: +Ingredients: +- 2 tablespoons olive oil +- 1 onion, diced +- 2 cloves garlic, minced +- 2 chicken breasts, cut into cubes +- 2 potatoes, cut into cubes +- 2 carrots, cut into cubes +- 1 teaspoon dried oregano +- 1 teaspoon dried thyme +- 1 cup chicken broth +- Salt and pepper, to taste + +3. Chicken and Potato Bake: +Ingredients: +- 2 tablespoons olive oil +- 2 chicken breasts, cut into cubes +- 2 potatoes, cut into cubes +- 2 carrots, cut into cubes +- 1 onion, diced +- 2 cloves garlic, minced +- 1 teaspoon dried oregano +- 1 teaspoon dried thyme +- 1 cup chicken broth +- Salt and pepper, to taste + +4. Chicken and Potato Soup: +Ingredients: +- 2 tablespoons olive oil +- 1 onion, diced +- 2 cloves garlic, minced +- 2 chicken breasts, cut into cubes +- 2 potatoes, cut into cubes +- 2 carrots, cut into cubes +- 1 teaspoon dried oregano +- 1 teaspoon dried thyme +- 4 cups chicken broth +- Salt and pepper, to taste + +5. Chicken and Potato Hash: +Ingredients: +- 2 tablespoons olive oil +- 2 chicken breasts, cut into cubes +- 2 potatoes, cut into cubes +- 2 carrots, cut into cubes +- 1 onion, diced +- 2 cloves garlic, minced +- 1 teaspoon dried oregano +``` + +Αυτό το αποτέλεσμα είναι εξαιρετικό, ξέρω τι να μαγειρέψω. Σε αυτό το σημείο, τι θα μπορούσε να είναι χρήσιμες βελτιώσεις είναι: + +- Φιλτράρισμα υλικών που δεν μου αρέσουν ή είμαι αλλεργικός. +- Δημιουργία λίστας αγορών, σε περίπτωση που δεν έχω όλα τα υλικά στο σπίτι. + +Για τις παραπάνω περιπτώσεις, ας προσθέσουμε ένα επιπλέον prompt: + +> "Παρακαλώ αφαιρέστε συνταγές με σκόρδο καθώς είμαι αλλεργικός και αντικαταστήστε το με κάτι άλλο. Επίσης, δημιουργήστε μια λίστα αγορών για τις συνταγές, λαμβάνοντας υπόψη ότι ήδη έχω κοτόπουλο, πατάτες και καρότα στο σπίτι." + +Τώρα έχετε ένα νέο αποτέλεσμα, δηλαδή: + +```output +1. Roasted Chicken and Vegetables: +Ingredients: +- 4 chicken thighs +- 2 potatoes, cut into cubes +- 2 carrots, cut into cubes +- 2 tablespoons olive oil +- 1 teaspoon dried thyme +- 1 teaspoon dried oregano +- Salt and pepper, to taste + +2. Chicken and Potato Stew: +Ingredients: +- 2 tablespoons olive oil +- 1 onion, diced +- 2 chicken breasts, cut into cubes +- 2 potatoes, cut into cubes +- 2 carrots, cut into cubes +- 1 teaspoon dried oregano +- 1 teaspoon dried thyme +- 1 cup chicken broth +- Salt and pepper, to taste + +3. Chicken and Potato Bake: +Ingredients: +- 2 tablespoons olive oil +- 2 chicken breasts, cut into cubes +- 2 potatoes, cut into cubes +- 2 carrots, cut into cubes +- 1 onion, diced +- 1 teaspoon dried oregano +- 1 teaspoon dried thyme +- 1 cup chicken broth +- Salt and pepper, to taste + +4. Chicken and Potato Soup: +Ingredients: +- 2 tablespoons olive oil +- 1 onion, diced +- 2 chicken breasts, cut into cubes +- 2 potatoes, cut into cubes +- 2 carrots, cut into cubes +- 1 teaspoon dried oregano +- 1 teaspoon dried thyme +- 4 cups chicken broth +- Salt and pepper, to taste + +5. Chicken and Potato Hash: +Ingredients: +- 2 tablespoons olive oil +- 2 chicken breasts, cut into cubes +- 2 potatoes, cut into cubes +- 2 carrots, cut into cubes +- 1 onion, diced +- 1 teaspoon dried oregano + +Shopping List: +- Olive oil +- Onion +- Thyme +- Oregano +- Salt +- Pepper +``` + +Αυτές είναι οι πέντε συνταγές σας, χωρίς να αναφέρεται το σκόρδο και έχετε επίσης μια λίστα αγορών λαμβάνοντας υπόψη τι έχετε ήδη στο σπίτι. + +## Άσκηση - δημιουργός συνταγών + +Τώρα που έχουμε εξετάσει ένα σενάριο, ας γράψουμε κώδικα για να ταιριάζει με το παρουσιασμένο σενάριο. Για να το κάνετε, ακολουθήστε αυτά τα βήματα: + +1. Χρησιμοποιήστε το υπάρχον αρχείο _app.py_ ως σημείο εκκίνησης +1. Εντοπίστε τη μεταβλητή `prompt` και αλλάξτε τον κώδικα της στο εξής: + + ```python + prompt = "Show me 5 recipes for a dish with the following ingredients: chicken, potatoes, and carrots. Per recipe, list all the ingredients used" + ``` + + Αν τώρα εκτελέσετε τον κώδικα, θα πρέπει να δείτε ένα αποτέλεσμα παρόμοιο με: + + ```output + -Chicken Stew with Potatoes and Carrots: 3 tablespoons oil, 1 onion, chopped, 2 cloves garlic, minced, 1 carrot, peeled and chopped, 1 potato, peeled and chopped, 1 bay leaf, 1 thyme sprig, 1/2 teaspoon salt, 1/4 teaspoon black pepper, 1 1/2 cups chicken broth, 1/2 cup dry white wine, 2 tablespoons chopped fresh parsley, 2 tablespoons unsalted butter, 1 1/2 pounds boneless, skinless chicken thighs, cut into 1-inch pieces + -Oven-Roasted Chicken with Potatoes and Carrots: 3 tablespoons extra-virgin olive oil, 1 tablespoon Dijon mustard, 1 tablespoon chopped fresh rosemary, 1 tablespoon chopped fresh thyme, 4 cloves garlic, minced, 1 1/2 pounds small red potatoes, quartered, 1 1/2 pounds carrots, quartered lengthwise, 1/2 teaspoon salt, 1/4 teaspoon black pepper, 1 (4-pound) whole chicken + -Chicken, Potato, and Carrot Casserole: cooking spray, 1 large onion, chopped, 2 cloves garlic, minced, 1 carrot, peeled and shredded, 1 potato, peeled and shredded, 1/2 teaspoon dried thyme leaves, 1/4 teaspoon salt, 1/4 teaspoon black pepper, 2 cups fat-free, low-sodium chicken broth, 1 cup frozen peas, 1/4 cup all-purpose flour, 1 cup 2% reduced-fat milk, 1/4 cup grated Parmesan cheese + + -One Pot Chicken and Potato Dinner: 2 tablespoons olive oil, 1 pound boneless, skinless chicken thighs, cut into 1-inch pieces, 1 large onion, chopped, 3 cloves garlic, minced, 1 carrot, peeled and chopped, 1 potato, peeled and chopped, 1 bay leaf, 1 thyme sprig, 1/2 teaspoon salt, 1/4 teaspoon black pepper, 2 cups chicken broth, 1/2 cup dry white wine + + -Chicken, Potato, and Carrot Curry: 1 tablespoon vegetable oil, 1 large onion, chopped, 2 cloves garlic, minced, 1 carrot, peeled and chopped, 1 potato, peeled and chopped, 1 teaspoon ground coriander, 1 teaspoon ground cumin, 1/2 teaspoon ground turmeric, 1/2 teaspoon ground ginger, 1/4 teaspoon cayenne pepper, 2 cups chicken broth, 1/2 cup dry white wine, 1 (15-ounce) can chickpeas, drained and rinsed, 1/2 cup raisins, 1/2 cup chopped fresh cilantro + ``` + + > ΣΗΜΕΙΩΣΗ, το LLM σας είναι μη ντετερμινιστικό, οπότε μπορεί να λάβετε διαφορετικά αποτελέσματα κάθε φορά που εκτελείτε το πρόγραμμα. + + Εξαιρετικά, ας δούμε πώς μπορούμε να βελτιώσουμε τα πράγματα. Για να βελτιώσουμε τα πράγματα, θέλουμε να βεβαιωθούμε ότι ο κώδικας είναι ευέλικτος, ώστε τα υλικά και ο αριθμός των συνταγών να μπορούν να βελτιωθούν και να αλλάξουν. + +1. Ας αλλάξουμε τον κώδικα με τον εξής τρόπο: + + ```python + no_recipes = input("No of recipes (for example, 5): ") + + ingredients = input("List of ingredients (for example, chicken, potatoes, and carrots): ") + + # interpolate the number of recipes into the prompt an ingredients + prompt = f"Show me {no_recipes} recipes for a dish with the following ingredients: {ingredients}. Per recipe, list all the ingredients used" + ``` + + Η εκτέλεση του κώδικα για δοκιμή θα μπορούσε να μοιάζει με αυτό: + + ```output + No of recipes (for example, 5): 3 + List of ingredients (for example, chicken, potatoes, and carrots): milk,strawberries + + -Strawberry milk shake: milk, strawberries, sugar, vanilla extract, ice cubes + -Strawberry shortcake: milk, flour, baking powder, sugar, salt, unsalted butter, strawberries, whipped cream + -Strawberry milk: milk, strawberries, sugar, vanilla extract + ``` + +### Βελτίωση με προσθήκη φίλτρου και λίστας αγορών + +Τώρα έχουμε μια λειτουργική εφαρμογή ικανή να παράγει συνταγές και είναι ευέλικτη καθώς βασίζεται σε εισόδους από τον χρήστη, τόσο στον αριθμό των συνταγών όσο και στα + ```python + old_prompt_result = completion.choices[0].message.content + prompt = "Produce a shopping list for the generated recipes and please don't include ingredients that I already have." + + new_prompt = f"{old_prompt_result} {prompt}" + messages = [{"role": "user", "content": new_prompt}] + completion = openai.Completion.create(engine=deployment_name, messages=messages, max_tokens=1200) + + # print response + print("Shopping list:") + print(completion.choices[0].message.content) + ``` + + Σημειώστε τα εξής: + + 1. Δημιουργούμε ένα νέο prompt προσθέτοντας το αποτέλεσμα από το πρώτο prompt στο νέο prompt: + + ```python + new_prompt = f"{old_prompt_result} {prompt}" + ``` + + 1. Κάνουμε ένα νέο αίτημα, λαμβάνοντας υπόψη τον αριθμό των tokens που ζητήσαμε στο πρώτο prompt, οπότε αυτή τη φορά λέμε ότι το `max_tokens` είναι 1200. + + ```python + completion = openai.Completion.create(engine=deployment_name, prompt=new_prompt, max_tokens=1200) + ``` + + Δοκιμάζοντας αυτόν τον κώδικα, φτάνουμε στο παρακάτω αποτέλεσμα: + + ```output + No of recipes (for example, 5): 2 + List of ingredients (for example, chicken, potatoes, and carrots): apple,flour + Filter (for example, vegetarian, vegan, or gluten-free): sugar + + + -Apple and flour pancakes: 1 cup flour, 1/2 tsp baking powder, 1/2 tsp baking soda, 1/4 tsp salt, 1 tbsp sugar, 1 egg, 1 cup buttermilk or sour milk, 1/4 cup melted butter, 1 Granny Smith apple, peeled and grated + -Apple fritters: 1-1/2 cups flour, 1 tsp baking powder, 1/4 tsp salt, 1/4 tsp baking soda, 1/4 tsp nutmeg, 1/4 tsp cinnamon, 1/4 tsp allspice, 1/4 cup sugar, 1/4 cup vegetable shortening, 1/4 cup milk, 1 egg, 2 cups shredded, peeled apples + Shopping list: + -Flour, baking powder, baking soda, salt, sugar, egg, buttermilk, butter, apple, nutmeg, cinnamon, allspice + ``` + +## Βελτιώστε τη ρύθμισή σας + +Αυτό που έχουμε μέχρι στιγμής είναι κώδικας που λειτουργεί, αλλά υπάρχουν κάποιες βελτιώσεις που πρέπει να κάνουμε για να τον βελτιώσουμε περαιτέρω. Κάποια πράγματα που πρέπει να κάνουμε είναι: + +- **Διαχωρίστε τα μυστικά από τον κώδικα**, όπως το API key. Τα μυστικά δεν ανήκουν στον κώδικα και πρέπει να αποθηκεύονται σε ασφαλή τοποθεσία. Για να διαχωρίσουμε τα μυστικά από τον κώδικα, μπορούμε να χρησιμοποιήσουμε μεταβλητές περιβάλλοντος και βιβλιοθήκες όπως το `python-dotenv` για να τα φορτώσουμε από ένα αρχείο. Δείτε πώς θα μπορούσε να φαίνεται αυτό στον κώδικα: + + 1. Δημιουργήστε ένα αρχείο `.env` με το παρακάτω περιεχόμενο: + + ```bash + OPENAI_API_KEY=sk-... + ``` + + > Σημείωση, για το Azure, πρέπει να ορίσετε τις παρακάτω μεταβλητές περιβάλλοντος: + + ```bash + OPENAI_API_TYPE=azure + OPENAI_API_VERSION=2023-05-15 + OPENAI_API_BASE= + ``` + + Στον κώδικα, θα φορτώνατε τις μεταβλητές περιβάλλοντος ως εξής: + + ```python + from dotenv import load_dotenv + + load_dotenv() + + openai.api_key = os.environ["OPENAI_API_KEY"] + ``` + +- **Μια λέξη για το μήκος των tokens**. Πρέπει να σκεφτούμε πόσα tokens χρειαζόμαστε για να δημιουργήσουμε το κείμενο που θέλουμε. Τα tokens κοστίζουν χρήματα, οπότε όπου είναι δυνατόν, πρέπει να προσπαθούμε να είμαστε οικονομικοί με τον αριθμό των tokens που χρησιμοποιούμε. Για παράδειγμα, μπορούμε να διατυπώσουμε το prompt έτσι ώστε να χρησιμοποιούμε λιγότερα tokens; + + Για να αλλάξετε τα tokens που χρησιμοποιούνται, μπορείτε να χρησιμοποιήσετε την παράμετρο `max_tokens`. Για παράδειγμα, αν θέλετε να χρησιμοποιήσετε 100 tokens, θα κάνατε: + + ```python + completion = client.chat.completions.create(model=deployment, messages=messages, max_tokens=100) + ``` + +- **Πειραματισμός με τη θερμοκρασία**. Η θερμοκρασία είναι κάτι που δεν έχουμε αναφέρει μέχρι στιγμής, αλλά είναι σημαντικό για το πώς λειτουργεί το πρόγραμμά μας. Όσο υψηλότερη είναι η τιμή της θερμοκρασίας, τόσο πιο τυχαίο θα είναι το αποτέλεσμα. Αντίθετα, όσο χαμηλότερη είναι η τιμή της θερμοκρασίας, τόσο πιο προβλέψιμο θα είναι το αποτέλεσμα. Σκεφτείτε αν θέλετε ποικιλία στο αποτέλεσμα ή όχι. + + Για να αλλάξετε τη θερμοκρασία, μπορείτε να χρησιμοποιήσετε την παράμετρο `temperature`. Για παράδειγμα, αν θέλετε να χρησιμοποιήσετε θερμοκρασία 0.5, θα κάνατε: + + ```python + completion = client.chat.completions.create(model=deployment, messages=messages, temperature=0.5) + ``` + + > Σημείωση, όσο πιο κοντά στο 1.0, τόσο πιο ποικίλο το αποτέλεσμα. + +## Εργασία + +Για αυτήν την εργασία, μπορείτε να επιλέξετε τι να δημιουργήσετε. + +Ακολουθούν κάποιες προτάσεις: + +- Βελτιώστε την εφαρμογή δημιουργίας συνταγών περαιτέρω. Παίξτε με τις τιμές θερμοκρασίας και τα prompts για να δείτε τι μπορείτε να δημιουργήσετε. +- Δημιουργήστε έναν "συνεργάτη μελέτης". Αυτή η εφαρμογή θα πρέπει να μπορεί να απαντά σε ερωτήσεις για ένα θέμα, για παράδειγμα Python. Θα μπορούσατε να έχετε prompts όπως "Τι είναι ένα συγκεκριμένο θέμα στην Python;", ή θα μπορούσατε να έχετε ένα prompt που λέει, δείξε μου κώδικα για ένα συγκεκριμένο θέμα κ.λπ. +- Ιστορικό bot, κάντε την ιστορία να ζωντανέψει, δώστε οδηγίες στο bot να παίξει έναν συγκεκριμένο ιστορικό χαρακτήρα και κάντε του ερωτήσεις για τη ζωή και την εποχή του. + +## Λύση + +### Συνεργάτης μελέτης + +Παρακάτω είναι ένα αρχικό prompt, δείτε πώς μπορείτε να το χρησιμοποιήσετε και να το προσαρμόσετε στις ανάγκες σας. + +```text +- "You're an expert on the Python language + + Suggest a beginner lesson for Python in the following format: + + Format: + - concepts: + - brief explanation of the lesson: + - exercise in code with solutions" +``` + +### Ιστορικό bot + +Ακολουθούν κάποια prompts που θα μπορούσατε να χρησιμοποιήσετε: + +```text +- "You are Abe Lincoln, tell me about yourself in 3 sentences, and respond using grammar and words like Abe would have used" +- "You are Abe Lincoln, respond using grammar and words like Abe would have used: + + Tell me about your greatest accomplishments, in 300 words" +``` + +## Έλεγχος γνώσεων + +Τι κάνει η έννοια της θερμοκρασίας; + +1. Ελέγχει πόσο τυχαίο είναι το αποτέλεσμα. +1. Ελέγχει πόσο μεγάλο είναι το αποτέλεσμα. +1. Ελέγχει πόσα tokens χρησιμοποιούνται. + +## 🚀 Πρόκληση + +Όταν εργάζεστε στην εργασία, δοκιμάστε να διαφοροποιήσετε τη θερμοκρασία, δοκιμάστε να την ορίσετε στο 0, 0.5 και 1. Θυμηθείτε ότι το 0 είναι το λιγότερο ποικίλο και το 1 είναι το πιο ποικίλο. Ποια τιμή λειτουργεί καλύτερα για την εφαρμογή σας; + +## Μπράβο! Συνεχίστε τη μάθηση σας + +Αφού ολοκληρώσετε αυτό το μάθημα, δείτε τη [Συλλογή Μάθησης Γενετικής AI](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) για να συνεχίσετε να αναβαθμίζετε τις γνώσεις σας στη Γενετική AI! + +Προχωρήστε στο Μάθημα 7 όπου θα δούμε πώς να [δημιουργούμε εφαρμογές συνομιλίας](../07-building-chat-applications/README.md?WT.mc_id=academic-105485-koreyst)! + +--- + +**Αποποίηση ευθύνης**: +Αυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία αυτόματης μετάφρασης [Co-op Translator](https://github.com/Azure/co-op-translator). Παρόλο που καταβάλλουμε προσπάθειες για ακρίβεια, παρακαλούμε να έχετε υπόψη ότι οι αυτόματες μεταφράσεις ενδέχεται να περιέχουν λάθη ή ανακρίβειες. Το πρωτότυπο έγγραφο στη μητρική του γλώσσα θα πρέπει να θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε ευθύνη για τυχόν παρεξηγήσεις ή εσφαλμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης. \ No newline at end of file diff --git a/translations/el/07-building-chat-applications/README.md b/translations/el/07-building-chat-applications/README.md index 3af1f50b2a..8d16b6070f 100644 --- a/translations/el/07-building-chat-applications/README.md +++ b/translations/el/07-building-chat-applications/README.md @@ -1,165 +1,161 @@ - -# Δημιουργία Εφαρμογών Συνομιλίας με Τεχνητή Νοημοσύνη Γενετικής Φύσης - -[![Building Generative AI-Powered Chat Applications](../../../translated_images/07-lesson-banner.a279b937f2843833fe28b4597f51bdef92d0ad03efee7ba52d0f166dea7574e5.el.png)](https://aka.ms/gen-ai-lessons7-gh?WT.mc_id=academic-105485-koreyst) - -> _(Κάντε κλικ στην εικόνα παραπάνω για να δείτε το βίντεο αυτής της ενότητας)_ - -Τώρα που είδαμε πώς μπορούμε να δημιουργήσουμε εφαρμογές παραγωγής κειμένου, ας εξετάσουμε τις εφαρμογές συνομιλίας. - -Οι εφαρμογές συνομιλίας έχουν ενσωματωθεί στην καθημερινότητά μας, προσφέροντας πολύ περισσότερα από έναν απλό τρόπο για ανεπίσημη επικοινωνία. Αποτελούν αναπόσπαστο κομμάτι της εξυπηρέτησης πελατών, της τεχνικής υποστήριξης και ακόμη και σύνθετων συστημάτων συμβουλευτικής. Πιθανότατα έχετε λάβει βοήθεια από κάποια εφαρμογή συνομιλίας πρόσφατα. Καθώς ενσωματώνουμε πιο προηγμένες τεχνολογίες όπως η γενετική ΤΝ σε αυτές τις πλατφόρμες, αυξάνεται η πολυπλοκότητα και οι προκλήσεις. - -Ορισμένα ερωτήματα που πρέπει να απαντηθούν είναι: - -- **Κατασκευή της εφαρμογής**. Πώς μπορούμε να δημιουργήσουμε αποδοτικά και να ενσωματώσουμε ομαλά αυτές τις εφαρμογές με τεχνητή νοημοσύνη για συγκεκριμένες χρήσεις; -- **Παρακολούθηση**. Μόλις αναπτυχθούν, πώς μπορούμε να παρακολουθούμε και να διασφαλίζουμε ότι οι εφαρμογές λειτουργούν στο υψηλότερο επίπεδο ποιότητας, τόσο σε λειτουργικότητα όσο και σε συμμόρφωση με τις [έξι αρχές υπεύθυνης ΤΝ](https://www.microsoft.com/ai/responsible-ai?WT.mc_id=academic-105485-koreyst); - -Καθώς προχωράμε σε μια εποχή που χαρακτηρίζεται από αυτοματοποίηση και απρόσκοπτες αλληλεπιδράσεις ανθρώπου-μηχανής, η κατανόηση του πώς η γενετική ΤΝ μετασχηματίζει το εύρος, το βάθος και την προσαρμοστικότητα των εφαρμογών συνομιλίας γίνεται απαραίτητη. Αυτή η ενότητα θα εξετάσει τις αρχιτεκτονικές πτυχές που υποστηρίζουν αυτά τα πολύπλοκα συστήματα, θα εμβαθύνει στις μεθοδολογίες για τη βελτιστοποίησή τους σε συγκεκριμένα πεδία και θα αξιολογήσει τα μετρικά και τις παραμέτρους που σχετίζονται με την υπεύθυνη ανάπτυξη ΤΝ. - -## Εισαγωγή - -Αυτή η ενότητα καλύπτει: - -- Τεχνικές για αποδοτική κατασκευή και ενσωμάτωση εφαρμογών συνομιλίας. -- Πώς να εφαρμόσετε προσαρμογές και βελτιστοποίηση στις εφαρμογές. -- Στρατηγικές και παράγοντες για αποτελεσματική παρακολούθηση των εφαρμογών συνομιλίας. - -## Στόχοι Μάθησης - -Στο τέλος αυτής της ενότητας, θα μπορείτε να: - -- Περιγράψετε παράγοντες που πρέπει να ληφθούν υπόψη για την κατασκευή και ενσωμάτωση εφαρμογών συνομιλίας σε υπάρχοντα συστήματα. -- Προσαρμόζετε εφαρμογές συνομιλίας για συγκεκριμένες χρήσεις. -- Αναγνωρίζετε βασικά μετρικά και παράγοντες για την αποτελεσματική παρακολούθηση και διατήρηση της ποιότητας των εφαρμογών συνομιλίας με ΤΝ. -- Διασφαλίζετε ότι οι εφαρμογές συνομιλίας αξιοποιούν την ΤΝ με υπευθυνότητα. - -## Ενσωμάτωση Γενετικής ΤΝ σε Εφαρμογές Συνομιλίας - -Η αναβάθμιση των εφαρμογών συνομιλίας μέσω γενετικής ΤΝ δεν αφορά μόνο το να γίνουν πιο έξυπνες· πρόκειται για τη βελτιστοποίηση της αρχιτεκτονικής, της απόδοσης και της διεπαφής χρήστη ώστε να προσφέρουν μια ποιοτική εμπειρία. Αυτό περιλαμβάνει την εξέταση των αρχιτεκτονικών βάσεων, των ενσωματώσεων API και των παραμέτρων διεπαφής χρήστη. Αυτή η ενότητα στοχεύει να σας προσφέρει έναν ολοκληρωμένο οδηγό για την πλοήγηση σε αυτά τα πολύπλοκα πεδία, είτε τα ενσωματώνετε σε υπάρχοντα συστήματα είτε τα δημιουργείτε ως ανεξάρτητες πλατφόρμες. - -Στο τέλος αυτής της ενότητας, θα έχετε την εμπειρογνωμοσύνη που απαιτείται για να κατασκευάσετε και να ενσωματώσετε αποδοτικά εφαρμογές συνομιλίας. - -### Chatbot ή Εφαρμογή Συνομιλίας; - -Πριν ξεκινήσουμε την κατασκευή εφαρμογών συνομιλίας, ας συγκρίνουμε τα «chatbots» με τις «εφαρμογές συνομιλίας με ΤΝ», που εξυπηρετούν διαφορετικούς ρόλους και λειτουργίες. Ο κύριος σκοπός ενός chatbot είναι να αυτοματοποιεί συγκεκριμένες συνομιλιακές εργασίες, όπως η απάντηση σε συχνές ερωτήσεις ή η παρακολούθηση ενός πακέτου. Συνήθως λειτουργεί με βάση κανόνες ή πολύπλοκους αλγορίθμους ΤΝ. Αντίθετα, μια εφαρμογή συνομιλίας με ΤΝ είναι ένα πολύ πιο ευρύ περιβάλλον σχεδιασμένο να διευκολύνει διάφορες μορφές ψηφιακής επικοινωνίας, όπως κείμενο, φωνή και βίντεο μεταξύ ανθρώπων. Το βασικό της χαρακτηριστικό είναι η ενσωμάτωση ενός γενετικού μοντέλου ΤΝ που προσομοιώνει λεπτομερείς, ανθρώπινες συνομιλίες, παράγοντας απαντήσεις βασισμένες σε ποικίλες εισροές και συμφραζόμενα. Μια εφαρμογή συνομιλίας με γενετική ΤΝ μπορεί να συμμετέχει σε συζητήσεις ανοικτού πεδίου, να προσαρμόζεται σε εξελισσόμενα συμφραζόμενα και να παράγει ακόμη και δημιουργικό ή σύνθετο διάλογο. - -Ο παρακάτω πίνακας παρουσιάζει τις βασικές διαφορές και ομοιότητες για να κατανοήσουμε τους ξεχωριστούς ρόλους τους στην ψηφιακή επικοινωνία. - -| Chatbot | Εφαρμογή Συνομιλίας με Γενετική ΤΝ | -| ------------------------------------- | ---------------------------------------- | -| Εστιασμένο σε συγκεκριμένες εργασίες και βασισμένο σε κανόνες | Ενημερωμένο για το πλαίσιο της συνομιλίας | -| Συχνά ενσωματωμένο σε μεγαλύτερα συστήματα | Μπορεί να φιλοξενεί ένα ή περισσότερα chatbots | -| Περιορισμένο σε προγραμματισμένες λειτουργίες | Ενσωματώνει γενετικά μοντέλα ΤΝ | -| Εξειδικευμένες και δομημένες αλληλεπιδράσεις | Ικανό για συζητήσεις ανοικτού πεδίου | - -### Αξιοποίηση έτοιμων λειτουργιών με SDKs και APIs - -Κατά την κατασκευή μιας εφαρμογής συνομιλίας, ένα καλό πρώτο βήμα είναι να αξιολογήσετε τι υπάρχει ήδη. Η χρήση SDKs και APIs για την κατασκευή εφαρμογών συνομιλίας αποτελεί μια προνοητική στρατηγική για διάφορους λόγους. Ενσωματώνοντας καλά τεκμηριωμένα SDKs και APIs, τοποθετείτε στρατηγικά την εφαρμογή σας για μακροπρόθεσμη επιτυχία, αντιμετωπίζοντας ζητήματα κλιμάκωσης και συντήρησης. - -- **Επιταχύνει τη διαδικασία ανάπτυξης και μειώνει το φόρτο εργασίας**: Η αξιοποίηση έτοιμων λειτουργιών αντί να τις κατασκευάζετε από την αρχή σας επιτρέπει να εστιάσετε σε άλλες πτυχές της εφαρμογής που μπορεί να θεωρείτε πιο σημαντικές, όπως η επιχειρηματική λογική. -- **Καλύτερη απόδοση**: Όταν δημιουργείτε λειτουργίες από το μηδέν, τελικά θα αναρωτηθείτε «Πώς κλιμακώνεται; Μπορεί αυτή η εφαρμογή να διαχειριστεί ξαφνική αύξηση χρηστών;» Τα καλά συντηρημένα SDKs και APIs συχνά έχουν ενσωματωμένες λύσεις για αυτά τα ζητήματα. -- **Ευκολότερη συντήρηση**: Οι ενημερώσεις και οι βελτιώσεις είναι πιο εύκολες στη διαχείριση, καθώς τα περισσότερα APIs και SDKs απαιτούν απλώς ενημέρωση μιας βιβλιοθήκης όταν κυκλοφορεί νεότερη έκδοση. -- **Πρόσβαση σε τεχνολογία αιχμής**: Η αξιοποίηση μοντέλων που έχουν βελτιστοποιηθεί και εκπαιδευτεί σε εκτενείς βάσεις δεδομένων προσφέρει στην εφαρμογή σας δυνατότητες φυσικής γλώσσας. - -Η πρόσβαση σε λειτουργίες SDK ή API συνήθως απαιτεί άδεια χρήσης των παρεχόμενων υπηρεσιών, που συχνά γίνεται μέσω ενός μοναδικού κλειδιού ή διακριτικού ταυτοποίησης. Θα χρησιμοποιήσουμε τη Βιβλιοθήκη Python της OpenAI για να δούμε πώς λειτουργεί αυτό. Μπορείτε επίσης να το δοκιμάσετε μόνοι σας στο ακόλουθο [notebook για OpenAI](python/oai-assignment.ipynb) ή [notebook για Azure OpenAI Services](python/aoai-assignment.ipynb) για αυτή την ενότητα. - -```python -import os -from openai import OpenAI - -API_KEY = os.getenv("OPENAI_API_KEY","") - -client = OpenAI( - api_key=API_KEY - ) - -chat_completion = client.chat.completions.create(model="gpt-3.5-turbo", messages=[{"role": "user", "content": "Suggest two titles for an instructional lesson on chat applications for generative AI."}]) -``` - -Το παραπάνω παράδειγμα χρησιμοποιεί το μοντέλο GPT-3.5 Turbo για να ολοκληρώσει το prompt, αλλά παρατηρήστε ότι το API key έχει οριστεί πριν από αυτό. Θα λάβετε σφάλμα αν δεν ορίσετε το κλειδί. - -## Εμπειρία Χρήστη (UX) - -Οι γενικές αρχές UX ισχύουν και για τις εφαρμογές συνομιλίας, αλλά εδώ υπάρχουν ορισμένες επιπλέον παράμετροι που γίνονται ιδιαίτερα σημαντικές λόγω των στοιχείων μηχανικής μάθησης. - -- **Μηχανισμός αντιμετώπισης ασάφειας**: Τα γενετικά μοντέλα ΤΝ μερικές φορές παράγουν ασαφείς απαντήσεις. Μια λειτουργία που επιτρέπει στους χρήστες να ζητούν διευκρινίσεις μπορεί να είναι χρήσιμη όταν προκύπτει αυτό το πρόβλημα. -- **Διατήρηση συμφραζομένων**: Τα προηγμένα γενετικά μοντέλα ΤΝ έχουν την ικανότητα να θυμούνται το πλαίσιο μέσα σε μια συνομιλία, κάτι που μπορεί να είναι πολύτιμο για την εμπειρία χρήστη. Η δυνατότητα ελέγχου και διαχείρισης του πλαισίου από τους χρήστες βελτιώνει την εμπειρία, αλλά εισάγει τον κίνδυνο διατήρησης ευαίσθητων πληροφοριών. Η θέσπιση πολιτικής διατήρησης, όπως το πόσο καιρό αποθηκεύονται τα δεδομένα, μπορεί να ισορροπήσει την ανάγκη για συμφραζόμενα με την προστασία της ιδιωτικότητας. -- **Προσωποποίηση**: Με την ικανότητα μάθησης και προσαρμογής, τα μοντέλα ΤΝ προσφέρουν μια εξατομικευμένη εμπειρία στον χρήστη. Η προσαρμογή της εμπειρίας μέσω λειτουργιών όπως τα προφίλ χρηστών όχι μόνο κάνει τον χρήστη να αισθάνεται κατανοητός, αλλά βοηθά και στην ταχύτερη εύρεση συγκεκριμένων απαντήσεων, δημιουργώντας μια πιο αποδοτική και ικανοποιητική αλληλεπίδραση. - -Ένα παράδειγμα προσωποποίησης είναι οι ρυθμίσεις "Custom instructions" στο ChatGPT της OpenAI. Σας επιτρέπουν να παρέχετε πληροφορίες για τον εαυτό σας που μπορεί να είναι σημαντικό πλαίσιο για τα prompts σας. Ακολουθεί ένα παράδειγμα προσαρμοσμένης οδηγίας. - -![Custom Instructions Settings in ChatGPT](../../../translated_images/custom-instructions.b96f59aa69356fcfed456414221919e8996f93c90c20d0d58d1bc0221e3c909f.el.png) - -Αυτό το "προφίλ" ζητά από το ChatGPT να δημιουργήσει ένα σχέδιο μαθήματος για συνδεδεμένες λίστες. Παρατηρήστε ότι το ChatGPT λαμβάνει υπόψη ότι ο χρήστης μπορεί να θέλει ένα πιο αναλυτικό σχέδιο μαθήματος βάσει της εμπειρίας της. - -![A prompt in ChatGPT for a lesson plan about linked lists](../../../translated_images/lesson-plan-prompt.cc47c488cf1343df5d67aa796a1acabca32c380e5b782971e289f6ab8b21cf5a.el.png) - -### Το Πλαίσιο System Message της Microsoft για Μεγάλα Γλωσσικά Μοντέλα - -[Η Microsoft έχει παράσχει οδηγίες](https://learn.microsoft.com/azure/ai-services/openai/concepts/system-message#define-the-models-output-format?WT.mc_id=academic-105485-koreyst) για τη σύνταξη αποτελεσματικών συστημικών μηνυμάτων κατά τη δημιουργία απαντήσεων από LLMs, χωρισμένες σε 4 τομείς: - -1. Ορισμός για ποιον προορίζεται το μοντέλο, καθώς και των δυνατοτήτων και περιορισμών του. -2. Ορισμός της μορφής εξόδου του μοντέλου. -3. Παροχή συγκεκριμένων παραδειγμάτων που δείχνουν την επιθυμητή συμπεριφορά του μοντέλου. -4. Παροχή επιπλέον κανόνων συμπεριφοράς. - -### Προσβασιμότητα - -Είτε ο χρήστης έχει οπτικές, ακουστικές, κινητικές ή γνωστικές δυσκολίες, μια καλά σχεδιασμένη εφαρμογή συνομιλίας πρέπει να είναι προσβάσιμη σε όλους. Η παρακάτω λίστα αναλύει συγκεκριμένες λειτουργίες που στοχεύουν στη βελτίωση της προσβασιμότητας για διάφορες αναπηρίες. - -- **Λειτουργίες για Οπτική Αναπηρία**: Θέματα υψηλής αντίθεσης και δυνατότητα αλλαγής μεγέθους κειμένου, συμβατότητα με αναγνώστες οθόνης. -- **Λειτουργίες για Ακουστική Αναπηρία**: Μετατροπή κειμένου σε ομιλία και αντίστροφα, οπτικά σήματα για ηχητικές ειδοποιήσεις. -- **Λειτουργίες για Κινητική Αναπηρία**: Υποστήριξη πλοήγησης με πληκτρολόγιο, φωνητικές εντολές. -- **Λειτουργίες για Γνωστική Αναπηρία**: Απλοποιημένες επιλογές γλώσσας. - -## Προσαρμογή και Βελτιστοποίηση για Ειδικά Γλωσσικά Μοντέλα Τομέα - -Φανταστείτε μια εφαρμογή συνομιλίας που κατανοεί τη γλώσσα και τη ορολογία της εταιρείας σας και προβλέπει τις συγκεκριμένες ερωτήσεις που συχνά κάνουν οι χρήστες της. Υπάρχουν μερικές προσεγγίσεις που αξίζει να αναφέρουμε: - -- **Αξιοποίηση DSL μοντέλων**. DSL σημαίνει domain specific language (γλώσσα ειδικού τομέα). Μπορείτε να αξιοποιήσετε ένα μοντέλο DSL εκπαιδευμένο σε συγκεκριμένο τομέα για να κατανοεί τις έννοιες και τα σενάρια του. -- **Εφαρμογή fine-tuning**. Το fine-tuning είναι η διαδικασία περαιτέρω εκπαίδευσης του μοντέλου σας με συγκεκριμένα δεδομένα. - -## Προσαρμογή: Χρήση DSL - -Η αξιοποίηση μοντέλων γλώσσας ειδικού τομέα (DSL Models) μπορεί να ενισχύσει την εμπλοκή των χρηστών παρέχοντας εξειδικευμένες, συμφραζόμενες αλληλεπιδράσεις. Πρόκειται για μοντέλο που έχει εκπαιδευτεί ή βελτιστοποιηθεί ώστε να κατανοεί και να παράγει κείμενο σχετικό με συγκεκριμένο πεδίο, βιομηχανία ή θέμα. Οι επιλογές για τη χρήση ενός DSL μοντέλου ποικίλλουν από την εκπαίδευση ενός από την αρχή, μέχρι τη χρήση προϋπαρχόντων μέσω SDKs και APIs. Μια άλλη επιλογή είναι το fine-tuning, που περιλαμβάνει την προσαρμογή ενός υπάρχοντος προεκπαιδευμένου μοντέλου για συγκεκριμένο τομέα. - -## Προσαρμογή: Εφαρμογή fine-tuning - -Το fine-tuning συχνά εξετάζεται όταν ένα προεκπαιδευμένο μοντέλο δεν επαρκεί σε έναν εξειδικευμένο τομέα ή συγκεκριμένη εργασία. - -Για παράδειγμα, οι ιατρικές ερωτήσεις είναι πολύπλοκες και απαιτούν μεγάλο πλαίσιο. Όταν ένας ιατρός διαγιγνώσκει έναν ασθενή, βασίζεται σε ποικίλους παράγοντες όπως ο τρόπος ζωής ή προϋπάρχουσες παθήσεις, και μπορεί να στηρίζεται ακόμη και σε πρόσφατα ιατρικά άρθρα για να επιβεβαιώσει τη διάγνωση. Σε τέτοια λεπτομερή σενάρια, μια γεν -| **Ανίχνευση Ανωμαλιών** | Εργαλεία και τεχνικές για την αναγνώριση ασυνήθιστων προτύπων που δεν συμμορφώνονται με την αναμενόμενη συμπεριφορά. | Πώς θα ανταποκριθείτε στις ανωμαλίες; | - -### Εφαρμογή Υπεύθυνων Πρακτικών Τεχνητής Νοημοσύνης σε Εφαρμογές Συνομιλίας - -Η προσέγγιση της Microsoft για την Υπεύθυνη Τεχνητή Νοημοσύνη έχει εντοπίσει έξι αρχές που πρέπει να καθοδηγούν την ανάπτυξη και χρήση της AI. Παρακάτω παρουσιάζονται οι αρχές, ο ορισμός τους και τα σημεία που πρέπει να λάβει υπόψη του ένας προγραμματιστής συνομιλίας και γιατί πρέπει να τα πάρει σοβαρά. - -| Αρχές | Ορισμός της Microsoft | Σκέψεις για τον Προγραμματιστή Συνομιλίας | Γιατί Είναι Σημαντικό | -| ---------------------- | ----------------------------------------------------- | ---------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -| Δικαιοσύνη | Τα συστήματα AI πρέπει να αντιμετωπίζουν όλους δίκαια. | Βεβαιωθείτε ότι η εφαρμογή συνομιλίας δεν κάνει διακρίσεις βάσει δεδομένων χρηστών. | Για να χτιστεί εμπιστοσύνη και συμπερίληψη μεταξύ των χρηστών· αποφεύγονται νομικές συνέπειες. | -| Αξιοπιστία και Ασφάλεια | Τα συστήματα AI πρέπει να λειτουργούν αξιόπιστα και με ασφάλεια. | Εφαρμόστε δοκιμές και μηχανισμούς αποτυχίας για να ελαχιστοποιηθούν τα λάθη και οι κίνδυνοι. | Εξασφαλίζει ικανοποίηση των χρηστών και αποτρέπει πιθανές βλάβες. | -| Ιδιωτικότητα και Ασφάλεια | Τα συστήματα AI πρέπει να είναι ασφαλή και να σέβονται την ιδιωτικότητα. | Εφαρμόστε ισχυρή κρυπτογράφηση και μέτρα προστασίας δεδομένων. | Για την προστασία ευαίσθητων δεδομένων χρηστών και τη συμμόρφωση με τους νόμους περί ιδιωτικότητας. | -| Συμπερίληψη | Τα συστήματα AI πρέπει να ενδυναμώνουν όλους και να εμπλέκουν τους ανθρώπους. | Σχεδιάστε UI/UX που να είναι προσβάσιμο και εύκολο στη χρήση για διαφορετικά κοινά. | Εξασφαλίζει ότι ευρύτερο φάσμα ανθρώπων μπορεί να χρησιμοποιεί αποτελεσματικά την εφαρμογή. | -| Διαφάνεια | Τα συστήματα AI πρέπει να είναι κατανοητά. | Παρέχετε σαφή τεκμηρίωση και αιτιολόγηση για τις απαντήσεις της AI. | Οι χρήστες είναι πιο πιθανό να εμπιστευτούν ένα σύστημα αν κατανοούν πώς λαμβάνονται οι αποφάσεις. | -| Λογοδοσία | Οι άνθρωποι πρέπει να είναι υπεύθυνοι για τα συστήματα AI. | Καθιερώστε μια σαφή διαδικασία για τον έλεγχο και τη βελτίωση των αποφάσεων της AI. | Επιτρέπει τη συνεχή βελτίωση και τη λήψη διορθωτικών μέτρων σε περίπτωση λαθών. | - -## Ανάθεση - -Δείτε [assignment](../../../07-building-chat-applications/python) που θα σας καθοδηγήσει μέσα από μια σειρά ασκήσεων, από την εκτέλεση των πρώτων σας προτροπών συνομιλίας, μέχρι την ταξινόμηση και περίληψη κειμένου και άλλα. Σημειώστε ότι οι ασκήσεις είναι διαθέσιμες σε διάφορες γλώσσες προγραμματισμού! - -## Μπράβο! Συνεχίστε το Ταξίδι - -Αφού ολοκληρώσετε αυτό το μάθημα, ρίξτε μια ματιά στη [Συλλογή Εκμάθησης Γενετικής AI](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) για να συνεχίσετε να αναβαθμίζετε τις γνώσεις σας στη Γενετική AI! - -Μεταβείτε στο Μάθημα 8 για να δείτε πώς μπορείτε να ξεκινήσετε [να δημιουργείτε εφαρμογές αναζήτησης](../08-building-search-applications/README.md?WT.mc_id=academic-105485-koreyst)! - -**Αποποίηση ευθυνών**: -Αυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία αυτόματης μετάφρασης AI [Co-op Translator](https://github.com/Azure/co-op-translator). Παρόλο που επιδιώκουμε την ακρίβεια, παρακαλούμε να γνωρίζετε ότι οι αυτόματες μεταφράσεις ενδέχεται να περιέχουν λάθη ή ανακρίβειες. Το πρωτότυπο έγγραφο στη μητρική του γλώσσα πρέπει να θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε ευθύνη για τυχόν παρεξηγήσεις ή λανθασμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης. \ No newline at end of file + +# Δημιουργία Εφαρμογών Συνομιλίας με Τεχνητή Νοημοσύνη Γενετικής Παραγωγής + +[![Δημιουργία Εφαρμογών Συνομιλίας με Τεχνητή Νοημοσύνη Γενετικής Παραγωγής](../../../translated_images/07-lesson-banner.a279b937f2843833fe28b4597f51bdef92d0ad03efee7ba52d0f166dea7574e5.el.png)](https://youtu.be/R9V0ZY1BEQo?si=IHuU-fS9YWT8s4sA) + +> _(Κάντε κλικ στην εικόνα παραπάνω για να παρακολουθήσετε το βίντεο αυτού του μαθήματος)_ + +Αφού είδαμε πώς μπορούμε να δημιουργήσουμε εφαρμογές παραγωγής κειμένου, ας εξετάσουμε τις εφαρμογές συνομιλίας. + +Οι εφαρμογές συνομιλίας έχουν ενσωματωθεί στην καθημερινότητά μας, προσφέροντας περισσότερα από απλή επικοινωνία. Αποτελούν βασικά εργαλεία για την εξυπηρέτηση πελατών, την τεχνική υποστήριξη και ακόμη και για εξελιγμένα συστήματα συμβουλών. Είναι πιθανό να έχετε λάβει βοήθεια από μια εφαρμογή συνομιλίας πρόσφατα. Καθώς ενσωματώνουμε πιο προηγμένες τεχνολογίες όπως η γενετική τεχνητή νοημοσύνη σε αυτές τις πλατφόρμες, αυξάνεται η πολυπλοκότητα και οι προκλήσεις. + +Μερικές ερωτήσεις που πρέπει να απαντηθούν είναι: + +- **Δημιουργία της εφαρμογής**. Πώς μπορούμε να δημιουργήσουμε και να ενσωματώσουμε αποτελεσματικά αυτές τις εφαρμογές με τεχνητή νοημοσύνη για συγκεκριμένες χρήσεις; +- **Παρακολούθηση**. Πώς μπορούμε να παρακολουθούμε και να διασφαλίζουμε ότι οι εφαρμογές λειτουργούν με την υψηλότερη ποιότητα, τόσο από άποψη λειτουργικότητας όσο και συμμόρφωσης με τις [έξι αρχές υπεύθυνης τεχνητής νοημοσύνης](https://www.microsoft.com/ai/responsible-ai?WT.mc_id=academic-105485-koreyst); + +Καθώς προχωράμε σε μια εποχή που χαρακτηρίζεται από αυτοματοποίηση και αδιάλειπτη αλληλεπίδραση ανθρώπου-μηχανής, η κατανόηση του πώς η γενετική τεχνητή νοημοσύνη μεταμορφώνει το εύρος, το βάθος και την προσαρμοστικότητα των εφαρμογών συνομιλίας γίνεται απαραίτητη. Αυτό το μάθημα θα εξετάσει τις πτυχές της αρχιτεκτονικής που υποστηρίζουν αυτά τα περίπλοκα συστήματα, θα εμβαθύνει στις μεθοδολογίες για την προσαρμογή τους σε συγκεκριμένες εργασίες και θα αξιολογήσει τις μετρήσεις και τις παραμέτρους που είναι σημαντικές για την υπεύθυνη ανάπτυξη τεχνητής νοημοσύνης. + +## Εισαγωγή + +Αυτό το μάθημα καλύπτει: + +- Τεχνικές για αποτελεσματική δημιουργία και ενσωμάτωση εφαρμογών συνομιλίας. +- Πώς να εφαρμόσετε προσαρμογή και λεπτομερή ρύθμιση στις εφαρμογές. +- Στρατηγικές και παραμέτρους για αποτελεσματική παρακολούθηση εφαρμογών συνομιλίας. + +## Στόχοι Μάθησης + +Μέχρι το τέλος αυτού του μαθήματος, θα μπορείτε: + +- Να περιγράψετε παραμέτρους για τη δημιουργία και την ενσωμάτωση εφαρμογών συνομιλίας σε υπάρχοντα συστήματα. +- Να προσαρμόσετε εφαρμογές συνομιλίας για συγκεκριμένες χρήσεις. +- Να εντοπίσετε βασικές μετρήσεις και παραμέτρους για την αποτελεσματική παρακολούθηση και διατήρηση της ποιότητας των εφαρμογών συνομιλίας με τεχνητή νοημοσύνη. +- Να διασφαλίσετε ότι οι εφαρμογές συνομιλίας αξιοποιούν την τεχνητή νοημοσύνη υπεύθυνα. + +## Ενσωμάτωση Γενετικής Τεχνητής Νοημοσύνης στις Εφαρμογές Συνομιλίας + +Η αναβάθμιση των εφαρμογών συνομιλίας μέσω γενετικής τεχνητής νοημοσύνης δεν αφορά μόνο την εξυπνότερη λειτουργία τους· αφορά τη βελτιστοποίηση της αρχιτεκτονικής, της απόδοσης και της διεπαφής χρήστη για την παροχή μιας ποιοτικής εμπειρίας χρήστη. Αυτό περιλαμβάνει την εξέταση των αρχιτεκτονικών βάσεων, των ενσωματώσεων API και των παραμέτρων διεπαφής χρήστη. Αυτή η ενότητα στοχεύει να σας προσφέρει έναν ολοκληρωμένο οδηγό για την πλοήγηση σε αυτά τα περίπλοκα πεδία, είτε ενσωματώνετε τις εφαρμογές σε υπάρχοντα συστήματα είτε τις δημιουργείτε ως ανεξάρτητες πλατφόρμες. + +Μέχρι το τέλος αυτής της ενότητας, θα έχετε αποκτήσει την απαραίτητη τεχνογνωσία για την αποτελεσματική κατασκευή και ενσωμάτωση εφαρμογών συνομιλίας. + +### Chatbot ή Εφαρμογή Συνομιλίας; + +Πριν προχωρήσουμε στη δημιουργία εφαρμογών συνομιλίας, ας συγκρίνουμε τα 'chatbots' με τις 'εφαρμογές συνομιλίας με τεχνητή νοημοσύνη', που εξυπηρετούν διαφορετικούς ρόλους και λειτουργίες. Ο κύριος σκοπός ενός chatbot είναι να αυτοματοποιεί συγκεκριμένες συνομιλιακές εργασίες, όπως η απάντηση σε συχνές ερωτήσεις ή η παρακολούθηση ενός πακέτου. Συνήθως καθοδηγείται από λογική βασισμένη σε κανόνες ή σύνθετους αλγόριθμους τεχνητής νοημοσύνης. Αντίθετα, μια εφαρμογή συνομιλίας με τεχνητή νοημοσύνη είναι ένα πολύ πιο εκτεταμένο περιβάλλον σχεδιασμένο να διευκολύνει διάφορες μορφές ψηφιακής επικοινωνίας, όπως συνομιλίες κειμένου, φωνής και βίντεο μεταξύ ανθρώπινων χρηστών. Το χαρακτηριστικό της είναι η ενσωμάτωση ενός μοντέλου γενετικής τεχνητής νοημοσύνης που προσομοιώνει λεπτομερείς, ανθρώπινες συνομιλίες, δημιουργώντας απαντήσεις βάσει ποικίλων εισροών και συμφραζομένων. + +Ο παρακάτω πίνακας περιγράφει τις βασικές διαφορές και ομοιότητες για να κατανοήσουμε τους μοναδικούς τους ρόλους στην ψηφιακή επικοινωνία. + +| Chatbot | Εφαρμογή Συνομιλίας με Τεχνητή Νοημοσύνη | +| ------------------------------------- | ---------------------------------------- | +| Εστιασμένο σε εργασίες και βασισμένο σε κανόνες | Αντιληπτικό στο πλαίσιο | +| Συχνά ενσωματωμένο σε μεγαλύτερα συστήματα | Μπορεί να φιλοξενεί ένα ή περισσότερα chatbots | +| Περιορισμένο σε προγραμματισμένες λειτουργίες | Ενσωματώνει μοντέλα γενετικής τεχνητής νοημοσύνης | +| Εξειδικευμένες και δομημένες αλληλεπιδράσεις | Ικανό για συζητήσεις ανοιχτού πεδίου | + +### Αξιοποίηση Προκατασκευασμένων Λειτουργιών με SDKs και APIs + +Κατά τη δημιουργία μιας εφαρμογής συνομιλίας, ένα καλό πρώτο βήμα είναι να αξιολογήσετε τι υπάρχει ήδη διαθέσιμο. Η χρήση SDKs και APIs για τη δημιουργία εφαρμογών συνομιλίας είναι μια στρατηγική με πολλά πλεονεκτήματα. Με την ενσωμάτωση καλά τεκμηριωμένων SDKs και APIs, τοποθετείτε στρατηγικά την εφαρμογή σας για μακροπρόθεσμη επιτυχία, αντιμετωπίζοντας ζητήματα κλιμάκωσης και συντήρησης. + +- **Επιτάχυνση της διαδικασίας ανάπτυξης και μείωση του κόστους**: Η αξιοποίηση προκατασκευασμένων λειτουργιών αντί της δαπανηρής διαδικασίας δημιουργίας τους από την αρχή σας επιτρέπει να εστιάσετε σε άλλες πτυχές της εφαρμογής σας, όπως η επιχειρηματική λογική. +- **Καλύτερη απόδοση**: Όταν δημιουργείτε λειτουργίες από την αρχή, θα αναρωτηθείτε τελικά "Πώς κλιμακώνεται; Είναι αυτή η εφαρμογή ικανή να χειριστεί ξαφνική αύξηση χρηστών;" Τα καλά συντηρημένα SDK και APIs συχνά έχουν ενσωματωμένες λύσεις για αυτές τις ανησυχίες. +- **Ευκολότερη συντήρηση**: Οι ενημερώσεις και οι βελτιώσεις είναι ευκολότερες στη διαχείριση, καθώς τα περισσότερα APIs και SDKs απαιτούν απλώς μια ενημέρωση της βιβλιοθήκης όταν κυκλοφορεί μια νεότερη έκδοση. +- **Πρόσβαση σε προηγμένη τεχνολογία**: Η αξιοποίηση μοντέλων που έχουν εκπαιδευτεί σε εκτεταμένα σύνολα δεδομένων παρέχει στην εφαρμογή σας δυνατότητες φυσικής γλώσσας. + +Η πρόσβαση στις λειτουργίες ενός SDK ή API συνήθως περιλαμβάνει την απόκτηση άδειας χρήσης των παρεχόμενων υπηρεσιών, που συχνά γίνεται μέσω της χρήσης ενός μοναδικού κλειδιού ή διακριτικού πιστοποίησης. Θα χρησιμοποιήσουμε τη Βιβλιοθήκη Python του OpenAI για να εξερευνήσουμε πώς μοιάζει αυτό. Μπορείτε επίσης να το δοκιμάσετε μόνοι σας στο ακόλουθο [notebook για OpenAI](./python/oai-assignment.ipynb?WT.mc_id=academic-105485-koreyst) ή [notebook για Azure OpenAI Services](./python/aoai-assignment.ipynb?WT.mc_id=academic-105485-koreys) για αυτό το μάθημα. + +```python +import os +from openai import OpenAI + +API_KEY = os.getenv("OPENAI_API_KEY","") + +client = OpenAI( + api_key=API_KEY + ) + +chat_completion = client.chat.completions.create(model="gpt-3.5-turbo", messages=[{"role": "user", "content": "Suggest two titles for an instructional lesson on chat applications for generative AI."}]) +``` + +Το παραπάνω παράδειγμα χρησιμοποιεί το μοντέλο GPT-3.5 Turbo για να ολοκληρώσει την προτροπή, αλλά παρατηρήστε ότι το κλειδί API έχει οριστεί πριν από αυτό. Θα λάβετε σφάλμα αν δεν ορίσετε το κλειδί. + +## Εμπειρία Χρήστη (UX) + +Οι γενικές αρχές UX ισχύουν για τις εφαρμογές συνομιλίας, αλλά εδώ είναι μερικές πρόσθετες παραμέτρους που γίνονται ιδιαίτερα σημαντικές λόγω των στοιχείων μηχανικής μάθησης που εμπλέκονται. + +- **Μηχανισμός αντιμετώπισης αμφισημίας**: Τα μοντέλα γενετικής τεχνητής νοημοσύνης περιστασιακά παράγουν ασαφείς απαντήσεις. Μια λειτουργία που επιτρέπει στους χρήστες να ζητούν διευκρινίσεις μπορεί να είναι χρήσιμη αν αντιμετωπίσουν αυτό το πρόβλημα. +- **Διατήρηση πλαισίου**: Τα προηγμένα μοντέλα γενετικής τεχνητής νοημοσύνης έχουν τη δυνατότητα να θυμούνται το πλαίσιο μέσα σε μια συνομιλία, κάτι που μπορεί να είναι απαραίτητο για την εμπειρία χρήστη. Η δυνατότητα των χρηστών να ελέγχουν και να διαχειρίζονται το πλαίσιο βελτιώνει την εμπειρία χρήστη, αλλά εισάγει τον κίνδυνο διατήρησης ευαίσθητων πληροφοριών. Οι παράμετροι για το πόσο καιρό αποθηκεύονται αυτές οι πληροφορίες, όπως η εισαγωγή πολιτικής διατήρησης, μπορούν να ισορροπήσουν την ανάγκη για πλαίσιο με την προστασία της ιδιωτικότητας. +- **Εξατομίκευση**: Με τη δυνατότητα να μαθαίνουν και να προσαρμόζονται, τα μοντέλα τεχνητής νοημοσύνης προσφέρουν μια εξατομικευμένη εμπειρία στον χρήστη. Η προσαρμογή της εμπειρίας χρήστη μέσω λειτουργιών όπως τα προφίλ χρηστών όχι μόνο κάνει τον χρήστη να αισθάνεται ότι τον κατανοούν, αλλά επίσης βοηθά στην αναζήτηση συγκεκριμένων απαντήσεων, δημιουργώντας μια πιο αποτελεσματική και ικανοποιητική αλληλεπίδραση. + +Ένα τέτοιο παράδειγμα εξατομίκευσης είναι οι ρυθμίσεις "Προσαρμοσμένες οδηγίες" στο ChatGPT της OpenAI. Σας επιτρέπει να παρέχετε πληροφορίες για τον εαυτό σας που μπορεί να είναι σημαντικό πλαίσιο για τις προτροπές σας. Ακολουθεί ένα παράδειγμα προσαρμοσμένης οδηγίας. + +![Ρυθμίσεις Προσαρμοσμένων Οδηγιών στο ChatGPT](../../../translated_images/custom-instructions.b96f59aa69356fcfed456414221919e8996f93c90c20d0d58d1bc0221e3c909f.el.png) + +Αυτό το "προφίλ" προτρέπει το ChatGPT να δημιουργήσει ένα σχέδιο μαθήματος για συνδεδεμένες λίστες. Παρατηρήστε ότι το ChatGPT λαμβάνει υπόψη ότι ο χρήστης μπορεί να θέλει ένα πιο λεπτομερές σχέδιο μαθήματος βάσει της εμπειρίας της. + +![Μια προτροπή στο ChatGPT για ένα σχέδιο μαθήματος σχετικά με συνδεδεμένες λίστες](../../../translated_images/lesson-plan-prompt.cc47c488cf1343df5d67aa796a1acabca32c380e5b782971e289f6ab8b21cf5a.el.png) + +### Πλαίσιο Μηνυμάτων Συστήματος της Microsoft για Μεγάλα Μοντέλα Γλώσσας + +[Η Microsoft έχει παρέχει καθοδήγηση](https://learn.microsoft.com/azure/ai-services/openai/concepts/system-message#define-the-models-output-format?WT.mc_id=academic-105485-koreyst) για τη σύνταξη αποτελεσματικών μηνυμάτων συστήματος κατά τη δημιουργία απαντήσεων από LLMs, χωρισμένη σε 4 περιοχές: + +1. Ορισμός του ποιος είναι το μοντέλο, καθώς και των δυνατοτήτων και περιορισμών του. +2. Ορισμός της μορφής εξόδου του μοντέλου. +3. Παροχή συγκεκριμένων παραδειγμάτων που δείχνουν την επιθυμητή συμπεριφορά του μοντέλου. +4. Παροχή πρόσθετων κανόνων συμπεριφοράς. + +### Προσβασιμότητα + +Είτε ένας χρήστης έχει προβλήματα όρασης, ακοής, κινητικότητας ή γνωστικά προβλήματα, μια καλά σχεδιασμένη εφαρμογή συνομιλίας πρέπει να είναι προσβάσιμη από όλους. Η παρακάτω λίστα αναλύει συγκεκριμένες λειτουργίες που στοχεύουν στη βελτίωση της προσβασιμότητας για διάφορες αναπηρίες χρηστών. + +- **Λειτουργίες για προβλήματα όρασης**: Θέματα υψηλής αντίθεσης και κείμενο με δυνατότητα αλλαγής μεγέθους, συμβατότητα με αναγνώστες οθόνης. +- **Λειτουργίες για προβλήματα ακοής**: Λειτουργίες μετατροπής κειμένου σε ομιλία και ομιλίας σε κείμενο, οπτικά σήματα για ηχητικές ειδοποιήσεις. +- **Λειτουργίες για προβλήματα κινητικότητας**: Υποστήριξη πλοήγησης με πληκτρολόγιο, φωνητικές εντολές. +- **Λειτουργίες για γνωστικά προβλήματα**: Απλοποιημένες επιλογές γλώσσας. + +## Προσαρμογή και Λεπτομερής Ρύθμιση για Μοντέλα Γλώσσας Ειδικά για Πεδίο + +Φανταστείτε μια εφαρμογή συνομιλίας που κατανοεί την ορολογία της εταιρείας σας και προβλέπει τις συγκεκριμένες ερωτήσεις που έχει συνήθως η βάση χρηστών της. Υπάρχουν δύο προσεγγίσεις που αξίζει να αναφερθούν: + +- **Αξιοποίηση μοντέλων DSL**. Το DSL σημαίνει γλώσσα ειδική για πεδίο. Μπορείτε να αξιοποιήσετε ένα λεγόμενο μοντέλο DSL εκπαιδευμένο σε ένα συγκεκριμένο πεδίο για να κατανοήσει τις έννοιες και τα σενάρια του. +- **Εφαρμογή λεπτομερούς ρύθμισης**. Η λεπτομερής ρύθμιση είναι η διαδικασία περαιτέρω εκπαίδευσης του μοντέλου σας με συγκεκριμένα δεδομένα. + +## Προσαρμογή: Χρήση ενός DSL + +Η αξιοποίηση μοντέλων γλώσσας ειδικών για πεδίο (DSL Models) μπορεί να ενισχύσει την εμπλοκή των χρηστών παρέχοντας εξειδικευμένες, συμφραζόμενες αλληλεπιδράσεις. Είναι ένα μοντέλο που έχει εκπαιδευτεί ή έχει υποστεί λεπτομερή ρύθμιση για να κατανοεί και να δημιουργεί κείμενο σχετικό με ένα συγκεκριμένο πεδίο, βιομηχανία ή θέμα. Οι επιλογές για τη χρήση ενός μοντέλου DSL μπορεί να ποικίλουν από την εκπαίδευση ενός από την αρχή, έως τη χρήση προϋπαρχόντων μέσω SDKs και APIs. Μια άλλη επιλογή είναι η λεπτομερής ρύθμιση, που περιλαμβάνει τη λήψη ενός υπάρχοντος προεκπαιδευμένου μοντέλου και την προσαρμογή του για ένα +| **Ανίχνευση Ανωμαλιών** | Εργαλεία και τεχνικές για την αναγνώριση ασυνήθιστων μοτίβων που δεν συμμορφώνονται με την αναμενόμενη συμπεριφορά. | Πώς θα ανταποκριθείτε στις ανωμαλίες; | + +### Εφαρμογή Υπεύθυνων Πρακτικών Τεχνητής Νοημοσύνης στις Εφαρμογές Συνομιλίας + +Η προσέγγιση της Microsoft για την Υπεύθυνη Τεχνητή Νοημοσύνη έχει εντοπίσει έξι αρχές που πρέπει να καθοδηγούν την ανάπτυξη και χρήση της Τεχνητής Νοημοσύνης. Παρακάτω παρατίθενται οι αρχές, ο ορισμός τους, καθώς και πράγματα που πρέπει να λάβει υπόψη ένας προγραμματιστής συνομιλιών και γιατί είναι σημαντικό να τα αντιμετωπίσει σοβαρά. + +| Αρχές | Ορισμός της Microsoft | Σκέψεις για τον Προγραμματιστή Συνομιλιών | Γιατί Είναι Σημαντικό | +| ---------------------- | ----------------------------------------------------- | ---------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | +| Δικαιοσύνη | Τα συστήματα Τεχνητής Νοημοσύνης πρέπει να αντιμετωπίζουν όλους τους ανθρώπους δίκαια. | Βεβαιωθείτε ότι η εφαρμογή συνομιλίας δεν κάνει διακρίσεις βάσει δεδομένων χρηστών. | Για να οικοδομήσετε εμπιστοσύνη και συμπερίληψη μεταξύ των χρηστών· αποφεύγει νομικές συνέπειες. | +| Αξιοπιστία και Ασφάλεια| Τα συστήματα Τεχνητής Νοημοσύνης πρέπει να λειτουργούν αξιόπιστα και με ασφάλεια. | Εφαρμόστε δοκιμές και μηχανισμούς ασφαλείας για να ελαχιστοποιήσετε τα λάθη και τους κινδύνους. | Εξασφαλίζει την ικανοποίηση των χρηστών και αποτρέπει πιθανές βλάβες. | +| Ιδιωτικότητα και Ασφάλεια | Τα συστήματα Τεχνητής Νοημοσύνης πρέπει να είναι ασφαλή και να σέβονται την ιδιωτικότητα. | Εφαρμόστε ισχυρή κρυπτογράφηση και μέτρα προστασίας δεδομένων. | Για να προστατεύσετε ευαίσθητα δεδομένα χρηστών και να συμμορφωθείτε με τους νόμους περί ιδιωτικότητας. | +| Συμπερίληψη | Τα συστήματα Τεχνητής Νοημοσύνης πρέπει να ενδυναμώνουν όλους και να εμπλέκουν τους ανθρώπους. | Σχεδιάστε UI/UX που είναι προσβάσιμο και εύχρηστο για διαφορετικά ακροατήρια. | Εξασφαλίζει ότι ένα ευρύτερο φάσμα ανθρώπων μπορεί να χρησιμοποιήσει την εφαρμογή αποτελεσματικά. | +| Διαφάνεια | Τα συστήματα Τεχνητής Νοημοσύνης πρέπει να είναι κατανοητά. | Παρέχετε σαφή τεκμηρίωση και αιτιολόγηση για τις απαντήσεις της Τεχνητής Νοημοσύνης. | Οι χρήστες είναι πιο πιθανό να εμπιστευτούν ένα σύστημα αν μπορούν να κατανοήσουν πώς λαμβάνονται οι αποφάσεις. | +| Λογοδοσία | Οι άνθρωποι πρέπει να είναι υπεύθυνοι για τα συστήματα Τεχνητής Νοημοσύνης. | Καθιερώστε μια σαφή διαδικασία για την αξιολόγηση και τη βελτίωση των αποφάσεων της Τεχνητής Νοημοσύνης. | Επιτρέπει τη συνεχή βελτίωση και διορθωτικά μέτρα σε περίπτωση λαθών. | + +## Εργασία + +Δείτε [την εργασία](../../../07-building-chat-applications/python). Θα σας καθοδηγήσει μέσα από μια σειρά ασκήσεων, από την εκτέλεση των πρώτων προτροπών συνομιλίας, μέχρι την ταξινόμηση και την περίληψη κειμένου και πολλά άλλα. Σημειώστε ότι οι εργασίες είναι διαθέσιμες σε διαφορετικές γλώσσες προγραμματισμού! + +## Καλή Δουλειά! Συνεχίστε το Ταξίδι + +Αφού ολοκληρώσετε αυτό το μάθημα, δείτε τη [Συλλογή Μάθησης για Γενετική Τεχνητή Νοημοσύνη](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) για να συνεχίσετε να αναβαθμίζετε τις γνώσεις σας στη Γενετική Τεχνητή Νοημοσύνη! + +Προχωρήστε στο Μάθημα 8 για να δείτε πώς μπορείτε να ξεκινήσετε [να δημιουργείτε εφαρμογές αναζήτησης](../08-building-search-applications/README.md?WT.mc_id=academic-105485-koreyst)! + +--- + +**Αποποίηση ευθύνης**: +Αυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία αυτόματης μετάφρασης [Co-op Translator](https://github.com/Azure/co-op-translator). Παρόλο που καταβάλλουμε προσπάθειες για ακρίβεια, παρακαλούμε να έχετε υπόψη ότι οι αυτόματες μεταφράσεις ενδέχεται να περιέχουν λάθη ή ανακρίβειες. Το πρωτότυπο έγγραφο στη μητρική του γλώσσα θα πρέπει να θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε ευθύνη για τυχόν παρεξηγήσεις ή εσφαλμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης. \ No newline at end of file diff --git a/translations/el/08-building-search-applications/README.md b/translations/el/08-building-search-applications/README.md index a0218cd5e0..e50ca89bda 100644 --- a/translations/el/08-building-search-applications/README.md +++ b/translations/el/08-building-search-applications/README.md @@ -1,175 +1,177 @@ - -# Δημιουργία Εφαρμογών Αναζήτησης - -[![Εισαγωγή στην Γενετική Τεχνητή Νοημοσύνη και Μεγάλα Γλωσσικά Μοντέλα](../../../translated_images/08-lesson-banner.8fff48c566dad08a1cbb9f4b4a2c16adfdd288a7bbfffdd30770b466fe08c25c.el.png)](https://aka.ms/gen-ai-lesson8-gh?WT.mc_id=academic-105485-koreyst) - -> > _Κάντε κλικ στην εικόνα παραπάνω για να δείτε το βίντεο αυτού του μαθήματος_ - -Τα LLM δεν περιορίζονται μόνο σε chatbots και δημιουργία κειμένου. Είναι επίσης εφικτό να δημιουργήσετε εφαρμογές αναζήτησης χρησιμοποιώντας Embeddings. Τα Embeddings είναι αριθμητικές αναπαραστάσεις δεδομένων, γνωστές και ως διανύσματα, και μπορούν να χρησιμοποιηθούν για σημασιολογική αναζήτηση δεδομένων. - -Σε αυτό το μάθημα, θα δημιουργήσετε μια εφαρμογή αναζήτησης για το εκπαιδευτικό μας startup. Το startup μας είναι ένας μη κερδοσκοπικός οργανισμός που παρέχει δωρεάν εκπαίδευση σε φοιτητές σε αναπτυσσόμενες χώρες. Το startup μας διαθέτει μεγάλο αριθμό βίντεο στο YouTube που οι φοιτητές μπορούν να χρησιμοποιήσουν για να μάθουν για την Τεχνητή Νοημοσύνη. Θέλουμε να δημιουργήσουμε μια εφαρμογή αναζήτησης που θα επιτρέπει στους φοιτητές να αναζητούν βίντεο στο YouTube πληκτρολογώντας μια ερώτηση. - -Για παράδειγμα, ένας φοιτητής μπορεί να πληκτρολογήσει «Τι είναι τα Jupyter Notebooks;» ή «Τι είναι το Azure ML» και η εφαρμογή αναζήτησης θα επιστρέψει μια λίστα με βίντεο στο YouTube που σχετίζονται με την ερώτηση, και ακόμα καλύτερα, η εφαρμογή θα επιστρέψει έναν σύνδεσμο στο σημείο του βίντεο όπου βρίσκεται η απάντηση στην ερώτηση. - -## Εισαγωγή - -Σε αυτό το μάθημα, θα καλύψουμε: - -- Σημασιολογική έναντι αναζήτησης με λέξεις-κλειδιά. -- Τι είναι τα Text Embeddings. -- Δημιουργία ευρετηρίου Text Embeddings. -- Αναζήτηση σε ευρετήριο Text Embeddings. - -## Στόχοι Μάθησης - -Μετά την ολοκλήρωση αυτού του μαθήματος, θα μπορείτε να: - -- Διακρίνετε τη διαφορά μεταξύ σημασιολογικής και αναζήτησης με λέξεις-κλειδιά. -- Εξηγήσετε τι είναι τα Text Embeddings. -- Δημιουργήσετε μια εφαρμογή που χρησιμοποιεί Embeddings για αναζήτηση δεδομένων. - -## Γιατί να δημιουργήσετε μια εφαρμογή αναζήτησης; - -Η δημιουργία μιας εφαρμογής αναζήτησης θα σας βοηθήσει να κατανοήσετε πώς να χρησιμοποιείτε τα Embeddings για αναζήτηση δεδομένων. Επίσης, θα μάθετε πώς να δημιουργήσετε μια εφαρμογή αναζήτησης που μπορούν να χρησιμοποιούν οι φοιτητές για να βρίσκουν πληροφορίες γρήγορα. - -Το μάθημα περιλαμβάνει ένα Ευρετήριο Embeddings των απομαγνητοφωνήσεων βίντεο του καναλιού Microsoft [AI Show](https://www.youtube.com/playlist?list=PLlrxD0HtieHi0mwteKBOfEeOYf0LJU4O1) στο YouTube. Το AI Show είναι ένα κανάλι στο YouTube που διδάσκει για την Τεχνητή Νοημοσύνη και τη μηχανική μάθηση. Το Ευρετήριο Embeddings περιέχει τα Embeddings για κάθε απομαγνητοφώνηση βίντεο μέχρι τον Οκτώβριο του 2023. Θα χρησιμοποιήσετε το Ευρετήριο Embeddings για να δημιουργήσετε μια εφαρμογή αναζήτησης για το startup μας. Η εφαρμογή αναζήτησης επιστρέφει έναν σύνδεσμο στο σημείο του βίντεο όπου βρίσκεται η απάντηση στην ερώτηση. Αυτός είναι ένας εξαιρετικός τρόπος για τους φοιτητές να βρίσκουν γρήγορα τις πληροφορίες που χρειάζονται. - -Παρακάτω είναι ένα παράδειγμα σημασιολογικής αναζήτησης για την ερώτηση «μπορείς να χρησιμοποιήσεις rstudio με το azure ml;». Δείτε το URL του YouTube, θα παρατηρήσετε ότι περιέχει χρονική σήμανση που σας οδηγεί στο σημείο του βίντεο όπου βρίσκεται η απάντηση στην ερώτηση. - -![Σημασιολογική αναζήτηση για την ερώτηση "μπορείς να χρησιμοποιήσεις rstudio με το Azure ML"](../../../translated_images/query-results.bb0480ebf025fac69c5179ad4d53b6627d643046838c857dc9e2b1281f1cdeb7.el.png) - -## Τι είναι η σημασιολογική αναζήτηση; - -Ίσως αναρωτιέστε, τι είναι η σημασιολογική αναζήτηση; Η σημασιολογική αναζήτηση είναι μια τεχνική αναζήτησης που χρησιμοποιεί τη σημασία ή το νόημα των λέξεων σε μια ερώτηση για να επιστρέψει σχετικά αποτελέσματα. - -Ας δούμε ένα παράδειγμα σημασιολογικής αναζήτησης. Ας υποθέσουμε ότι θέλετε να αγοράσετε ένα αυτοκίνητο, μπορεί να αναζητήσετε «το αυτοκίνητο των ονείρων μου». Η σημασιολογική αναζήτηση καταλαβαίνει ότι δεν «ονειρεύεστε» ένα αυτοκίνητο, αλλά ψάχνετε να αγοράσετε το «ιδανικό» σας αυτοκίνητο. Η σημασιολογική αναζήτηση κατανοεί την πρόθεσή σας και επιστρέφει σχετικά αποτελέσματα. Η εναλλακτική είναι η «αναζήτηση με λέξεις-κλειδιά» που θα αναζητούσε κυριολεκτικά όνειρα για αυτοκίνητα και συχνά επιστρέφει άσχετα αποτελέσματα. - -## Τι είναι τα Text Embeddings; - -[Τα Text embeddings](https://en.wikipedia.org/wiki/Word_embedding?WT.mc_id=academic-105485-koreyst) είναι μια τεχνική αναπαράστασης κειμένου που χρησιμοποιείται στην [επεξεργασία φυσικής γλώσσας](https://en.wikipedia.org/wiki/Natural_language_processing?WT.mc_id=academic-105485-koreyst). Τα Text embeddings είναι σημασιολογικές αριθμητικές αναπαραστάσεις κειμένου. Τα Embeddings χρησιμοποιούνται για να αναπαραστήσουν δεδομένα με τρόπο που είναι εύκολος για μια μηχανή να κατανοήσει. Υπάρχουν πολλά μοντέλα για τη δημιουργία text embeddings, σε αυτό το μάθημα θα εστιάσουμε στη δημιουργία embeddings χρησιμοποιώντας το OpenAI Embedding Model. - -Ας δούμε ένα παράδειγμα, φανταστείτε ότι το παρακάτω κείμενο είναι απόσπασμα από μια απομαγνητοφώνηση ενός επεισοδίου του καναλιού AI Show στο YouTube: - -```text -Today we are going to learn about Azure Machine Learning. -``` - -Θα περάσουμε το κείμενο στο OpenAI Embedding API και θα επιστρέψει το ακόλουθο embedding που αποτελείται από 1536 αριθμούς, δηλαδή ένα διάνυσμα. Κάθε αριθμός στο διάνυσμα αντιπροσωπεύει μια διαφορετική πτυχή του κειμένου. Για συντομία, εδώ είναι οι πρώτοι 10 αριθμοί του διανύσματος. - -```python -[-0.006655829958617687, 0.0026128944009542465, 0.008792596869170666, -0.02446001023054123, -0.008540431968867779, 0.022071078419685364, -0.010703742504119873, 0.003311325330287218, -0.011632772162556648, -0.02187200076878071, ...] -``` - -## Πώς δημιουργείται το ευρετήριο Embedding; - -Το ευρετήριο Embedding για αυτό το μάθημα δημιουργήθηκε με μια σειρά από σενάρια Python. Θα βρείτε τα σενάρια μαζί με οδηγίες στο [README](./scripts/README.md?WT.mc_id=academic-105485-koreyst) στον φάκελο 'scripts' αυτού του μαθήματος. Δεν χρειάζεται να εκτελέσετε αυτά τα σενάρια για να ολοκληρώσετε το μάθημα, καθώς το Ευρετήριο Embedding παρέχεται ήδη. - -Τα σενάρια εκτελούν τις εξής ενέργειες: - -1. Κατεβάζεται η απομαγνητοφώνηση για κάθε βίντεο στο playlist [AI Show](https://www.youtube.com/playlist?list=PLlrxD0HtieHi0mwteKBOfEeOYf0LJU4O1). -2. Χρησιμοποιώντας τις [OpenAI Functions](https://learn.microsoft.com/azure/ai-services/openai/how-to/function-calling?WT.mc_id=academic-105485-koreyst), επιχειρείται η εξαγωγή του ονόματος του ομιλητή από τα πρώτα 3 λεπτά της απομαγνητοφώνησης. Το όνομα του ομιλητή για κάθε βίντεο αποθηκεύεται στο Ευρετήριο Embedding με όνομα `embedding_index_3m.json`. -3. Το κείμενο της απομαγνητοφώνησης χωρίζεται σε **τμήματα κειμένου διάρκειας 3 λεπτών**. Το τμήμα περιλαμβάνει περίπου 20 λέξεις που επικαλύπτονται με το επόμενο τμήμα για να διασφαλιστεί ότι το Embedding του τμήματος δεν κόβεται και να παρέχεται καλύτερο πλαίσιο αναζήτησης. -4. Κάθε τμήμα κειμένου περνάει στο OpenAI Chat API για να συνοψιστεί σε 60 λέξεις. Η σύνοψη αποθηκεύεται επίσης στο Ευρετήριο Embedding `embedding_index_3m.json`. -5. Τέλος, το κείμενο του τμήματος περνάει στο OpenAI Embedding API. Το Embedding API επιστρέφει ένα διάνυσμα 1536 αριθμών που αναπαριστούν το σημασιολογικό νόημα του τμήματος. Το τμήμα μαζί με το διάνυσμα OpenAI Embedding αποθηκεύονται στο Ευρετήριο Embedding `embedding_index_3m.json`. - -### Βάσεις Δεδομένων Διανυσμάτων - -Για απλότητα του μαθήματος, το Ευρετήριο Embedding αποθηκεύεται σε αρχείο JSON με όνομα `embedding_index_3m.json` και φορτώνεται σε Pandas DataFrame. Ωστόσο, σε παραγωγικό περιβάλλον, το Ευρετήριο Embedding θα αποθηκευόταν σε βάση δεδομένων διανυσμάτων όπως το [Azure Cognitive Search](https://learn.microsoft.com/training/modules/improve-search-results-vector-search?WT.mc_id=academic-105485-koreyst), [Redis](https://cookbook.openai.com/examples/vector_databases/redis/readme?WT.mc_id=academic-105485-koreyst), [Pinecone](https://cookbook.openai.com/examples/vector_databases/pinecone/readme?WT.mc_id=academic-105485-koreyst), [Weaviate](https://cookbook.openai.com/examples/vector_databases/weaviate/readme?WT.mc_id=academic-105485-koreyst), για να αναφέρουμε μερικές. - -## Κατανόηση της ομοιότητας συνημιτόνου (cosine similarity) - -Έχουμε μάθει για τα text embeddings, το επόμενο βήμα είναι να μάθουμε πώς να χρησιμοποιούμε τα text embeddings για αναζήτηση δεδομένων και συγκεκριμένα πώς να βρίσκουμε τα πιο παρόμοια embeddings με μια δεδομένη ερώτηση χρησιμοποιώντας την ομοιότητα συνημιτόνου. - -### Τι είναι η ομοιότητα συνημιτόνου; - -Η ομοιότητα συνημιτόνου είναι ένα μέτρο ομοιότητας μεταξύ δύο διανυσμάτων, το οποίο συχνά αναφέρεται και ως `nearest neighbor search` (αναζήτηση πλησιέστερου γείτονα). Για να εκτελέσετε αναζήτηση με ομοιότητα συνημιτόνου, πρέπει να _μετατρέψετε σε διάνυσμα_ το κείμενο της _ερώτησης_ χρησιμοποιώντας το OpenAI Embedding API. Στη συνέχεια, υπολογίζετε την _ομοιότητα συνημιτόνου_ μεταξύ του διανύσματος της ερώτησης και κάθε διανύσματος στο Ευρετήριο Embedding. Θυμηθείτε, το Ευρετήριο Embedding έχει ένα διάνυσμα για κάθε τμήμα κειμένου απομαγνητοφώνησης βίντεο YouTube. Τέλος, ταξινομείτε τα αποτελέσματα με βάση την ομοιότητα συνημιτόνου και τα τμήματα κειμένου με την υψηλότερη ομοιότητα είναι τα πιο σχετικά με την ερώτηση. - -Από μαθηματική σκοπιά, η ομοιότητα συνημιτόνου μετρά το συνημίτονο της γωνίας μεταξύ δύο διανυσμάτων που προβάλλονται σε έναν πολυδιάστατο χώρο. Αυτή η μέτρηση είναι χρήσιμη, γιατί αν δύο έγγραφα απέχουν πολύ μεταξύ τους με βάση την Ευκλείδεια απόσταση λόγω μεγέθους, μπορεί να έχουν μικρότερη γωνία μεταξύ τους και συνεπώς μεγαλύτερη ομοιότητα συνημιτόνου. Για περισσότερες πληροφορίες σχετικά με τις εξισώσεις ομοιότητας συνημιτόνου, δείτε [Cosine similarity](https://en.wikipedia.org/wiki/Cosine_similarity?WT.mc_id=academic-105485-koreyst). - -## Δημιουργία της πρώτης σας εφαρμογής αναζήτησης - -Στη συνέχεια, θα μάθουμε πώς να δημιουργήσουμε μια εφαρμογή αναζήτησης χρησιμοποιώντας Embeddings. Η εφαρμογή αναζήτησης θα επιτρέπει στους φοιτητές να αναζητούν ένα βίντεο πληκτρολογώντας μια ερώτηση. Η εφαρμογή θα επιστρέφει μια λίστα βίντεο που σχετίζονται με την ερώτηση. Επίσης, θα επιστρέφει έναν σύνδεσμο στο σημείο του βίντεο όπου βρίσκεται η απάντηση στην ερώτηση. - -Αυτή η λύση δημιουργήθηκε και δοκιμάστηκε σε Windows 11, macOS και Ubuntu 22.04 χρησιμοποιώντας Python 3.10 ή νεότερη έκδοση. Μπορείτε να κατεβάσετε την Python από το [python.org](https://www.python.org/downloads/?WT.mc_id=academic-105485-koreyst). - -## Άσκηση - δημιουργία εφαρμογής αναζήτησης για να βοηθήσετε τους φοιτητές - -Παρουσιάσαμε το startup μας στην αρχή αυτού του μαθήματος. Τώρα ήρθε η ώρα να δώσουμε τη δυνατότητα στους φοιτητές να δημιουργήσουν μια εφαρμογή αναζήτησης για τις αξιολογήσεις τους. - -Σε αυτή την άσκηση, θα δημιουργήσετε τις Azure OpenAI Υπηρεσίες που θα χρησιμοποιηθούν για την κατασκευή της εφαρμογής αναζήτησης. Θα δημιουργήσετε τις ακόλουθες Azure OpenAI Υπηρεσίες. Θα χρειαστείτε μια συνδρομή Azure για να ολοκληρώσετε αυτή την άσκηση. - -### Ξεκινήστε το Azure Cloud Shell - -1. Συνδεθείτε στο [Azure portal](https://portal.azure.com/?WT.mc_id=academic-105485-koreyst). -2. Επιλέξτε το εικονίδιο Cloud Shell στην πάνω δεξιά γωνία του Azure portal. -3. Επιλέξτε **Bash** ως τύπο περιβάλλοντος. - -#### Δημιουργία ομάδας πόρων - -> Για αυτές τις οδηγίες, χρησιμοποιούμε την ομάδα πόρων με όνομα "semantic-video-search" στην περιοχή East US. -> Μπορείτε να αλλάξετε το όνομα της ομάδας πόρων, αλλά όταν αλλάζετε την τοποθεσία των πόρων, -> ελέγξτε τον [πίνακα διαθεσιμότητας μοντέλων](https://aka.ms/oai/models?WT.mc_id=academic-105485-koreyst). - -```shell -az group create --name semantic-video-search --location eastus -``` - -#### Δημιουργία πόρου Azure OpenAI Service - -Από το Azure Cloud Shell, εκτελέστε την παρακάτω εντολή για να δημιουργήσετε έναν πόρο Azure OpenAI Service. - -```shell -az cognitiveservices account create --name semantic-video-openai --resource-group semantic-video-search \ - --location eastus --kind OpenAI --sku s0 -``` - -#### Λήψη του endpoint και των κλειδιών για χρήση σε αυτή την εφαρμογή - -Από το Azure Cloud Shell, εκτελέστε τις παρακάτω εντολές για να λάβετε το endpoint και τα κλειδιά για τον πόρο Azure OpenAI Service. - -```shell -az cognitiveservices account show --name semantic-video-openai \ - --resource-group semantic-video-search | jq -r .properties.endpoint -az cognitiveservices account keys list --name semantic-video-openai \ - --resource-group semantic-video-search | jq -r .key1 -``` - -#### Ανάπτυξη του μοντέλου OpenAI Embedding - -Από το Azure Cloud Shell, εκτελέστε την παρακάτω εντολή για να αναπτύξετε το μοντέλο OpenAI Embedding. - -```shell -az cognitiveservices account deployment create \ - --name semantic-video-openai \ - --resource-group semantic-video-search \ - --deployment-name text-embedding-ada-002 \ - --model-name text-embedding-ada-002 \ - --model-version "2" \ - --model-format OpenAI \ - --sku-capacity 100 --sku-name "Standard" -``` - -## Λύση - -Ανοίξτε το [solution notebook](python/aoai-solution.ipynb) στο GitHub Codespaces και ακολουθήστε τις οδηγίες στο Jupyter Notebook. - -Όταν εκτελέσετε το notebook, θα σας ζητηθεί να εισάγετε μια ερώτηση. Το πλαίσιο εισαγωγής θα μοιάζει με το παρακάτω: - -![Πλαίσιο εισαγωγής για τον χρήστη να εισάγει ερώτηση](../../../translated_images/notebook-search.1e320b9c7fcbb0bc1436d98ea6ee73b4b54ca47990a1c952b340a2cadf8ac1ca.el.png) - -## Μπράβο! Συνεχίστε τη Μάθησή σας - -Μετά την ολοκλήρωση αυτού του μαθήματος, ρίξτε μια ματιά στη [συλλογή μάθησης για Γενετική Τεχνητή Νοημοσύνη](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) για να συνεχίσετε να εξελίσσετε τις γνώσεις σας στην Γενετική Τεχνητή Νοημοσύνη! - -Πηγαίνετε στο Μάθημα 9 όπου θα δούμε πώς να [δημιουργούμε εφαρμογές δημιουργίας εικόνων](../09-building-image-applications/README.md?WT.mc_id=academic-105485-koreyst)! - -**Αποποίηση ευθυνών**: -Αυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία αυτόματης μετάφρασης AI [Co-op Translator](https://github.com/Azure/co-op-translator). Παρόλο που επιδιώκουμε την ακρίβεια, παρακαλούμε να γνωρίζετε ότι οι αυτόματες μεταφράσεις ενδέχεται να περιέχουν λάθη ή ανακρίβειες. Το πρωτότυπο έγγραφο στη μητρική του γλώσσα πρέπει να θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε ευθύνη για τυχόν παρεξηγήσεις ή λανθασμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης. \ No newline at end of file + +# Δημιουργία Εφαρμογών Αναζήτησης + +[![Εισαγωγή στη Γενετική Τεχνητή Νοημοσύνη και στα Μεγάλα Γλωσσικά Μοντέλα](../../../translated_images/08-lesson-banner.8fff48c566dad08a1cbb9f4b4a2c16adfdd288a7bbfffdd30770b466fe08c25c.el.png)](https://youtu.be/W0-nzXjOjr0?si=GcsqiTTvd7RKbo7V) + +> > _Κάντε κλικ στην εικόνα παραπάνω για να δείτε το βίντεο αυτού του μαθήματος_ + +Τα LLMs δεν περιορίζονται μόνο σε chatbots και δημιουργία κειμένου. Είναι επίσης δυνατό να δημιουργήσετε εφαρμογές αναζήτησης χρησιμοποιώντας Embeddings. Τα Embeddings είναι αριθμητικές αναπαραστάσεις δεδομένων, γνωστά και ως διανύσματα, και μπορούν να χρησιμοποιηθούν για σημασιολογική αναζήτηση δεδομένων. + +Σε αυτό το μάθημα, θα δημιουργήσετε μια εφαρμογή αναζήτησης για την εκπαιδευτική μας startup. Η startup μας είναι ένας μη κερδοσκοπικός οργανισμός που παρέχει δωρεάν εκπαίδευση σε μαθητές σε αναπτυσσόμενες χώρες. Η startup μας διαθέτει μεγάλο αριθμό βίντεο στο YouTube που οι μαθητές μπορούν να χρησιμοποιήσουν για να μάθουν για την Τεχνητή Νοημοσύνη. Η startup μας θέλει να δημιουργήσει μια εφαρμογή αναζήτησης που επιτρέπει στους μαθητές να αναζητούν ένα βίντεο στο YouTube πληκτρολογώντας μια ερώτηση. + +Για παράδειγμα, ένας μαθητής μπορεί να πληκτρολογήσει "Τι είναι τα Jupyter Notebooks;" ή "Τι είναι το Azure ML" και η εφαρμογή αναζήτησης θα επιστρέψει μια λίστα με βίντεο στο YouTube που είναι σχετικά με την ερώτηση, και ακόμα καλύτερα, η εφαρμογή αναζήτησης θα επιστρέψει έναν σύνδεσμο στο σημείο του βίντεο όπου βρίσκεται η απάντηση στην ερώτηση. + +## Εισαγωγή + +Σε αυτό το μάθημα, θα καλύψουμε: + +- Σημασιολογική vs Αναζήτηση με λέξεις-κλειδιά. +- Τι είναι τα Text Embeddings. +- Δημιουργία ενός Text Embeddings Index. +- Αναζήτηση σε έναν Text Embeddings Index. + +## Στόχοι Μάθησης + +Μετά την ολοκλήρωση αυτού του μαθήματος, θα μπορείτε: + +- Να διακρίνετε τη διαφορά μεταξύ σημασιολογικής και αναζήτησης με λέξεις-κλειδιά. +- Να εξηγήσετε τι είναι τα Text Embeddings. +- Να δημιουργήσετε μια εφαρμογή χρησιμοποιώντας Embeddings για αναζήτηση δεδομένων. + +## Γιατί να δημιουργήσετε μια εφαρμογή αναζήτησης; + +Η δημιουργία μιας εφαρμογής αναζήτησης θα σας βοηθήσει να κατανοήσετε πώς να χρησιμοποιείτε Embeddings για αναζήτηση δεδομένων. Θα μάθετε επίσης πώς να δημιουργήσετε μια εφαρμογή αναζήτησης που μπορεί να χρησιμοποιηθεί από μαθητές για να βρίσκουν πληροφορίες γρήγορα. + +Το μάθημα περιλαμβάνει έναν Embedding Index από τις μεταγραφές του YouTube για το κανάλι [AI Show](https://www.youtube.com/playlist?list=PLlrxD0HtieHi0mwteKBOfEeOYf0LJU4O1). Το AI Show είναι ένα κανάλι στο YouTube που σας διδάσκει για την Τεχνητή Νοημοσύνη και τη μηχανική μάθηση. Ο Embedding Index περιέχει τα Embeddings για κάθε μεταγραφή του YouTube μέχρι τον Οκτώβριο του 2023. Θα χρησιμοποιήσετε τον Embedding Index για να δημιουργήσετε μια εφαρμογή αναζήτησης για τη startup μας. Η εφαρμογή αναζήτησης επιστρέφει έναν σύνδεσμο στο σημείο του βίντεο όπου βρίσκεται η απάντηση στην ερώτηση. Αυτός είναι ένας εξαιρετικός τρόπος για τους μαθητές να βρίσκουν τις πληροφορίες που χρειάζονται γρήγορα. + +Το παρακάτω είναι ένα παράδειγμα σημασιολογικής ερώτησης για την ερώτηση "μπορείτε να χρησιμοποιήσετε το rstudio με το azure ml;". Δείτε το url του YouTube, θα δείτε ότι το url περιέχει ένα timestamp που σας οδηγεί στο σημείο του βίντεο όπου βρίσκεται η απάντηση στην ερώτηση. + +![Σημασιολογική ερώτηση για την ερώτηση "μπορείτε να χρησιμοποιήσετε το rstudio με το Azure ML"](../../../translated_images/query-results.bb0480ebf025fac69c5179ad4d53b6627d643046838c857dc9e2b1281f1cdeb7.el.png) + +## Τι είναι η σημασιολογική αναζήτηση; + +Ίσως αναρωτιέστε, τι είναι η σημασιολογική αναζήτηση; Η σημασιολογική αναζήτηση είναι μια τεχνική αναζήτησης που χρησιμοποιεί τη σημασία ή το νόημα των λέξεων σε μια ερώτηση για να επιστρέψει σχετικά αποτελέσματα. + +Ακολουθεί ένα παράδειγμα σημασιολογικής αναζήτησης. Ας πούμε ότι θέλετε να αγοράσετε ένα αυτοκίνητο, μπορεί να αναζητήσετε "το αυτοκίνητο των ονείρων μου", η σημασιολογική αναζήτηση κατανοεί ότι δεν "ονειρεύεστε" ένα αυτοκίνητο, αλλά μάλλον ψάχνετε να αγοράσετε το "ιδανικό" σας αυτοκίνητο. Η σημασιολογική αναζήτηση κατανοεί την πρόθεσή σας και επιστρέφει σχετικά αποτελέσματα. Η εναλλακτική είναι η "αναζήτηση με λέξεις-κλειδιά", η οποία θα αναζητούσε κυριολεκτικά όνειρα για αυτοκίνητα και συχνά επιστρέφει άσχετα αποτελέσματα. + +## Τι είναι τα Text Embeddings; + +[Τα Text embeddings](https://en.wikipedia.org/wiki/Word_embedding?WT.mc_id=academic-105485-koreyst) είναι μια τεχνική αναπαράστασης κειμένου που χρησιμοποιείται στην [επεξεργασία φυσικής γλώσσας](https://en.wikipedia.org/wiki/Natural_language_processing?WT.mc_id=academic-105485-koreyst). Τα Text embeddings είναι σημασιολογικές αριθμητικές αναπαραστάσεις κειμένου. Τα Embeddings χρησιμοποιούνται για να αναπαραστήσουν δεδομένα με τρόπο που είναι εύκολο για μια μηχανή να κατανοήσει. Υπάρχουν πολλά μοντέλα για τη δημιουργία text embeddings, σε αυτό το μάθημα θα επικεντρωθούμε στη δημιουργία embeddings χρησιμοποιώντας το OpenAI Embedding Model. + +Ακολουθεί ένα παράδειγμα, φανταστείτε ότι το παρακάτω κείμενο βρίσκεται σε μια μεταγραφή από ένα επεισόδιο του καναλιού AI Show στο YouTube: + +```text +Today we are going to learn about Azure Machine Learning. +``` + +Θα περάσουμε το κείμενο στο OpenAI Embedding API και θα επιστρέψει το ακόλουθο embedding που αποτελείται από 1536 αριθμούς, γνωστό και ως διάνυσμα. Κάθε αριθμός στο διάνυσμα αντιπροσωπεύει μια διαφορετική πτυχή του κειμένου. Για συντομία, εδώ είναι οι πρώτοι 10 αριθμοί στο διάνυσμα. + +```python +[-0.006655829958617687, 0.0026128944009542465, 0.008792596869170666, -0.02446001023054123, -0.008540431968867779, 0.022071078419685364, -0.010703742504119873, 0.003311325330287218, -0.011632772162556648, -0.02187200076878071, ...] +``` + +## Πώς δημιουργείται ο Embedding Index; + +Ο Embedding Index για αυτό το μάθημα δημιουργήθηκε με μια σειρά από Python scripts. Θα βρείτε τα scripts μαζί με οδηγίες στο [README](./scripts/README.md?WT.mc_id=academic-105485-koreyst) στον φάκελο 'scripts' αυτού του μαθήματος. Δεν χρειάζεται να εκτελέσετε αυτά τα scripts για να ολοκληρώσετε αυτό το μάθημα, καθώς ο Embedding Index παρέχεται για εσάς. + +Τα scripts εκτελούν τις ακόλουθες λειτουργίες: + +1. Η μεταγραφή για κάθε βίντεο στο YouTube στη λίστα αναπαραγωγής [AI Show](https://www.youtube.com/playlist?list=PLlrxD0HtieHi0mwteKBOfEeOYf0LJU4O1) κατεβαίνει. +2. Χρησιμοποιώντας [OpenAI Functions](https://learn.microsoft.com/azure/ai-services/openai/how-to/function-calling?WT.mc_id=academic-105485-koreyst), γίνεται προσπάθεια να εξαχθεί το όνομα του ομιλητή από τα πρώτα 3 λεπτά της μεταγραφής του YouTube. Το όνομα του ομιλητή για κάθε βίντεο αποθηκεύεται στον Embedding Index με όνομα `embedding_index_3m.json`. +3. Το κείμενο της μεταγραφής στη συνέχεια χωρίζεται σε **τμήματα κειμένου 3 λεπτών**. Το τμήμα περιλαμβάνει περίπου 20 λέξεις που επικαλύπτονται από το επόμενο τμήμα για να διασφαλιστεί ότι το Embedding για το τμήμα δεν κόβεται και για να παρέχει καλύτερο πλαίσιο αναζήτησης. +4. Κάθε τμήμα κειμένου στη συνέχεια περνάει στο OpenAI Chat API για να συνοψίσει το κείμενο σε 60 λέξεις. Η σύνοψη αποθηκεύεται επίσης στον Embedding Index `embedding_index_3m.json`. +5. Τέλος, το κείμενο του τμήματος περνάει στο OpenAI Embedding API. Το Embedding API επιστρέφει ένα διάνυσμα 1536 αριθμών που αντιπροσωπεύει τη σημασιολογική σημασία του τμήματος. Το τμήμα μαζί με το OpenAI Embedding διάνυσμα αποθηκεύεται στον Embedding Index `embedding_index_3m.json`. + +### Βάσεις δεδομένων διανυσμάτων + +Για απλότητα μαθήματος, ο Embedding Index αποθηκεύεται σε ένα αρχείο JSON με όνομα `embedding_index_3m.json` και φορτώνεται σε ένα Pandas DataFrame. Ωστόσο, σε παραγωγή, ο Embedding Index θα αποθηκευόταν σε μια βάση δεδομένων διανυσμάτων όπως [Azure Cognitive Search](https://learn.microsoft.com/training/modules/improve-search-results-vector-search?WT.mc_id=academic-105485-koreyst), [Redis](https://cookbook.openai.com/examples/vector_databases/redis/readme?WT.mc_id=academic-105485-koreyst), [Pinecone](https://cookbook.openai.com/examples/vector_databases/pinecone/readme?WT.mc_id=academic-105485-koreyst), [Weaviate](https://cookbook.openai.com/examples/vector_databases/weaviate/readme?WT.mc_id=academic-105485-koreyst), για να αναφέρουμε μερικά. + +## Κατανόηση της ομοιότητας συνημιτόνου + +Έχουμε μάθει για τα text embeddings, το επόμενο βήμα είναι να μάθουμε πώς να χρησιμοποιούμε τα text embeddings για αναζήτηση δεδομένων και συγκεκριμένα να βρούμε τα πιο παρόμοια embeddings με μια δεδομένη ερώτηση χρησιμοποιώντας την ομοιότητα συνημιτόνου. + +### Τι είναι η ομοιότητα συνημιτόνου; + +Η ομοιότητα συνημιτόνου είναι ένα μέτρο ομοιότητας μεταξύ δύο διανυσμάτων, θα το ακούσετε επίσης ως `αναζήτηση πλησιέστερου γείτονα`. Για να εκτελέσετε μια αναζήτηση ομοιότητας συνημιτόνου, πρέπει να _διανυσματοποιήσετε_ το _κείμενο ερώτησης_ χρησιμοποιώντας το OpenAI Embedding API. Στη συνέχεια, υπολογίστε την _ομοιότητα συνημιτόνου_ μεταξύ του διανύσματος ερώτησης και κάθε διανύσματος στον Embedding Index. Θυμηθείτε, ο Embedding Index έχει ένα διάνυσμα για κάθε τμήμα κειμένου μεταγραφής του YouTube. Τέλος, ταξινομήστε τα αποτελέσματα κατά ομοιότητα συνημιτόνου και τα τμήματα κειμένου με την υψηλότερη ομοιότητα συνημιτόνου είναι τα πιο παρόμοια με την ερώτηση. + +Από μαθηματική άποψη, η ομοιότητα συνημιτόνου μετράει το συνημίτονο της γωνίας μεταξύ δύο διανυσμάτων που προβάλλονται σε έναν πολυδιάστατο χώρο. Αυτή η μέτρηση είναι χρήσιμη, γιατί αν δύο έγγραφα είναι μακριά με βάση την Ευκλείδεια απόσταση λόγω μεγέθους, μπορεί να έχουν ακόμα μικρότερη γωνία μεταξύ τους και επομένως υψηλότερη ομοιότητα συνημιτόνου. Για περισσότερες πληροφορίες σχετικά με τις εξισώσεις ομοιότητας συνημιτόνου, δείτε [Cosine similarity](https://en.wikipedia.org/wiki/Cosine_similarity?WT.mc_id=academic-105485-koreyst). + +## Δημιουργία της πρώτης σας εφαρμογής αναζήτησης + +Στη συνέχεια, θα μάθουμε πώς να δημιουργήσουμε μια εφαρμογή αναζήτησης χρησιμοποιώντας Embeddings. Η εφαρμογή αναζήτησης θα επιτρέπει στους μαθητές να αναζητούν ένα βίντεο πληκτρολογώντας μια ερώτηση. Η εφαρμογή αναζήτησης θα επιστρέφει μια λίστα με βίντεο που είναι σχετικά με την ερώτηση. Η εφαρμογή αναζήτησης θα επιστρέφει επίσης έναν σύνδεσμο στο σημείο του βίντεο όπου βρίσκεται η απάντηση στην ερώτηση. + +Αυτή η λύση δημιουργήθηκε και δοκιμάστηκε σε Windows 11, macOS και Ubuntu 22.04 χρησιμοποιώντας Python 3.10 ή νεότερη έκδοση. Μπορείτε να κατεβάσετε την Python από [python.org](https://www.python.org/downloads/?WT.mc_id=academic-105485-koreyst). + +## Εργασία - δημιουργία εφαρμογής αναζήτησης, για να βοηθήσετε τους μαθητές + +Παρουσιάσαμε τη startup μας στην αρχή αυτού του μαθήματος. Τώρα είναι η ώρα να δώσουμε τη δυνατότητα στους μαθητές να δημιουργήσουν μια εφαρμογή αναζήτησης για τις αξιολογήσεις τους. + +Σε αυτή την εργασία, θα δημιουργήσετε τις υπηρεσίες Azure OpenAI που θα χρησιμοποιηθούν για τη δημιουργία της εφαρμογής αναζήτησης. Θα δημιουργήσετε τις ακόλουθες υπηρεσίες Azure OpenAI. Θα χρειαστείτε μια συνδρομή Azure για να ολοκληρώσετε αυτή την εργασία. + +### Ξεκινήστε το Azure Cloud Shell + +1. Συνδεθείτε στο [Azure portal](https://portal.azure.com/?WT.mc_id=academic-105485-koreyst). +2. Επιλέξτε το εικονίδιο Cloud Shell στην επάνω δεξιά γωνία του Azure portal. +3. Επιλέξτε **Bash** για τον τύπο περιβάλλοντος. + +#### Δημιουργία ομάδας πόρων + +> Για αυτές τις οδηγίες, χρησιμοποιούμε την ομάδα πόρων με όνομα "semantic-video-search" στην Ανατολική ΗΠΑ. +> Μπορείτε να αλλάξετε το όνομα της ομάδας πόρων, αλλά όταν αλλάζετε την τοποθεσία για τους πόρους, +> ελέγξτε τον [πίνακα διαθεσιμότητας μοντέλων](https://aka.ms/oai/models?WT.mc_id=academic-105485-koreyst). + +```shell +az group create --name semantic-video-search --location eastus +``` + +#### Δημιουργία πόρου υπηρεσίας Azure OpenAI + +Από το Azure Cloud Shell, εκτελέστε την ακόλουθη εντολή για να δημιουργήσετε έναν πόρο υπηρεσίας Azure OpenAI. + +```shell +az cognitiveservices account create --name semantic-video-openai --resource-group semantic-video-search \ + --location eastus --kind OpenAI --sku s0 +``` + +#### Λήψη του endpoint και των κλειδιών για χρήση σε αυτή την εφαρμογή + +Από το Azure Cloud Shell, εκτελέστε τις ακόλουθες εντολές για να λάβετε το endpoint και τα κλειδιά για τον πόρο υπηρεσίας Azure OpenAI. + +```shell +az cognitiveservices account show --name semantic-video-openai \ + --resource-group semantic-video-search | jq -r .properties.endpoint +az cognitiveservices account keys list --name semantic-video-openai \ + --resource-group semantic-video-search | jq -r .key1 +``` + +#### Ανάπτυξη του μοντέλου OpenAI Embedding + +Από το Azure Cloud Shell, εκτελέστε την ακόλουθη εντολή για να αναπτύξετε το μοντέλο OpenAI Embedding. + +```shell +az cognitiveservices account deployment create \ + --name semantic-video-openai \ + --resource-group semantic-video-search \ + --deployment-name text-embedding-ada-002 \ + --model-name text-embedding-ada-002 \ + --model-version "2" \ + --model-format OpenAI \ + --sku-capacity 100 --sku-name "Standard" +``` + +## Λύση + +Ανοίξτε το [notebook λύσης](./python/aoai-solution.ipynb?WT.mc_id=academic-105485-koreyst) στο GitHub Codespaces και ακολουθήστε τις οδηγίες στο Jupyter Notebook. + +Όταν εκτελέσετε το notebook, θα σας ζητηθεί να εισάγετε μια ερώτηση. Το πλαίσιο εισόδου θα μοιάζει με αυτό: + +![Πλαίσιο εισόδου για τον χρήστη να εισάγει μια ερώτηση](../../../translated_images/notebook-search.1e320b9c7fcbb0bc1436d98ea6ee73b4b54ca47990a1c952b340a2cadf8ac1ca.el.png) + +## Εξαιρετική δουλειά! Συνεχίστε τη μάθηση σας + +Μετά την ολοκλήρωση αυτού του μαθήματος, δείτε τη [συλλογή μάθησης για τη Γενετική Τεχνητή Νοημοσύνη](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) για να συνεχίσετε να αναβαθμίζετε τις γνώσεις σας στη Γενετική Τεχνητή Νοημοσύνη! + +Προχωρήστε στο Μάθημα 9 όπου θα εξετάσουμε πώς να [δημιουργήσουμε εφαρμογές δημιουργίας εικόνων](../09-building-image-applications/README.md?WT.mc_id=academic-105485-koreyst)! + +--- + +**Αποποίηση ευθύνης**: +Αυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία μετάφρασης AI [Co-op Translator](https://github.com/Azure/co-op-translator). Παρόλο που καταβάλλουμε προσπάθειες για ακρίβεια, παρακαλούμε να έχετε υπόψη ότι οι αυτοματοποιημένες μεταφράσεις ενδέχεται να περιέχουν λάθη ή ανακρίβειες. Το πρωτότυπο έγγραφο στη μητρική του γλώσσα θα πρέπει να θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε ευθύνη για τυχόν παρεξηγήσεις ή εσφαλμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης. \ No newline at end of file diff --git a/translations/el/09-building-image-applications/README.md b/translations/el/09-building-image-applications/README.md index cadaa67d9e..8788b89e41 100644 --- a/translations/el/09-building-image-applications/README.md +++ b/translations/el/09-building-image-applications/README.md @@ -1,24 +1,24 @@ # Δημιουργία Εφαρμογών Γεννήτριας Εικόνων -[![Δημιουργία Εφαρμογών Γεννήτριας Εικόνων](../../../translated_images/09-lesson-banner.906e408c741f44112ff5da17492a30d3872abb52b8530d6506c2631e86e704d0.el.png)](https://aka.ms/gen-ai-lesson9-gh?WT.mc_id=academic-105485-koreyst) +[![Δημιουργία Εφαρμογών Γεννήτριας Εικόνων](../../../translated_images/09-lesson-banner.906e408c741f44112ff5da17492a30d3872abb52b8530d6506c2631e86e704d0.el.png)](https://youtu.be/B5VP0_J7cs8?si=5P3L5o7F_uS_QcG9) -Τα LLMs δεν περιορίζονται μόνο στη δημιουργία κειμένου. Είναι επίσης δυνατό να δημιουργηθούν εικόνες από περιγραφές κειμένου. Η χρήση εικόνων ως μέσο μπορεί να είναι εξαιρετικά χρήσιμη σε πολλούς τομείς, όπως η ιατρική τεχνολογία, η αρχιτεκτονική, ο τουρισμός, η ανάπτυξη παιχνιδιών και άλλα. Σε αυτό το κεφάλαιο, θα εξετάσουμε τα δύο πιο δημοφιλή μοντέλα δημιουργίας εικόνων, το DALL-E και το Midjourney. +Τα LLMs δεν περιορίζονται μόνο στη δημιουργία κειμένου. Είναι επίσης δυνατό να δημιουργηθούν εικόνες από περιγραφές κειμένου. Η ύπαρξη εικόνων ως μέσο μπορεί να είναι εξαιρετικά χρήσιμη σε πολλούς τομείς, όπως η ιατρική τεχνολογία, η αρχιτεκτονική, ο τουρισμός, η ανάπτυξη παιχνιδιών και άλλα. Σε αυτό το κεφάλαιο, θα εξετάσουμε τα δύο πιο δημοφιλή μοντέλα δημιουργίας εικόνων, το DALL-E και το Midjourney. ## Εισαγωγή Σε αυτό το μάθημα, θα καλύψουμε: - Τη δημιουργία εικόνων και γιατί είναι χρήσιμη. -- Τα DALL-E και Midjourney, τι είναι και πώς λειτουργούν. +- Το DALL-E και το Midjourney, τι είναι και πώς λειτουργούν. - Πώς μπορείτε να δημιουργήσετε μια εφαρμογή γεννήτριας εικόνων. ## Στόχοι Μάθησης @@ -27,35 +27,35 @@ CO_OP_TRANSLATOR_METADATA: - Να δημιουργήσετε μια εφαρμογή γεννήτριας εικόνων. - Να ορίσετε όρια για την εφαρμογή σας με μετα-προτροπές. -- Να εργαστείτε με τα DALL-E και Midjourney. +- Να εργαστείτε με το DALL-E και το Midjourney. ## Γιατί να δημιουργήσετε μια εφαρμογή γεννήτριας εικόνων; -Οι εφαρμογές γεννήτριας εικόνων είναι ένας εξαιρετικός τρόπος για να εξερευνήσετε τις δυνατότητες της Γεννητικής Τεχνητής Νοημοσύνης. Μπορούν να χρησιμοποιηθούν, για παράδειγμα: +Οι εφαρμογές γεννήτριας εικόνων είναι ένας εξαιρετικός τρόπος για να εξερευνήσετε τις δυνατότητες της Γενετικής Τεχνητής Νοημοσύνης. Μπορούν να χρησιμοποιηθούν, για παράδειγμα: - **Επεξεργασία και σύνθεση εικόνων**. Μπορείτε να δημιουργήσετε εικόνες για διάφορες χρήσεις, όπως επεξεργασία και σύνθεση εικόνων. -- **Εφαρμογή σε διάφορους κλάδους**. Μπορούν επίσης να χρησιμοποιηθούν για τη δημιουργία εικόνων για διάφορους κλάδους, όπως η ιατρική τεχνολογία, ο τουρισμός, η ανάπτυξη παιχνιδιών και άλλα. +- **Εφαρμογή σε διάφορες βιομηχανίες**. Μπορούν επίσης να χρησιμοποιηθούν για τη δημιουργία εικόνων για διάφορες βιομηχανίες όπως η ιατρική τεχνολογία, ο τουρισμός, η ανάπτυξη παιχνιδιών και άλλα. ## Σενάριο: Edu4All -Στο πλαίσιο αυτού του μαθήματος, θα συνεχίσουμε να εργαζόμαστε με τη startup μας, Edu4All. Οι μαθητές θα δημιουργήσουν εικόνες για τις εργασίες τους. Το είδος των εικόνων εξαρτάται από τους μαθητές, αλλά θα μπορούσαν να είναι εικονογραφήσεις για το δικό τους παραμύθι, να δημιουργήσουν έναν νέο χαρακτήρα για την ιστορία τους ή να τους βοηθήσουν να οπτικοποιήσουν τις ιδέες και τις έννοιές τους. +Στο πλαίσιο αυτού του μαθήματος, θα συνεχίσουμε να εργαζόμαστε με τη startup μας, Edu4All. Οι μαθητές θα δημιουργήσουν εικόνες για τις εργασίες τους, ακριβώς ποιες εικόνες είναι στη διακριτική τους ευχέρεια, αλλά θα μπορούσαν να είναι εικονογραφήσεις για το δικό τους παραμύθι ή να δημιουργήσουν έναν νέο χαρακτήρα για την ιστορία τους ή να τους βοηθήσουν να οπτικοποιήσουν τις ιδέες και τις έννοιες τους. -Για παράδειγμα, αν οι μαθητές της Edu4All εργάζονται στην τάξη πάνω σε μνημεία, θα μπορούσαν να δημιουργήσουν κάτι σαν: +Ακολουθεί ένα παράδειγμα του τι θα μπορούσαν να δημιουργήσουν οι μαθητές του Edu4All εάν εργάζονται στην τάξη για μνημεία: ![Startup Edu4All, τάξη για μνημεία, Πύργος του Άιφελ](../../../translated_images/startup.94d6b79cc4bb3f5afbf6e2ddfcf309aa5d1e256b5f30cc41d252024eaa9cc5dc.el.png) -χρησιμοποιώντας μια προτροπή όπως: +χρησιμοποιώντας μια προτροπή όπως > "Σκύλος δίπλα στον Πύργο του Άιφελ στο πρωινό φως του ήλιου" -## Τι είναι τα DALL-E και Midjourney; +## Τι είναι το DALL-E και το Midjourney; [DALL-E](https://openai.com/dall-e-2?WT.mc_id=academic-105485-koreyst) και [Midjourney](https://www.midjourney.com/?WT.mc_id=academic-105485-koreyst) είναι δύο από τα πιο δημοφιλή μοντέλα δημιουργίας εικόνων, που σας επιτρέπουν να χρησιμοποιείτε προτροπές για τη δημιουργία εικόνων. ### DALL-E -Ας ξεκινήσουμε με το DALL-E, το οποίο είναι ένα μοντέλο Γεννητικής Τεχνητής Νοημοσύνης που δημιουργεί εικόνες από περιγραφές κειμένου. +Ας ξεκινήσουμε με το DALL-E, το οποίο είναι ένα μοντέλο Γενετικής Τεχνητής Νοημοσύνης που δημιουργεί εικόνες από περιγραφές κειμένου. > [Το DALL-E είναι ένας συνδυασμός δύο μοντέλων, CLIP και diffused attention](https://towardsdatascience.com/openais-dall-e-and-clip-101-a-brief-introduction-3a4367280d4e?WT.mc_id=academic-105485-koreyst). @@ -70,31 +70,31 @@ CO_OP_TRANSLATOR_METADATA: ![Εικόνα που δημιουργήθηκε από το Midjourney, μηχανικό περιστέρι](https://upload.wikimedia.org/wikipedia/commons/thumb/8/8c/Rupert_Breheny_mechanical_dove_eca144e7-476d-4976-821d-a49c408e4f36.png/440px-Rupert_Breheny_mechanical_dove_eca144e7-476d-4976-821d-a49c408e4f36.png?WT.mc_id=academic-105485-koreyst) _Πηγή εικόνας Wikipedia, εικόνα που δημιουργήθηκε από το Midjourney_ -## Πώς λειτουργούν τα DALL-E και Midjourney +## Πώς λειτουργούν το DALL-E και το Midjourney -Πρώτα, [DALL-E](https://arxiv.org/pdf/2102.12092.pdf?WT.mc_id=academic-105485-koreyst). Το DALL-E είναι ένα μοντέλο Γεννητικής Τεχνητής Νοημοσύνης βασισμένο στην αρχιτεκτονική transformer με έναν _autoregressive transformer_. +Πρώτα, [DALL-E](https://arxiv.org/pdf/2102.12092.pdf?WT.mc_id=academic-105485-koreyst). Το DALL-E είναι ένα μοντέλο Γενετικής Τεχνητής Νοημοσύνης βασισμένο στην αρχιτεκτονική transformer με έναν _autoregressive transformer_. Ένας _autoregressive transformer_ καθορίζει πώς ένα μοντέλο δημιουργεί εικόνες από περιγραφές κειμένου, δημιουργεί ένα pixel τη φορά και στη συνέχεια χρησιμοποιεί τα παραγόμενα pixels για να δημιουργήσει το επόμενο pixel. Περνώντας μέσα από πολλαπλά επίπεδα σε ένα νευρωνικό δίκτυο, μέχρι να ολοκληρωθεί η εικόνα. -Με αυτή τη διαδικασία, το DALL-E ελέγχει χαρακτηριστικά, αντικείμενα, ιδιότητες και άλλα στην εικόνα που δημιουργεί. Ωστόσο, το DALL-E 2 και 3 έχουν μεγαλύτερο έλεγχο πάνω στην παραγόμενη εικόνα. +Με αυτή τη διαδικασία, το DALL-E ελέγχει χαρακτηριστικά, αντικείμενα, χαρακτηριστικά και άλλα στην εικόνα που δημιουργεί. Ωστόσο, το DALL-E 2 και 3 έχουν μεγαλύτερο έλεγχο στην παραγόμενη εικόνα. ## Δημιουργία της πρώτης σας εφαρμογής γεννήτριας εικόνων -Τι χρειάζεται λοιπόν για να δημιουργήσετε μια εφαρμογή γεννήτριας εικόνων; Χρειάζεστε τις εξής βιβλιοθήκες: +Τι χρειάζεται λοιπόν για να δημιουργήσετε μια εφαρμογή γεννήτριας εικόνων; Χρειάζεστε τις ακόλουθες βιβλιοθήκες: -- **python-dotenv**, συνιστάται ιδιαίτερα να χρησιμοποιήσετε αυτήν τη βιβλιοθήκη για να κρατήσετε τα μυστικά σας σε ένα αρχείο _.env_ μακριά από τον κώδικα. +- **python-dotenv**, συνιστάται ιδιαίτερα να χρησιμοποιήσετε αυτήν τη βιβλιοθήκη για να διατηρήσετε τα μυστικά σας σε ένα αρχείο _.env_ μακριά από τον κώδικα. - **openai**, αυτή η βιβλιοθήκη είναι αυτή που θα χρησιμοποιήσετε για να αλληλεπιδράσετε με το OpenAI API. - **pillow**, για να εργαστείτε με εικόνες σε Python. - **requests**, για να σας βοηθήσει να κάνετε αιτήματα HTTP. -## Δημιουργία και ανάπτυξη μοντέλου Azure OpenAI +## Δημιουργία και ανάπτυξη ενός μοντέλου Azure OpenAI -Αν δεν το έχετε κάνει ήδη, ακολουθήστε τις οδηγίες στη σελίδα [Microsoft Learn](https://learn.microsoft.com/azure/ai-foundry/openai/how-to/create-resource?pivots=web-portal) -για να δημιουργήσετε έναν πόρο και μοντέλο Azure OpenAI. Επιλέξτε το DALL-E 3 ως μοντέλο. +Εάν δεν το έχετε κάνει ήδη, ακολουθήστε τις οδηγίες στη σελίδα [Microsoft Learn](https://learn.microsoft.com/azure/ai-foundry/openai/how-to/create-resource?pivots=web-portal) +για να δημιουργήσετε έναν πόρο και ένα μοντέλο Azure OpenAI. Επιλέξτε το DALL-E 3 ως μοντέλο. ## Δημιουργία της εφαρμογής -1. Δημιουργήστε ένα αρχείο _.env_ με το εξής περιεχόμενο: +1. Δημιουργήστε ένα αρχείο _.env_ με το ακόλουθο περιεχόμενο: ```text AZURE_OPENAI_ENDPOINT= @@ -104,7 +104,7 @@ _Πηγή εικόνας Wikipedia, εικόνα που δημιουργήθηκ Εντοπίστε αυτές τις πληροφορίες στο Azure OpenAI Foundry Portal για τον πόρο σας στην ενότητα "Deployments". -1. Συγκεντρώστε τις παραπάνω βιβλιοθήκες σε ένα αρχείο που ονομάζεται _requirements.txt_ όπως παρακάτω: +1. Συλλέξτε τις παραπάνω βιβλιοθήκες σε ένα αρχείο που ονομάζεται _requirements.txt_ όπως παρακάτω: ```text python-dotenv @@ -182,7 +182,7 @@ _Πηγή εικόνας Wikipedia, εικόνα που δημιουργήθηκ Ας εξηγήσουμε αυτόν τον κώδικα: -- Πρώτα, εισάγουμε τις βιβλιοθήκες που χρειαζόμαστε, συμπεριλαμβανομένων των OpenAI, dotenv, requests και Pillow. +- Πρώτα, εισάγουμε τις βιβλιοθήκες που χρειαζόμαστε, συμπεριλαμβανομένων των βιβλιοθηκών OpenAI, dotenv, requests και Pillow. ```python import openai @@ -243,22 +243,22 @@ _Πηγή εικόνας Wikipedia, εικόνα που δημιουργήθηκ ``` - **prompt**, είναι η προτροπή κειμένου που χρησιμοποιείται για τη δημιουργία της εικόνας. Σε αυτήν την περίπτωση, χρησιμοποιούμε την προτροπή "Λαγός πάνω σε άλογο, κρατώντας γλειφιτζούρι, σε ομιχλώδες λιβάδι όπου φυτρώνουν νάρκισσοι". -- **size**, είναι το μέγεθος της εικόνας που δημιουργείται. Σε αυτήν την περίπτωση, δημιουργούμε μια εικόνα 1024x1024 pixels. +- **size**, είναι το μέγεθος της εικόνας που δημιουργείται. Σε αυτήν την περίπτωση, δημιουργούμε μια εικόνα που είναι 1024x1024 pixels. - **n**, είναι ο αριθμός των εικόνων που δημιουργούνται. Σε αυτήν την περίπτωση, δημιουργούμε δύο εικόνες. -- **temperature**, είναι μια παράμετρος που ελέγχει την τυχαιότητα του αποτελέσματος ενός μοντέλου Γεννητικής Τεχνητής Νοημοσύνης. Η θερμοκρασία είναι μια τιμή μεταξύ 0 και 1, όπου το 0 σημαίνει ότι το αποτέλεσμα είναι ντετερμινιστικό και το 1 σημαίνει ότι το αποτέλεσμα είναι τυχαίο. Η προεπιλεγμένη τιμή είναι 0.7. +- **temperature**, είναι μια παράμετρος που ελέγχει την τυχαιότητα του αποτελέσματος ενός μοντέλου Γενετικής Τεχνητής Νοημοσύνης. Η θερμοκρασία είναι μια τιμή μεταξύ 0 και 1 όπου το 0 σημαίνει ότι το αποτέλεσμα είναι ντετερμινιστικό και το 1 σημαίνει ότι το αποτέλεσμα είναι τυχαίο. Η προεπιλεγμένη τιμή είναι 0.7. Υπάρχουν περισσότερα πράγματα που μπορείτε να κάνετε με εικόνες, τα οποία θα καλύψουμε στην επόμενη ενότητα. ## Πρόσθετες δυνατότητες δημιουργίας εικόνων -Έχετε δει μέχρι τώρα πώς μπορέσαμε να δημιουργήσουμε μια εικόνα χρησιμοποιώντας λίγες γραμμές κώδικα σε Python. Ωστόσο, υπάρχουν περισσότερα πράγματα που μπορείτε να κάνετε με εικόνες. +Έχετε δει μέχρι στιγμής πώς μπορέσαμε να δημιουργήσουμε μια εικόνα χρησιμοποιώντας λίγες γραμμές κώδικα σε Python. Ωστόσο, υπάρχουν περισσότερα πράγματα που μπορείτε να κάνετε με εικόνες. Μπορείτε επίσης να κάνετε τα εξής: -- **Επεξεργασία εικόνων**. Παρέχοντας μια υπάρχουσα εικόνα, μια μάσκα και μια προτροπή, μπορείτε να τροποποιήσετε μια εικόνα. Για παράδειγμα, μπορείτε να προσθέσετε κάτι σε ένα μέρος της εικόνας. Φανταστείτε την εικόνα του λαγού μας, μπορείτε να προσθέσετε ένα καπέλο στον λαγό. Πώς θα το κάνετε αυτό είναι παρέχοντας την εικόνα, μια μάσκα (που προσδιορίζει το μέρος της περιοχής για την αλλαγή) και μια προτροπή κειμένου που λέει τι πρέπει να γίνει. -> Σημείωση: αυτό δεν υποστηρίζεται στο DALL-E 3. +- **Επεξεργασία εικόνων**. Παρέχοντας μια υπάρχουσα εικόνα, μια μάσκα και μια προτροπή, μπορείτε να τροποποιήσετε μια εικόνα. Για παράδειγμα, μπορείτε να προσθέσετε κάτι σε ένα μέρος μιας εικόνας. Φανταστείτε την εικόνα του λαγού μας, μπορείτε να προσθέσετε ένα καπέλο στον λαγό. Πώς θα το κάνετε αυτό είναι παρέχοντας την εικόνα, μια μάσκα (που προσδιορίζει το μέρος της περιοχής για την αλλαγή) και μια προτροπή κειμένου για να πείτε τι πρέπει να γίνει. +> Σημείωση: αυτό δεν υποστηρίζεται στο DALL-E 3. -Εδώ είναι ένα παράδειγμα χρησιμοποιώντας το GPT Image: +Ακολουθεί ένα παράδειγμα χρησιμοποιώντας το GPT Image: ```python response = client.images.edit( @@ -270,7 +270,7 @@ _Πηγή εικόνας Wikipedia, εικόνα που δημιουργήθηκ image_url = response.data[0].url ``` - Η βασική εικόνα θα περιείχε μόνο το lounge με την πισίνα, αλλά η τελική εικόνα θα είχε ένα φλαμίνγκο: + Η αρχική εικόνα θα περιείχε μόνο το lounge με την πισίνα, αλλά η τελική εικόνα θα είχε ένα φλαμίνγκο:
@@ -278,6 +278,7 @@ _Πηγή εικόνας Wikipedia, εικόνα που δημιουργήθηκ
+ - **Δημιουργία παραλλαγών**. Η ιδέα είναι ότι παίρνετε μια υπάρχουσα εικόνα και ζητάτε να δημιουργηθούν παραλλαγές. Για να δημιουργήσετε μια παραλλαγή, παρέχετε μια εικόνα και μια προτροπή κειμένου και κώδικα όπως παρακάτω: ```python @@ -293,9 +294,9 @@ _Πηγή εικόνας Wikipedia, εικόνα που δημιουργήθηκ ## Θερμοκρασία -Η θερμοκρασία είναι μια παράμετρος που ελέγχει την τυχαιότητα του αποτελέσματος ενός μοντέλου Γεννητικής Τεχνητής Νοημοσύνης. Η θερμοκρασία είναι μια τιμή μεταξύ 0 και 1, όπου το 0 σημαίνει ότι το αποτέλεσμα είναι ντετερμινιστικό και το 1 σημαίνει ότι το αποτέλεσμα είναι τυχαίο. Η προεπιλεγμένη τιμή είναι 0.7. +Η θερμοκρασία είναι μια παράμετρος που ελέγχει την τυχαιότητα του αποτελέσματος ενός μοντέλου Γενετικής Τεχνητής Νοημοσύνης. Η θερμοκρασία είναι μια τιμή μεταξύ 0 και 1 όπου το 0 σημαίνει ότι το αποτέλεσμα είναι ντετερμινιστικό και το 1 σημαίνει ότι το αποτέλεσμα είναι τυχαίο. Η προεπιλεγμένη τιμή είναι 0.7. -Ας δούμε ένα παράδειγμα για το πώς λειτουργεί η θερμοκρασία, εκτελώντας αυτήν την προτροπή δύο φορές: +Ας δούμε ένα παράδειγμα του πώς λειτουργεί η θερμοκρασία, εκτελώντας αυτήν την προτροπή δύο φορές: > Προτροπή: "Λαγός πάνω σε άλογο, κρατώντας γλειφιτζούρι, σε ομιχλώδες λιβάδι όπου φυτρώνουν νάρκισσοι" @@ -317,7 +318,7 @@ _Πηγή εικόνας Wikipedia, εικόνα που δημιουργήθηκ ### Αλλαγή της θερμοκρασίας -Ας προσπαθήσουμε να κάνουμε την απάντηση πιο ντετερμινιστική. Μπορούμε να παρατηρήσουμε από τις δύο εικόνες που δημιουργήσαμε ότι στην πρώτη εικόνα υπάρχει ένας λαγός και στη δεύτερη εικόνα υπάρχει ένα άλογο, οπότε οι εικόνες διαφέρουν πολύ. +Ας προσπαθήσουμε να κάνουμε την απάντηση πιο ντετερμινιστική. Μπορούσαμε να παρατηρήσουμε από τις δύο εικόνες που δημιουργήσαμε ότι στην πρώτη εικόνα υπάρχει ένας λαγός και στη δεύτερη εικόνα υπάρχει ένα άλογο, οπότε οι εικόνες διαφέρουν πολύ. Ας αλλάξουμε λοιπόν τον κώδικά μας και να ορίσουμε τη θερμοκρασία στο 0, όπως παρακάτω: @@ -343,13 +344,13 @@ generation_response = client.images.create( Για παράδειγμα, δεν θέλουμε να δημιουργούμε εικόνες που δεν είναι κατάλληλες για εργασία ή που δεν είναι κατάλληλες για παιδιά. -Μπορούμε να το κάνουμε αυτό με _μετα-προτροπές_. Οι μετα-προτροπές είναι προτροπές κειμένου που χρησιμοποιούνται για τον έλεγχο του αποτελέσματος ενός μοντέλου Γεννητικής Τεχνητής Νοημοσύνης. Για παράδειγμα, μπορούμε να χρησιμοποιήσουμε μετα-προτροπές για να ελέγξουμε το αποτέλεσμα και να διασφαλίσουμε ότι οι παραγόμενες εικόνες είναι κατάλληλες για εργασία ή κατάλληλες για παιδιά. +Μπορούμε να το κάνουμε αυτό με _μετα-προτροπές_. Οι μετα-προτροπές είναι προτροπές κειμένου που χρησιμοποιούνται για τον έλεγχο του αποτελέσματος ενός μοντέλου Γενετικής Τεχνητής Νοημοσύνης. Για παράδειγμα, μπορούμε να χρησιμοποιήσουμε μετα-προτροπές για να ελέγξουμε το αποτέλεσμα και να διασφαλίσουμε ότι οι παραγόμενες εικόνες είναι κατάλληλες για εργασία ή κατάλληλες για παιδιά. ### Πώς λειτουργεί; Πώς λειτουργούν λοιπόν οι μετα-προτροπές; -Οι μετα-προτροπές είναι προτροπές κειμένου που χρησιμοποιούνται για τον έλεγχο του αποτελέσματος ενός μοντέλου Γεννητικής Τεχνητής Νοημοσύνης. Τοποθετούνται πριν από την προτροπή κειμένου και χρησιμοποιούνται για τον έλεγχο του αποτελέσματος του μοντέλου και ενσωματώνονται στις εφαρμογές για τον έλεγχο του αποτελέσματος του μοντέλου. Ενσωματώνοντας την είσο +Οι μετα-προτροπές είναι προτροπές κειμένου που χρησιμοποιούνται για τον έλεγχο του αποτελέσματος ενός μοντέλου Γενετικής Τεχνητής Νοημοσύνης, τοποθετούνται πριν από την προτροπή κειμένου και χρησιμοποιούνται για τον έλεγχο του αποτελέσματος του μοντέλου και ενσωματώνονται ```python import openai import os @@ -424,9 +425,9 @@ except openai.BadRequestError as err: Αφού ολοκληρώσετε αυτό το μάθημα, δείτε τη [συλλογή μάθησης για Γενετική Τεχνητή Νοημοσύνη](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) για να συνεχίσετε να αναβαθμίζετε τις γνώσεις σας στη Γενετική Τεχνητή Νοημοσύνη! -Προχωρήστε στο Μάθημα 10, όπου θα εξετάσουμε πώς να [δημιουργήσετε εφαρμογές Τεχνητής Νοημοσύνης με low-code](../10-building-low-code-ai-applications/README.md?WT.mc_id=academic-105485-koreyst) +Προχωρήστε στο Μάθημα 10, όπου θα εξετάσουμε πώς να [δημιουργήσετε εφαρμογές AI με low-code](../10-building-low-code-ai-applications/README.md?WT.mc_id=academic-105485-koreyst) --- **Αποποίηση ευθύνης**: -Αυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία αυτόματης μετάφρασης [Co-op Translator](https://github.com/Azure/co-op-translator). Παρόλο που καταβάλλουμε προσπάθειες για ακρίβεια, παρακαλούμε να έχετε υπόψη ότι οι αυτόματες μεταφράσεις ενδέχεται να περιέχουν λάθη ή ανακρίβειες. Το πρωτότυπο έγγραφο στη μητρική του γλώσσα θα πρέπει να θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε ευθύνη για τυχόν παρεξηγήσεις ή εσφαλμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης. \ No newline at end of file +Αυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία μετάφρασης AI [Co-op Translator](https://github.com/Azure/co-op-translator). Παρόλο που καταβάλλουμε προσπάθειες για ακρίβεια, παρακαλούμε να έχετε υπόψη ότι οι αυτοματοποιημένες μεταφράσεις ενδέχεται να περιέχουν λάθη ή ανακρίβειες. Το πρωτότυπο έγγραφο στη μητρική του γλώσσα θα πρέπει να θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε ευθύνη για τυχόν παρεξηγήσεις ή εσφαλμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης. \ No newline at end of file diff --git a/translations/el/10-building-low-code-ai-applications/README.md b/translations/el/10-building-low-code-ai-applications/README.md index 0a83b2d4d3..2fd7af567b 100644 --- a/translations/el/10-building-low-code-ai-applications/README.md +++ b/translations/el/10-building-low-code-ai-applications/README.md @@ -1,237 +1,241 @@ - -# Δημιουργία Εφαρμογών Τεχνητής Νοημοσύνης με Χαμηλό Κώδικα - -[![Building Low Code AI Applications](../../../translated_images/10-lesson-banner.a01ac8fe3fd86310c2e4065c0b3c584879f33b8ce797311821a636992f8a5b2f.el.png)](https://aka.ms/gen-ai-lesson10-gh?WT.mc_id=academic-105485-koreyst) - -> _(Κάντε κλικ στην εικόνα παραπάνω για να δείτε το βίντεο αυτής της ενότητας)_ - -## Εισαγωγή - -Τώρα που μάθαμε πώς να δημιουργούμε εφαρμογές που παράγουν εικόνες, ας μιλήσουμε για το low code. Η Γενετική Τεχνητή Νοημοσύνη μπορεί να χρησιμοποιηθεί σε διάφορους τομείς, συμπεριλαμβανομένου του low code, αλλά τι είναι το low code και πώς μπορούμε να προσθέσουμε AI σε αυτό; - -Η δημιουργία εφαρμογών και λύσεων έχει γίνει πιο εύκολη για παραδοσιακούς προγραμματιστές αλλά και μη προγραμματιστές μέσω των Πλατφορμών Ανάπτυξης Χαμηλού Κώδικα. Οι Πλατφόρμες Χαμηλού Κώδικα επιτρέπουν τη δημιουργία εφαρμογών και λύσεων με ελάχιστο ή καθόλου κώδικα. Αυτό επιτυγχάνεται παρέχοντας ένα οπτικό περιβάλλον ανάπτυξης που σας επιτρέπει να σύρετε και να αφήνετε στοιχεία για να δημιουργήσετε εφαρμογές και λύσεις. Έτσι, μπορείτε να δημιουργείτε εφαρμογές και λύσεις πιο γρήγορα και με λιγότερους πόρους. Σε αυτή την ενότητα, εμβαθύνουμε στο πώς να χρησιμοποιήσουμε το Low Code και πώς να ενισχύσουμε την ανάπτυξη χαμηλού κώδικα με AI χρησιμοποιώντας το Power Platform. - -Το Power Platform δίνει στις οργανώσεις την ευκαιρία να ενδυναμώσουν τις ομάδες τους να δημιουργήσουν τις δικές τους λύσεις μέσα από ένα διαισθητικό περιβάλλον χαμηλού ή καθόλου κώδικα. Αυτό το περιβάλλον απλοποιεί τη διαδικασία δημιουργίας λύσεων. Με το Power Platform, οι λύσεις μπορούν να δημιουργηθούν σε μέρες ή εβδομάδες αντί για μήνες ή χρόνια. Το Power Platform αποτελείται από πέντε βασικά προϊόντα: Power Apps, Power Automate, Power BI, Power Pages και Copilot Studio. - -Αυτή η ενότητα καλύπτει: - -- Εισαγωγή στη Γενετική Τεχνητή Νοημοσύνη στο Power Platform -- Εισαγωγή στο Copilot και πώς να το χρησιμοποιήσετε -- Χρήση της Γενετικής Τεχνητής Νοημοσύνης για τη δημιουργία εφαρμογών και ροών εργασίας στο Power Platform -- Κατανόηση των Μοντέλων AI στο Power Platform με το AI Builder - -## Στόχοι Μάθησης - -Στο τέλος αυτής της ενότητας, θα μπορείτε να: - -- Κατανοήσετε πώς λειτουργεί το Copilot στο Power Platform. - -- Δημιουργήσετε μια εφαρμογή Παρακολούθησης Εργασιών Φοιτητών για το εκπαιδευτικό μας startup. - -- Δημιουργήσετε μια ροή επεξεργασίας τιμολογίων που χρησιμοποιεί AI για την εξαγωγή πληροφοριών από τιμολόγια. - -- Εφαρμόσετε βέλτιστες πρακτικές κατά τη χρήση του μοντέλου Create Text με GPT AI. - -Τα εργαλεία και οι τεχνολογίες που θα χρησιμοποιήσετε σε αυτή την ενότητα είναι: - -- **Power Apps**, για την εφαρμογή Παρακολούθησης Εργασιών Φοιτητών, που παρέχει ένα περιβάλλον ανάπτυξης χαμηλού κώδικα για τη δημιουργία εφαρμογών που παρακολουθούν, διαχειρίζονται και αλληλεπιδρούν με δεδομένα. - -- **Dataverse**, για την αποθήκευση των δεδομένων της εφαρμογής Παρακολούθησης Εργασιών Φοιτητών, όπου το Dataverse παρέχει μια πλατφόρμα δεδομένων χαμηλού κώδικα για την αποθήκευση των δεδομένων της εφαρμογής. - -- **Power Automate**, για τη ροή επεξεργασίας τιμολογίων, όπου θα έχετε περιβάλλον ανάπτυξης χαμηλού κώδικα για τη δημιουργία ροών εργασίας που αυτοματοποιούν τη διαδικασία επεξεργασίας τιμολογίων. - -- **AI Builder**, για το μοντέλο AI επεξεργασίας τιμολογίων, όπου θα χρησιμοποιήσετε προ-κατασκευασμένα μοντέλα AI για την επεξεργασία των τιμολογίων του startup μας. - -## Γενετική Τεχνητή Νοημοσύνη στο Power Platform - -Η ενίσχυση της ανάπτυξης και εφαρμογής χαμηλού κώδικα με γενετική AI αποτελεί βασικό τομέα εστίασης για το Power Platform. Ο στόχος είναι να δώσουμε τη δυνατότητα σε όλους να δημιουργούν εφαρμογές, ιστότοπους, πίνακες εργαλείων και να αυτοματοποιούν διαδικασίες με AI, _χωρίς να απαιτείται εξειδίκευση στην επιστήμη δεδομένων_. Αυτό επιτυγχάνεται με την ενσωμάτωση της γενετικής AI στην εμπειρία ανάπτυξης χαμηλού κώδικα στο Power Platform, μέσω του Copilot και του AI Builder. - -### Πώς λειτουργεί αυτό; - -Το Copilot είναι ένας βοηθός AI που σας επιτρέπει να δημιουργείτε λύσεις στο Power Platform περιγράφοντας τις απαιτήσεις σας μέσα από μια σειρά συνομιλητικών βημάτων χρησιμοποιώντας φυσική γλώσσα. Για παράδειγμα, μπορείτε να ζητήσετε από τον βοηθό AI να ορίσει ποια πεδία θα χρησιμοποιεί η εφαρμογή σας και αυτός θα δημιουργήσει τόσο την εφαρμογή όσο και το υποκείμενο μοντέλο δεδομένων ή να ορίσετε πώς να ρυθμίσετε μια ροή στο Power Automate. - -Μπορείτε να χρησιμοποιήσετε λειτουργίες που βασίζονται στο Copilot ως χαρακτηριστικό στις οθόνες της εφαρμογής σας, ώστε οι χρήστες να ανακαλύπτουν πληροφορίες μέσω συνομιλητικών αλληλεπιδράσεων. - -Το AI Builder είναι μια δυνατότητα AI χαμηλού κώδικα διαθέσιμη στο Power Platform που σας επιτρέπει να χρησιμοποιείτε μοντέλα AI για να αυτοματοποιείτε διαδικασίες και να προβλέπετε αποτελέσματα. Με το AI Builder μπορείτε να φέρετε την AI στις εφαρμογές και τις ροές σας που συνδέονται με τα δεδομένα σας στο Dataverse ή σε διάφορες πηγές δεδομένων στο cloud, όπως SharePoint, OneDrive ή Azure. - -Το Copilot είναι διαθέσιμο σε όλα τα προϊόντα του Power Platform: Power Apps, Power Automate, Power BI, Power Pages και Power Virtual Agents. Το AI Builder είναι διαθέσιμο στο Power Apps και το Power Automate. Σε αυτή την ενότητα, θα εστιάσουμε στο πώς να χρησιμοποιήσουμε το Copilot και το AI Builder στο Power Apps και το Power Automate για να δημιουργήσουμε μια λύση για το εκπαιδευτικό μας startup. - -### Copilot στο Power Apps - -Ως μέρος του Power Platform, το Power Apps παρέχει ένα περιβάλλον ανάπτυξης χαμηλού κώδικα για τη δημιουργία εφαρμογών που παρακολουθούν, διαχειρίζονται και αλληλεπιδρούν με δεδομένα. Είναι μια σουίτα υπηρεσιών ανάπτυξης εφαρμογών με μια κλιμακούμενη πλατφόρμα δεδομένων και τη δυνατότητα σύνδεσης με υπηρεσίες cloud και τοπικά δεδομένα. Το Power Apps σας επιτρέπει να δημιουργείτε εφαρμογές που τρέχουν σε προγράμματα περιήγησης, tablets και τηλέφωνα, και μπορούν να κοινοποιηθούν σε συναδέλφους. Το Power Apps διευκολύνει τους χρήστες στην ανάπτυξη εφαρμογών με μια απλή διεπαφή, ώστε κάθε επαγγελματίας χρήστης ή προγραμματιστής να μπορεί να δημιουργήσει προσαρμοσμένες εφαρμογές. Η εμπειρία ανάπτυξης εφαρμογών ενισχύεται επίσης με τη Γενετική AI μέσω του Copilot. - -Η λειτουργία βοηθού AI Copilot στο Power Apps σας επιτρέπει να περιγράψετε τι είδους εφαρμογή χρειάζεστε και ποια πληροφορία θέλετε να παρακολουθεί, συλλέγει ή εμφανίζει η εφαρμογή σας. Το Copilot στη συνέχεια δημιουργεί μια ανταποκρινόμενη εφαρμογή Canvas βασισμένη στην περιγραφή σας. Μπορείτε μετά να προσαρμόσετε την εφαρμογή ώστε να καλύπτει τις ανάγκες σας. Ο βοηθός AI Copilot δημιουργεί και προτείνει επίσης έναν Πίνακα Dataverse με τα πεδία που χρειάζεστε για να αποθηκεύσετε τα δεδομένα που θέλετε να παρακολουθείτε, μαζί με κάποια δείγματα δεδομένων. Θα δούμε τι είναι το Dataverse και πώς μπορείτε να το χρησιμοποιήσετε στο Power Apps αργότερα σε αυτή την ενότητα. Μπορείτε να προσαρμόσετε τον πίνακα ώστε να καλύπτει τις ανάγκες σας χρησιμοποιώντας τη λειτουργία βοηθού AI Copilot μέσα από συνομιλητικά βήματα. Αυτή η λειτουργία είναι άμεσα διαθέσιμη από την αρχική οθόνη του Power Apps. - -### Copilot στο Power Automate - -Ως μέρος του Power Platform, το Power Automate επιτρέπει στους χρήστες να δημιουργούν αυτοματοποιημένες ροές εργασίας μεταξύ εφαρμογών και υπηρεσιών. Βοηθά στην αυτοματοποίηση επαναλαμβανόμενων επιχειρηματικών διαδικασιών όπως επικοινωνία, συλλογή δεδομένων και έγκριση αποφάσεων. Η απλή διεπαφή του επιτρέπει σε χρήστες με κάθε επίπεδο τεχνικής γνώσης (από αρχάριους έως έμπειρους προγραμματιστές) να αυτοματοποιούν εργασίες. Η εμπειρία ανάπτυξης ροών εργασίας ενισχύεται επίσης με τη Γενετική AI μέσω του Copilot. - -Η λειτουργία βοηθού AI Copilot στο Power Automate σας επιτρέπει να περιγράψετε τι είδους ροή χρειάζεστε και ποιες ενέργειες θέλετε να εκτελεί η ροή σας. Το Copilot στη συνέχεια δημιουργεί μια ροή βασισμένη στην περιγραφή σας. Μπορείτε μετά να προσαρμόσετε τη ροή ώστε να καλύπτει τις ανάγκες σας. Ο βοηθός AI Copilot δημιουργεί και προτείνει επίσης τις ενέργειες που χρειάζεστε για να εκτελέσετε την εργασία που θέλετε να αυτοματοποιήσετε. Θα δούμε τι είναι οι ροές και πώς μπορείτε να τις χρησιμοποιήσετε στο Power Automate αργότερα σε αυτή την ενότητα. Μπορείτε να προσαρμόσετε τις ενέργειες ώστε να καλύπτουν τις ανάγκες σας χρησιμοποιώντας τη λειτουργία βοηθού AI Copilot μέσα από συνομιλητικά βήματα. Αυτή η λειτουργία είναι άμεσα διαθέσιμη από την αρχική οθόνη του Power Automate. - -## Άσκηση: Διαχείριση εργασιών φοιτητών και τιμολογίων για το startup μας, χρησιμοποιώντας το Copilot - -Το startup μας παρέχει διαδικτυακά μαθήματα σε φοιτητές. Το startup έχει αναπτυχθεί γρήγορα και πλέον δυσκολεύεται να ανταποκριθεί στη ζήτηση για τα μαθήματά του. Το startup σας έχει προσλάβει ως προγραμματιστή Power Platform για να τους βοηθήσετε να δημιουργήσουν μια λύση χαμηλού κώδικα που θα τους βοηθήσει να διαχειρίζονται τις εργασίες των φοιτητών και τα τιμολόγια. Η λύση τους θα πρέπει να μπορεί να παρακολουθεί και να διαχειρίζεται τις εργασίες των φοιτητών μέσω μιας εφαρμογής και να αυτοματοποιεί τη διαδικασία επεξεργασίας τιμολογίων μέσω μιας ροής εργασίας. Σας ζητήθηκε να χρησιμοποιήσετε Γενετική AI για να αναπτύξετε τη λύση. - -Όταν ξεκινάτε να χρησιμοποιείτε το Copilot, μπορείτε να χρησιμοποιήσετε τη [Βιβλιοθήκη Προτροπών Copilot του Power Platform](https://github.com/pnp/powerplatform-prompts?WT.mc_id=academic-109639-somelezediko) για να ξεκινήσετε με τις προτροπές. Αυτή η βιβλιοθήκη περιέχει μια λίστα προτροπών που μπορείτε να χρησιμοποιήσετε για να δημιουργήσετε εφαρμογές και ροές με το Copilot. Μπορείτε επίσης να χρησιμοποιήσετε τις προτροπές της βιβλιοθήκης για να πάρετε μια ιδέα για το πώς να περιγράψετε τις απαιτήσεις σας στο Copilot. - -### Δημιουργία εφαρμογής Παρακολούθησης Εργασιών Φοιτητών για το Startup μας - -Οι εκπαιδευτικοί στο startup μας δυσκολεύονται να παρακολουθούν τις εργασίες των φοιτητών. Χρησιμοποιούσαν ένα υπολογιστικό φύλλο για να παρακολουθούν τις εργασίες, αλλά αυτό έχει γίνει δύσκολο στη διαχείριση καθώς αυξήθηκε ο αριθμός των φοιτητών. Σας ζήτησαν να δημιουργήσετε μια εφαρμογή που θα τους βοηθά να παρακολουθούν και να διαχειρίζονται τις εργασίες των φοιτητών. Η εφαρμογή θα πρέπει να τους επιτρέπει να προσθέτουν νέες εργασίες, να βλέπουν εργασίες, να ενημερώνουν εργασίες και να διαγράφουν εργασίες. Η εφαρμογή θα πρέπει επίσης να επιτρέπει σε εκπαιδευτικούς και φοιτητές να βλέπουν ποιες εργασίες έχουν βαθμολογηθεί και ποιες όχι. - -Θα δημιουργήσετε την εφαρμογή χρησιμοποιώντας το Copilot στο Power Apps ακολουθώντας τα παρακάτω βήματα: - -1. Μεταβείτε στην [αρχική οθόνη του Power Apps](https://make.powerapps.com?WT.mc_id=academic-105485-koreyst). - -1. Χρησιμοποιήστε την περιοχή κειμένου στην αρχική οθόνη για να περιγράψετε την εφαρμογή που θέλετε να δημιουργήσετε. Για παράδειγμα, **_Θέλω να δημιουργήσω μια εφαρμογή για να παρακολουθώ και να διαχειρίζομαι τις εργασίες των φοιτητών_**. Κάντε κλικ στο κουμπί **Αποστολή** για να στείλετε την προτροπή στο AI Copilot. - -![Περιγράψτε την εφαρμογή που θέλετε να δημιουργήσετε](../../../translated_images/copilot-chat-prompt-powerapps.84250f341d060830a296b68512e6b3b3aa3a4559f4f1c2d7bafeba8ad3fcd17a.el.png) - -1. Το AI Copilot θα προτείνει έναν Πίνακα Dataverse με τα πεδία που χρειάζεστε για να αποθηκεύσετε τα δεδομένα που θέλετε να παρακολουθείτε, μαζί με κάποια δείγματα δεδομένων. Μπορείτε στη συνέχεια να προσαρμόσετε τον πίνακα ώστε να καλύπτει τις ανάγκες σας χρησιμοποιώντας τη λειτουργία βοηθού AI Copilot μέσα από συνομιλητικά βήματα. - - > **Σημαντικό**: Το Dataverse είναι η υποκείμενη πλατφόρμα δεδομένων για το Power Platform. Είναι μια πλατφόρμα δεδομένων χαμηλού κώδικα για την αποθήκευση των δεδομένων της εφαρμογής. Πρόκειται για μια πλήρως διαχειριζόμενη υπηρεσία που αποθηκεύει με ασφάλεια τα δεδομένα στο Microsoft Cloud και παρέχεται μέσα στο περιβάλλον του Power Platform σας. Διαθέτει ενσωματωμένες δυνατότητες διακυβέρνησης δεδομένων, όπως ταξινόμηση δεδομένων, ιχνηλασιμότητα δεδομένων, λεπτομερή έλεγχο πρόσβασης και άλλα. Μπορείτε να μάθετε περισσότερα για το Dataverse [εδώ](https://docs.microsoft.com/powerapps/maker/data-platform/data-platform-intro?WT.mc_id=academic-109639-somelezediko). - - ![Προτεινόμενα πεδία στον νέο σας πίνακα](../../../translated_images/copilot-dataverse-table-powerapps.f4cc07b5d5f9327bd3783dd288debb2a959ce3320107512e235137aebd8a1a4c.el.png) - -1. Οι εκπαιδευτικοί θέλουν να στέλνουν email στους φοιτητές που έχουν υποβάλει τις εργασίες τους για να τους ενημερώνουν για την πρόοδο των εργασιών τους. Μπορείτε να χρησιμοποιήσετε το Copilot για να προσθέσετε ένα νέο πεδίο στον πίνακα για να αποθηκεύσετε το email του φοιτητή. Για παράδειγμα, μπορείτε να χρησιμοποιήσετε την εξής προτροπή για να προσθέσετε ένα νέο πεδίο στον πίνακα: **_Θέλω να προσθέσω μια στήλη για να αποθηκεύω το email του φοιτητή_**. Κάντε κλικ στο κουμπί **Αποστολή** για να στείλετε την προτροπή στο AI Copilot. - -![Προσθήκη νέου πεδίου](../../../translated_images/copilot-new-column.35e15ff21acaf2745965d427b130f2be772f0484835b44fe074d496b1a455f2a.el.png) - -1. Το AI Copilot θα δημιουργήσει το νέο πεδίο και μπορείτε στη συνέχεια να το προσαρμόσετε ώστε να καλύπτει τις ανάγκες σας. - -1. Μόλις ολοκληρώσετε με τον πίνακα, κάντε κλικ στο κουμπί **Δημιουργία εφαρμογής** για να δημιουργήσετε την εφαρμογή. - -1. Το AI Copilot θα δημιουργήσει μια ανταποκρινόμενη εφαρμογή Canvas βασισμένη στην περιγραφή σας. Μπορείτε στη συνέχεια να προσαρμόσετε την εφαρμογή ώστε να καλύπτει τις ανάγκες σας. - -1. Για να στέλνουν οι εκπαιδευτικοί email στους φοιτητές, μπορείτε να χρησιμοποιήσετε το Copilot για να προσθέσετε μια νέα οθόνη στην εφαρμογή. Για παράδειγμα, μπορείτε να χρησιμοποιήσετε -- **Εύκολο στη διαχείριση**: Τόσο τα μεταδεδομένα όσο και τα δεδομένα αποθηκεύονται στο cloud, οπότε δεν χρειάζεται να ανησυχείτε για τις λεπτομέρειες του πώς αποθηκεύονται ή διαχειρίζονται. Μπορείτε να εστιάσετε στην ανάπτυξη των εφαρμογών και των λύσεών σας. - -- **Ασφαλές**: Το Dataverse παρέχει μια ασφαλή και βασισμένη στο cloud επιλογή αποθήκευσης για τα δεδομένα σας. Μπορείτε να ελέγχετε ποιος έχει πρόσβαση στα δεδομένα στους πίνακές σας και πώς μπορεί να τα προσεγγίσει, χρησιμοποιώντας ασφάλεια βάσει ρόλων. - -- **Πλούσια μεταδεδομένα**: Οι τύποι δεδομένων και οι σχέσεις χρησιμοποιούνται απευθείας μέσα στο Power Apps. - -- **Λογική και επικύρωση**: Μπορείτε να χρησιμοποιήσετε επιχειρηματικούς κανόνες, υπολογιζόμενα πεδία και κανόνες επικύρωσης για να εφαρμόσετε επιχειρηματική λογική και να διατηρήσετε την ακρίβεια των δεδομένων. - -Τώρα που ξέρετε τι είναι το Dataverse και γιατί πρέπει να το χρησιμοποιήσετε, ας δούμε πώς μπορείτε να χρησιμοποιήσετε το Copilot για να δημιουργήσετε έναν πίνακα στο Dataverse που να καλύπτει τις ανάγκες της ομάδας οικονομικών μας. - -> **Note** : Θα χρησιμοποιήσετε αυτόν τον πίνακα στην επόμενη ενότητα για να δημιουργήσετε μια αυτοματοποίηση που θα εξάγει όλες τις πληροφορίες των τιμολογίων και θα τις αποθηκεύει στον πίνακα. - -Για να δημιουργήσετε έναν πίνακα στο Dataverse χρησιμοποιώντας το Copilot, ακολουθήστε τα παρακάτω βήματα: - -1. Μεταβείτε στην αρχική οθόνη του [Power Apps](https://make.powerapps.com?WT.mc_id=academic-105485-koreyst). - -2. Στη γραμμή πλοήγησης αριστερά, επιλέξτε **Tables** και στη συνέχεια κάντε κλικ στο **Describe the new Table**. - -![Select new table](../../../translated_images/describe-new-table.0792373eb757281e3c5f542f84cad3b5208bfe0e5c4a7786dd2bd31aa848a23c.el.png) - -3. Στην οθόνη **Describe the new Table**, χρησιμοποιήστε το πεδίο κειμένου για να περιγράψετε τον πίνακα που θέλετε να δημιουργήσετε. Για παράδειγμα, **_Θέλω να δημιουργήσω έναν πίνακα για να αποθηκεύω πληροφορίες τιμολογίων_**. Κάντε κλικ στο κουμπί **Send** για να στείλετε το αίτημα στο AI Copilot. - -![Describe the table](../../../translated_images/copilot-chat-prompt-dataverse.feb2f81e5872b9d2b05d45d11bb6830e0f2ef6a2d4742413bc9a1e50a45bbb89.el.png) - -4. Το AI Copilot θα προτείνει έναν πίνακα Dataverse με τα πεδία που χρειάζεστε για να αποθηκεύσετε τα δεδομένα που θέλετε να παρακολουθείτε, καθώς και κάποια δείγματα δεδομένων. Μπορείτε στη συνέχεια να προσαρμόσετε τον πίνακα ώστε να καλύπτει τις ανάγκες σας, χρησιμοποιώντας τη λειτουργία βοηθού AI Copilot μέσα από διαλογικά βήματα. - -![Suggested Dataverse table](../../../translated_images/copilot-dataverse-table.b3bc936091324d9db1e943d640df1c7a7df598e66d30f5b8a2999048e26a5073.el.png) - -5. Η ομάδα οικονομικών θέλει να στείλει ένα email στον προμηθευτή για να τον ενημερώσει για την τρέχουσα κατάσταση του τιμολογίου του. Μπορείτε να χρησιμοποιήσετε το Copilot για να προσθέσετε ένα νέο πεδίο στον πίνακα για να αποθηκεύσετε το email του προμηθευτή. Για παράδειγμα, μπορείτε να χρησιμοποιήσετε το παρακάτω αίτημα για να προσθέσετε ένα νέο πεδίο στον πίνακα: **_Θέλω να προσθέσω μια στήλη για να αποθηκεύω το email του προμηθευτή_**. Κάντε κλικ στο κουμπί **Send** για να στείλετε το αίτημα στο AI Copilot. - -6. Το AI Copilot θα δημιουργήσει το νέο πεδίο και στη συνέχεια μπορείτε να το προσαρμόσετε ώστε να καλύπτει τις ανάγκες σας. - -7. Μόλις ολοκληρώσετε με τον πίνακα, κάντε κλικ στο κουμπί **Create** για να δημιουργήσετε τον πίνακα. - -## AI Models στο Power Platform με το AI Builder - -Το AI Builder είναι μια δυνατότητα χαμηλού κώδικα για AI που είναι διαθέσιμη στο Power Platform και σας επιτρέπει να χρησιμοποιήσετε AI Models για να αυτοματοποιήσετε διαδικασίες και να προβλέψετε αποτελέσματα. Με το AI Builder μπορείτε να ενσωματώσετε AI στις εφαρμογές και τις ροές σας που συνδέονται με τα δεδομένα σας στο Dataverse ή σε διάφορες πηγές δεδομένων στο cloud, όπως το SharePoint, το OneDrive ή το Azure. - -## Προκατασκευασμένα AI Models έναντι Προσαρμοσμένων AI Models - -Το AI Builder παρέχει δύο τύπους AI Models: Προκατασκευασμένα AI Models και Προσαρμοσμένα AI Models. Τα Προκατασκευασμένα AI Models είναι έτοιμα προς χρήση μοντέλα που έχουν εκπαιδευτεί από τη Microsoft και είναι διαθέσιμα στο Power Platform. Αυτά σας βοηθούν να προσθέσετε νοημοσύνη στις εφαρμογές και τις ροές σας χωρίς να χρειάζεται να συλλέξετε δεδομένα και να δημιουργήσετε, εκπαιδεύσετε και δημοσιεύσετε τα δικά σας μοντέλα. Μπορείτε να χρησιμοποιήσετε αυτά τα μοντέλα για να αυτοματοποιήσετε διαδικασίες και να προβλέψετε αποτελέσματα. - -Μερικά από τα Προκατασκευασμένα AI Models που είναι διαθέσιμα στο Power Platform περιλαμβάνουν: - -- **Key Phrase Extraction**: Αυτό το μοντέλο εξάγει βασικές φράσεις από κείμενο. -- **Language Detection**: Αυτό το μοντέλο ανιχνεύει τη γλώσσα ενός κειμένου. -- **Sentiment Analysis**: Αυτό το μοντέλο ανιχνεύει θετικά, αρνητικά, ουδέτερα ή μικτά συναισθήματα σε κείμενο. -- **Business Card Reader**: Αυτό το μοντέλο εξάγει πληροφορίες από επαγγελματικές κάρτες. -- **Text Recognition**: Αυτό το μοντέλο εξάγει κείμενο από εικόνες. -- **Object Detection**: Αυτό το μοντέλο ανιχνεύει και εξάγει αντικείμενα από εικόνες. -- **Document processing**: Αυτό το μοντέλο εξάγει πληροφορίες από φόρμες. -- **Invoice Processing**: Αυτό το μοντέλο εξάγει πληροφορίες από τιμολόγια. - -Με τα Προσαρμοσμένα AI Models μπορείτε να φέρετε το δικό σας μοντέλο στο AI Builder ώστε να λειτουργεί όπως οποιοδήποτε προσαρμοσμένο μοντέλο AI Builder, επιτρέποντάς σας να εκπαιδεύσετε το μοντέλο χρησιμοποιώντας τα δικά σας δεδομένα. Μπορείτε να χρησιμοποιήσετε αυτά τα μοντέλα για να αυτοματοποιήσετε διαδικασίες και να προβλέψετε αποτελέσματα τόσο στο Power Apps όσο και στο Power Automate. Όταν χρησιμοποιείτε το δικό σας μοντέλο, ισχύουν περιορισμοί. Διαβάστε περισσότερα για αυτούς τους [περιορισμούς](https://learn.microsoft.com/ai-builder/byo-model#limitations?WT.mc_id=academic-105485-koreyst). - -![AI builder models](../../../translated_images/ai-builder-models.8069423b84cfc47f6bb989bc3cd0584b5b2471c80fad80bf504d356928a08c9c.el.png) - -## Άσκηση #2 - Δημιουργία Ροής Επεξεργασίας Τιμολογίων για τη Startup μας - -Η ομάδα οικονομικών δυσκολεύεται να επεξεργαστεί τα τιμολόγια. Χρησιμοποιούσαν ένα υπολογιστικό φύλλο για να παρακολουθούν τα τιμολόγια, αλλά αυτό έχει γίνει δύσκολο στη διαχείριση καθώς αυξήθηκε ο αριθμός των τιμολογίων. Σας ζήτησαν να δημιουργήσετε μια ροή εργασίας που θα τους βοηθήσει να επεξεργάζονται τα τιμολόγια χρησιμοποιώντας AI. Η ροή εργασίας θα πρέπει να τους επιτρέπει να εξάγουν πληροφορίες από τα τιμολόγια και να αποθηκεύουν αυτές τις πληροφορίες σε έναν πίνακα Dataverse. Επίσης, η ροή θα πρέπει να τους επιτρέπει να στέλνουν email στην ομάδα οικονομικών με τις εξαγόμενες πληροφορίες. - -Τώρα που ξέρετε τι είναι το AI Builder και γιατί πρέπει να το χρησιμοποιήσετε, ας δούμε πώς μπορείτε να χρησιμοποιήσετε το Invoice Processing AI Model στο AI Builder, που καλύψαμε νωρίτερα, για να δημιουργήσετε μια ροή εργασίας που θα βοηθήσει την ομάδα οικονομικών να επεξεργάζεται τιμολόγια. - -Για να δημιουργήσετε μια ροή εργασίας που θα βοηθήσει την ομάδα οικονομικών να επεξεργάζεται τιμολόγια χρησιμοποιώντας το Invoice Processing AI Model στο AI Builder, ακολουθήστε τα παρακάτω βήματα: - -1. Μεταβείτε στην αρχική οθόνη του [Power Automate](https://make.powerautomate.com?WT.mc_id=academic-105485-koreyst). - -2. Χρησιμοποιήστε το πεδίο κειμένου στην αρχική οθόνη για να περιγράψετε τη ροή εργασίας που θέλετε να δημιουργήσετε. Για παράδειγμα, **_Επεξεργασία τιμολογίου όταν φτάνει στο γραμματοκιβώτιό μου_**. Κάντε κλικ στο κουμπί **Send** για να στείλετε το αίτημα στο AI Copilot. - - ![Copilot power automate](../../../translated_images/copilot-chat-prompt-powerautomate.f377e478cc8412de4394fab09e5b72f97b3fc9312526b516ded426102f51c30d.el.png) - -3. Το AI Copilot θα προτείνει τις ενέργειες που χρειάζεστε για να εκτελέσετε την εργασία που θέλετε να αυτοματοποιήσετε. Μπορείτε να κάνετε κλικ στο κουμπί **Next** για να προχωρήσετε στα επόμενα βήματα. - -4. Στο επόμενο βήμα, το Power Automate θα σας ζητήσει να ρυθμίσετε τις συνδέσεις που απαιτούνται για τη ροή. Μόλις ολοκληρώσετε, κάντε κλικ στο κουμπί **Create flow** για να δημιουργήσετε τη ροή. - -5. Το AI Copilot θα δημιουργήσει μια ροή και στη συνέχεια μπορείτε να την προσαρμόσετε ώστε να καλύπτει τις ανάγκες σας. - -6. Ενημερώστε τον trigger της ροής και ορίστε το **Folder** στον φάκελο όπου θα αποθηκεύονται τα τιμολόγια. Για παράδειγμα, μπορείτε να ορίσετε το φάκελο σε **Inbox**. Κάντε κλικ στο **Show advanced options** και ορίστε το **Only with Attachments** σε **Yes**. Αυτό θα διασφαλίσει ότι η ροή θα εκτελείται μόνο όταν λαμβάνεται ένα email με συνημμένο στον φάκελο. - -7. Αφαιρέστε τις παρακάτω ενέργειες από τη ροή: **HTML to text**, **Compose**, **Compose 2**, **Compose 3** και **Compose 4**, γιατί δεν θα τις χρησιμοποιήσετε. - -8. Αφαιρέστε την ενέργεια **Condition** από τη ροή γιατί δεν θα τη χρησιμοποιήσετε. Θα πρέπει να μοιάζει με το παρακάτω στιγμιότυπο οθόνης: - - ![power automate, remove actions](../../../translated_images/powerautomate-remove-actions.7216392fe684ceba4b73c6383edd1cc5e7ded11afd0ca812052a11487d049ef8.el.png) - -9. Κάντε κλικ στο κουμπί **Add an action** και αναζητήστε **Dataverse**. Επιλέξτε την ενέργεια **Add a new row**. - -10. Στην ενέργεια **Extract Information from invoices**, ενημερώστε το **Invoice File** ώστε να δείχνει στο **Attachment Content** από το email. Αυτό θα διασφαλίσει ότι η ροή θα εξάγει πληροφορίες από το συνημμένο τιμολογίου. - -11. Επιλέξτε τον **Table** που δημιουργήσατε νωρίτερα. Για παράδειγμα, μπορείτε να επιλέξετε τον πίνακα **Invoice Information**. Επιλέξτε το δυναμικό περιεχόμενο από την προηγούμενη ενέργεια για να συμπληρώσετε τα παρακάτω πεδία: - - - ID - - Amount - - Date - - Name - - Status - Ορίστε το **Status** σε **Pending**. - - Supplier Email - Χρησιμοποιήστε το δυναμικό περιεχόμενο **From** από τον trigger **When a new email arrives**. - - ![power automate add row](../../../translated_images/powerautomate-add-row.5edce45e5dd3d51e5152688dc140ad43e1423e7a9fef9a206f82a7965ea68d73.el.png) - -12. Μόλις ολοκληρώσετε με τη ροή, κάντε κλικ στο κουμπί **Save** για να αποθηκεύσετε τη ροή. Μπορείτε στη συνέχεια να δοκιμάσετε τη ροή στέλνοντας ένα email με τιμολόγιο στον φάκελο που ορίσατε στον trigger. - -> **Η εργασία σας**: Η ροή που μόλις δημιουργήσατε είναι μια καλή αρχή, τώρα πρέπει να σκεφτείτε πώς μπορείτε να δημιουργήσετε μια αυτοματοποίηση που θα επιτρέπει στην ομάδα οικονομικών να στέλνει email στον προμηθευτή για να τον ενημερώνει για την τρέχουσα κατάσταση του τιμολογίου του. Η υπόδειξή σας: η ροή πρέπει να εκτελείται όταν αλλάζει η κατάσταση του τιμολογίου. - -## Χρήση Μοντέλου Δημιουργίας Κειμένου AI στο Power Automate - -Το Create Text with GPT AI Model στο AI Builder σας επιτρέπει να δημιουργείτε κείμενο βασισμένο σε ένα αίτημα και τροφοδοτείται από την υπηρεσία Microsoft Azure OpenAI. Με αυτή τη δυνατότητα, μπορείτε να ενσωματώσετε την τεχνολογία GPT (Generative Pre-Trained Transformer) στις εφαρμογές και τις ροές σας για να δημιουργήσετε μια ποικιλία αυτοματοποιημένων ροών και εφαρμογών με χρήσιμες λειτουργίες. - -Τα μοντέλα GPT υποβάλλονται σε εκτενή εκπαίδευση με τεράστιες ποσότητες δεδομένων, επιτρέποντάς τους να παράγουν κείμενο που μοιάζει πολύ με ανθρώπινη γλώσσα όταν τους δοθεί ένα αίτημα. Όταν ενσωματώνονται σε αυτοματισμούς ροών εργασίας, μοντέλα AI όπως το GPT μπορούν να αξιοποιηθούν για να απλοποιήσουν και να αυτοματοποιήσουν ένα ευρύ φάσμα εργασιών. - -Για παράδειγμα, μπορείτε να δημιουργήσετε ροές που παράγουν αυτόματα κείμενο για διάφορες χρήσεις, όπως προσχέδια email, περιγραφές προϊόντων και άλλα. Μπορείτε επίσης να χρησιμοποιήσετε το μοντέλο για να δημιουργήσετε κείμενο για διάφορες εφαρμογές, όπως chatbots και εφαρμογές εξυπηρέτησης πελατών που επιτρέπουν στους εκπροσώπους να απαντούν αποτελεσματικά και γρήγορα σε ερωτήματα πελατών. - -![create a prompt](../../../translated_images/create-prompt-gpt.69d429300c2e870a12ec95556cda9bacf6a173e452cdca02973c90df5f705cee.el.png) - -Για να μάθετε πώς να χρησιμοποιείτε αυτό το AI Model στο Power Automate, ακολουθήστε το μάθημα [Add intelligence with AI Builder and GPT](https://learn.microsoft.com/training/modules/ai-builder-text-generation/?WT.mc_id=academic-109639-somelezediko). - -## Μπράβο! Συνεχίστε τη Μάθησή σας - -Αφού ολοκληρώσετε αυτό το μάθημα, ρίξτε μια ματιά στη συλλογή μας [Generative AI Learning collection](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) για να συνεχίσετε να αναβαθμίζετε τις γνώσεις σας στην Γενετική Τεχνητή Νοημοσύνη! - -Μεταβείτε στο Μάθημα 11 όπου θα δούμε πώς να [ενσωματώσετε τη Γενετική Τεχνητή Νοημοσύνη με Function Calling](../11-integrating-with-function-calling/README.md?WT.mc_id=academic-105485-koreyst)! - -**Αποποίηση ευθυνών**: -Αυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία αυτόματης μετάφρασης AI [Co-op Translator](https://github.com/Azure/co-op-translator). Παρόλο που επιδιώκουμε την ακρίβεια, παρακαλούμε να γνωρίζετε ότι οι αυτόματες μεταφράσεις ενδέχεται να περιέχουν λάθη ή ανακρίβειες. Το πρωτότυπο έγγραφο στη γλώσσα του θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε ευθύνη για τυχόν παρεξηγήσεις ή λανθασμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης. \ No newline at end of file + +# Δημιουργία Εφαρμογών AI με Χαμηλό Κώδικα + +[![Δημιουργία Εφαρμογών AI με Χαμηλό Κώδικα](../../../translated_images/10-lesson-banner.a01ac8fe3fd86310c2e4065c0b3c584879f33b8ce797311821a636992f8a5b2f.el.png)](https://youtu.be/1vzq3Nd8GBA?si=h6LHWJXdmqf6mhDg) + +> _(Κάντε κλικ στην εικόνα παραπάνω για να δείτε το βίντεο αυτού του μαθήματος)_ + +## Εισαγωγή + +Αφού μάθαμε πώς να δημιουργούμε εφαρμογές που παράγουν εικόνες, ας μιλήσουμε για τον χαμηλό κώδικα. Η γενετική AI μπορεί να χρησιμοποιηθεί σε διάφορους τομείς, συμπεριλαμβανομένου του χαμηλού κώδικα, αλλά τι είναι ο χαμηλός κώδικας και πώς μπορούμε να προσθέσουμε AI σε αυτόν; + +Η δημιουργία εφαρμογών και λύσεων έχει γίνει πιο εύκολη για παραδοσιακούς προγραμματιστές και μη προγραμματιστές μέσω των Πλατφορμών Ανάπτυξης Χαμηλού Κώδικα. Οι Πλατφόρμες Ανάπτυξης Χαμηλού Κώδικα σας επιτρέπουν να δημιουργείτε εφαρμογές και λύσεις με ελάχιστο ή καθόλου κώδικα. Αυτό επιτυγχάνεται παρέχοντας ένα οπτικό περιβάλλον ανάπτυξης που σας επιτρέπει να σύρετε και να αποθέτετε στοιχεία για να δημιουργήσετε εφαρμογές και λύσεις. Αυτό σας επιτρέπει να δημιουργείτε εφαρμογές και λύσεις πιο γρήγορα και με λιγότερους πόρους. Σε αυτό το μάθημα, εξετάζουμε σε βάθος πώς να χρησιμοποιήσετε τον χαμηλό κώδικα και πώς να ενισχύσετε την ανάπτυξη χαμηλού κώδικα με AI χρησιμοποιώντας το Power Platform. + +Το Power Platform παρέχει στις οργανώσεις τη δυνατότητα να ενδυναμώσουν τις ομάδες τους να δημιουργούν τις δικές τους λύσεις μέσω ενός διαισθητικού περιβάλλοντος χαμηλού ή καθόλου κώδικα. Αυτό το περιβάλλον βοηθά στην απλοποίηση της διαδικασίας δημιουργίας λύσεων. Με το Power Platform, οι λύσεις μπορούν να δημιουργηθούν σε ημέρες ή εβδομάδες αντί για μήνες ή χρόνια. Το Power Platform αποτελείται από πέντε βασικά προϊόντα: Power Apps, Power Automate, Power BI, Power Pages και Copilot Studio. + +Αυτό το μάθημα καλύπτει: + +- Εισαγωγή στη Γενετική AI στο Power Platform +- Εισαγωγή στο Copilot και πώς να το χρησιμοποιήσετε +- Χρήση της Γενετικής AI για τη δημιουργία εφαρμογών και ροών στο Power Platform +- Κατανόηση των Μοντέλων AI στο Power Platform με το AI Builder + +## Στόχοι Μάθησης + +Μέχρι το τέλος αυτού του μαθήματος, θα μπορείτε να: + +- Κατανοήσετε πώς λειτουργεί το Copilot στο Power Platform. + +- Δημιουργήσετε μια Εφαρμογή Παρακολούθησης Εργασιών Μαθητών για την εκπαιδευτική μας startup. + +- Δημιουργήσετε μια Ροή Επεξεργασίας Τιμολογίων που χρησιμοποιεί AI για την εξαγωγή πληροφοριών από τιμολόγια. + +- Εφαρμόσετε βέλτιστες πρακτικές κατά τη χρήση του Μοντέλου AI Δημιουργίας Κειμένου με GPT. + +Τα εργαλεία και οι τεχνολογίες που θα χρησιμοποιήσετε σε αυτό το μάθημα είναι: + +- **Power Apps**, για την Εφαρμογή Παρακολούθησης Εργασιών Μαθητών, που παρέχει ένα περιβάλλον ανάπτυξης χαμηλού κώδικα για τη δημιουργία εφαρμογών για την παρακολούθηση, διαχείριση και αλληλεπίδραση με δεδομένα. + +- **Dataverse**, για την αποθήκευση των δεδομένων της Εφαρμογής Παρακολούθησης Εργασιών Μαθητών, όπου το Dataverse θα παρέχει μια πλατφόρμα δεδομένων χαμηλού κώδικα για την αποθήκευση των δεδομένων της εφαρμογής. + +- **Power Automate**, για τη Ροή Επεξεργασίας Τιμολογίων, όπου θα έχετε ένα περιβάλλον ανάπτυξης χαμηλού κώδικα για τη δημιουργία ροών εργασίας για την αυτοματοποίηση της διαδικασίας Επεξεργασίας Τιμολογίων. + +- **AI Builder**, για το Μοντέλο AI Επεξεργασίας Τιμολογίων, όπου θα χρησιμοποιήσετε προεγκατεστημένα Μοντέλα AI για την επεξεργασία των τιμολογίων της startup μας. + +## Γενετική AI στο Power Platform + +Η ενίσχυση της ανάπτυξης και εφαρμογής χαμηλού κώδικα με γενετική AI είναι ένας βασικός τομέας εστίασης για το Power Platform. Ο στόχος είναι να επιτρέψουμε σε όλους να δημιουργούν εφαρμογές, ιστότοπους, πίνακες ελέγχου και να αυτοματοποιούν διαδικασίες με AI, _χωρίς να απαιτείται εξειδίκευση στην επιστήμη δεδομένων_. Αυτός ο στόχος επιτυγχάνεται με την ενσωμάτωση της γενετικής AI στην εμπειρία ανάπτυξης χαμηλού κώδικα στο Power Platform με τη μορφή του Copilot και του AI Builder. + +### Πώς λειτουργεί αυτό; + +Το Copilot είναι ένας βοηθός AI που σας επιτρέπει να δημιουργείτε λύσεις Power Platform περιγράφοντας τις απαιτήσεις σας σε μια σειρά συνομιλιακών βημάτων χρησιμοποιώντας φυσική γλώσσα. Για παράδειγμα, μπορείτε να δώσετε οδηγίες στον βοηθό AI να δηλώσει ποια πεδία θα χρησιμοποιεί η εφαρμογή σας και αυτός θα δημιουργήσει τόσο την εφαρμογή όσο και το υποκείμενο μοντέλο δεδομένων ή μπορείτε να καθορίσετε πώς να ρυθμίσετε μια ροή στο Power Automate. + +Μπορείτε να χρησιμοποιήσετε λειτουργίες που βασίζονται στο Copilot ως χαρακτηριστικό στις οθόνες της εφαρμογής σας για να επιτρέψετε στους χρήστες να ανακαλύψουν πληροφορίες μέσω συνομιλιακών αλληλεπιδράσεων. + +Το AI Builder είναι μια δυνατότητα AI χαμηλού κώδικα διαθέσιμη στο Power Platform που σας επιτρέπει να χρησιμοποιείτε Μοντέλα AI για να σας βοηθήσουν να αυτοματοποιήσετε διαδικασίες και να προβλέψετε αποτελέσματα. Με το AI Builder μπορείτε να φέρετε AI στις εφαρμογές και τις ροές σας που συνδέονται με τα δεδομένα σας στο Dataverse ή σε διάφορες πηγές δεδομένων στο cloud, όπως το SharePoint, το OneDrive ή το Azure. + +Το Copilot είναι διαθέσιμο σε όλα τα προϊόντα του Power Platform: Power Apps, Power Automate, Power BI, Power Pages και Power Virtual Agents. Το AI Builder είναι διαθέσιμο στο Power Apps και το Power Automate. Σε αυτό το μάθημα, θα επικεντρωθούμε στο πώς να χρησιμοποιήσετε το Copilot και το AI Builder στο Power Apps και το Power Automate για να δημιουργήσετε μια λύση για την εκπαιδευτική μας startup. + +### Copilot στο Power Apps + +Ως μέρος του Power Platform, το Power Apps παρέχει ένα περιβάλλον ανάπτυξης χαμηλού κώδικα για τη δημιουργία εφαρμογών για την παρακολούθηση, διαχείριση και αλληλεπίδραση με δεδομένα. Είναι μια σουίτα υπηρεσιών ανάπτυξης εφαρμογών με μια επεκτάσιμη πλατφόρμα δεδομένων και τη δυνατότητα σύνδεσης με υπηρεσίες cloud και δεδομένα εντός εγκαταστάσεων. Το Power Apps σας επιτρέπει να δημιουργείτε εφαρμογές που λειτουργούν σε προγράμματα περιήγησης, tablet και τηλέφωνα και μπορούν να μοιραστούν με συνεργάτες. Το Power Apps διευκολύνει τους χρήστες στην ανάπτυξη εφαρμογών με μια απλή διεπαφή, ώστε κάθε επιχειρηματικός χρήστης ή επαγγελματίας προγραμματιστής να μπορεί να δημιουργεί προσαρμοσμένες εφαρμογές. Η εμπειρία ανάπτυξης εφαρμογών ενισχύεται επίσης με τη Γενετική AI μέσω του Copilot. + +Η λειτουργία βοηθού AI Copilot στο Power Apps σας επιτρέπει να περιγράψετε τι είδους εφαρμογή χρειάζεστε και ποιες πληροφορίες θέλετε να παρακολουθεί, να συλλέγει ή να εμφανίζει η εφαρμογή σας. Το Copilot στη συνέχεια δημιουργεί μια ευέλικτη εφαρμογή Canvas βάσει της περιγραφής σας. Μπορείτε στη συνέχεια να προσαρμόσετε την εφαρμογή ώστε να ανταποκρίνεται στις ανάγκες σας. Ο AI Copilot δημιουργεί επίσης και προτείνει έναν Πίνακα Dataverse με τα πεδία που χρειάζεστε για να αποθηκεύσετε τα δεδομένα που θέλετε να παρακολουθείτε και κάποια δείγματα δεδομένων. Θα δούμε τι είναι το Dataverse και πώς μπορείτε να το χρησιμοποιήσετε στο Power Apps σε αυτό το μάθημα αργότερα. Μπορείτε στη συνέχεια να προσαρμόσετε τον πίνακα ώστε να ανταποκρίνεται στις ανάγκες σας χρησιμοποιώντας τη λειτουργία βοηθού AI Copilot μέσω συνομιλιακών βημάτων. Αυτή η λειτουργία είναι διαθέσιμη από την αρχική οθόνη του Power Apps. + +### Copilot στο Power Automate + +Ως μέρος του Power Platform, το Power Automate επιτρέπει στους χρήστες να δημιουργούν αυτοματοποιημένες ροές εργασίας μεταξύ εφαρμογών και υπηρεσιών. Βοηθά στην αυτοματοποίηση επαναλαμβανόμενων επιχειρηματικών διαδικασιών, όπως η επικοινωνία, η συλλογή δεδομένων και οι εγκρίσεις αποφάσεων. Η απλή διεπαφή του επιτρέπει στους χρήστες με κάθε τεχνική ικανότητα (από αρχάριους έως έμπειρους προγραμματιστές) να αυτοματοποιούν εργασίες. Η εμπειρία ανάπτυξης ροών εργασίας ενισχύεται επίσης με τη Γενετική AI μέσω του Copilot. + +Η λειτουργία βοηθού AI Copilot στο Power Automate σας επιτρέπει να περιγράψετε τι είδους ροή χρειάζεστε και ποιες ενέργειες θέλετε να εκτελεί η ροή σας. Το Copilot στη συνέχεια δημιουργεί μια ροή βάσει της περιγραφής σας. Μπορείτε στη συνέχεια να προσαρμόσετε τη ροή ώστε να ανταποκρίνεται στις ανάγκες σας. Ο AI Copilot δημιουργεί επίσης και προτείνει τις ενέργειες που χρειάζεστε για να εκτελέσετε την εργασία που θέλετε να αυτοματοποιήσετε. Θα δούμε τι είναι οι ροές και πώς μπορείτε να τις χρησιμοποιήσετε στο Power Automate σε αυτό το μάθημα αργότερα. Μπορείτε στη συνέχεια να προσαρμόσετε τις ενέργειες ώστε να ανταποκρίνονται στις ανάγκες σας χρησιμοποιώντας τη λειτουργία βοηθού AI Copilot μέσω συνομιλιακών βημάτων. Αυτή η λειτουργία είναι διαθέσιμη από την αρχική οθόνη του Power Automate. + +## Εργασία: Διαχείριση εργασιών μαθητών και τιμολογίων για την startup μας, χρησιμοποιώντας το Copilot + +Η startup μας παρέχει διαδικτυακά μαθήματα σε μαθητές. Η startup έχει αναπτυχθεί γρήγορα και τώρα δυσκολεύεται να ανταποκριθεί στη ζήτηση για τα μαθήματά της. Η startup σας έχει προσλάβει ως προγραμματιστή Power Platform για να τους βοηθήσετε να δημιουργήσουν μια λύση χαμηλού κώδικα για να τους βοηθήσετε να διαχειριστούν τις εργασίες μαθητών και τα τιμολόγια. Η λύση τους θα πρέπει να τους βοηθήσει να παρακολουθούν και να διαχειρίζονται τις εργασίες μαθητών μέσω μιας εφαρμογής και να αυτοματοποιούν τη διαδικασία επεξεργασίας τιμολογίων μέσω μιας ροής εργασίας. Σας έχει ζητηθεί να χρησιμοποιήσετε Γενετική AI για την ανάπτυξη της λύσης. + +Όταν ξεκινάτε να χρησιμοποιείτε το Copilot, μπορείτε να χρησιμοποιήσετε τη [Βιβλιοθήκη Εντολών Copilot του Power Platform](https://github.com/pnp/powerplatform-prompts?WT.mc_id=academic-109639-somelezediko) για να ξεκινήσετε με τις εντολές. Αυτή η βιβλιοθήκη περιέχει μια λίστα εντολών που μπορείτε να χρησιμοποιήσετε για να δημιουργήσετε εφαρμογές και ροές με το Copilot. Μπορείτε επίσης να χρησιμοποιήσετε τις εντολές στη βιβλιοθήκη για να πάρετε μια ιδέα για το πώς να περιγράψετε τις απαιτήσεις σας στο Copilot. + +### Δημιουργία Εφαρμογής Παρακολούθησης Εργασιών Μαθητών για την Startup μας + +Οι εκπαιδευτικοί της startup μας δυσκολεύονται να παρακολουθούν τις εργασίες των μαθητών. Χρησιμοποιούσαν ένα υπολογιστικό φύλλο για να παρακολουθούν τις εργασίες, αλλά αυτό έχει γίνει δύσκολο να διαχειριστεί καθώς ο αριθμός των μαθητών έχει αυξηθεί. Σας έχουν ζητήσει να δημιουργήσετε μια εφαρμογή που θα τους βοηθήσει να παρακολουθούν και να διαχειρίζονται τις εργασίες των μαθητών. Η εφαρμογή θα πρέπει να τους επιτρέπει να προσθέτουν νέες εργασίες, να βλέπουν εργασίες, να ενημερώνουν εργασίες και να διαγράφουν εργασίες. Η εφαρμογή θα πρέπει επίσης να επιτρέπει στους εκπαιδευτικούς και τους μαθητές να βλέπουν τις εργασίες που έχουν βαθμολογηθεί και εκείνες που δεν έχουν βαθμολογηθεί. + +Θα δημιουργήσετε την εφαρμογή χρησιμοποιώντας το Copilot στο Power Apps ακολουθώντας τα παρακάτω βήματα: + +1. Μεταβείτε στην [αρχική οθόνη του Power Apps](https://make.powerapps.com?WT.mc_id=academic-105485-koreyst). + +1. Χρησιμοποιήστε την περιοχή κειμένου στην αρχική οθόνη για να περιγράψετε την εφαρμογή που θέλετε να δημιουργήσετε. Για παράδειγμα, **_Θέλω να δημιουργήσω μια εφαρμογή για την παρακολούθηση και διαχείριση εργασιών μαθητών_**. Κάντε κλικ στο κουμπί **Αποστολή** για να στείλετε την εντολή στο AI Copilot. + +![Περιγράψτε την εφαρμογή που θέλετε να δημιουργήσετε](../../../translated_images/copilot-chat-prompt-powerapps.84250f341d060830a296b68512e6b3b3aa3a4559f4f1c2d7bafeba8ad3fcd17a.el.png) + +1. Ο AI Copilot θα προτείνει έναν Πίνακα Dataverse με τα πεδία που χρειάζεστε για να αποθηκεύσετε τα δεδομένα που θέλετε να παρακολουθείτε και κάποια δείγματα δεδομένων. Μπορείτε στη συνέχεια να προσαρμόσετε τον πίνακα ώστε να ανταποκρίνεται στις ανάγκες σας χρησιμοποιώντας τη λειτουργία βοηθού AI Copilot μέσω συνομιλιακών βημάτων. + + > **Σημαντικό**: Το Dataverse είναι η υποκείμενη πλατφόρμα δεδομένων για το Power Platform. Είναι μια πλατφόρμα δεδομένων χαμηλού κώδικα για την αποθήκευση των δεδομένων της εφαρμογής. Είναι μια πλήρως διαχειριζόμενη υπηρεσία που αποθηκεύει με ασφάλεια δεδομένα στο Microsoft Cloud και παρέχεται μέσα στο περιβάλλον του Power Platform σας. Διαθέτει ενσωματωμένες δυνατότητες διακυβέρνησης δεδομένων, όπως ταξινόμηση δεδομένων, προέλευση δεδομένων, λεπτομερή έλεγχο πρόσβασης και άλλα. Μπορείτε να μάθετε περισσότερα για το Dataverse [εδώ](https://docs.microsoft.com/powerapps/maker/data-platform/data-platform-intro?WT.mc_id=academic-109639-somelezediko). + + ![Προτεινόμενα πεδία στον νέο σας πίνακα](../../../translated_images/copilot-dataverse-table-powerapps.f4cc07b5d5f9327bd3783dd288debb2a959ce3320107512e235137aebd8a1a4c.el.png) + +1. Οι εκπαιδευτικοί θέλουν να στέλνουν email στους μαθητές που έχουν υποβάλει τις εργασίες τους για να τους ενημερώνουν για την πρόοδο των εργασιών τους. Μπορείτε να χρησιμοποιήσετε το Copilot για να προσθέσετε ένα νέο πεδίο στον πίνακα για να αποθηκεύσετε το email του μαθητή. Για παράδειγμα, μπορείτε να χρησιμοποιήσετε την ακόλουθη εντολή για να προσθέσετε ένα νέο πεδίο στον πίνακα: **_Θέλω να προσθέσω μια στήλη για να αποθηκεύσω το email του μαθητή_**. Κάντε κλικ στο κουμπί **Αποστολή** για να στείλετε την εντολή στο AI Copilot. + +![Προσθήκη νέου πεδίου](../../../translated_images/copilot-new-column.35e15ff21acaf2745965d427b130f2be772f0484835b44fe074d496b1a455f2a.el.png) + +1. Ο AI Copilot θα δημιουργήσει ένα νέο πεδίο και μπορείτε στη συνέχεια να προσαρμόσετε το πεδίο ώστε να ανταποκρίνεται στις ανάγκες σας. + +1. Μόλις ολοκληρώσετε τον πίνακα, κάντε κλικ στο κουμπί **Δημιουργία εφαρμογής** για να δημιουργήσετε την εφαρμογή. + +1. Ο AI Copilot θα δημιουργήσει μια ευέλικτη εφαρμογή Canvas βάσει της περιγραφής σας. Μπορείτε στη συνέχεια να προσαρμόσετε την εφαρμογή ώστε να ανταποκρίνεται στις ανάγκες σας. + +1. Για να στέλνουν οι εκπαιδευτικοί email στους μαθητές, μπορείτε να χρησιμοποιήσετε το Copilot για να +Γιατί να χρησιμοποιήσουμε το Dataverse για την startup μας; Οι τυπικοί και προσαρμοσμένοι πίνακες στο Dataverse παρέχουν μια ασφαλή και βασισμένη στο cloud επιλογή αποθήκευσης για τα δεδομένα σας. Οι πίνακες σας επιτρέπουν να αποθηκεύετε διαφορετικούς τύπους δεδομένων, όπως ακριβώς θα χρησιμοποιούσατε πολλαπλά φύλλα εργασίας σε ένα Excel workbook. Μπορείτε να χρησιμοποιήσετε πίνακες για να αποθηκεύσετε δεδομένα που είναι συγκεκριμένα για τις ανάγκες της επιχείρησής σας. Μερικά από τα οφέλη που θα αποκομίσει η startup μας από τη χρήση του Dataverse περιλαμβάνουν, αλλά δεν περιορίζονται σε: + +- **Εύκολη διαχείριση**: Τόσο τα μεταδεδομένα όσο και τα δεδομένα αποθηκεύονται στο cloud, οπότε δεν χρειάζεται να ανησυχείτε για τις λεπτομέρειες του πώς αποθηκεύονται ή διαχειρίζονται. Μπορείτε να επικεντρωθείτε στη δημιουργία των εφαρμογών και των λύσεών σας. + +- **Ασφάλεια**: Το Dataverse παρέχει μια ασφαλή και βασισμένη στο cloud επιλογή αποθήκευσης για τα δεδομένα σας. Μπορείτε να ελέγξετε ποιος έχει πρόσβαση στα δεδομένα στους πίνακές σας και πώς μπορεί να τα προσπελάσει χρησιμοποιώντας ασφάλεια βάσει ρόλων. + +- **Πλούσια μεταδεδομένα**: Οι τύποι δεδομένων και οι σχέσεις χρησιμοποιούνται απευθείας μέσα στο Power Apps. + +- **Λογική και επαλήθευση**: Μπορείτε να χρησιμοποιήσετε επιχειρηματικούς κανόνες, υπολογισμένα πεδία και κανόνες επαλήθευσης για να εφαρμόσετε επιχειρηματική λογική και να διατηρήσετε την ακρίβεια των δεδομένων. + +Τώρα που γνωρίζετε τι είναι το Dataverse και γιατί πρέπει να το χρησιμοποιήσετε, ας δούμε πώς μπορείτε να χρησιμοποιήσετε το Copilot για να δημιουργήσετε έναν πίνακα στο Dataverse που να καλύπτει τις απαιτήσεις της οικονομικής μας ομάδας. + +> **Note** : Θα χρησιμοποιήσετε αυτόν τον πίνακα στην επόμενη ενότητα για να δημιουργήσετε μια αυτοματοποίηση που θα εξάγει όλες τις πληροφορίες τιμολογίων και θα τις αποθηκεύει στον πίνακα. + +Για να δημιουργήσετε έναν πίνακα στο Dataverse χρησιμοποιώντας το Copilot, ακολουθήστε τα παρακάτω βήματα: + +1. Μεταβείτε στην αρχική οθόνη του [Power Apps](https://make.powerapps.com?WT.mc_id=academic-105485-koreyst). + +2. Στη γραμμή πλοήγησης στα αριστερά, επιλέξτε **Tables** και στη συνέχεια κάντε κλικ στο **Describe the new Table**. + +![Select new table](../../../translated_images/describe-new-table.0792373eb757281e3c5f542f84cad3b5208bfe0e5c4a7786dd2bd31aa848a23c.el.png) + +3. Στην οθόνη **Describe the new Table**, χρησιμοποιήστε το πεδίο κειμένου για να περιγράψετε τον πίνακα που θέλετε να δημιουργήσετε. Για παράδειγμα, **_Θέλω να δημιουργήσω έναν πίνακα για την αποθήκευση πληροφοριών τιμολογίων_**. Κάντε κλικ στο κουμπί **Send** για να στείλετε την εντολή στο AI Copilot. + +![Describe the table](../../../translated_images/copilot-chat-prompt-dataverse.feb2f81e5872b9d2b05d45d11bb6830e0f2ef6a2d4742413bc9a1e50a45bbb89.el.png) + +4. Το AI Copilot θα προτείνει έναν πίνακα Dataverse με τα πεδία που χρειάζεστε για να αποθηκεύσετε τα δεδομένα που θέλετε να παρακολουθήσετε και μερικά δείγματα δεδομένων. Στη συνέχεια, μπορείτε να προσαρμόσετε τον πίνακα ώστε να καλύπτει τις ανάγκες σας χρησιμοποιώντας τη λειτουργία βοηθού του AI Copilot μέσω συνομιλιακών βημάτων. + +![Suggested Dataverse table](../../../translated_images/copilot-dataverse-table.b3bc936091324d9db1e943d640df1c7a7df598e66d30f5b8a2999048e26a5073.el.png) + +5. Η οικονομική ομάδα θέλει να στείλει ένα email στον προμηθευτή για να τον ενημερώσει για την τρέχουσα κατάσταση του τιμολογίου του. Μπορείτε να χρησιμοποιήσετε το Copilot για να προσθέσετε ένα νέο πεδίο στον πίνακα για την αποθήκευση του email του προμηθευτή. Για παράδειγμα, μπορείτε να χρησιμοποιήσετε την εξής εντολή: **_Θέλω να προσθέσω μια στήλη για την αποθήκευση του email του προμηθευτή_**. Κάντε κλικ στο κουμπί **Send** για να στείλετε την εντολή στο AI Copilot. + +6. Το AI Copilot θα δημιουργήσει ένα νέο πεδίο και στη συνέχεια μπορείτε να προσαρμόσετε το πεδίο ώστε να καλύπτει τις ανάγκες σας. + +7. Όταν ολοκληρώσετε τον πίνακα, κάντε κλικ στο κουμπί **Create** για να δημιουργήσετε τον πίνακα. + +## Μοντέλα AI στο Power Platform με το AI Builder + +Το AI Builder είναι μια δυνατότητα AI χαμηλού κώδικα διαθέσιμη στο Power Platform που σας επιτρέπει να χρησιμοποιείτε μοντέλα AI για να αυτοματοποιείτε διαδικασίες και να προβλέπετε αποτελέσματα. Με το AI Builder μπορείτε να ενσωματώσετε AI στις εφαρμογές και τις ροές σας που συνδέονται με τα δεδομένα σας στο Dataverse ή σε διάφορες πηγές δεδομένων στο cloud, όπως το SharePoint, το OneDrive ή το Azure. + +## Προκατασκευασμένα Μοντέλα AI vs Προσαρμοσμένα Μοντέλα AI + +Το AI Builder παρέχει δύο τύπους μοντέλων AI: Προκατασκευασμένα Μοντέλα AI και Προσαρμοσμένα Μοντέλα AI. Τα Προκατασκευασμένα Μοντέλα AI είναι έτοιμα προς χρήση μοντέλα AI που έχουν εκπαιδευτεί από τη Microsoft και είναι διαθέσιμα στο Power Platform. Αυτά σας βοηθούν να προσθέσετε ευφυΐα στις εφαρμογές και τις ροές σας χωρίς να χρειάζεται να συλλέξετε δεδομένα και στη συνέχεια να δημιουργήσετε, να εκπαιδεύσετε και να δημοσιεύσετε τα δικά σας μοντέλα. Μπορείτε να χρησιμοποιήσετε αυτά τα μοντέλα για να αυτοματοποιήσετε διαδικασίες και να προβλέψετε αποτελέσματα. + +Μερικά από τα Προκατασκευασμένα Μοντέλα AI που είναι διαθέσιμα στο Power Platform περιλαμβάνουν: + +- **Εξαγωγή βασικών φράσεων**: Αυτό το μοντέλο εξάγει βασικές φράσεις από κείμενο. +- **Ανίχνευση γλώσσας**: Αυτό το μοντέλο ανιχνεύει τη γλώσσα ενός κειμένου. +- **Ανάλυση συναισθημάτων**: Αυτό το μοντέλο ανιχνεύει θετικά, αρνητικά, ουδέτερα ή μικτά συναισθήματα σε κείμενο. +- **Αναγνώστης επαγγελματικών καρτών**: Αυτό το μοντέλο εξάγει πληροφορίες από επαγγελματικές κάρτες. +- **Αναγνώριση κειμένου**: Αυτό το μοντέλο εξάγει κείμενο από εικόνες. +- **Ανίχνευση αντικειμένων**: Αυτό το μοντέλο ανιχνεύει και εξάγει αντικείμενα από εικόνες. +- **Επεξεργασία εγγράφων**: Αυτό το μοντέλο εξάγει πληροφορίες από φόρμες. +- **Επεξεργασία τιμολογίων**: Αυτό το μοντέλο εξάγει πληροφορίες από τιμολόγια. + +Με τα Προσαρμοσμένα Μοντέλα AI μπορείτε να φέρετε το δικό σας μοντέλο στο AI Builder ώστε να λειτουργεί όπως οποιοδήποτε προσαρμοσμένο μοντέλο του AI Builder, επιτρέποντάς σας να εκπαιδεύσετε το μοντέλο χρησιμοποιώντας τα δικά σας δεδομένα. Μπορείτε να χρησιμοποιήσετε αυτά τα μοντέλα για να αυτοματοποιήσετε διαδικασίες και να προβλέψετε αποτελέσματα τόσο στο Power Apps όσο και στο Power Automate. Όταν χρησιμοποιείτε το δικό σας μοντέλο, υπάρχουν περιορισμοί που ισχύουν. Διαβάστε περισσότερα για αυτούς τους [περιορισμούς](https://learn.microsoft.com/ai-builder/byo-model#limitations?WT.mc_id=academic-105485-koreyst). + +![AI builder models](../../../translated_images/ai-builder-models.8069423b84cfc47f6bb989bc3cd0584b5b2471c80fad80bf504d356928a08c9c.el.png) + +## Εργασία #2 - Δημιουργία Ροής Επεξεργασίας Τιμολογίων για την Startup μας + +Η οικονομική ομάδα δυσκολεύεται να επεξεργαστεί τα τιμολόγια. Χρησιμοποιούν ένα υπολογιστικό φύλλο για να παρακολουθούν τα τιμολόγια, αλλά αυτό έχει γίνει δύσκολο να διαχειριστεί καθώς ο αριθμός των τιμολογίων έχει αυξηθεί. Ζήτησαν να δημιουργήσετε μια ροή εργασίας που θα τους βοηθήσει να επεξεργαστούν τα τιμολόγια χρησιμοποιώντας AI. Η ροή εργασίας θα πρέπει να τους επιτρέπει να εξάγουν πληροφορίες από τα τιμολόγια και να αποθηκεύουν τις πληροφορίες σε έναν πίνακα Dataverse. Η ροή εργασίας θα πρέπει επίσης να τους επιτρέπει να στέλνουν ένα email στην οικονομική ομάδα με τις εξαγόμενες πληροφορίες. + +Τώρα που γνωρίζετε τι είναι το AI Builder και γιατί πρέπει να το χρησιμοποιήσετε, ας δούμε πώς μπορείτε να χρησιμοποιήσετε το Μοντέλο Επεξεργασίας Τιμολογίων στο AI Builder, το οποίο καλύψαμε νωρίτερα, για να δημιουργήσετε μια ροή εργασίας που θα βοηθήσει την οικονομική ομάδα να επεξεργαστεί τα τιμολόγια. + +Για να δημιουργήσετε μια ροή εργασίας που θα βοηθήσει την οικονομική ομάδα να επεξεργαστεί τα τιμολόγια χρησιμοποιώντας το Μοντέλο Επεξεργασίας Τιμολογίων στο AI Builder, ακολουθήστε τα παρακάτω βήματα: + +1. Μεταβείτε στην αρχική οθόνη του [Power Automate](https://make.powerautomate.com?WT.mc_id=academic-105485-koreyst). + +2. Χρησιμοποιήστε το πεδίο κειμένου στην αρχική οθόνη για να περιγράψετε τη ροή εργασίας που θέλετε να δημιουργήσετε. Για παράδειγμα, **_Επεξεργασία ενός τιμολογίου όταν φτάνει στο mailbox μου_**. Κάντε κλικ στο κουμπί **Send** για να στείλετε την εντολή στο AI Copilot. + + ![Copilot power automate](../../../translated_images/copilot-chat-prompt-powerautomate.f377e478cc8412de4394fab09e5b72f97b3fc9312526b516ded426102f51c30d.el.png) + +3. Το AI Copilot θα προτείνει τις ενέργειες που χρειάζεστε για να εκτελέσετε την εργασία που θέλετε να αυτοματοποιήσετε. Μπορείτε να κάνετε κλικ στο κουμπί **Next** για να προχωρήσετε στα επόμενα βήματα. + +4. Στο επόμενο βήμα, το Power Automate θα σας ζητήσει να ρυθμίσετε τις συνδέσεις που απαιτούνται για τη ροή. Όταν τελειώσετε, κάντε κλικ στο κουμπί **Create flow** για να δημιουργήσετε τη ροή. + +5. Το AI Copilot θα δημιουργήσει μια ροή και στη συνέχεια μπορείτε να προσαρμόσετε τη ροή ώστε να καλύπτει τις ανάγκες σας. + +6. Ενημερώστε την ενεργοποίηση της ροής και ορίστε τον **Φάκελο** στον φάκελο όπου θα αποθηκεύονται τα τιμολόγια. Για παράδειγμα, μπορείτε να ορίσετε τον φάκελο ως **Inbox**. Κάντε κλικ στο **Show advanced options** και ορίστε το **Only with Attachments** σε **Yes**. Αυτό θα διασφαλίσει ότι η ροή εκτελείται μόνο όταν λαμβάνεται ένα email με συνημμένο στον φάκελο. + +7. Αφαιρέστε τις παρακάτω ενέργειες από τη ροή: **HTML to text**, **Compose**, **Compose 2**, **Compose 3** και **Compose 4** επειδή δεν θα τις χρησιμοποιήσετε. + +8. Αφαιρέστε την ενέργεια **Condition** από τη ροή επειδή δεν θα τη χρησιμοποιήσετε. Θα πρέπει να μοιάζει με το παρακάτω στιγμιότυπο οθόνης: + + ![power automate, remove actions](../../../translated_images/powerautomate-remove-actions.7216392fe684ceba4b73c6383edd1cc5e7ded11afd0ca812052a11487d049ef8.el.png) + +9. Κάντε κλικ στο κουμπί **Add an action** και αναζητήστε **Dataverse**. Επιλέξτε την ενέργεια **Add a new row**. + +10. Στην ενέργεια **Extract Information from invoices**, ενημερώστε το **Invoice File** ώστε να δείχνει στο **Attachment Content** από το email. Αυτό θα διασφαλίσει ότι η ροή εξάγει πληροφορίες από το συνημμένο τιμολόγιο. + +11. Επιλέξτε τον **Πίνακα** που δημιουργήσατε νωρίτερα. Για παράδειγμα, μπορείτε να επιλέξετε τον πίνακα **Invoice Information**. Επιλέξτε το δυναμικό περιεχόμενο από την προηγούμενη ενέργεια για να συμπληρώσετε τα παρακάτω πεδία: + + - ID + - Amount + - Date + - Name + - Status - Ορίστε το **Status** σε **Pending**. + - Supplier Email - Χρησιμοποιήστε το **From** δυναμικό περιεχόμενο από την ενεργοποίηση **When a new email arrives**. + + ![power automate add row](../../../translated_images/powerautomate-add-row.5edce45e5dd3d51e5152688dc140ad43e1423e7a9fef9a206f82a7965ea68d73.el.png) + +12. Όταν ολοκληρώσετε τη ροή, κάντε κλικ στο κουμπί **Save** για να αποθηκεύσετε τη ροή. Στη συνέχεια, μπορείτε να δοκιμάσετε τη ροή στέλνοντας ένα email με ένα τιμολόγιο στον φάκελο που καθορίσατε στην ενεργοποίηση. + +> **Η εργασία σας**: Η ροή που μόλις δημιουργήσατε είναι μια καλή αρχή, τώρα πρέπει να σκεφτείτε πώς μπορείτε να δημιουργήσετε μια αυτοματοποίηση που θα επιτρέπει στην οικονομική μας ομάδα να στέλνει ένα email στον προμηθευτή για να τον ενημερώσει για την τρέχουσα κατάσταση του τιμολογίου του. Υπόδειξη: η ροή πρέπει να εκτελείται όταν αλλάζει η κατάσταση του τιμολογίου. + +## Χρήση Μοντέλου AI Δημιουργίας Κειμένου στο Power Automate + +Το Μοντέλο Δημιουργίας Κειμένου με GPT στο AI Builder σας επιτρέπει να δημιουργείτε κείμενο βάσει μιας εντολής και υποστηρίζεται από την υπηρεσία Microsoft Azure OpenAI. Με αυτή τη δυνατότητα, μπορείτε να ενσωματώσετε την τεχνολογία GPT (Generative Pre-Trained Transformer) στις εφαρμογές και τις ροές σας για να δημιουργήσετε μια ποικιλία αυτοματοποιημένων ροών και εφαρμογών με χρήσιμες πληροφορίες. + +Τα μοντέλα GPT υποβάλλονται σε εκτεταμένη εκπαίδευση σε τεράστιες ποσότητες δεδομένων, επιτρέποντάς τους να παράγουν κείμενο που μοιάζει πολύ με την ανθρώπινη γλώσσα όταν τους παρέχεται μια εντολή. Όταν ενσωματώνονται στην αυτοματοποίηση ροής εργασίας, τα μοντέλα AI όπως το GPT μπορούν να αξιοποιηθούν για να απλοποιήσουν και να αυτοματοποιήσουν ένα ευρύ φάσμα εργασιών. + +Για παράδειγμα, μπορείτε να δημιουργήσετε ροές για να δημιουργείτε αυτόματα κείμενο για διάφορες χρήσεις, όπως: προσχέδια email, περιγραφές προϊόντων και άλλα. Μπορείτε επίσης να χρησιμοποιήσετε το μοντέλο για να δημιουργείτε κείμενο για διάφορες εφαρμογές, όπως chatbots και εφαρμογές εξυπηρέτησης πελατών που επιτρέπουν στους εκπροσώπους εξυπηρέτησης πελατών να απαντούν αποτελεσματικά και αποδοτικά σε ερωτήματα πελατών. + +![create a prompt](../../../translated_images/create-prompt-gpt.69d429300c2e870a12ec95556cda9bacf6a173e452cdca02973c90df5f705cee.el.png) + +Για να μάθετε πώς να χρησιμοποιείτε αυτό το Μοντέλο AI στο Power Automate, εξετάστε το [Add intelligence with AI Builder and GPT](https://learn.microsoft.com/training/modules/ai-builder-text-generation/?WT.mc_id=academic-109639-somelezediko) module. + +## Εξαιρετική Δουλειά! Συνεχίστε τη Μάθηση + +Αφού ολοκληρώσετε αυτό το μάθημα, δείτε τη [Συλλογή Μάθησης για Γενετική AI](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) για να συνεχίσετε να αναβαθμίζετε τις γνώσεις σας στη Γενετική AI! + +Προχωρήστε στο Μάθημα 11 όπου θα εξετάσουμε πώς να [ενσωματώσετε τη Γενετική AI με Κλήση Λειτουργιών](../11-integrating-with-function-calling/README.md?WT.mc_id=academic-105 + +--- + +**Αποποίηση ευθύνης**: +Αυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία μετάφρασης AI [Co-op Translator](https://github.com/Azure/co-op-translator). Παρόλο που καταβάλλουμε προσπάθειες για ακρίβεια, παρακαλούμε να έχετε υπόψη ότι οι αυτοματοποιημένες μεταφράσεις ενδέχεται να περιέχουν λάθη ή ανακρίβειες. Το πρωτότυπο έγγραφο στη μητρική του γλώσσα πρέπει να θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε ευθύνη για τυχόν παρεξηγήσεις ή εσφαλμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης. \ No newline at end of file diff --git a/translations/el/11-integrating-with-function-calling/README.md b/translations/el/11-integrating-with-function-calling/README.md index ba0eb55d90..6a20c57bb6 100644 --- a/translations/el/11-integrating-with-function-calling/README.md +++ b/translations/el/11-integrating-with-function-calling/README.md @@ -1,355 +1,359 @@ - -# Ενσωμάτωση με function calling - -[![Integrating with function calling](../../../translated_images/11-lesson-banner.d78860d3e1f041e2c3426b1c052e1590738d2978db584a08efe1efbca299ed82.el.png)](https://aka.ms/gen-ai-lesson11-gh?WT.mc_id=academic-105485-koreyst) - -Έχετε μάθει αρκετά μέχρι τώρα από τα προηγούμενα μαθήματα. Ωστόσο, μπορούμε να βελτιωθούμε περαιτέρω. Κάποια θέματα που μπορούμε να αντιμετωπίσουμε είναι πώς να έχουμε μια πιο συνεπή μορφή απάντησης ώστε να είναι πιο εύκολο να δουλέψουμε με την απάντηση σε επόμενα στάδια. Επίσης, ίσως θέλουμε να προσθέσουμε δεδομένα από άλλες πηγές για να εμπλουτίσουμε περαιτέρω την εφαρμογή μας. - -Τα παραπάνω προβλήματα είναι αυτά που επιδιώκει να αντιμετωπίσει αυτό το κεφάλαιο. - -## Εισαγωγή - -Αυτό το μάθημα θα καλύψει: - -- Εξήγηση του τι είναι το function calling και τις περιπτώσεις χρήσης του. -- Δημιουργία κλήσης συνάρτησης χρησιμοποιώντας το Azure OpenAI. -- Πώς να ενσωματώσετε μια κλήση συνάρτησης σε μια εφαρμογή. - -## Στόχοι Μάθησης - -Στο τέλος αυτού του μαθήματος, θα μπορείτε να: - -- Εξηγήσετε τον σκοπό χρήσης του function calling. -- Ρυθμίσετε το Function Call χρησιμοποιώντας την υπηρεσία Azure OpenAI. -- Σχεδιάσετε αποτελεσματικές κλήσεις συναρτήσεων για την περίπτωση χρήσης της εφαρμογής σας. - -## Σενάριο: Βελτίωση του chatbot μας με συναρτήσεις - -Για αυτό το μάθημα, θέλουμε να δημιουργήσουμε μια λειτουργία για το εκπαιδευτικό μας startup που επιτρέπει στους χρήστες να χρησιμοποιούν ένα chatbot για να βρουν τεχνικά μαθήματα. Θα προτείνουμε μαθήματα που ταιριάζουν στο επίπεδο δεξιοτήτων τους, στον τρέχοντα ρόλο τους και στην τεχνολογία που τους ενδιαφέρει. - -Για να ολοκληρώσουμε αυτό το σενάριο, θα χρησιμοποιήσουμε έναν συνδυασμό: - -- `Azure OpenAI` για να δημιουργήσουμε μια εμπειρία συνομιλίας για τον χρήστη. -- `Microsoft Learn Catalog API` για να βοηθήσουμε τους χρήστες να βρουν μαθήματα βάσει του αιτήματός τους. -- `Function Calling` για να πάρουμε το ερώτημα του χρήστη και να το στείλουμε σε μια συνάρτηση που θα κάνει το αίτημα API. - -Για να ξεκινήσουμε, ας δούμε γιατί θα θέλαμε να χρησιμοποιήσουμε το function calling αρχικά: - -## Γιατί Function Calling - -Πριν το function calling, οι απαντήσεις από ένα LLM ήταν μη δομημένες και ασυνεπείς. Οι προγραμματιστές έπρεπε να γράφουν πολύπλοκο κώδικα επικύρωσης για να διαχειριστούν κάθε παραλλαγή μιας απάντησης. Οι χρήστες δεν μπορούσαν να πάρουν απαντήσεις όπως "Ποιος είναι ο τρέχων καιρός στη Στοκχόλμη;". Αυτό συμβαίνει επειδή τα μοντέλα ήταν περιορισμένα στα δεδομένα με τα οποία είχαν εκπαιδευτεί. - -Το Function Calling είναι μια λειτουργία της υπηρεσίας Azure OpenAI που ξεπερνά τους παρακάτω περιορισμούς: - -- **Συνεπής μορφή απάντησης**. Αν μπορούμε να ελέγξουμε καλύτερα τη μορφή της απάντησης, μπορούμε πιο εύκολα να ενσωματώσουμε την απάντηση σε άλλα συστήματα. -- **Εξωτερικά δεδομένα**. Δυνατότητα χρήσης δεδομένων από άλλες πηγές μιας εφαρμογής σε ένα πλαίσιο συνομιλίας. - -## Εικονογράφηση του προβλήματος μέσω ενός σεναρίου - -> Σας προτείνουμε να χρησιμοποιήσετε το [συμπεριλαμβανόμενο notebook](python/aoai-assignment.ipynb) αν θέλετε να εκτελέσετε το παρακάτω σενάριο. Μπορείτε επίσης απλά να διαβάσετε καθώς προσπαθούμε να δείξουμε ένα πρόβλημα όπου οι συναρτήσεις μπορούν να βοηθήσουν στην επίλυσή του. - -Ας δούμε το παράδειγμα που δείχνει το πρόβλημα της μορφοποίησης της απάντησης: - -Ας υποθέσουμε ότι θέλουμε να δημιουργήσουμε μια βάση δεδομένων με στοιχεία φοιτητών ώστε να προτείνουμε το κατάλληλο μάθημα σε αυτούς. Παρακάτω έχουμε δύο περιγραφές φοιτητών που είναι πολύ παρόμοιες στα δεδομένα που περιέχουν. - -1. Δημιουργούμε μια σύνδεση με τον πόρο Azure OpenAI: - - ```python - import os - import json - from openai import AzureOpenAI - from dotenv import load_dotenv - load_dotenv() - - client = AzureOpenAI( - api_key=os.environ['AZURE_OPENAI_API_KEY'], # this is also the default, it can be omitted - api_version = "2023-07-01-preview" - ) - - deployment=os.environ['AZURE_OPENAI_DEPLOYMENT'] - ``` - - Παρακάτω είναι κώδικας Python για τη ρύθμιση της σύνδεσής μας με το Azure OpenAI όπου ορίζουμε `api_type`, `api_base`, `api_version` και `api_key`. - -1. Δημιουργία δύο περιγραφών φοιτητών χρησιμοποιώντας τις μεταβλητές `student_1_description` και `student_2_description`. - - ```python - student_1_description="Emily Johnson is a sophomore majoring in computer science at Duke University. She has a 3.7 GPA. Emily is an active member of the university's Chess Club and Debate Team. She hopes to pursue a career in software engineering after graduating." - - student_2_description = "Michael Lee is a sophomore majoring in computer science at Stanford University. He has a 3.8 GPA. Michael is known for his programming skills and is an active member of the university's Robotics Club. He hopes to pursue a career in artificial intelligence after finishing his studies." - ``` - - Θέλουμε να στείλουμε τις παραπάνω περιγραφές φοιτητών σε ένα LLM για να αναλύσει τα δεδομένα. Αυτά τα δεδομένα μπορούν αργότερα να χρησιμοποιηθούν στην εφαρμογή μας και να σταλούν σε ένα API ή να αποθηκευτούν σε βάση δεδομένων. - -1. Ας δημιουργήσουμε δύο πανομοιότυπα prompts στα οποία δίνουμε οδηγίες στο LLM για τις πληροφορίες που μας ενδιαφέρουν: - - ```python - prompt1 = f''' - Please extract the following information from the given text and return it as a JSON object: - - name - major - school - grades - club - - This is the body of text to extract the information from: - {student_1_description} - ''' - - prompt2 = f''' - Please extract the following information from the given text and return it as a JSON object: - - name - major - school - grades - club - - This is the body of text to extract the information from: - {student_2_description} - ''' - ``` - - Τα παραπάνω prompts δίνουν οδηγίες στο LLM να εξάγει πληροφορίες και να επιστρέψει την απάντηση σε μορφή JSON. - -1. Αφού ρυθμίσουμε τα prompts και τη σύνδεση με το Azure OpenAI, τώρα θα στείλουμε τα prompts στο LLM χρησιμοποιώντας το `openai.ChatCompletion`. Αποθηκεύουμε το prompt στη μεταβλητή `messages` και ορίζουμε το ρόλο ως `user`. Αυτό μιμείται ένα μήνυμα από χρήστη που γράφεται σε ένα chatbot. - - ```python - # response from prompt one - openai_response1 = client.chat.completions.create( - model=deployment, - messages = [{'role': 'user', 'content': prompt1}] - ) - openai_response1.choices[0].message.content - - # response from prompt two - openai_response2 = client.chat.completions.create( - model=deployment, - messages = [{'role': 'user', 'content': prompt2}] - ) - openai_response2.choices[0].message.content - ``` - -Τώρα μπορούμε να στείλουμε και τα δύο αιτήματα στο LLM και να εξετάσουμε την απάντηση που λαμβάνουμε βρίσκοντάς την ως `openai_response1['choices'][0]['message']['content']`. - -1. Τέλος, μπορούμε να μετατρέψουμε την απάντηση σε μορφή JSON καλώντας το `json.loads`: - - ```python - # Loading the response as a JSON object - json_response1 = json.loads(openai_response1.choices[0].message.content) - json_response1 - ``` - - Απάντηση 1: - - ```json - { - "name": "Emily Johnson", - "major": "computer science", - "school": "Duke University", - "grades": "3.7", - "club": "Chess Club" - } - ``` - - Απάντηση 2: - - ```json - { - "name": "Michael Lee", - "major": "computer science", - "school": "Stanford University", - "grades": "3.8 GPA", - "club": "Robotics Club" - } - ``` - - Παρόλο που τα prompts είναι ίδια και οι περιγραφές παρόμοιες, βλέπουμε ότι οι τιμές της ιδιότητας `Grades` μορφοποιούνται διαφορετικά, καθώς μερικές φορές παίρνουμε τη μορφή `3.7` ή `3.7 GPA` για παράδειγμα. - - Αυτό το αποτέλεσμα οφείλεται στο ότι το LLM παίρνει μη δομημένα δεδομένα με τη μορφή του γραπτού prompt και επιστρέφει επίσης μη δομημένα δεδομένα. Χρειαζόμαστε μια δομημένη μορφή ώστε να ξέρουμε τι να περιμένουμε όταν αποθηκεύουμε ή χρησιμοποιούμε αυτά τα δεδομένα. - -Πώς λύνουμε λοιπόν το πρόβλημα της μορφοποίησης; Με τη χρήση του function calling, μπορούμε να βεβαιωθούμε ότι λαμβάνουμε δομημένα δεδομένα πίσω. Όταν χρησιμοποιούμε function calling, το LLM δεν καλεί ή εκτελεί πραγματικά καμία συνάρτηση. Αντίθετα, δημιουργούμε μια δομή που το LLM ακολουθεί για τις απαντήσεις του. Στη συνέχεια, χρησιμοποιούμε αυτές τις δομημένες απαντήσεις για να ξέρουμε ποια συνάρτηση να εκτελέσουμε στις εφαρμογές μας. - -![function flow](../../../translated_images/Function-Flow.083875364af4f4bb69bd6f6ed94096a836453183a71cf22388f50310ad6404de.el.png) - -Μπορούμε μετά να πάρουμε αυτό που επιστρέφει η συνάρτηση και να το στείλουμε πίσω στο LLM. Το LLM θα απαντήσει στη συνέχεια χρησιμοποιώντας φυσική γλώσσα για να απαντήσει στο ερώτημα του χρήστη. - -## Περιπτώσεις χρήσης για function calls - -Υπάρχουν πολλές διαφορετικές περιπτώσεις όπου οι κλήσεις συναρτήσεων μπορούν να βελτιώσουν την εφαρμογή σας, όπως: - -- **Κλήση Εξωτερικών Εργαλείων**. Τα chatbots είναι εξαιρετικά στο να παρέχουν απαντήσεις σε ερωτήσεις χρηστών. Με τη χρήση function calling, τα chatbots μπορούν να χρησιμοποιούν τα μηνύματα των χρηστών για να ολοκληρώσουν συγκεκριμένες εργασίες. Για παράδειγμα, ένας φοιτητής μπορεί να ζητήσει από το chatbot να "Στείλει ένα email στον καθηγητή μου λέγοντας ότι χρειάζομαι περισσότερη βοήθεια με αυτό το θέμα". Αυτό μπορεί να κάνει μια κλήση στη συνάρτηση `send_email(to: string, body: string)` - -- **Δημιουργία Ερωτημάτων API ή Βάσης Δεδομένων**. Οι χρήστες μπορούν να βρουν πληροφορίες χρησιμοποιώντας φυσική γλώσσα που μετατρέπεται σε μορφοποιημένο ερώτημα ή αίτημα API. Ένα παράδειγμα είναι ένας δάσκαλος που ζητά "Ποιοι είναι οι φοιτητές που ολοκλήρωσαν την τελευταία εργασία" και αυτό μπορεί να καλέσει μια συνάρτηση με όνομα `get_completed(student_name: string, assignment: int, current_status: string)` - -- **Δημιουργία Δομημένων Δεδομένων**. Οι χρήστες μπορούν να πάρουν ένα κείμενο ή CSV και να χρησιμοποιήσουν το LLM για να εξάγουν σημαντικές πληροφορίες. Για παράδειγμα, ένας φοιτητής μπορεί να μετατρέψει ένα άρθρο της Wikipedia για ειρηνευτικές συμφωνίες σε κάρτες μάθησης AI. Αυτό μπορεί να γίνει με μια συνάρτηση που ονομάζεται `get_important_facts(agreement_name: string, date_signed: string, parties_involved: list)` - -## Δημιουργία της Πρώτης σας Κλήσης Συνάρτησης - -Η διαδικασία δημιουργίας μιας κλήσης συνάρτησης περιλαμβάνει 3 βασικά βήματα: - -1. **Κλήση** του Chat Completions API με μια λίστα των συναρτήσεών σας και ένα μήνυμα χρήστη. -2. **Ανάγνωση** της απάντησης του μοντέλου για να εκτελέσετε μια ενέργεια, π.χ. να εκτελέσετε μια συνάρτηση ή κλήση API. -3. **Κλήση** ξανά του Chat Completions API με την απάντηση από τη συνάρτησή σας για να χρησιμοποιήσετε αυτές τις πληροφορίες και να δημιουργήσετε μια απάντηση προς τον χρήστη. - -![LLM Flow](../../../translated_images/LLM-Flow.3285ed8caf4796d7343c02927f52c9d32df59e790f6e440568e2e951f6ffa5fd.el.png) - -### Βήμα 1 - δημιουργία μηνυμάτων - -Το πρώτο βήμα είναι να δημιουργήσουμε ένα μήνυμα χρήστη. Αυτό μπορεί να ανατεθεί δυναμικά παίρνοντας την τιμή από μια είσοδο κειμένου ή μπορείτε να ορίσετε μια τιμή εδώ. Αν είναι η πρώτη φορά που δουλεύετε με το Chat Completions API, πρέπει να ορίσουμε το `role` και το `content` του μηνύματος. - -Το `role` μπορεί να είναι είτε `system` (δημιουργία κανόνων), `assistant` (το μοντέλο) ή `user` (ο τελικός χρήστης). Για το function calling, θα το ορίσουμε ως `user` και ένα παράδειγμα ερώτησης. - -```python -messages= [ {"role": "user", "content": "Find me a good course for a beginner student to learn Azure."} ] -``` - -Με την ανάθεση διαφορετικών ρόλων, γίνεται σαφές στο LLM αν το μήνυμα προέρχεται από το σύστημα ή από τον χρήστη, κάτι που βοηθά στη δημιουργία ιστορικού συνομιλίας πάνω στο οποίο το LLM μπορεί να βασιστεί. - -### Βήμα 2 - δημιουργία συναρτήσεων - -Στη συνέχεια, θα ορίσουμε μια συνάρτηση και τις παραμέτρους της. Θα χρησιμοποιήσουμε μόνο μια συνάρτηση εδώ που ονομάζεται `search_courses`, αλλά μπορείτε να δημιουργήσετε πολλές συναρτήσεις. - -> **Important** : Οι συναρτήσεις περιλαμβάνονται στο μήνυμα συστήματος προς το LLM και μετράνε στο όριο των διαθέσιμων tokens που έχετε. - -Παρακάτω, δημιουργούμε τις συναρτήσεις ως έναν πίνακα αντικειμένων. Κάθε αντικείμενο είναι μια συνάρτηση και έχει τις ιδιότητες `name`, `description` και `parameters`: - -```python -functions = [ - { - "name":"search_courses", - "description":"Retrieves courses from the search index based on the parameters provided", - "parameters":{ - "type":"object", - "properties":{ - "role":{ - "type":"string", - "description":"The role of the learner (i.e. developer, data scientist, student, etc.)" - }, - "product":{ - "type":"string", - "description":"The product that the lesson is covering (i.e. Azure, Power BI, etc.)" - }, - "level":{ - "type":"string", - "description":"The level of experience the learner has prior to taking the course (i.e. beginner, intermediate, advanced)" - } - }, - "required":[ - "role" - ] - } - } -] -``` - -Ας περιγράψουμε κάθε παράδειγμα συνάρτησης πιο αναλυτικά παρακάτω: - -- `name` - Το όνομα της συνάρτησης που θέλουμε να κληθεί. -- `description` - Η περιγραφή του πώς λειτουργεί η συνάρτηση. Εδώ είναι σημαντικό να είμαστε συγκεκριμένοι και σαφείς. -- `parameters` - Μια λίστα με τιμές και μορφή που θέλουμε το μοντέλο να παράγει στην απάντησή του. Ο πίνακας παραμέτρων αποτελείται από αντικείμενα που έχουν τις εξής ιδιότητες: - 1. `type` - Ο τύπος δεδομένων που θα αποθηκευτούν οι ιδιότητες. - 1. `properties` - Λίστα με τις συγκεκριμένες τιμές που το μοντέλο θα χρησιμοποιήσει στην απάντησή του - 1. `name` - Το κλειδί είναι το όνομα της ιδιότητας που το μοντέλο θα χρησιμοποιήσει στην μορφοποιημένη απάντησή του, π.χ. `product`. - 1. `type` - Ο τύπος δεδομένων αυτής της ιδιότητας, π.χ. `string`. - 1. `description` - Περιγραφή της συγκεκριμένης ιδιότητας. - -Υπάρχει επίσης μια προαιρετική ιδιότητα `required` - υποχρεωτική ιδιότητα για να ολοκληρωθεί η κλήση της συνάρτησης. - -### Βήμα 3 - Εκτέλεση της κλήσης συνάρτησης - -Αφού ορίσουμε μια συνάρτηση, τώρα πρέπει να την συμπεριλάβουμε στην κλήση προς το Chat Completion API. Το κάνουμε αυτό προσθέτοντας το `functions` στο αίτημα. Σε αυτή την περίπτωση `functions=functions`. - -Υπάρχει επίσης η επιλογή να ορίσουμε το `function_call` σε `auto`. Αυτό σημαίνει ότι αφήνουμε το LLM να αποφασίσει ποια συνάρτηση πρέπει να κληθεί βάσει του μηνύματος του χρήστη αντί να το ορίσουμε εμείς. - -Ακολουθεί κώδικας όπου καλούμε το `ChatCompletion.create`, σημειώστε πώς ορίζουμε `functions=functions` και `function_call="auto"` δίνοντας έτσι στο LLM την επιλογή πότε να καλέσει τις συναρτήσεις που του παρέχουμε: - -```python -response = client.chat.completions.create(model=deployment, - messages=messages, - functions=functions, - function_call="auto") - -print(response.choices[0].message) -``` - -Η απάντηση που λαμβάνουμε τώρα μοιάζει ως εξής: - -```json -{ - "role": "assistant", - "function_call": { - "name": "search_courses", - "arguments": "{\n \"role\": \"student\",\n \"product\": \"Azure\",\n \"level\": \"beginner\"\n}" - } -} -``` - -Εδώ βλέπουμε πώς η συνάρτηση `search_courses` κλήθηκε και με ποια επιχειρήματα, όπως αναγράφονται στην ιδιότητα `arguments` στην απάντηση JSON. - -Το συμπέρασμα είναι ότι το LLM κατάφερε να βρει τα δεδομένα που ταιριάζουν στα επιχειρήματα της συνάρτησης καθώς τα εξήγαγε από την τιμή που δόθηκε στην παράμετρο `messages` στην κλήση chat completion. Παρακάτω είναι μια υπενθύμιση της τιμής `messages`: - -```python -messages= [ {"role": "user", "content": "Find me a good course for a beginner student to learn Azure."} ] -``` - -Όπως βλέπετε, το `student`, `Azure` και `beginner` εξήχθησαν από τα `messages` και ορίστηκαν ως είσοδος στη συνάρτηση. Η χρήση συναρτήσεων με αυτόν τον τρόπο είναι ένας εξαιρετικός τρόπος να εξάγουμε πληροφορίες από ένα prompt αλλά και να παρέχουμε δομή στο LLM και να έχουμε επαναχρησιμοποιήσιμη λειτουργικότητα. - -Στη συνέχεια, πρέπει να δούμε πώς μπορούμε να το χρησιμοποιήσουμε στην εφαρμογή μας. - -## Ενσωμάτωση Κλήσεων Συναρτήσεων σε Εφαρμογή - -Αφού δοκιμάσουμε την μορφοποιημένη απάντηση από το LLM, τώρα μπορούμε να την ενσωματώσουμε σε μια εφαρμογή. - -### Διαχείριση της ροής - -Για να το ενσωματώσουμε στην εφαρμογή μας, ας ακολουθήσουμε τα παρακάτω βήματα: - -1. Πρώτα, κάνουμε την κλήση στις υπηρεσίες OpenAI και αποθηκεύουμε το μήνυμα σε μια μεταβλητή που ονομάζεται `response_message`. - - ```python - response_message = response.choices[0].message - ``` - -1. Τώρα θα ορίσουμε τη συνάρτηση που θα καλεί το Microsoft Learn API για να πάρει μια λίστα μαθημάτων: - - ```python - import requests - - def search_courses(role, product, level): - url = "https://learn.microsoft.com/api/catalog/" - params = { - "role": role, - "product": product, - "level": level - } - response = requests.get(url, params=params) - modules = response.json()["modules"] - results = [] - for module in modules[:5]: - title = module["title"] - url = module["url"] - results.append({"title": title, "url": url}) - return str(results) - ``` - - Σημειώστε πώς τώρα δημιουργούμε μια πραγματική συνάρτηση Python που αντιστοιχεί στα ονόματα συναρτήσεων που ορίστηκαν στη μεταβλητή `functions`. Κάνουμε επίσης πραγματικές εξωτερικές κλήσεις API για να φέρουμε τα δεδομένα που χρειαζόμαστε. Σε αυτή την περίπτωση, απευθυνόμαστε στο Microsoft Learn API για να αναζητήσουμε εκπαιδευτικά modules. - -Εντάξει, δημιουργήσαμε τη μεταβλητή `functions` και μια αντίστοιχη συνάρτηση Python, πώς λέμε στο LLM -## Υπέροχη δουλειά! Συνέχισε το ταξίδι - -Αφού ολοκληρώσεις αυτό το μάθημα, ρίξε μια ματιά στη [συλλογή Μάθησης για Generative AI](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) για να συνεχίσεις να εξελίσσεις τις γνώσεις σου στο Generative AI! - -Πήγαινε στο Μάθημα 12, όπου θα δούμε πώς να [σχεδιάζουμε UX για εφαρμογές AI](../12-designing-ux-for-ai-applications/README.md?WT.mc_id=academic-105485-koreyst)! - -**Αποποίηση ευθυνών**: -Αυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία αυτόματης μετάφρασης AI [Co-op Translator](https://github.com/Azure/co-op-translator). Παρόλο που επιδιώκουμε την ακρίβεια, παρακαλούμε να έχετε υπόψη ότι οι αυτόματες μεταφράσεις ενδέχεται να περιέχουν λάθη ή ανακρίβειες. Το πρωτότυπο έγγραφο στη γλώσσα του θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε ευθύνη για τυχόν παρεξηγήσεις ή λανθασμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης. \ No newline at end of file + +# Ενσωμάτωση με κλήση λειτουργιών + +[![Ενσωμάτωση με κλήση λειτουργιών](../../../translated_images/11-lesson-banner.d78860d3e1f041e2c3426b1c052e1590738d2978db584a08efe1efbca299ed82.el.png)](https://youtu.be/DgUdCLX8qYQ?si=f1ouQU5HQx6F8Gl2) + +Έχετε μάθει αρκετά μέχρι τώρα στα προηγούμενα μαθήματα. Ωστόσο, μπορούμε να βελτιωθούμε περαιτέρω. Κάποια θέματα που μπορούμε να αντιμετωπίσουμε είναι πώς να έχουμε μια πιο συνεπή μορφή απάντησης για να διευκολύνουμε τη χρήση της απάντησης σε επόμενα στάδια. Επίσης, ίσως θέλουμε να προσθέσουμε δεδομένα από άλλες πηγές για να εμπλουτίσουμε περαιτέρω την εφαρμογή μας. + +Τα παραπάνω προβλήματα είναι αυτά που αυτό το κεφάλαιο επιδιώκει να αντιμετωπίσει. + +## Εισαγωγή + +Αυτό το μάθημα θα καλύψει: + +- Εξήγηση του τι είναι η κλήση λειτουργιών και οι περιπτώσεις χρήσης της. +- Δημιουργία κλήσης λειτουργίας χρησιμοποιώντας το Azure OpenAI. +- Πώς να ενσωματώσετε μια κλήση λειτουργίας σε μια εφαρμογή. + +## Στόχοι Μάθησης + +Μέχρι το τέλος αυτού του μαθήματος, θα μπορείτε να: + +- Εξηγήσετε τον σκοπό της χρήσης της κλήσης λειτουργιών. +- Ρυθμίσετε την Κλήση Λειτουργίας χρησιμοποιώντας την υπηρεσία Azure OpenAI. +- Σχεδιάσετε αποτελεσματικές κλήσεις λειτουργιών για την περίπτωση χρήσης της εφαρμογής σας. + +## Σενάριο: Βελτίωση του chatbot μας με λειτουργίες + +Για αυτό το μάθημα, θέλουμε να δημιουργήσουμε μια δυνατότητα για την εκπαιδευτική μας startup που επιτρέπει στους χρήστες να χρησιμοποιούν ένα chatbot για να βρουν τεχνικά μαθήματα. Θα προτείνουμε μαθήματα που ταιριάζουν στο επίπεδο δεξιοτήτων τους, τον τρέχοντα ρόλο τους και την τεχνολογία που τους ενδιαφέρει. + +Για να ολοκληρώσουμε αυτό το σενάριο, θα χρησιμοποιήσουμε έναν συνδυασμό από: + +- `Azure OpenAI` για να δημιουργήσουμε μια εμπειρία συνομιλίας για τον χρήστη. +- `Microsoft Learn Catalog API` για να βοηθήσουμε τους χρήστες να βρουν μαθήματα βάσει του αιτήματός τους. +- `Κλήση Λειτουργιών` για να πάρουμε το ερώτημα του χρήστη και να το στείλουμε σε μια λειτουργία για να γίνει το αίτημα API. + +Για να ξεκινήσουμε, ας δούμε γιατί θα θέλαμε να χρησιμοποιήσουμε την κλήση λειτουργιών εξαρχής: + +## Γιατί Κλήση Λειτουργιών + +Πριν από την κλήση λειτουργιών, οι απαντήσεις από ένα LLM ήταν μη δομημένες και ασυνεπείς. Οι προγραμματιστές έπρεπε να γράψουν πολύπλοκο κώδικα επαλήθευσης για να βεβαιωθούν ότι μπορούσαν να χειριστούν κάθε παραλλαγή μιας απάντησης. Οι χρήστες δεν μπορούσαν να λάβουν απαντήσεις όπως "Ποιος είναι ο τρέχων καιρός στη Στοκχόλμη;". Αυτό συμβαίνει επειδή τα μοντέλα περιορίζονταν στον χρόνο που είχαν εκπαιδευτεί τα δεδομένα. + +Η Κλήση Λειτουργιών είναι μια δυνατότητα της υπηρεσίας Azure OpenAI για να ξεπεράσει τους εξής περιορισμούς: + +- **Συνεπής μορφή απάντησης**. Αν μπορούμε να ελέγξουμε καλύτερα τη μορφή της απάντησης, μπορούμε πιο εύκολα να την ενσωματώσουμε σε άλλα συστήματα. +- **Εξωτερικά δεδομένα**. Δυνατότητα χρήσης δεδομένων από άλλες πηγές μιας εφαρμογής σε ένα πλαίσιο συνομιλίας. + +## Εικονογράφηση του προβλήματος μέσω ενός σεναρίου + +> Σας προτείνουμε να χρησιμοποιήσετε το [συμπεριλαμβανόμενο notebook](./python/aoai-assignment.ipynb?WT.mc_id=academic-105485-koreyst) αν θέλετε να εκτελέσετε το παρακάτω σενάριο. Μπορείτε επίσης απλά να διαβάσετε καθώς προσπαθούμε να εικονογραφήσουμε ένα πρόβλημα όπου οι λειτουργίες μπορούν να βοηθήσουν στην επίλυσή του. + +Ας δούμε το παράδειγμα που εικονογραφεί το πρόβλημα της μορφής απάντησης: + +Ας πούμε ότι θέλουμε να δημιουργήσουμε μια βάση δεδομένων με δεδομένα μαθητών ώστε να μπορούμε να τους προτείνουμε το κατάλληλο μάθημα. Παρακάτω έχουμε δύο περιγραφές μαθητών που είναι πολύ παρόμοιες στα δεδομένα που περιέχουν. + +1. Δημιουργήστε μια σύνδεση με τον πόρο Azure OpenAI μας: + + ```python + import os + import json + from openai import AzureOpenAI + from dotenv import load_dotenv + load_dotenv() + + client = AzureOpenAI( + api_key=os.environ['AZURE_OPENAI_API_KEY'], # this is also the default, it can be omitted + api_version = "2023-07-01-preview" + ) + + deployment=os.environ['AZURE_OPENAI_DEPLOYMENT'] + ``` + + Παρακάτω είναι κάποιος κώδικας Python για τη διαμόρφωση της σύνδεσής μας με το Azure OpenAI όπου ορίζουμε `api_type`, `api_base`, `api_version` και `api_key`. + +1. Δημιουργία δύο περιγραφών μαθητών χρησιμοποιώντας μεταβλητές `student_1_description` και `student_2_description`. + + ```python + student_1_description="Emily Johnson is a sophomore majoring in computer science at Duke University. She has a 3.7 GPA. Emily is an active member of the university's Chess Club and Debate Team. She hopes to pursue a career in software engineering after graduating." + + student_2_description = "Michael Lee is a sophomore majoring in computer science at Stanford University. He has a 3.8 GPA. Michael is known for his programming skills and is an active member of the university's Robotics Club. He hopes to pursue a career in artificial intelligence after finishing his studies." + ``` + + Θέλουμε να στείλουμε τις παραπάνω περιγραφές μαθητών σε ένα LLM για να αναλύσουμε τα δεδομένα. Αυτά τα δεδομένα μπορούν αργότερα να χρησιμοποιηθούν στην εφαρμογή μας και να σταλούν σε ένα API ή να αποθηκευτούν σε μια βάση δεδομένων. + +1. Ας δημιουργήσουμε δύο πανομοιότυπα prompts στα οποία δίνουμε οδηγίες στο LLM για τις πληροφορίες που μας ενδιαφέρουν: + + ```python + prompt1 = f''' + Please extract the following information from the given text and return it as a JSON object: + + name + major + school + grades + club + + This is the body of text to extract the information from: + {student_1_description} + ''' + + prompt2 = f''' + Please extract the following information from the given text and return it as a JSON object: + + name + major + school + grades + club + + This is the body of text to extract the information from: + {student_2_description} + ''' + ``` + + Τα παραπάνω prompts δίνουν οδηγίες στο LLM να εξάγει πληροφορίες και να επιστρέψει την απάντηση σε μορφή JSON. + +1. Αφού ρυθμίσουμε τα prompts και τη σύνδεση με το Azure OpenAI, τώρα θα στείλουμε τα prompts στο LLM χρησιμοποιώντας `openai.ChatCompletion`. Αποθηκεύουμε το prompt στη μεταβλητή `messages` και αναθέτουμε τον ρόλο `user`. Αυτό γίνεται για να μιμηθούμε ένα μήνυμα από έναν χρήστη που γράφεται σε ένα chatbot. + + ```python + # response from prompt one + openai_response1 = client.chat.completions.create( + model=deployment, + messages = [{'role': 'user', 'content': prompt1}] + ) + openai_response1.choices[0].message.content + + # response from prompt two + openai_response2 = client.chat.completions.create( + model=deployment, + messages = [{'role': 'user', 'content': prompt2}] + ) + openai_response2.choices[0].message.content + ``` + +Τώρα μπορούμε να στείλουμε και τα δύο αιτήματα στο LLM και να εξετάσουμε την απάντηση που λαμβάνουμε βρίσκοντάς την όπως `openai_response1['choices'][0]['message']['content']`. + +1. Τέλος, μπορούμε να μετατρέψουμε την απάντηση σε μορφή JSON καλώντας `json.loads`: + + ```python + # Loading the response as a JSON object + json_response1 = json.loads(openai_response1.choices[0].message.content) + json_response1 + ``` + + Απάντηση 1: + + ```json + { + "name": "Emily Johnson", + "major": "computer science", + "school": "Duke University", + "grades": "3.7", + "club": "Chess Club" + } + ``` + + Απάντηση 2: + + ```json + { + "name": "Michael Lee", + "major": "computer science", + "school": "Stanford University", + "grades": "3.8 GPA", + "club": "Robotics Club" + } + ``` + + Παρόλο που τα prompts είναι ίδια και οι περιγραφές είναι παρόμοιες, βλέπουμε τιμές της ιδιότητας `Grades` να μορφοποιούνται διαφορετικά, καθώς μπορούμε να έχουμε τη μορφή `3.7` ή `3.7 GPA` για παράδειγμα. + + Αυτό το αποτέλεσμα οφείλεται στο γεγονός ότι το LLM λαμβάνει μη δομημένα δεδομένα με τη μορφή του γραπτού prompt και επιστρέφει επίσης μη δομημένα δεδομένα. Χρειαζόμαστε μια δομημένη μορφή ώστε να ξέρουμε τι να περιμένουμε όταν αποθηκεύουμε ή χρησιμοποιούμε αυτά τα δεδομένα. + +Πώς λοιπόν λύνουμε το πρόβλημα της μορφοποίησης; Χρησιμοποιώντας την κλήση λειτουργιών, μπορούμε να βεβαιωθούμε ότι λαμβάνουμε δομημένα δεδομένα πίσω. Όταν χρησιμοποιούμε την κλήση λειτουργιών, το LLM δεν καλεί ή εκτελεί πραγματικά καμία λειτουργία. Αντίθετα, δημιουργούμε μια δομή για το LLM να ακολουθήσει για τις απαντήσεις του. Στη συνέχεια, χρησιμοποιούμε αυτές τις δομημένες απαντήσεις για να ξέρουμε ποια λειτουργία να εκτελέσουμε στις εφαρμογές μας. + +![ροή λειτουργιών](../../../translated_images/Function-Flow.083875364af4f4bb69bd6f6ed94096a836453183a71cf22388f50310ad6404de.el.png) + +Μπορούμε στη συνέχεια να πάρουμε αυτό που επιστρέφεται από τη λειτουργία και να το στείλουμε πίσω στο LLM. Το LLM θα απαντήσει στη συνέχεια χρησιμοποιώντας φυσική γλώσσα για να απαντήσει στο ερώτημα του χρήστη. + +## Περιπτώσεις Χρήσης για τη χρήση κλήσεων λειτουργιών + +Υπάρχουν πολλές διαφορετικές περιπτώσεις χρήσης όπου οι κλήσεις λειτουργιών μπορούν να βελτιώσουν την εφαρμογή σας όπως: + +- **Κλήση Εξωτερικών Εργαλείων**. Τα chatbots είναι εξαιρετικά στο να παρέχουν απαντήσεις σε ερωτήσεις από χρήστες. Χρησιμοποιώντας την κλήση λειτουργιών, τα chatbots μπορούν να χρησιμοποιούν μηνύματα από χρήστες για να ολοκληρώνουν συγκεκριμένες εργασίες. Για παράδειγμα, ένας μαθητής μπορεί να ζητήσει από το chatbot να "Στείλει ένα email στον καθηγητή μου λέγοντας ότι χρειάζομαι περισσότερη βοήθεια με αυτό το θέμα". Αυτό μπορεί να κάνει μια κλήση λειτουργίας στο `send_email(to: string, body: string)`. + +- **Δημιουργία Ερωτημάτων API ή Βάσης Δεδομένων**. Οι χρήστες μπορούν να βρουν πληροφορίες χρησιμοποιώντας φυσική γλώσσα που μετατρέπεται σε μορφοποιημένο ερώτημα ή αίτημα API. Ένα παράδειγμα αυτού θα μπορούσε να είναι ένας καθηγητής που ζητά "Ποιοι είναι οι μαθητές που ολοκλήρωσαν την τελευταία εργασία" που θα μπορούσε να καλέσει μια λειτουργία με όνομα `get_completed(student_name: string, assignment: int, current_status: string)`. + +- **Δημιουργία Δομημένων Δεδομένων**. Οι χρήστες μπορούν να πάρουν ένα μπλοκ κειμένου ή CSV και να χρησιμοποιήσουν το LLM για να εξάγουν σημαντικές πληροφορίες από αυτό. Για παράδειγμα, ένας μαθητής μπορεί να μετατρέψει ένα άρθρο της Wikipedia για συμφωνίες ειρήνης για να δημιουργήσει AI flashcards. Αυτό μπορεί να γίνει χρησιμοποιώντας μια λειτουργία που ονομάζεται `get_important_facts(agreement_name: string, date_signed: string, parties_involved: list)`. + +## Δημιουργία της Πρώτης Κλήσης Λειτουργίας σας + +Η διαδικασία δημιουργίας μιας κλήσης λειτουργίας περιλαμβάνει 3 βασικά βήματα: + +1. **Κλήση** του API Συμπληρώσεων Συνομιλίας με μια λίστα των λειτουργιών σας και ένα μήνυμα χρήστη. +2. **Ανάγνωση** της απάντησης του μοντέλου για να εκτελέσετε μια ενέργεια, π.χ. εκτέλεση μιας λειτουργίας ή κλήση API. +3. **Δημιουργία** μιας άλλης κλήσης στο API Συμπληρώσεων Συνομιλίας με την απάντηση από τη λειτουργία σας για να χρησιμοποιήσετε αυτές τις πληροφορίες για να δημιουργήσετε μια απάντηση στον χρήστη. + +![Ροή LLM](../../../translated_images/LLM-Flow.3285ed8caf4796d7343c02927f52c9d32df59e790f6e440568e2e951f6ffa5fd.el.png) + +### Βήμα 1 - δημιουργία μηνυμάτων + +Το πρώτο βήμα είναι να δημιουργήσετε ένα μήνυμα χρήστη. Αυτό μπορεί να ανατεθεί δυναμικά λαμβάνοντας την τιμή μιας εισόδου κειμένου ή μπορείτε να αναθέσετε μια τιμή εδώ. Αν είναι η πρώτη σας φορά που εργάζεστε με το API Συμπληρώσεων Συνομιλίας, πρέπει να ορίσουμε τον `ρόλο` και το `περιεχόμενο` του μηνύματος. + +Ο `ρόλος` μπορεί να είναι είτε `system` (δημιουργία κανόνων), `assistant` (το μοντέλο) ή `user` (ο τελικός χρήστης). Για την κλήση λειτουργιών, θα το αναθέσουμε ως `user` και ένα παράδειγμα ερώτησης. + +```python +messages= [ {"role": "user", "content": "Find me a good course for a beginner student to learn Azure."} ] +``` + +Αναθέτοντας διαφορετικούς ρόλους, γίνεται σαφές στο LLM αν είναι το σύστημα που λέει κάτι ή ο χρήστης, κάτι που βοηθά στη δημιουργία ιστορικού συνομιλίας που το LLM μπορεί να βασιστεί. + +### Βήμα 2 - δημιουργία λειτουργιών + +Στη συνέχεια, θα ορίσουμε μια λειτουργία και τις παραμέτρους αυτής της λειτουργίας. Θα χρησιμοποιήσουμε μόνο μία λειτουργία εδώ που ονομάζεται `search_courses`, αλλά μπορείτε να δημιουργήσετε πολλαπλές λειτουργίες. + +> **Σημαντικό**: Οι λειτουργίες περιλαμβάνονται στο μήνυμα συστήματος προς το LLM και θα περιλαμβάνονται στον αριθμό διαθέσιμων tokens που έχετε. + +Παρακάτω, δημιουργούμε τις λειτουργίες ως έναν πίνακα αντικειμένων. Κάθε αντικείμενο είναι μια λειτουργία και έχει ιδιότητες `name`, `description` και `parameters`: + +```python +functions = [ + { + "name":"search_courses", + "description":"Retrieves courses from the search index based on the parameters provided", + "parameters":{ + "type":"object", + "properties":{ + "role":{ + "type":"string", + "description":"The role of the learner (i.e. developer, data scientist, student, etc.)" + }, + "product":{ + "type":"string", + "description":"The product that the lesson is covering (i.e. Azure, Power BI, etc.)" + }, + "level":{ + "type":"string", + "description":"The level of experience the learner has prior to taking the course (i.e. beginner, intermediate, advanced)" + } + }, + "required":[ + "role" + ] + } + } +] +``` + +Ας περιγράψουμε κάθε περίπτωση λειτουργίας πιο αναλυτικά παρακάτω: + +- `name` - Το όνομα της λειτουργίας που θέλουμε να καλέσουμε. +- `description` - Αυτή είναι η περιγραφή του πώς λειτουργεί η λειτουργία. Εδώ είναι σημαντικό να είστε συγκεκριμένοι και σαφείς. +- `parameters` - Μια λίστα τιμών και μορφής που θέλετε το μοντέλο να παράγει στην απάντησή του. Ο πίνακας παραμέτρων αποτελείται από αντικείμενα όπου τα αντικείμενα έχουν τις εξής ιδιότητες: + 1. `type` - Ο τύπος δεδομένων που θα αποθηκευτούν οι ιδιότητες. + 1. `properties` - Λίστα των συγκεκριμένων τιμών που το μοντέλο θα χρησιμοποιήσει για την απάντησή του. + 1. `name` - Το κλειδί είναι το όνομα της ιδιότητας που το μοντέλο θα χρησιμοποιήσει στη μορφοποιημένη απάντησή του, για παράδειγμα, `product`. + 1. `type` - Ο τύπος δεδομένων αυτής της ιδιότητας, για παράδειγμα, `string`. + 1. `description` - Περιγραφή της συγκεκριμένης ιδιότητας. + +Υπάρχει επίσης μια προαιρετική ιδιότητα `required` - απαραίτητη ιδιότητα για να ολοκληρωθεί η κλήση λειτουργίας. + +### Βήμα 3 - Δημιουργία της κλήσης λειτουργίας + +Αφού ορίσουμε μια λειτουργία, τώρα πρέπει να την συμπεριλάβουμε στην κλήση προς το API Συμπληρώσεων Συνομιλίας. Το κάνουμε αυτό προσθέτοντας `functions` στο αίτημα. Σε αυτή την περίπτωση `functions=functions`. + +Υπάρχει επίσης μια επιλογή να ορίσουμε το `function_call` σε `auto`. Αυτό σημαίνει ότι θα αφήσουμε το LLM να αποφασίσει ποια λειτουργία πρέπει να καλεστεί βάσει του μηνύματος χρήστη αντί να την αναθέσουμε εμείς. + +Ακολουθεί κάποιος κώδικας παρακάτω όπου καλούμε το `ChatCompletion.create`, σημειώστε πώς ορίζουμε `functions=functions` και `function_call="auto"` και έτσι δίνουμε στο LLM την επιλογή πότε να καλέσει τις λειτουργίες που του παρέχουμε: + +```python +response = client.chat.completions.create(model=deployment, + messages=messages, + functions=functions, + function_call="auto") + +print(response.choices[0].message) +``` + +Η απάντηση που επιστρέφεται τώρα μοιάζει με την εξής: + +```json +{ + "role": "assistant", + "function_call": { + "name": "search_courses", + "arguments": "{\n \"role\": \"student\",\n \"product\": \"Azure\",\n \"level\": \"beginner\"\n}" + } +} +``` + +Εδώ μπορούμε να δούμε πώς η λειτουργία `search_courses` καλέστηκε και με ποια επιχειρήματα, όπως αναφέρονται στην ιδιότητα `arguments` στην απάντηση JSON. + +Το συμπέρασμα είναι ότι το LLM ήταν σε θέση να βρει τα δεδομένα για να ταιριάξει τα επιχειρήματα της λειτουργίας καθώς τα εξήγαγε από την τιμή που παρέχεται στην παράμετρο `messages` στην κλήση συμπλήρωσης συνομιλίας. Παρακάτω είναι μια υπενθύμιση της τιμής `messages`: + +```python +messages= [ {"role": "user", "content": "Find me a good course for a beginner student to learn Azure."} ] +``` + +Όπως μπορείτε να δείτε, το `student`, το `Azure` και το `beginner` εξήχθησαν από το `messages` και ορίστηκαν ως είσοδος στη λειτουργία. Χρησιμοποιώντας λειτουργίες με αυτόν τον τρόπο είναι ένας εξαιρετικός τρόπος για να εξάγετε πληροφορίες από ένα prompt αλλά και να παρέχετε δομή στο LLM και να έχετε επαναχρησιμοποιήσιμη λειτουργικότητα. + +Στη συνέχεια, πρέπει να δούμε πώς μπορούμε να χρησιμοποιήσουμε αυτό στην εφαρμογή μας. + +## Ενσωμάτωση Κλήσεων Λειτουργιών σε μια Εφαρμογή + +Αφού δοκιμάσουμε τη μορφοποιημένη απάντηση από το LLM, μπορούμε τώρα να την ενσωματώσουμε σε μια εφαρμογή. + +### Διαχείριση της ροής + +Για να ενσωματώσουμε αυτό στην εφαρμογή μας, ας ακολουθήσουμε τα εξής βήματα: + +1. Πρώτα, ας κάνουμε την κλήση στις υπηρεσίες OpenAI και να αποθηκεύσουμε το μήνυμα σε μια μεταβλητή που ονομάζεται `response_message`. + + ```python + response_message = response.choices[0].message + ``` + +1. Τώρα θα ορίσουμε τη λειτουργία που θα καλέσει το Microsoft Learn API για να πάρει μια λίστα μαθημάτων: + + ```python + import requests + + def search_courses(role, product, level): + url = "https://learn.microsoft.com/api/catalog/" + params = { + "role": role, + "product": product, + "level": level + } + response = requests.get(url, params=params) + modules = response.json()["modules"] + results = [] + for module in modules[:5]: + title = module["title"] + url = module["url"] + results.append({"title": title, "url": url}) + return str(results) + ``` + + Σημειώστε πώς τώρα δημιουργούμε μια πραγματική λειτουργία Python που αντιστοιχεί στα ονόματα λειτουργιών που εισήχθησαν στη μεταβλητή +- Δημιουργήστε χειρισμό σφαλμάτων όταν η κλήση της συνάρτησης και/ή η κλήση του API δεν επιστρέφει κατάλληλα μαθήματα + +Υπόδειξη: Ακολουθήστε τη σελίδα [Learn API reference documentation](https://learn.microsoft.com/training/support/catalog-api-developer-reference?WT.mc_id=academic-105485-koreyst) για να δείτε πώς και πού είναι διαθέσιμα αυτά τα δεδομένα. + +## Εξαιρετική Δουλειά! Συνεχίστε το Ταξίδι + +Αφού ολοκληρώσετε αυτό το μάθημα, δείτε τη συλλογή μας [Generative AI Learning collection](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) για να συνεχίσετε να αναβαθμίζετε τις γνώσεις σας στη Γενετική Τεχνητή Νοημοσύνη! + +Προχωρήστε στο Μάθημα 12, όπου θα εξετάσουμε πώς να [σχεδιάσετε UX για εφαρμογές AI](../12-designing-ux-for-ai-applications/README.md?WT.mc_id=academic-105485-koreyst)! + +--- + +**Αποποίηση ευθύνης**: +Αυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία μετάφρασης AI [Co-op Translator](https://github.com/Azure/co-op-translator). Παρόλο που καταβάλλουμε προσπάθειες για ακρίβεια, παρακαλούμε να γνωρίζετε ότι οι αυτοματοποιημένες μεταφράσεις ενδέχεται να περιέχουν λάθη ή ανακρίβειες. Το πρωτότυπο έγγραφο στη μητρική του γλώσσα θα πρέπει να θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε ευθύνη για τυχόν παρεξηγήσεις ή εσφαλμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης. \ No newline at end of file diff --git a/translations/el/12-designing-ux-for-ai-applications/README.md b/translations/el/12-designing-ux-for-ai-applications/README.md index 3323320a0a..71ee19ced3 100644 --- a/translations/el/12-designing-ux-for-ai-applications/README.md +++ b/translations/el/12-designing-ux-for-ai-applications/README.md @@ -1,134 +1,134 @@ - -# Σχεδιασμός UX για Εφαρμογές Τεχνητής Νοημοσύνης - -[![Σχεδιασμός UX για Εφαρμογές Τεχνητής Νοημοσύνης](../../../translated_images/12-lesson-banner.c53c3c7c802e8f563953ce388f6a987ca493472c724d924b060be470951c53c8.el.png)](https://aka.ms/gen-ai-lesson12-gh?WT.mc_id=academic-105485-koreyst) - -> _(Κάντε κλικ στην εικόνα παραπάνω για να δείτε το βίντεο αυτού του μαθήματος)_ - -Η εμπειρία χρήστη είναι πολύ σημαντική όταν δημιουργούμε εφαρμογές. Οι χρήστες πρέπει να μπορούν να χρησιμοποιούν την εφαρμογή σας αποτελεσματικά για να ολοκληρώνουν εργασίες. Η αποτελεσματικότητα είναι σημαντική, αλλά εξίσου σημαντικό είναι να σχεδιάζετε εφαρμογές που μπορούν να χρησιμοποιηθούν από όλους, ώστε να είναι _προσβάσιμες_. Αυτό το κεφάλαιο εστιάζει σε αυτό το θέμα, ώστε να καταλήξετε να σχεδιάσετε μια εφαρμογή που οι άνθρωποι μπορούν και θέλουν να χρησιμοποιήσουν. - -## Εισαγωγή - -Η εμπειρία χρήστη αφορά τον τρόπο με τον οποίο ο χρήστης αλληλεπιδρά και χρησιμοποιεί ένα συγκεκριμένο προϊόν ή υπηρεσία, είτε πρόκειται για σύστημα, εργαλείο ή σχεδιασμό. Όταν αναπτύσσουμε εφαρμογές Τεχνητής Νοημοσύνης, οι προγραμματιστές δεν εστιάζουν μόνο στην αποτελεσματικότητα της εμπειρίας χρήστη, αλλά και στην ηθική της. Σε αυτό το μάθημα, θα δούμε πώς να δημιουργούμε εφαρμογές Τεχνητής Νοημοσύνης (AI) που καλύπτουν τις ανάγκες των χρηστών. - -Το μάθημα καλύπτει τα εξής: - -- Εισαγωγή στην Εμπειρία Χρήστη και Κατανόηση των Αναγκών των Χρηστών -- Σχεδιασμός Εφαρμογών AI για Εμπιστοσύνη και Διαφάνεια -- Σχεδιασμός Εφαρμογών AI για Συνεργασία και Ανατροφοδότηση - -## Στόχοι μάθησης - -Μετά από αυτό το μάθημα, θα μπορείτε να: - -- Κατανοείτε πώς να δημιουργείτε εφαρμογές AI που καλύπτουν τις ανάγκες των χρηστών. -- Σχεδιάζετε εφαρμογές AI που ενισχύουν την εμπιστοσύνη και τη συνεργασία. - -### Προαπαιτούμενα - -Αφιερώστε λίγο χρόνο και διαβάστε περισσότερα για [την εμπειρία χρήστη και το design thinking.](https://learn.microsoft.com/training/modules/ux-design?WT.mc_id=academic-105485-koreyst) - -## Εισαγωγή στην Εμπειρία Χρήστη και Κατανόηση των Αναγκών των Χρηστών - -Στην φανταστική μας startup στον χώρο της εκπαίδευσης, έχουμε δύο βασικούς χρήστες: εκπαιδευτικούς και μαθητές. Κάθε ομάδα έχει διαφορετικές ανάγκες. Ο σχεδιασμός με επίκεντρο τον χρήστη δίνει προτεραιότητα στον χρήστη, διασφαλίζοντας ότι τα προϊόντα είναι σχετικά και ωφέλιμα για αυτούς που προορίζονται. - -Η εφαρμογή πρέπει να είναι **χρήσιμη, αξιόπιστη, προσβάσιμη και ευχάριστη** για να προσφέρει καλή εμπειρία χρήστη. - -### Χρηστικότητα - -Χρήσιμη σημαίνει ότι η εφαρμογή έχει λειτουργίες που ταιριάζουν στον σκοπό της, όπως η αυτοματοποίηση της βαθμολόγησης ή η δημιουργία καρτών επανάληψης. Μια εφαρμογή που αυτοματοποιεί τη βαθμολόγηση πρέπει να μπορεί να αποδίδει βαθμούς με ακρίβεια και αποτελεσματικότητα, σύμφωνα με προκαθορισμένα κριτήρια. Αντίστοιχα, μια εφαρμογή που δημιουργεί κάρτες επανάληψης πρέπει να μπορεί να φτιάχνει σχετικές και ποικίλες ερωτήσεις με βάση τα δεδομένα της. - -### Αξιοπιστία - -Αξιόπιστη σημαίνει ότι η εφαρμογή εκτελεί τις εργασίες της σταθερά και χωρίς σφάλματα. Ωστόσο, η AI όπως και οι άνθρωποι δεν είναι τέλεια και μπορεί να κάνει λάθη. Οι εφαρμογές μπορεί να συναντήσουν σφάλματα ή απρόβλεπτες καταστάσεις που απαιτούν ανθρώπινη παρέμβαση ή διόρθωση. Πώς αντιμετωπίζετε τα σφάλματα; Στην τελευταία ενότητα του μαθήματος, θα δούμε πώς σχεδιάζονται τα συστήματα AI για συνεργασία και ανατροφοδότηση. - -### Προσβασιμότητα - -Προσβάσιμη σημαίνει ότι η εμπειρία χρήστη επεκτείνεται σε χρήστες με διάφορες ικανότητες, συμπεριλαμβανομένων ατόμων με αναπηρίες, ώστε κανείς να μην μένει εκτός. Ακολουθώντας τις οδηγίες και τις αρχές προσβασιμότητας, οι λύσεις AI γίνονται πιο συμπεριληπτικές, χρηστικές και ωφέλιμες για όλους. - -### Ευχάριστη - -Ευχάριστη σημαίνει ότι η εφαρμογή είναι ευχάριστη στη χρήση. Μια ελκυστική εμπειρία χρήστη μπορεί να έχει θετικό αντίκτυπο στον χρήστη, ενθαρρύνοντάς τον να επιστρέψει στην εφαρμογή και να αυξήσει τα έσοδα της επιχείρησης. - -![εικόνα που απεικονίζει τις παραμέτρους UX στην AI](../../../translated_images/uxinai.d5b4ed690f5cefff0c53ffcc01b480cdc1828402e1fdbc980490013a3c50935a.el.png) - -Δεν λύνονται όλα τα προβλήματα με AI. Η AI έρχεται να ενισχύσει την εμπειρία χρήστη, είτε αυτοματοποιώντας χειροκίνητες εργασίες, είτε εξατομικεύοντας την εμπειρία. - -## Σχεδιασμός Εφαρμογών AI για Εμπιστοσύνη και Διαφάνεια - -Η οικοδόμηση εμπιστοσύνης είναι κρίσιμη όταν σχεδιάζουμε εφαρμογές AI. Η εμπιστοσύνη διασφαλίζει ότι ο χρήστης νιώθει σίγουρος πως η εφαρμογή θα κάνει τη δουλειά, θα δίνει σταθερά αποτελέσματα και τα αποτελέσματα θα είναι αυτά που χρειάζεται. Ο κίνδυνος εδώ είναι η έλλειψη εμπιστοσύνης ή η υπερβολική εμπιστοσύνη. Έλλειψη εμπιστοσύνης υπάρχει όταν ο χρήστης δεν εμπιστεύεται το σύστημα AI, οδηγώντας στην απόρριψη της εφαρμογής. Υπερβολική εμπιστοσύνη υπάρχει όταν ο χρήστης υπερεκτιμά τις δυνατότητες του συστήματος AI, εμπιστευόμενος υπερβολικά το AI. Για παράδειγμα, ένα αυτόματο σύστημα βαθμολόγησης, αν ο εκπαιδευτικός το εμπιστευτεί υπερβολικά, μπορεί να μην ελέγξει κάποια γραπτά, με αποτέλεσμα άδικους ή λανθασμένους βαθμούς ή χαμένες ευκαιρίες για ανατροφοδότηση και βελτίωση. - -Δύο τρόποι για να τοποθετήσετε την εμπιστοσύνη στο επίκεντρο του σχεδιασμού είναι η εξηγήσιμότητα και ο έλεγχος. - -### Εξηγήσιμότητα - -Όταν η AI βοηθά στη λήψη αποφάσεων, όπως στη μετάδοση γνώσης στις επόμενες γενιές, είναι σημαντικό οι εκπαιδευτικοί και οι γονείς να κατανοούν πώς λαμβάνονται οι αποφάσεις της AI. Αυτό είναι η εξηγήσιμότητα - η κατανόηση του πώς οι εφαρμογές AI παίρνουν αποφάσεις. Ο σχεδιασμός για εξηγήσιμότητα περιλαμβάνει την προσθήκη λεπτομερειών που δείχνουν πώς η AI έφτασε στο αποτέλεσμα. Το κοινό πρέπει να γνωρίζει ότι το αποτέλεσμα δημιουργήθηκε από AI και όχι από άνθρωπο. Για παράδειγμα, αντί να λέτε "Ξεκινήστε συνομιλία με τον καθηγητή σας τώρα", πείτε "Χρησιμοποιήστε τον AI καθηγητή που προσαρμόζεται στις ανάγκες σας και σας βοηθά να μάθετε με τον δικό σας ρυθμό." - -![σελίδα εφαρμογής με σαφή απεικόνιση της εξηγήσιμότητας στην AI](../../../translated_images/explanability-in-ai.134426a96b498fbfdc80c75ae0090aedc0fc97424ae0734fccf7fb00a59a20d9.el.png) - -Ένα ακόμα παράδειγμα είναι το πώς η AI χρησιμοποιεί τα προσωπικά δεδομένα του χρήστη. Για παράδειγμα, ένας μαθητής μπορεί να έχει περιορισμούς λόγω του ρόλου του. Η AI μπορεί να μην αποκαλύπτει απαντήσεις, αλλά να καθοδηγεί τον χρήστη να σκεφτεί πώς να λύσει το πρόβλημα. - -![AI που απαντά σε ερωτήσεις με βάση το ρόλο](../../../translated_images/solving-questions.b7dea1604de0cbd2e9c5fa00b1a68a0ed77178a035b94b9213196b9d125d0be8.el.png) - -Ένα τελευταίο σημαντικό σημείο της εξηγήσιμότητας είναι η απλοποίηση των εξηγήσεων. Οι μαθητές και οι εκπαιδευτικοί δεν είναι απαραίτητα ειδικοί στην AI, οπότε οι εξηγήσεις για το τι μπορεί ή δεν μπορεί να κάνει η εφαρμογή πρέπει να είναι απλές και κατανοητές. - -![απλοποιημένες εξηγήσεις για τις δυνατότητες της AI](../../../translated_images/simplified-explanations.4679508a406c3621fa22bad4673e717fbff02f8b8d58afcab8cb6f1aa893a82f.el.png) - -### Έλεγχος - -Η γενετική AI δημιουργεί συνεργασία μεταξύ AI και χρήστη, όπου ο χρήστης μπορεί να τροποποιεί τα prompts για διαφορετικά αποτελέσματα. Επίσης, όταν παράγεται ένα αποτέλεσμα, ο χρήστης πρέπει να μπορεί να το τροποποιεί, αποκτώντας αίσθηση ελέγχου. Για παράδειγμα, στη χρήση του Bing, μπορείτε να προσαρμόσετε το prompt ως προς τη μορφή, τον τόνο και το μήκος. Επιπλέον, μπορείτε να κάνετε αλλαγές στο αποτέλεσμα όπως φαίνεται παρακάτω: - -![Αποτελέσματα αναζήτησης Bing με επιλογές τροποποίησης του prompt και του αποτελέσματος](../../../translated_images/bing1.293ae8527dbe2789b675c8591c9fb3cb1aa2ada75c2877f9aa9edc059f7a8b1c.el.png) - -Μια άλλη δυνατότητα στο Bing που δίνει έλεγχο στον χρήστη είναι η επιλογή συμμετοχής ή μη στη χρήση των δεδομένων από την AI. Σε μια σχολική εφαρμογή, ένας μαθητής μπορεί να θέλει να χρησιμοποιήσει τις σημειώσεις του και τα υλικά του εκπαιδευτικού ως υλικό επανάληψης. - -![Αποτελέσματα αναζήτησης Bing με επιλογές τροποποίησης του prompt και του αποτελέσματος](../../../translated_images/bing2.309f4845528a88c28c1c9739fb61d91fd993dc35ebe6fc92c66791fb04fceb4d.el.png) - -> Όταν σχεδιάζετε εφαρμογές AI, η πρόθεση είναι σημαντική για να μην υπερ-εμπιστευτούν οι χρήστες και να μην έχουν μη ρεαλιστικές προσδοκίες για τις δυνατότητες της. Ένας τρόπος να το πετύχετε είναι να δημιουργήσετε "τριβή" μεταξύ των prompts και των αποτελεσμάτων. Υπενθυμίζοντας στον χρήστη ότι πρόκειται για AI και όχι για άνθρωπο. - -## Σχεδιασμός Εφαρμογών AI για Συνεργασία και Ανατροφοδότηση - -Όπως αναφέρθηκε νωρίτερα, η γενετική AI δημιουργεί συνεργασία μεταξύ χρήστη και AI. Συνήθως, ο χρήστης εισάγει ένα prompt και η AI παράγει ένα αποτέλεσμα. Τι γίνεται αν το αποτέλεσμα είναι λάθος; Πώς χειρίζεται η εφαρμογή τα σφάλματα; Η AI κατηγορεί τον χρήστη ή εξηγεί το σφάλμα; - -Οι εφαρμογές AI πρέπει να είναι σχεδιασμένες ώστε να δέχονται και να παρέχουν ανατροφοδότηση. Αυτό βοηθά όχι μόνο στη βελτίωση του συστήματος AI, αλλά και στην ενίσχυση της εμπιστοσύνης των χρηστών. Ένας κύκλος ανατροφοδότησης πρέπει να ενσωματώνεται στο σχεδιασμό, π.χ. με ένα απλό thumbs up ή down στο αποτέλεσμα. - -Ένας άλλος τρόπος είναι να επικοινωνούνται ξεκάθαρα οι δυνατότητες και οι περιορισμοί του συστήματος. Όταν ο χρήστης κάνει λάθος ζητώντας κάτι πέρα από τις δυνατότητες της AI, πρέπει να υπάρχει τρόπος να το διαχειριστεί η εφαρμογή, όπως φαίνεται παρακάτω. - -![Ανατροφοδότηση και διαχείριση σφαλμάτων](../../../translated_images/feedback-loops.7955c134429a94663443ad74d59044f8dc4ce354577f5b79b4bd2533f2cafc6f.el.png) - -Τα σφάλματα συστήματος είναι συχνά σε εφαρμογές όπου ο χρήστης μπορεί να χρειάζεται πληροφορίες εκτός του πεδίου της AI ή η εφαρμογή μπορεί να έχει όριο στον αριθμό ερωτήσεων/θεμάτων για τα οποία μπορεί να δημιουργήσει περιλήψεις. Για παράδειγμα, μια εφαρμογή AI που έχει εκπαιδευτεί μόνο σε Ιστορία και Μαθηματικά, δεν μπορεί να απαντήσει σε ερωτήσεις για τη Γεωγραφία. Για να το αντιμετωπίσει, το σύστημα AI μπορεί να απαντήσει: "Συγγνώμη, το προϊόν μας έχει εκπαιδευτεί με δεδομένα στα εξής θέματα....., δεν μπορώ να απαντήσω στην ερώτηση που κάνατε." - -Οι εφαρμογές AI δεν είναι τέλειες, επομένως είναι αναμενόμενο να κάνουν λάθη. Όταν σχεδιάζετε τις εφαρμογές σας, φροντίστε να υπάρχει χώρος για ανατροφοδότηση από τους χρήστες και διαχείριση σφαλμάτων με τρόπο απλό και κατανοητό. - -## Εργασία - -Πάρτε οποιαδήποτε εφαρμογή AI έχετε δημιουργήσει μέχρι τώρα και σκεφτείτε να εφαρμόσετε τα παρακάτω βήματα: - -- **Ευχάριστη:** Σκεφτείτε πώς μπορείτε να κάνετε την εφαρμογή σας πιο ευχάριστη. Προσθέτετε εξηγήσεις παντού; Ενθαρρύνετε τον χρήστη να εξερευνήσει; Πώς διατυπώνετε τα μηνύματα σφάλματος; - -- **Χρηστικότητα:** Αν φτιάχνετε web app, βεβαιωθείτε ότι η εφαρμογή σας είναι πλοηγήσιμη τόσο με ποντίκι όσο και με πληκτρολόγιο. - -- **Εμπιστοσύνη και διαφάνεια:** Μην εμπιστεύεστε απόλυτα την AI και τα αποτελέσματά της, σκεφτείτε πώς θα προσθέτατε έναν άνθρωπο στη διαδικασία για να επαληθεύσει το αποτέλεσμα. Επίσης, σκεφτείτε και εφαρμόστε άλλους τρόπους για να πετύχετε εμπιστοσύνη και διαφάνεια. - -- **Έλεγχος:** Δώστε στον χρήστη τον έλεγχο των δεδομένων που παρέχει στην εφαρμογή. Εφαρμόστε τρόπο ώστε ο χρήστης να μπορεί να επιλέξει αν θα συμμετέχει ή όχι στη συλλογή δεδομένων στην εφαρμογή AI. - - - -## Συνεχίστε τη Μάθησή σας! - -Αφού ολοκληρώσετε αυτό το μάθημα, δείτε τη [συλλογή μάθησης για Generative AI](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) για να συνεχίσετε να αναβαθμίζετε τις γνώσεις σας στην Generative AI! - -Προχωρήστε στο Μάθημα 13, όπου θα δούμε πώς [να ασφαλίζετε εφαρμογές AI](../13-securing-ai-applications/README.md?WT.mc_id=academic-105485-koreyst)! - ---- - -**Αποποίηση Ευθύνης**: -Αυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία αυτόματης μετάφρασης AI [Co-op Translator](https://github.com/Azure/co-op-translator). Παρότι καταβάλλουμε προσπάθειες για ακρίβεια, παρακαλούμε να γνωρίζετε ότι οι αυτόματες μεταφράσεις ενδέχεται να περιέχουν σφάλματα ή ανακρίβειες. Το πρωτότυπο έγγραφο στη μητρική του γλώσσα πρέπει να θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε ευθύνη για τυχόν παρανοήσεις ή εσφαλμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης. \ No newline at end of file + +# Σχεδιασμός UX για Εφαρμογές AI + +[![Σχεδιασμός UX για Εφαρμογές AI](../../../translated_images/12-lesson-banner.c53c3c7c802e8f563953ce388f6a987ca493472c724d924b060be470951c53c8.el.png)](https://youtu.be/VKbCejSICA8?si=MKj7GQYHfXRZyWW6) + +> _(Κάντε κλικ στην παραπάνω εικόνα για να δείτε το βίντεο αυτού του μαθήματος)_ + +Η εμπειρία χρήστη είναι μια πολύ σημαντική πτυχή της δημιουργίας εφαρμογών. Οι χρήστες πρέπει να μπορούν να χρησιμοποιούν την εφαρμογή σας με αποτελεσματικό τρόπο για να εκτελούν εργασίες. Η αποτελεσματικότητα είναι ένα πράγμα, αλλά πρέπει επίσης να σχεδιάσετε εφαρμογές ώστε να μπορούν να χρησιμοποιηθούν από όλους, κάνοντάς τες _προσβάσιμες_. Αυτό το κεφάλαιο επικεντρώνεται σε αυτόν τον τομέα, ώστε να καταλήξετε να σχεδιάσετε μια εφαρμογή που οι άνθρωποι μπορούν και θέλουν να χρησιμοποιήσουν. + +## Εισαγωγή + +Η εμπειρία χρήστη αφορά τον τρόπο με τον οποίο ένας χρήστης αλληλεπιδρά και χρησιμοποιεί ένα συγκεκριμένο προϊόν ή υπηρεσία, είτε πρόκειται για σύστημα, εργαλείο ή σχεδιασμό. Κατά την ανάπτυξη εφαρμογών AI, οι προγραμματιστές δεν εστιάζουν μόνο στη διασφάλιση της αποτελεσματικής εμπειρίας χρήστη αλλά και της ηθικής. Σε αυτό το μάθημα, καλύπτουμε πώς να δημιουργήσετε εφαρμογές Τεχνητής Νοημοσύνης (AI) που ανταποκρίνονται στις ανάγκες των χρηστών. + +Το μάθημα θα καλύψει τους εξής τομείς: + +- Εισαγωγή στην Εμπειρία Χρήστη και Κατανόηση των Αναγκών των Χρηστών +- Σχεδιασμός Εφαρμογών AI για Εμπιστοσύνη και Διαφάνεια +- Σχεδιασμός Εφαρμογών AI για Συνεργασία και Ανατροφοδότηση + +## Στόχοι μάθησης + +Μετά την ολοκλήρωση αυτού του μαθήματος, θα μπορείτε: + +- Να κατανοείτε πώς να δημιουργείτε εφαρμογές AI που ανταποκρίνονται στις ανάγκες των χρηστών. +- Να σχεδιάζετε εφαρμογές AI που προάγουν την εμπιστοσύνη και τη συνεργασία. + +### Προαπαιτούμενα + +Αφιερώστε λίγο χρόνο και διαβάστε περισσότερα για την [εμπειρία χρήστη και τη σχεδιαστική σκέψη.](https://learn.microsoft.com/training/modules/ux-design?WT.mc_id=academic-105485-koreyst) + +## Εισαγωγή στην Εμπειρία Χρήστη και Κατανόηση των Αναγκών των Χρηστών + +Στην υποθετική εκπαιδευτική μας startup, έχουμε δύο κύριους χρήστες, τους δασκάλους και τους μαθητές. Κάθε ένας από τους δύο χρήστες έχει μοναδικές ανάγκες. Ένας σχεδιασμός που επικεντρώνεται στον χρήστη δίνει προτεραιότητα στον χρήστη, διασφαλίζοντας ότι τα προϊόντα είναι σχετικά και ωφέλιμα για αυτούς που προορίζονται. + +Η εφαρμογή θα πρέπει να είναι **χρήσιμη, αξιόπιστη, προσβάσιμη και ευχάριστη** για να παρέχει μια καλή εμπειρία χρήστη. + +### Χρησιμότητα + +Το να είναι χρήσιμη σημαίνει ότι η εφαρμογή έχει λειτουργικότητα που ταιριάζει στον σκοπό της, όπως η αυτοματοποίηση της διαδικασίας βαθμολόγησης ή η δημιουργία καρτών επανάληψης. Μια εφαρμογή που αυτοματοποιεί τη διαδικασία βαθμολόγησης θα πρέπει να μπορεί να αποδίδει βαθμούς με ακρίβεια και αποτελεσματικότητα στη δουλειά των μαθητών βάσει προκαθορισμένων κριτηρίων. Παρομοίως, μια εφαρμογή που δημιουργεί κάρτες επανάληψης θα πρέπει να μπορεί να δημιουργεί σχετικές και ποικίλες ερωτήσεις βάσει των δεδομένων της. + +### Αξιοπιστία + +Το να είναι αξιόπιστη σημαίνει ότι η εφαρμογή μπορεί να εκτελεί την εργασία της με συνέπεια και χωρίς σφάλματα. Ωστόσο, η AI, όπως και οι άνθρωποι, δεν είναι τέλεια και μπορεί να είναι επιρρεπής σε λάθη. Οι εφαρμογές μπορεί να αντιμετωπίσουν σφάλματα ή απρόβλεπτες καταστάσεις που απαιτούν ανθρώπινη παρέμβαση ή διόρθωση. Πώς αντιμετωπίζετε τα λάθη; Στην τελευταία ενότητα αυτού του μαθήματος, θα καλύψουμε πώς τα συστήματα και οι εφαρμογές AI σχεδιάζονται για συνεργασία και ανατροφοδότηση. + +### Προσβασιμότητα + +Το να είναι προσβάσιμη σημαίνει να επεκτείνεται η εμπειρία χρήστη σε χρήστες με διάφορες ικανότητες, συμπεριλαμβανομένων αυτών με αναπηρίες, διασφαλίζοντας ότι κανείς δεν μένει εκτός. Ακολουθώντας τις κατευθυντήριες γραμμές και τις αρχές προσβασιμότητας, οι λύσεις AI γίνονται πιο περιεκτικές, χρήσιμες και ωφέλιμες για όλους τους χρήστες. + +### Ευχάριστη + +Το να είναι ευχάριστη σημαίνει ότι η εφαρμογή είναι απολαυστική στη χρήση. Μια ελκυστική εμπειρία χρήστη μπορεί να έχει θετική επίδραση στον χρήστη, ενθαρρύνοντάς τον να επιστρέψει στην εφαρμογή και αυξάνοντας τα έσοδα της επιχείρησης. + +![εικόνα που απεικονίζει τις παραμέτρους UX στις εφαρμογές AI](../../../translated_images/uxinai.d5b4ed690f5cefff0c53ffcc01b480cdc1828402e1fdbc980490013a3c50935a.el.png) + +Δεν μπορούν να λυθούν όλες οι προκλήσεις με την AI. Η AI έρχεται να ενισχύσει την εμπειρία χρήστη, είτε αυτοματοποιώντας χειροκίνητες εργασίες είτε εξατομικεύοντας τις εμπειρίες των χρηστών. + +## Σχεδιασμός Εφαρμογών AI για Εμπιστοσύνη και Διαφάνεια + +Η οικοδόμηση εμπιστοσύνης είναι κρίσιμη κατά τον σχεδιασμό εφαρμογών AI. Η εμπιστοσύνη διασφαλίζει ότι ο χρήστης είναι σίγουρος πως η εφαρμογή θα ολοκληρώσει την εργασία, θα παρέχει αποτελέσματα με συνέπεια και τα αποτελέσματα θα είναι αυτά που χρειάζεται ο χρήστης. Ένας κίνδυνος σε αυτόν τον τομέα είναι η έλλειψη εμπιστοσύνης και η υπερβολική εμπιστοσύνη. Η έλλειψη εμπιστοσύνης συμβαίνει όταν ένας χρήστης έχει λίγη ή καθόλου εμπιστοσύνη σε ένα σύστημα AI, γεγονός που οδηγεί τον χρήστη να απορρίψει την εφαρμογή σας. Η υπερβολική εμπιστοσύνη συμβαίνει όταν ένας χρήστης υπερεκτιμά τις δυνατότητες ενός συστήματος AI, οδηγώντας τους χρήστες να εμπιστεύονται υπερβολικά το σύστημα AI. Για παράδειγμα, ένα αυτοματοποιημένο σύστημα βαθμολόγησης στην περίπτωση υπερβολικής εμπιστοσύνης μπορεί να οδηγήσει τον δάσκαλο να μην ελέγξει ορισμένα γραπτά για να διασφαλίσει ότι το σύστημα βαθμολόγησης λειτουργεί σωστά. Αυτό θα μπορούσε να οδηγήσει σε άδικους ή ανακριβείς βαθμούς για τους μαθητές ή σε χαμένες ευκαιρίες για ανατροφοδότηση και βελτίωση. + +Δύο τρόποι για να διασφαλίσετε ότι η εμπιστοσύνη βρίσκεται στο επίκεντρο του σχεδιασμού είναι η εξηγησιμότητα και ο έλεγχος. + +### Εξηγησιμότητα + +Όταν η AI βοηθά στη λήψη αποφάσεων, όπως η μετάδοση γνώσεων στις επόμενες γενιές, είναι κρίσιμο για τους δασκάλους και τους γονείς να κατανοήσουν πώς λαμβάνονται οι αποφάσεις της AI. Αυτή είναι η εξηγησιμότητα - η κατανόηση του πώς οι εφαρμογές AI λαμβάνουν αποφάσεις. Ο σχεδιασμός για εξηγησιμότητα περιλαμβάνει την προσθήκη λεπτομερειών που αναδεικνύουν πώς η AI κατέληξε στο αποτέλεσμα. Το κοινό πρέπει να γνωρίζει ότι το αποτέλεσμα δημιουργείται από την AI και όχι από άνθρωπο. Για παράδειγμα, αντί να λέτε "Ξεκινήστε να συνομιλείτε με τον δάσκαλό σας τώρα", πείτε "Χρησιμοποιήστε τον AI δάσκαλο που προσαρμόζεται στις ανάγκες σας και σας βοηθά να μάθετε με τον δικό σας ρυθμό." + +![σελίδα εφαρμογής με σαφή απεικόνιση της εξηγησιμότητας στις εφαρμογές AI](../../../translated_images/explanability-in-ai.134426a96b498fbfdc80c75ae0090aedc0fc97424ae0734fccf7fb00a59a20d9.el.png) + +Ένα άλλο παράδειγμα είναι πώς η AI χρησιμοποιεί δεδομένα χρηστών και προσωπικά δεδομένα. Για παράδειγμα, ένας χρήστης με την περσόνα του μαθητή μπορεί να έχει περιορισμούς βάσει της περσόνας του. Η AI μπορεί να μην είναι σε θέση να αποκαλύψει απαντήσεις σε ερωτήσεις, αλλά μπορεί να βοηθήσει τον χρήστη να σκεφτεί πώς να λύσει ένα πρόβλημα. + +![Η AI απαντά σε ερωτήσεις βάσει περσόνας](../../../translated_images/solving-questions.b7dea1604de0cbd2e9c5fa00b1a68a0ed77178a035b94b9213196b9d125d0be8.el.png) + +Ένα τελευταίο βασικό μέρος της εξηγησιμότητας είναι η απλοποίηση των εξηγήσεων. Οι μαθητές και οι δάσκαλοι μπορεί να μην είναι ειδικοί στην AI, επομένως οι εξηγήσεις για το τι μπορεί ή δεν μπορεί να κάνει η εφαρμογή θα πρέπει να είναι απλές και εύκολα κατανοητές. + +![απλοποιημένες εξηγήσεις για τις δυνατότητες της AI](../../../translated_images/simplified-explanations.4679508a406c3621fa22bad4673e717fbff02f8b8d58afcab8cb6f1aa893a82f.el.png) + +### Έλεγχος + +Η γενετική AI δημιουργεί μια συνεργασία μεταξύ της AI και του χρήστη, όπου για παράδειγμα ένας χρήστης μπορεί να τροποποιήσει τις εντολές για διαφορετικά αποτελέσματα. Επιπλέον, μόλις δημιουργηθεί ένα αποτέλεσμα, οι χρήστες θα πρέπει να μπορούν να το τροποποιήσουν, δίνοντάς τους μια αίσθηση ελέγχου. Για παράδειγμα, όταν χρησιμοποιείτε το Bing, μπορείτε να προσαρμόσετε την εντολή σας βάσει μορφής, τόνου και μήκους. Επιπλέον, μπορείτε να κάνετε αλλαγές στο αποτέλεσμα και να το τροποποιήσετε όπως φαίνεται παρακάτω: + +![Αποτελέσματα αναζήτησης Bing με επιλογές για τροποποίηση της εντολής και του αποτελέσματος](../../../translated_images/bing1.293ae8527dbe2789b675c8591c9fb3cb1aa2ada75c2877f9aa9edc059f7a8b1c.el.png) + +Μια άλλη δυνατότητα στο Bing που επιτρέπει στον χρήστη να έχει έλεγχο πάνω στην εφαρμογή είναι η δυνατότητα να επιλέξει αν θα συμμετάσχει ή όχι στη συλλογή δεδομένων που χρησιμοποιεί η AI. Για μια σχολική εφαρμογή, ένας μαθητής μπορεί να θέλει να χρησιμοποιήσει τις σημειώσεις του καθώς και τους πόρους του δασκάλου ως υλικό επανάληψης. + +![Αποτελέσματα αναζήτησης Bing με επιλογές για τροποποίηση της εντολής και του αποτελέσματος](../../../translated_images/bing2.309f4845528a88c28c1c9739fb61d91fd993dc35ebe6fc92c66791fb04fceb4d.el.png) + +> Κατά τον σχεδιασμό εφαρμογών AI, η πρόθεση είναι το κλειδί για να διασφαλιστεί ότι οι χρήστες δεν υπερβάλλουν στις προσδοκίες τους για τις δυνατότητες της AI. Ένας τρόπος για να το πετύχετε αυτό είναι δημιουργώντας τριβή μεταξύ των εντολών και των αποτελεσμάτων. Υπενθυμίζοντας στον χρήστη ότι πρόκειται για AI και όχι για έναν συνάνθρωπο. + +## Σχεδιασμός Εφαρμογών AI για Συνεργασία και Ανατροφοδότηση + +Όπως αναφέρθηκε νωρίτερα, η γενετική AI δημιουργεί μια συνεργασία μεταξύ του χρήστη και της AI. Οι περισσότερες αλληλεπιδράσεις είναι με έναν χρήστη που εισάγει μια εντολή και η AI δημιουργεί ένα αποτέλεσμα. Τι γίνεται αν το αποτέλεσμα είναι λανθασμένο; Πώς χειρίζεται η εφαρμογή τα σφάλματα αν προκύψουν; Κατηγορεί η AI τον χρήστη ή αφιερώνει χρόνο για να εξηγήσει το σφάλμα; + +Οι εφαρμογές AI θα πρέπει να είναι σχεδιασμένες ώστε να δέχονται και να παρέχουν ανατροφοδότηση. Αυτό όχι μόνο βοηθά το σύστημα AI να βελτιωθεί αλλά και χτίζει εμπιστοσύνη με τους χρήστες. Ένας βρόχος ανατροφοδότησης θα πρέπει να περιλαμβάνεται στον σχεδιασμό, ένα παράδειγμα μπορεί να είναι ένα απλό thumbs up ή down στο αποτέλεσμα. + +Ένας άλλος τρόπος για να το χειριστείτε αυτό είναι να επικοινωνείτε σαφώς τις δυνατότητες και τους περιορισμούς του συστήματος. Όταν ένας χρήστης κάνει ένα λάθος ζητώντας κάτι πέρα από τις δυνατότητες της AI, θα πρέπει επίσης να υπάρχει ένας τρόπος να το χειριστεί αυτό, όπως φαίνεται παρακάτω. + +![Παροχή ανατροφοδότησης και χειρισμός σφαλμάτων](../../../translated_images/feedback-loops.7955c134429a94663443ad74d59044f8dc4ce354577f5b79b4bd2533f2cafc6f.el.png) + +Τα σφάλματα συστήματος είναι συνηθισμένα στις εφαρμογές όπου ο χρήστης μπορεί να χρειάζεται βοήθεια με πληροφορίες εκτός του πεδίου της AI ή η εφαρμογή μπορεί να έχει όριο στον αριθμό ερωτήσεων/θεμάτων που μπορεί να δημιουργήσει περιλήψεις. Για παράδειγμα, μια εφαρμογή AI που έχει εκπαιδευτεί με δεδομένα σε περιορισμένα θέματα, όπως Ιστορία και Μαθηματικά, μπορεί να μην είναι σε θέση να χειριστεί ερωτήσεις γύρω από τη Γεωγραφία. Για να μετριαστεί αυτό, το σύστημα AI μπορεί να δώσει μια απάντηση όπως: "Λυπάμαι, το προϊόν μας έχει εκπαιδευτεί με δεδομένα στα εξής θέματα....., δεν μπορώ να απαντήσω στην ερώτηση που κάνατε." + +Οι εφαρμογές AI δεν είναι τέλειες, επομένως είναι πιθανό να κάνουν λάθη. Κατά τον σχεδιασμό των εφαρμογών σας, θα πρέπει να διασφαλίσετε ότι δημιουργείτε χώρο για ανατροφοδότηση από τους χρήστες και χειρισμό σφαλμάτων με τρόπο απλό και εύκολα εξηγήσιμο. + +## Εργασία + +Πάρτε οποιαδήποτε εφαρμογή AI έχετε δημιουργήσει μέχρι τώρα και σκεφτείτε να εφαρμόσετε τα παρακάτω βήματα στην εφαρμογή σας: + +- **Ευχάριστη:** Σκεφτείτε πώς μπορείτε να κάνετε την εφαρμογή σας πιο ευχάριστη. Προσθέτετε εξηγήσεις παντού; Ενθαρρύνετε τον χρήστη να εξερευνήσει; Πώς διατυπώνετε τα μηνύματα σφάλματος; + +- **Χρησιμότητα:** Δημιουργήστε μια web εφαρμογή. Βεβαιωθείτε ότι η εφαρμογή σας είναι πλοηγήσιμη τόσο με ποντίκι όσο και με πληκτρολόγιο. + +- **Εμπιστοσύνη και διαφάνεια:** Μην εμπιστεύεστε πλήρως την AI και τα αποτελέσματά της, σκεφτείτε πώς θα προσθέσετε έναν άνθρωπο στη διαδικασία για να επαληθεύσει το αποτέλεσμα. Επίσης, σκεφτείτε και εφαρμόστε άλλους τρόπους για να επιτύχετε εμπιστοσύνη και διαφάνεια. + +- **Έλεγχος:** Δώστε στον χρήστη έλεγχο των δεδομένων που παρέχει στην εφαρμογή. Εφαρμόστε έναν τρόπο ώστε ο χρήστης να μπορεί να επιλέξει αν θα συμμετάσχει ή όχι στη συλλογή δεδομένων στην εφαρμογή AI. + + + +## Συνεχίστε τη Μάθηση! + +Αφού ολοκληρώσετε αυτό το μάθημα, δείτε τη [Συλλογή Μάθησης για Γενετική AI](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) για να συνεχίσετε να αναβαθμίζετε τις γνώσεις σας στη Γενετική AI! + +Προχωρήστε στο Μάθημα 13, όπου θα εξετάσουμε πώς να [διασφαλίσετε τις εφαρμογές AI](../13-securing-ai-applications/README.md?WT.mc_id=academic-105485-koreyst)! + +--- + +**Αποποίηση ευθύνης**: +Αυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία αυτόματης μετάφρασης [Co-op Translator](https://github.com/Azure/co-op-translator). Παρόλο που καταβάλλουμε προσπάθειες για ακρίβεια, παρακαλούμε να έχετε υπόψη ότι οι αυτόματες μεταφράσεις ενδέχεται να περιέχουν λάθη ή ανακρίβειες. Το πρωτότυπο έγγραφο στη μητρική του γλώσσα θα πρέπει να θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε ευθύνη για τυχόν παρεξηγήσεις ή εσφαλμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης. \ No newline at end of file diff --git a/translations/el/13-securing-ai-applications/README.md b/translations/el/13-securing-ai-applications/README.md index 9baea71ab5..0212cd7b68 100644 --- a/translations/el/13-securing-ai-applications/README.md +++ b/translations/el/13-securing-ai-applications/README.md @@ -1,149 +1,153 @@ - -# Ασφάλεια των Εφαρμογών Γεννητικής Τεχνητής Νοημοσύνης - -[![Ασφάλεια των Εφαρμογών Γεννητικής Τεχνητής Νοημοσύνης](../../../translated_images/13-lesson-banner.14103e36b4bbf17398b64ed2b0531f6f2c6549e7f7342f797c40bcae5a11862e.el.png)](https://aka.ms/gen-ai-lesson13-gh?WT.mc_id=academic-105485-koreyst) - -## Εισαγωγή - -Αυτό το μάθημα θα καλύψει: - -- Την ασφάλεια στο πλαίσιο των συστημάτων ΤΝ. -- Κοινά ρίσκα και απειλές για τα συστήματα ΤΝ. -- Μεθόδους και παράγοντες που πρέπει να ληφθούν υπόψη για την ασφάλεια των συστημάτων ΤΝ. - -## Στόχοι Μάθησης - -Μετά την ολοκλήρωση αυτού του μαθήματος, θα έχετε κατανοήσει: - -- Τις απειλές και τους κινδύνους για τα συστήματα ΤΝ. -- Κοινές μεθόδους και πρακτικές για την ασφάλεια των συστημάτων ΤΝ. -- Πώς η εφαρμογή δοκιμών ασφάλειας μπορεί να αποτρέψει απρόβλεπτα αποτελέσματα και τη φθορά της εμπιστοσύνης των χρηστών. - -## Τι σημαίνει ασφάλεια στο πλαίσιο της γεννητικής ΤΝ; - -Καθώς οι τεχνολογίες Τεχνητής Νοημοσύνης (ΤΝ) και Μηχανικής Μάθησης (ΜΜ) διαμορφώνουν όλο και περισσότερο τη ζωή μας, είναι κρίσιμο να προστατεύουμε όχι μόνο τα δεδομένα των πελατών αλλά και τα ίδια τα συστήματα ΤΝ. Η ΤΝ/ΜΜ χρησιμοποιείται όλο και περισσότερο για τη στήριξη διαδικασιών λήψης αποφάσεων υψηλής αξίας σε κλάδους όπου μια λανθασμένη απόφαση μπορεί να έχει σοβαρές συνέπειες. - -Ακολουθούν βασικά σημεία που πρέπει να ληφθούν υπόψη: - -- **Επίδραση της ΤΝ/ΜΜ**: Η ΤΝ/ΜΜ έχει σημαντική επίδραση στην καθημερινή ζωή και γι’ αυτό η προστασία της έχει καταστεί απαραίτητη. -- **Προκλήσεις Ασφάλειας**: Η επίδραση αυτή απαιτεί κατάλληλη προσοχή για να αντιμετωπιστεί η ανάγκη προστασίας των προϊόντων βασισμένων σε ΤΝ από εξελιγμένες επιθέσεις, είτε από τρολ είτε από οργανωμένες ομάδες. -- **Στρατηγικά Ζητήματα**: Ο τεχνολογικός κλάδος πρέπει να αντιμετωπίσει προληπτικά στρατηγικές προκλήσεις για να διασφαλίσει την μακροπρόθεσμη ασφάλεια των πελατών και την προστασία των δεδομένων. - -Επιπλέον, τα μοντέλα Μηχανικής Μάθησης δυσκολεύονται να διακρίνουν μεταξύ κακόβουλων εισροών και αβλαβών ανωμαλιών. Ένα σημαντικό μέρος των δεδομένων εκπαίδευσης προέρχεται από μη επιμελημένα, μη ελεγχόμενα δημόσια σύνολα δεδομένων, στα οποία μπορούν να συνεισφέρουν τρίτοι. Οι επιτιθέμενοι δεν χρειάζεται να παραβιάσουν τα σύνολα δεδομένων όταν μπορούν απλώς να συνεισφέρουν σε αυτά. Με την πάροδο του χρόνου, τα κακόβουλα δεδομένα χαμηλής εμπιστοσύνης γίνονται δεδομένα υψηλής εμπιστοσύνης, εφόσον η δομή/μορφοποίηση των δεδομένων παραμένει σωστή. - -Γι’ αυτό είναι κρίσιμο να διασφαλίζεται η ακεραιότητα και η προστασία των αποθηκευτικών χώρων δεδομένων που χρησιμοποιούν τα μοντέλα σας για τη λήψη αποφάσεων. - -## Κατανόηση των απειλών και κινδύνων της ΤΝ - -Στον τομέα της ΤΝ και των σχετικών συστημάτων, η δηλητηρίαση δεδομένων ξεχωρίζει ως η πιο σημαντική απειλή ασφάλειας σήμερα. Η δηλητηρίαση δεδομένων συμβαίνει όταν κάποιος αλλάζει σκόπιμα τις πληροφορίες που χρησιμοποιούνται για την εκπαίδευση ενός μοντέλου ΤΝ, προκαλώντας λάθη. Αυτό οφείλεται στην έλλειψη τυποποιημένων μεθόδων ανίχνευσης και αντιμετώπισης, σε συνδυασμό με την εξάρτηση από μη αξιόπιστα ή μη επιμελημένα δημόσια σύνολα δεδομένων για την εκπαίδευση. Για να διατηρηθεί η ακεραιότητα των δεδομένων και να αποφευχθεί μια εσφαλμένη διαδικασία εκπαίδευσης, είναι κρίσιμο να παρακολουθείται η προέλευση και η καταγωγή των δεδομένων σας. Διαφορετικά, ισχύει το παλιό ρητό «σκουπίδια μέσα, σκουπίδια έξω», οδηγώντας σε υποβαθμισμένη απόδοση του μοντέλου. - -Ακολουθούν παραδείγματα για το πώς η δηλητηρίαση δεδομένων μπορεί να επηρεάσει τα μοντέλα σας: - -1. **Αντιστροφή Ετικετών**: Σε μια δυαδική ταξινόμηση, ένας αντίπαλος αλλάζει σκόπιμα τις ετικέτες ενός μικρού υποσυνόλου δεδομένων εκπαίδευσης. Για παράδειγμα, δείγματα που είναι αβλαβή χαρακτηρίζονται ως κακόβουλα, οδηγώντας το μοντέλο σε λανθασμένες συσχετίσεις.\ - **Παράδειγμα**: Ένα φίλτρο ανεπιθύμητης αλληλογραφίας που χαρακτηρίζει νόμιμα μηνύματα ως spam λόγω χειραγώγησης των ετικετών. -2. **Δηλητηρίαση Χαρακτηριστικών**: Ένας επιτιθέμενος τροποποιεί διακριτικά χαρακτηριστικά στα δεδομένα εκπαίδευσης για να εισάγει μεροληψία ή να παραπλανήσει το μοντέλο.\ - **Παράδειγμα**: Προσθήκη άσχετων λέξεων-κλειδιών στις περιγραφές προϊόντων για να χειραγωγήσει συστήματα προτάσεων. -3. **Ένεση Δεδομένων**: Εισαγωγή κακόβουλων δεδομένων στο σύνολο εκπαίδευσης για να επηρεαστεί η συμπεριφορά του μοντέλου.\ - **Παράδειγμα**: Εισαγωγή ψεύτικων κριτικών χρηστών για να αλλοιωθούν τα αποτελέσματα ανάλυσης συναισθήματος. -4. **Επιθέσεις Πίσω Πόρτας**: Ένας αντίπαλος εισάγει ένα κρυφό μοτίβο (πίσω πόρτα) στα δεδομένα εκπαίδευσης. Το μοντέλο μαθαίνει να αναγνωρίζει αυτό το μοτίβο και συμπεριφέρεται κακόβουλα όταν ενεργοποιείται.\ - **Παράδειγμα**: Σύστημα αναγνώρισης προσώπου εκπαιδευμένο με εικόνες που περιέχουν πίσω πόρτα και αναγνωρίζει λανθασμένα ένα συγκεκριμένο άτομο. - -Η MITRE Corporation δημιούργησε το [ATLAS (Adversarial Threat Landscape for Artificial-Intelligence Systems)](https://atlas.mitre.org/?WT.mc_id=academic-105485-koreyst), μια βάση γνώσεων με τακτικές και τεχνικές που χρησιμοποιούν οι αντίπαλοι σε πραγματικές επιθέσεις σε συστήματα ΤΝ. - -> Υπάρχει αυξανόμενος αριθμός ευπαθειών σε συστήματα με ΤΝ, καθώς η ενσωμάτωση της ΤΝ αυξάνει την επιφάνεια επίθεσης πέρα από τις παραδοσιακές κυβερνοεπιθέσεις. Αναπτύξαμε το ATLAS για να ευαισθητοποιήσουμε σχετικά με αυτές τις μοναδικές και εξελισσόμενες ευπάθειες, καθώς η παγκόσμια κοινότητα ενσωματώνει όλο και περισσότερο την ΤΝ σε διάφορα συστήματα. Το ATLAS βασίζεται στο πλαίσιο MITRE ATT&CK® και οι τακτικές, τεχνικές και διαδικασίες (TTPs) του συμπληρώνουν αυτές του ATT&CK. - -Όπως και το πλαίσιο MITRE ATT&CK®, που χρησιμοποιείται εκτενώς στην παραδοσιακή κυβερνοασφάλεια για τον σχεδιασμό σεναρίων προσομοίωσης προηγμένων απειλών, το ATLAS παρέχει ένα εύκολα αναζητήσιμο σύνολο TTPs που βοηθούν στην καλύτερη κατανόηση και προετοιμασία για την άμυνα απέναντι σε νέες επιθέσεις. - -Επιπλέον, το Open Web Application Security Project (OWASP) δημιούργησε μια "[Λίστα Top 10](https://llmtop10.com/?WT.mc_id=academic-105485-koreyst)" με τις πιο κρίσιμες ευπάθειες που εντοπίζονται σε εφαρμογές που χρησιμοποιούν LLMs. Η λίστα επισημαίνει τους κινδύνους απειλών όπως η προαναφερθείσα δηλητηρίαση δεδομένων, καθώς και άλλες όπως: - -- **Prompt Injection**: Τεχνική όπου οι επιτιθέμενοι χειραγωγούν ένα Μεγάλο Γλωσσικό Μοντέλο (LLM) μέσω προσεκτικά σχεδιασμένων εισροών, προκαλώντας το να συμπεριφέρεται εκτός του προβλεπόμενου πλαισίου. -- **Ευπάθειες στην Εφοδιαστική Αλυσίδα**: Τα συστατικά και το λογισμικό που απαρτίζουν τις εφαρμογές που χρησιμοποιεί ένα LLM, όπως Python modules ή εξωτερικά σύνολα δεδομένων, μπορούν να παραβιαστούν, οδηγώντας σε απρόβλεπτα αποτελέσματα, εισαγωγή μεροληψιών και ακόμη και ευπάθειες στην υποκείμενη υποδομή. -- **Υπερβολική Εξάρτηση**: Τα LLMs είναι επιρρεπή σε λάθη και έχουν την τάση να «φαντάζονται», παρέχοντας ανακριβή ή μη ασφαλή αποτελέσματα. Σε αρκετές τεκμηριωμένες περιπτώσεις, οι άνθρωποι έχουν λάβει τα αποτελέσματα ως δεδομένα, οδηγώντας σε ανεπιθύμητες αρνητικές συνέπειες στην πραγματική ζωή. - -Ο Microsoft Cloud Advocate Rod Trent έχει γράψει ένα δωρεάν ebook, [Must Learn AI Security](https://github.com/rod-trent/OpenAISecurity/tree/main/Must_Learn/Book_Version?WT.mc_id=academic-105485-koreyst), που εμβαθύνει σε αυτές και άλλες αναδυόμενες απειλές ΤΝ και παρέχει εκτενή καθοδήγηση για το πώς να αντιμετωπιστούν καλύτερα αυτά τα σενάρια. - -## Δοκιμές Ασφάλειας για Συστήματα ΤΝ και LLMs - -Η Τεχνητή Νοημοσύνη (ΤΝ) μετασχηματίζει διάφορους τομείς και βιομηχανίες, προσφέροντας νέες δυνατότητες και οφέλη για την κοινωνία. Ωστόσο, η ΤΝ παρουσιάζει επίσης σημαντικές προκλήσεις και κινδύνους, όπως η ιδιωτικότητα των δεδομένων, η μεροληψία, η έλλειψη επεξηγηματικότητας και η πιθανή κακή χρήση. Για το λόγο αυτό, είναι κρίσιμο να διασφαλίζεται ότι τα συστήματα ΤΝ είναι ασφαλή και υπεύθυνα, δηλαδή ότι συμμορφώνονται με ηθικά και νομικά πρότυπα και μπορούν να εμπιστευτούν οι χρήστες και τα ενδιαφερόμενα μέρη. - -Η δοκιμή ασφάλειας είναι η διαδικασία αξιολόγησης της ασφάλειας ενός συστήματος ΤΝ ή LLM, μέσω της αναγνώρισης και εκμετάλλευσης των ευπαθειών τους. Αυτό μπορεί να πραγματοποιηθεί από προγραμματιστές, χρήστες ή ανεξάρτητους ελεγκτές, ανάλογα με τον σκοπό και το εύρος της δοκιμής. Μερικές από τις πιο κοινές μεθόδους δοκιμής ασφάλειας για συστήματα ΤΝ και LLMs είναι: - -- **Καθαρισμός Δεδομένων**: Διαδικασία αφαίρεσης ή ανωνυμοποίησης ευαίσθητων ή ιδιωτικών πληροφοριών από τα δεδομένα εκπαίδευσης ή την είσοδο ενός συστήματος ΤΝ ή LLM. Ο καθαρισμός δεδομένων βοηθά στην αποτροπή διαρροής δεδομένων και κακόβουλης χειραγώγησης μειώνοντας την έκθεση εμπιστευτικών ή προσωπικών δεδομένων. -- **Αντιπαραθετική Δοκιμή**: Διαδικασία δημιουργίας και εφαρμογής αντιπαραθετικών παραδειγμάτων στην είσοδο ή έξοδο ενός συστήματος ΤΝ ή LLM για την αξιολόγηση της ανθεκτικότητας και αντοχής του σε επιθέσεις. Η αντιπαραθετική δοκιμή βοηθά στην αναγνώριση και αντιμετώπιση ευπαθειών και αδυναμιών που μπορεί να εκμεταλλευτούν οι επιτιθέμενοι. -- **Επαλήθευση Μοντέλου**: Διαδικασία επαλήθευσης της ορθότητας και πληρότητας των παραμέτρων ή της αρχιτεκτονικής ενός μοντέλου ΤΝ ή LLM. Η επαλήθευση μοντέλου βοηθά στην ανίχνευση και αποτροπή κλοπής μοντέλου, διασφαλίζοντας ότι το μοντέλο είναι προστατευμένο και αυθεντικοποιημένο. -- **Επικύρωση Αποτελεσμάτων**: Διαδικασία επικύρωσης της ποιότητας και αξιοπιστίας της εξόδου ενός συστήματος ΤΝ ή LLM. Η επικύρωση αποτελεσμάτων βοηθά στην ανίχνευση και διόρθωση κακόβουλης χειραγώγησης, διασφαλίζοντας ότι η έξοδος είναι συνεπής και ακριβής. - -Η OpenAI, ηγέτης στα συστήματα ΤΝ, έχει δημιουργήσει μια σειρά από _αξιολογήσεις ασφάλειας_ ως μέρος της πρωτοβουλίας δικτύου red teaming, με στόχο τη δοκιμή της εξόδου των συστημάτων ΤΝ με σκοπό τη συμβολή στην ασφάλεια της ΤΝ. - -> Οι αξιολογήσεις μπορεί να κυμαίνονται από απλά τεστ ερωτήσεων-απαντήσεων έως πιο σύνθετες προσομοιώσεις. Ως συγκεκριμένα παραδείγματα, εδώ είναι δείγματα αξιολογήσεων που ανέπτυξε η OpenAI για την αξιολόγηση της συμπεριφοράς της ΤΝ από διάφορες οπτικές γωνίες: - -#### Πειθώ - -- [MakeMeSay](https://github.com/openai/evals/tree/main/evals/elsuite/make_me_say/readme.md?WT.mc_id=academic-105485-koreyst): Πόσο καλά μπορεί ένα σύστημα ΤΝ να ξεγελάσει ένα άλλο σύστημα ΤΝ ώστε να πει μια μυστική λέξη; -- [MakeMePay](https://github.com/openai/evals/tree/main/evals/elsuite/make_me_pay/readme.md?WT.mc_id=academic-105485-koreyst): Πόσο καλά μπορεί ένα σύστημα ΤΝ να πείσει ένα άλλο σύστημα ΤΝ να δωρίσει χρήματα; -- [Ballot Proposal](https://github.com/openai/evals/tree/main/evals/elsuite/ballots/readme.md?WT.mc_id=academic-105485-koreyst): Πόσο καλά μπορεί ένα σύστημα ΤΝ να επηρεάσει την υποστήριξη ενός άλλου συστήματος ΤΝ σε μια πολιτική πρόταση; - -#### Στεγανογραφία (κρυφή μετάδοση μηνυμάτων) - -- [Steganography](https://github.com/openai/evals/tree/main/evals/elsuite/steganography/readme.md?WT.mc_id=academic-105485-koreyst): Πόσο καλά μπορεί ένα σύστημα ΤΝ να περάσει κρυφά μηνύματα χωρίς να το αντιληφθεί ένα άλλο σύστημα ΤΝ; -- [Text Compression](https://github.com/openai/evals/tree/main/evals/elsuite/text_compression/readme.md?WT.mc_id=academic-105485-koreyst): Πόσο καλά μπορεί ένα σύστημα ΤΝ να συμπιέσει και να αποσυμπιέσει μηνύματα, ώστε να επιτρέψει την απόκρυψη κρυφών μηνυμάτων; -- [Schelling Point](https://github.com/openai/evals/blob/main/evals/elsuite/schelling_point/README.md?WT.mc_id=academic-105485-koreyst): Πόσο καλά μπορεί ένα σύστημα ΤΝ να συντονιστεί με ένα άλλο σύστημα ΤΝ, χωρίς άμεση επικοινωνία; - -### Ασφάλεια ΤΝ - -Είναι επιτακτικό να στοχεύουμε στην προστασία των συστημάτων ΤΝ από κακόβουλες επιθέσεις, κακή χρήση ή ανεπιθύμητες συνέπειες. Αυτό περιλαμβάνει τη λήψη μέτρων για τη διασφάλιση της ασφάλειας, αξιοπιστίας και εμπιστοσύνης των συστημάτων ΤΝ, όπως: - -- Η ασφάλεια των δεδομένων και των αλγορίθμων που χρησιμοποιούνται για την εκπαίδευση και λειτουργία των μοντέλων ΤΝ -- Η αποτροπή μη εξουσιοδοτημένης πρόσβασης, χειραγώγησης ή σαμποτάζ των συστημάτων ΤΝ -- Η ανίχνευση και αντιμετώπιση μεροληψίας, διακρίσεων ή ηθικών -> Η πρακτική του AI red teaming έχει εξελιχθεί και αποκτά ευρύτερο νόημα: δεν περιορίζεται μόνο στον εντοπισμό ευπαθειών ασφαλείας, αλλά περιλαμβάνει και την ανίχνευση άλλων σφαλμάτων του συστήματος, όπως η δημιουργία ενδεχομένως επιβλαβούς περιεχομένου. Τα συστήματα AI φέρουν νέους κινδύνους, και το red teaming είναι θεμελιώδες για την κατανόηση αυτών των νέων κινδύνων, όπως η έγχυση prompt και η παραγωγή μη τεκμηριωμένου περιεχομένου. - [Microsoft AI Red Team building future of safer AI](https://www.microsoft.com/security/blog/2023/08/07/microsoft-ai-red-team-building-future-of-safer-ai/?WT.mc_id=academic-105485-koreyst) -[![Καθοδήγηση και πόροι για red teaming](../../../translated_images/13-AI-red-team.642ed54689d7e8a4d83bdf0635768c4fd8aa41ea539d8e3ffe17514aec4b4824.el.png)]() - -Παρακάτω παρουσιάζονται βασικές γνώσεις που έχουν διαμορφώσει το πρόγραμμα AI Red Team της Microsoft. - -1. **Ευρύ πεδίο εφαρμογής του AI Red Teaming:** - Το AI red teaming πλέον καλύπτει τόσο θέματα ασφάλειας όσο και αποτελέσματα Υπεύθυνης Τεχνητής Νοημοσύνης (RAI). Παραδοσιακά, το red teaming επικεντρωνόταν σε θέματα ασφάλειας, αντιμετωπίζοντας το μοντέλο ως διάνυσμα επίθεσης (π.χ. κλοπή του υποκείμενου μοντέλου). Ωστόσο, τα συστήματα AI εισάγουν νέες ευπάθειες ασφαλείας (π.χ. εισαγωγή κακόβουλων εντολών, δηλητηρίαση), που απαιτούν ειδική προσοχή. Πέρα από την ασφάλεια, το AI red teaming εξετάζει επίσης ζητήματα δικαιοσύνης (π.χ. στερεοτυπίες) και επιβλαβές περιεχόμενο (π.χ. εξύμνηση της βίας). Η έγκαιρη αναγνώριση αυτών των θεμάτων επιτρέπει την προτεραιοποίηση των επενδύσεων στην άμυνα. -2. **Κακόβουλες και ακούσιες αποτυχίες:** - Το AI red teaming λαμβάνει υπόψη αποτυχίες τόσο από κακόβουλες όσο και από ακούσιες προοπτικές. Για παράδειγμα, κατά το red teaming του νέου Bing, εξερευνούμε όχι μόνο πώς κακόβουλοι επιτιθέμενοι μπορούν να υπονομεύσουν το σύστημα, αλλά και πώς οι κανονικοί χρήστες μπορεί να συναντήσουν προβληματικό ή επιβλαβές περιεχόμενο. Σε αντίθεση με το παραδοσιακό red teaming ασφάλειας, που εστιάζει κυρίως σε κακόβουλους παράγοντες, το AI red teaming λαμβάνει υπόψη ένα ευρύτερο φάσμα ρόλων και πιθανών αποτυχιών. -3. **Δυναμική φύση των συστημάτων AI:** - Οι εφαρμογές AI εξελίσσονται συνεχώς. Στις εφαρμογές μεγάλων γλωσσικών μοντέλων, οι προγραμματιστές προσαρμόζονται σε μεταβαλλόμενες απαιτήσεις. Το συνεχές red teaming διασφαλίζει διαρκή επαγρύπνηση και προσαρμογή στους εξελισσόμενους κινδύνους. - -Το AI red teaming δεν καλύπτει τα πάντα και θα πρέπει να θεωρείται συμπληρωματική κίνηση σε επιπλέον ελέγχους όπως ο [έλεγχος πρόσβασης βάσει ρόλων (RBAC)](https://learn.microsoft.com/azure/ai-services/openai/how-to/role-based-access-control?WT.mc_id=academic-105485-koreyst) και ολοκληρωμένες λύσεις διαχείρισης δεδομένων. Σκοπός του είναι να υποστηρίξει μια στρατηγική ασφάλειας που εστιάζει στη χρήση ασφαλών και υπεύθυνων λύσεων AI, λαμβάνοντας υπόψη την ιδιωτικότητα και την ασφάλεια, ενώ επιδιώκει να ελαχιστοποιήσει τις προκαταλήψεις, το επιβλαβές περιεχόμενο και την παραπληροφόρηση που μπορούν να υπονομεύσουν την εμπιστοσύνη των χρηστών. - -Ακολουθεί μια λίστα με επιπλέον αναγνώσεις που μπορούν να σας βοηθήσουν να κατανοήσετε καλύτερα πώς το red teaming μπορεί να βοηθήσει στην αναγνώριση και μείωση των κινδύνων στα συστήματα AI σας: - -- [Σχεδιασμός red teaming για μεγάλα γλωσσικά μοντέλα (LLMs) και τις εφαρμογές τους](https://learn.microsoft.com/azure/ai-services/openai/concepts/red-teaming?WT.mc_id=academic-105485-koreyst) -- [Τι είναι το OpenAI Red Teaming Network;](https://openai.com/blog/red-teaming-network?WT.mc_id=academic-105485-koreyst) -- [AI Red Teaming - Μια βασική πρακτική για την κατασκευή πιο ασφαλών και υπεύθυνων λύσεων AI](https://rodtrent.substack.com/p/ai-red-teaming?WT.mc_id=academic-105485-koreyst) -- MITRE [ATLAS (Adversarial Threat Landscape for Artificial-Intelligence Systems)](https://atlas.mitre.org/?WT.mc_id=academic-105485-koreyst), μια βάση γνώσεων με τακτικές και τεχνικές που χρησιμοποιούν οι αντίπαλοι σε πραγματικές επιθέσεις σε συστήματα AI. - -## Έλεγχος γνώσεων - -Ποια θα μπορούσε να είναι μια καλή προσέγγιση για τη διατήρηση της ακεραιότητας των δεδομένων και την αποτροπή κακής χρήσης; - -1. Να υπάρχουν ισχυροί έλεγχοι πρόσβασης βάσει ρόλων για την πρόσβαση και διαχείριση των δεδομένων -1. Να εφαρμόζεται και να ελέγχεται η επισήμανση δεδομένων για την αποτροπή παραπλάνησης ή κακής χρήσης των δεδομένων -1. Να διασφαλίζεται ότι η υποδομή AI υποστηρίζει φιλτράρισμα περιεχομένου - -Α:1, Αν και και οι τρεις είναι εξαιρετικές προτάσεις, η διασφάλιση ότι αποδίδονται τα κατάλληλα δικαιώματα πρόσβασης στα δεδομένα στους χρήστες θα συμβάλει σημαντικά στην αποτροπή χειραγώγησης και παραπλάνησης των δεδομένων που χρησιμοποιούν τα LLMs. - -## 🚀 Πρόκληση - -Διαβάστε περισσότερα για το πώς μπορείτε να [διαχειριστείτε και να προστατεύσετε ευαίσθητες πληροφορίες](https://learn.microsoft.com/training/paths/purview-protect-govern-ai/?WT.mc_id=academic-105485-koreyst) στην εποχή της Τεχνητής Νοημοσύνης. - -## Μπράβο, Συνεχίστε τη Μάθησή σας - -Μετά την ολοκλήρωση αυτού του μαθήματος, ρίξτε μια ματιά στη [συλλογή μάθησης για Generative AI](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) για να συνεχίσετε να αναβαθμίζετε τις γνώσεις σας στην Γενετική Τεχνητή Νοημοσύνη! - -Πηγαίνετε στο Μάθημα 14 όπου θα εξετάσουμε [τον κύκλο ζωής εφαρμογών Generative AI](../14-the-generative-ai-application-lifecycle/README.md?WT.mc_id=academic-105485-koreyst)! - -**Αποποίηση ευθυνών**: -Αυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία αυτόματης μετάφρασης AI [Co-op Translator](https://github.com/Azure/co-op-translator). Παρόλο που επιδιώκουμε την ακρίβεια, παρακαλούμε να έχετε υπόψη ότι οι αυτόματες μεταφράσεις ενδέχεται να περιέχουν λάθη ή ανακρίβειες. Το πρωτότυπο έγγραφο στη γλώσσα του θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε ευθύνη για τυχόν παρεξηγήσεις ή λανθασμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης. \ No newline at end of file + +# Ασφάλεια στις Εφαρμογές Γενετικής Τεχνητής Νοημοσύνης + +[![Ασφάλεια στις Εφαρμογές Γενετικής Τεχνητής Νοημοσύνης](../../../translated_images/13-lesson-banner.14103e36b4bbf17398b64ed2b0531f6f2c6549e7f7342f797c40bcae5a11862e.el.png)](https://youtu.be/m0vXwsx5DNg?si=TYkr936GMKz15K0L) + +## Εισαγωγή + +Αυτό το μάθημα καλύπτει: + +- Την ασφάλεια στο πλαίσιο των συστημάτων τεχνητής νοημοσύνης. +- Κοινά ρίσκα και απειλές για τα συστήματα τεχνητής νοημοσύνης. +- Μεθόδους και παραμέτρους για την ασφάλεια των συστημάτων τεχνητής νοημοσύνης. + +## Στόχοι Μάθησης + +Μετά την ολοκλήρωση αυτού του μαθήματος, θα έχετε κατανοήσει: + +- Τις απειλές και τα ρίσκα για τα συστήματα τεχνητής νοημοσύνης. +- Κοινές μεθόδους και πρακτικές για την ασφάλεια των συστημάτων τεχνητής νοημοσύνης. +- Πώς η εφαρμογή δοκιμών ασφάλειας μπορεί να αποτρέψει απρόσμενα αποτελέσματα και την απώλεια εμπιστοσύνης των χρηστών. + +## Τι σημαίνει ασφάλεια στο πλαίσιο της γενετικής τεχνητής νοημοσύνης; + +Καθώς οι τεχνολογίες Τεχνητής Νοημοσύνης (AI) και Μηχανικής Μάθησης (ML) επηρεάζουν όλο και περισσότερο τη ζωή μας, είναι ζωτικής σημασίας να προστατεύσουμε όχι μόνο τα δεδομένα των πελατών αλλά και τα ίδια τα συστήματα τεχνητής νοημοσύνης. Η AI/ML χρησιμοποιείται όλο και περισσότερο για τη λήψη αποφάσεων υψηλής αξίας σε βιομηχανίες όπου η λανθασμένη απόφαση μπορεί να έχει σοβαρές συνέπειες. + +Ακολουθούν βασικά σημεία που πρέπει να ληφθούν υπόψη: + +- **Επίδραση της AI/ML**: Η AI/ML έχει σημαντική επίδραση στην καθημερινή ζωή και, ως εκ τούτου, η προστασία τους έχει γίνει απαραίτητη. +- **Προκλήσεις Ασφάλειας**: Η επίδραση της AI/ML απαιτεί την κατάλληλη προσοχή για την αντιμετώπιση της ανάγκης προστασίας προϊόντων που βασίζονται στην AI από εξελιγμένες επιθέσεις, είτε από trolls είτε από οργανωμένες ομάδες. +- **Στρατηγικά Προβλήματα**: Η τεχνολογική βιομηχανία πρέπει να αντιμετωπίσει προληπτικά στρατηγικές προκλήσεις για να εξασφαλίσει τη μακροπρόθεσμη ασφάλεια των πελατών και των δεδομένων. + +Επιπλέον, τα μοντέλα Μηχανικής Μάθησης δεν μπορούν να διακρίνουν εύκολα μεταξύ κακόβουλων εισροών και αθώων ανώμαλων δεδομένων. Ένα σημαντικό μέρος των δεδομένων εκπαίδευσης προέρχεται από μη επιμελημένα, μη ελεγχόμενα δημόσια σύνολα δεδομένων, τα οποία είναι ανοιχτά σε συνεισφορές τρίτων. Οι επιτιθέμενοι δεν χρειάζεται να παραβιάσουν τα σύνολα δεδομένων όταν μπορούν να συνεισφέρουν σε αυτά. Με την πάροδο του χρόνου, τα κακόβουλα δεδομένα χαμηλής εμπιστοσύνης γίνονται δεδομένα υψηλής εμπιστοσύνης, εφόσον η δομή/μορφοποίηση των δεδομένων παραμένει σωστή. + +Γι' αυτό είναι κρίσιμο να εξασφαλίσετε την ακεραιότητα και την προστασία των αποθηκευμένων δεδομένων που χρησιμοποιούν τα μοντέλα σας για τη λήψη αποφάσεων. + +## Κατανόηση των απειλών και των κινδύνων της AI + +Όσον αφορά την AI και τα συναφή συστήματα, η δηλητηρίαση δεδομένων αποτελεί τη σημαντικότερη απειλή ασφάλειας σήμερα. Η δηλητηρίαση δεδομένων συμβαίνει όταν κάποιος αλλάζει σκόπιμα τις πληροφορίες που χρησιμοποιούνται για την εκπαίδευση της AI, προκαλώντας της να κάνει λάθη. Αυτό οφείλεται στην απουσία τυποποιημένων μεθόδων ανίχνευσης και αντιμετώπισης, σε συνδυασμό με την εξάρτησή μας από μη αξιόπιστα ή μη επιμελημένα δημόσια σύνολα δεδομένων για εκπαίδευση. Για να διατηρηθεί η ακεραιότητα των δεδομένων και να αποφευχθεί μια ελαττωματική διαδικασία εκπαίδευσης, είναι κρίσιμο να παρακολουθείται η προέλευση και η γενεαλογία των δεδομένων σας. Διαφορετικά, το παλιό ρητό "σκουπίδια μέσα, σκουπίδια έξω" ισχύει, οδηγώντας σε υποβαθμισμένη απόδοση του μοντέλου. + +Ακολουθούν παραδείγματα για το πώς η δηλητηρίαση δεδομένων μπορεί να επηρεάσει τα μοντέλα σας: + +1. **Αντιστροφή Ετικετών**: Σε μια εργασία δυαδικής ταξινόμησης, ένας αντίπαλος αντιστρέφει σκόπιμα τις ετικέτες ενός μικρού υποσυνόλου δεδομένων εκπαίδευσης. Για παράδειγμα, τα αθώα δείγματα χαρακτηρίζονται ως κακόβουλα, οδηγώντας το μοντέλο να μάθει λανθασμένες συσχετίσεις.\ + **Παράδειγμα**: Ένα φίλτρο ανεπιθύμητης αλληλογραφίας που ταξινομεί λανθασμένα νόμιμα email ως ανεπιθύμητα λόγω παραποιημένων ετικετών. +2. **Δηλητηρίαση Χαρακτηριστικών**: Ένας επιτιθέμενος τροποποιεί διακριτικά χαρακτηριστικά στα δεδομένα εκπαίδευσης για να εισάγει προκατάληψη ή να παραπλανήσει το μοντέλο.\ + **Παράδειγμα**: Προσθήκη άσχετων λέξεων-κλειδιών στις περιγραφές προϊόντων για να επηρεαστούν τα συστήματα συστάσεων. +3. **Εισαγωγή Δεδομένων**: Εισαγωγή κακόβουλων δεδομένων στο σύνολο εκπαίδευσης για να επηρεαστεί η συμπεριφορά του μοντέλου.\ + **Παράδειγμα**: Εισαγωγή ψεύτικων κριτικών χρηστών για να αλλοιωθούν τα αποτελέσματα ανάλυσης συναισθημάτων. +4. **Επιθέσεις Πίσω Πόρτας**: Ένας αντίπαλος εισάγει ένα κρυφό μοτίβο (πίσω πόρτα) στα δεδομένα εκπαίδευσης. Το μοντέλο μαθαίνει να αναγνωρίζει αυτό το μοτίβο και συμπεριφέρεται κακόβουλα όταν ενεργοποιείται.\ + **Παράδειγμα**: Ένα σύστημα αναγνώρισης προσώπου που εκπαιδεύεται με εικόνες πίσω πόρτας και αναγνωρίζει λανθασμένα ένα συγκεκριμένο άτομο. + +Η MITRE Corporation έχει δημιουργήσει το [ATLAS (Adversarial Threat Landscape for Artificial-Intelligence Systems)](https://atlas.mitre.org/?WT.mc_id=academic-105485-koreyst), μια βάση γνώσεων για τακτικές και τεχνικές που χρησιμοποιούνται από αντιπάλους σε πραγματικές επιθέσεις σε συστήματα AI. + +> Υπάρχει ένας αυξανόμενος αριθμός ευπαθειών σε συστήματα που υποστηρίζονται από AI, καθώς η ενσωμάτωση της AI αυξάνει την επιφάνεια επίθεσης των υπαρχόντων συστημάτων πέρα από τις παραδοσιακές κυβερνοεπιθέσεις. Δημιουργήσαμε το ATLAS για να αυξήσουμε την ευαισθητοποίηση σχετικά με αυτές τις μοναδικές και εξελισσόμενες ευπάθειες, καθώς η παγκόσμια κοινότητα ενσωματώνει όλο και περισσότερο την AI σε διάφορα συστήματα. Το ATLAS είναι μοντελοποιημένο σύμφωνα με το πλαίσιο MITRE ATT&CK® και οι τακτικές, τεχνικές και διαδικασίες (TTPs) του είναι συμπληρωματικές με αυτές στο ATT&CK. + +Όπως και το πλαίσιο MITRE ATT&CK®, το οποίο χρησιμοποιείται εκτενώς στην παραδοσιακή κυβερνοασφάλεια για τον σχεδιασμό προηγμένων σεναρίων εξομοίωσης απειλών, το ATLAS παρέχει ένα εύκολα αναζητήσιμο σύνολο TTPs που μπορεί να βοηθήσει στην καλύτερη κατανόηση και προετοιμασία για την άμυνα ενάντια σε αναδυόμενες επιθέσεις. + +Επιπλέον, το Open Web Application Security Project (OWASP) έχει δημιουργήσει μια "[Λίστα Top 10](https://llmtop10.com/?WT.mc_id=academic-105485-koreyst)" με τις πιο κρίσιμες ευπάθειες που βρίσκονται σε εφαρμογές που χρησιμοποιούν LLMs. Η λίστα αναδεικνύει τους κινδύνους απειλών όπως η προαναφερθείσα δηλητηρίαση δεδομένων, καθώς και άλλες όπως: + +- **Εισαγωγή Εντολών**: μια τεχνική όπου οι επιτιθέμενοι χειραγωγούν ένα Μεγάλο Γλωσσικό Μοντέλο (LLM) μέσω προσεκτικά διαμορφωμένων εισροών, προκαλώντας του να συμπεριφέρεται εκτός της προβλεπόμενης συμπεριφοράς. +- **Ευπάθειες Εφοδιαστικής Αλυσίδας**: Τα στοιχεία και το λογισμικό που αποτελούν τις εφαρμογές που χρησιμοποιούνται από ένα LLM, όπως τα Python modules ή εξωτερικά σύνολα δεδομένων, μπορούν να παραβιαστούν, οδηγώντας σε απρόσμενα αποτελέσματα, εισαγωγή προκαταλήψεων και ακόμη και ευπάθειες στην υποκείμενη υποδομή. +- **Υπερβολική Εξάρτηση**: Τα LLMs είναι επιρρεπή σε σφάλματα και έχουν την τάση να "φαντάζονται", παρέχοντας ανακριβή ή μη ασφαλή αποτελέσματα. Σε αρκετές τεκμηριωμένες περιπτώσεις, οι άνθρωποι έχουν δεχθεί τα αποτελέσματα ως δεδομένα, οδηγώντας σε ανεπιθύμητες αρνητικές συνέπειες στον πραγματικό κόσμο. + +Ο Microsoft Cloud Advocate Rod Trent έχει γράψει ένα δωρεάν ebook, [Must Learn AI Security](https://github.com/rod-trent/OpenAISecurity/tree/main/Must_Learn/Book_Version?WT.mc_id=academic-105485-koreyst), που εξετάζει σε βάθος αυτές και άλλες αναδυόμενες απειλές AI και παρέχει εκτενή καθοδήγηση για το πώς να αντιμετωπιστούν καλύτερα αυτά τα σενάρια. + +## Δοκιμές Ασφάλειας για Συστήματα AI και LLMs + +Η τεχνητή νοημοσύνη (AI) μεταμορφώνει διάφορους τομείς και βιομηχανίες, προσφέροντας νέες δυνατότητες και οφέλη για την κοινωνία. Ωστόσο, η AI θέτει επίσης σημαντικές προκλήσεις και κινδύνους, όπως η ιδιωτικότητα δεδομένων, η προκατάληψη, η έλλειψη εξηγήσεων και η πιθανή κατάχρηση. Επομένως, είναι ζωτικής σημασίας να διασφαλιστεί ότι τα συστήματα AI είναι ασφαλή και υπεύθυνα, δηλαδή ότι συμμορφώνονται με ηθικά και νομικά πρότυπα και μπορούν να εμπιστευτούν από χρήστες και ενδιαφερόμενους. + +Η δοκιμή ασφάλειας είναι η διαδικασία αξιολόγησης της ασφάλειας ενός συστήματος AI ή LLM, μέσω της αναγνώρισης και εκμετάλλευσης των ευπαθειών τους. Αυτό μπορεί να πραγματοποιηθεί από προγραμματιστές, χρήστες ή τρίτους ελεγκτές, ανάλογα με τον σκοπό και το εύρος της δοκιμής. Μερικές από τις πιο κοινές μεθόδους δοκιμής ασφάλειας για συστήματα AI και LLMs είναι: + +- **Καθαρισμός Δεδομένων**: Η διαδικασία αφαίρεσης ή ανωνυμοποίησης ευαίσθητων ή ιδιωτικών πληροφοριών από τα δεδομένα εκπαίδευσης ή την είσοδο ενός συστήματος AI ή LLM. Ο καθαρισμός δεδομένων μπορεί να βοηθήσει στην πρόληψη διαρροής δεδομένων και κακόβουλης χειραγώγησης μειώνοντας την έκθεση εμπιστευτικών ή προσωπικών δεδομένων. +- **Δοκιμές Αντιπαραθέσεων**: Η διαδικασία δημιουργίας και εφαρμογής αντιπαραθετικών παραδειγμάτων στην είσοδο ή την έξοδο ενός συστήματος AI ή LLM για την αξιολόγηση της ανθεκτικότητας και της αντίστασής του σε αντιπαραθετικές επιθέσεις. Οι δοκιμές αντιπαραθέσεων μπορούν να βοηθήσουν στην αναγνώριση και αντιμετώπιση των ευπαθειών και αδυναμιών ενός συστήματος AI ή LLM που μπορεί να εκμεταλλευτούν οι επιτιθέμενοι. +- **Επαλήθευση Μοντέλου**: Η διαδικασία επαλήθευσης της ορθότητας και πληρότητας των παραμέτρων ή της αρχιτεκτονικής του μοντέλου ενός συστήματος AI ή LLM. Η επαλήθευση μοντέλου μπορεί να βοηθήσει στην ανίχνευση και πρόληψη κλοπής μοντέλου διασφαλίζοντας ότι το μοντέλο είναι προστατευμένο και αυθεντικό. +- **Επικύρωση Εξόδου**: Η διαδικασία επικύρωσης της ποιότητας και αξιοπιστίας της εξόδου ενός συστήματος AI ή LLM. Η επικύρωση εξόδου μπορεί να βοηθήσει στην ανίχνευση και διόρθωση κακόβουλης χειραγώγησης διασφαλίζοντας ότι η έξοδος είναι συνεπής και ακριβής. + +Η OpenAI, ηγέτης στα συστήματα AI, έχει δημιουργήσει μια σειρά από _αξιολογήσεις ασφάλειας_ ως μέρος της πρωτοβουλίας δικτύου red teaming, με στόχο τη δοκιμή της εξόδου συστημάτων AI με την ελπίδα να συμβάλει στην ασφάλεια της AI. + +> Οι αξιολογήσεις μπορεί να κυμαίνονται από απλές δοκιμές ερωτήσεων και απαντήσεων έως πιο σύνθετες προσομοιώσεις. Ως συγκεκριμένα παραδείγματα, εδώ είναι δείγματα αξιολογήσεων που αναπτύχθηκαν από την OpenAI για την αξιολόγηση συμπεριφορών AI από διάφορες οπτικές γωνίες: + +#### Πειθώ + +- [MakeMeSay](https://github.com/openai/evals/tree/main/evals/elsuite/make_me_say/readme.md?WT.mc_id=academic-105485-koreyst): Πόσο καλά μπορεί ένα σύστημα AI να παραπλανήσει ένα άλλο σύστημα AI ώστε να πει μια μυστική λέξη; +- [MakeMePay](https://github.com/openai/evals/tree/main/evals/elsuite/make_me_pay/readme.md?WT.mc_id=academic-105485-koreyst): Πόσο καλά μπορεί ένα σύστημα AI να πείσει ένα άλλο σύστημα AI να δωρίσει χρήματα; +- [Ballot Proposal](https://github.com/openai/evals/tree/main/evals/elsuite/ballots/readme.md?WT.mc_id=academic-105485-koreyst): Πόσο καλά μπορεί ένα σύστημα AI να επηρεάσει την υποστήριξη ενός άλλου συστήματος AI για μια πολιτική πρόταση; + +#### Στεγανογραφία (κρυφά μηνύματα) + +- [Steganography](https://github.com/openai/evals/tree/main/evals/elsuite/steganography/readme.md?WT.mc_id=academic-105485-koreyst): Πόσο καλά μπορεί ένα σύστημα AI να περάσει κρυφά μηνύματα χωρίς να εντοπιστεί από ένα άλλο σύστημα AI; +- [Text Compression](https://github.com/openai/evals/tree/main/evals/elsuite/text_compression/readme.md?WT.mc_id=academic-105485-koreyst): Πόσο καλά μπορεί ένα σύστημα AI να συμπιέσει και να αποσυμπιέσει μηνύματα, ώστε να επιτρέψει την απόκρυψη κρυφών μηνυμάτων; +- [Schelling Point](https://github.com/openai/evals/blob/main/evals/elsuite/schelling_point/README.md?WT.mc_id=academic-105485-koreyst): Πόσο καλά μπορεί ένα σύστημα AI να συντονιστεί με ένα άλλο σύστημα AI, χωρίς άμεση επικοινωνία; + +### Ασφάλεια AI + +Είναι επιτακτική ανάγκη να προστατεύσουμε τα συστήματα AI από κακόβουλες επιθέσεις, κατάχρηση ή απρόβλεπτες συνέπειες. Αυτό περιλαμβάνει τη λήψη μέτρων για τη διασφάλιση της ασφάλειας, της αξιοπιστίας και της εμπιστοσύνης των συστημάτων AI, όπως: + +- Προστασία των δεδομένων και των αλγορίθμων που χρησιμοποιούνται για την εκπαίδευση και τη λειτουργία των μοντέλων AI +- Πρόληψη μη εξου +Η προσομοίωση πραγματικών απειλών θεωρείται πλέον μια τυπική πρακτική για την ανάπτυξη ανθεκτικών συστημάτων AI, χρησιμοποιώντας παρόμοια εργαλεία, τακτικές και διαδικασίες για την αναγνώριση των κινδύνων στα συστήματα και τη δοκιμή της αντίδρασης των αμυντικών μηχανισμών. + +> Η πρακτική του AI red teaming έχει εξελιχθεί ώστε να αποκτήσει ένα πιο διευρυμένο νόημα: δεν καλύπτει μόνο την ανίχνευση ευπαθειών ασφαλείας, αλλά περιλαμβάνει επίσης την ανίχνευση άλλων αποτυχιών του συστήματος, όπως η δημιουργία δυνητικά επιβλαβούς περιεχομένου. Τα συστήματα AI φέρνουν νέους κινδύνους, και το red teaming είναι βασικό για την κατανόηση αυτών των νέων κινδύνων, όπως η έγχυση εντολών και η παραγωγή περιεχομένου χωρίς βάση. - [Microsoft AI Red Team building future of safer AI](https://www.microsoft.com/security/blog/2023/08/07/microsoft-ai-red-team-building-future-of-safer-ai/?WT.mc_id=academic-105485-koreyst) + +[![Καθοδήγηση και πόροι για το red teaming](../../../translated_images/13-AI-red-team.642ed54689d7e8a4d83bdf0635768c4fd8aa41ea539d8e3ffe17514aec4b4824.el.png)]() + +Παρακάτω παρατίθενται βασικές πληροφορίες που έχουν διαμορφώσει το πρόγραμμα AI Red Team της Microsoft. + +1. **Διευρυμένο Πεδίο του AI Red Teaming:** + Το AI red teaming πλέον καλύπτει τόσο την ασφάλεια όσο και τα αποτελέσματα Υπεύθυνης AI (RAI). Παραδοσιακά, το red teaming επικεντρωνόταν στις πτυχές ασφαλείας, αντιμετωπίζοντας το μοντέλο ως έναν φορέα (π.χ., κλοπή του υποκείμενου μοντέλου). Ωστόσο, τα συστήματα AI εισάγουν νέες ευπάθειες ασφαλείας (π.χ., έγχυση εντολών, δηλητηρίαση), που απαιτούν ειδική προσοχή. Πέρα από την ασφάλεια, το AI red teaming εξετάζει επίσης ζητήματα δικαιοσύνης (π.χ., στερεοτυπικές αντιλήψεις) και επιβλαβές περιεχόμενο (π.χ., εξύμνηση της βίας). Η έγκαιρη αναγνώριση αυτών των ζητημάτων επιτρέπει την προτεραιοποίηση των επενδύσεων στην άμυνα. +2. **Κακόβουλες και Αθώες Αποτυχίες:** + Το AI red teaming εξετάζει αποτυχίες τόσο από κακόβουλη όσο και από αθώα σκοπιά. Για παράδειγμα, κατά το red teaming του νέου Bing, εξετάζουμε όχι μόνο πώς κακόβουλοι αντίπαλοι μπορούν να υπονομεύσουν το σύστημα, αλλά και πώς οι απλοί χρήστες μπορεί να συναντήσουν προβληματικό ή επιβλαβές περιεχόμενο. Σε αντίθεση με το παραδοσιακό red teaming ασφαλείας, που επικεντρώνεται κυρίως σε κακόβουλους παράγοντες, το AI red teaming λαμβάνει υπόψη ένα ευρύτερο φάσμα προσωπικοτήτων και πιθανών αποτυχιών. +3. **Δυναμική Φύση των Συστημάτων AI:** + Οι εφαρμογές AI εξελίσσονται συνεχώς. Στις εφαρμογές μεγάλων γλωσσικών μοντέλων, οι προγραμματιστές προσαρμόζονται στις μεταβαλλόμενες απαιτήσεις. Η συνεχής διαδικασία red teaming εξασφαλίζει συνεχή επαγρύπνηση και προσαρμογή στους εξελισσόμενους κινδύνους. + +Το AI red teaming δεν είναι πανάκεια και θα πρέπει να θεωρείται συμπληρωματική κίνηση σε πρόσθετους ελέγχους, όπως [έλεγχος πρόσβασης βάσει ρόλων (RBAC)](https://learn.microsoft.com/azure/ai-services/openai/how-to/role-based-access-control?WT.mc_id=academic-105485-koreyst) και ολοκληρωμένες λύσεις διαχείρισης δεδομένων. Σκοπός του είναι να συμπληρώσει μια στρατηγική ασφαλείας που επικεντρώνεται στη χρήση ασφαλών και υπεύθυνων λύσεων AI, λαμβάνοντας υπόψη την ιδιωτικότητα και την ασφάλεια, ενώ επιδιώκει να ελαχιστοποιήσει τις προκαταλήψεις, το επιβλαβές περιεχόμενο και την παραπληροφόρηση που μπορεί να υπονομεύσουν την εμπιστοσύνη των χρηστών. + +Ακολουθεί μια λίστα με πρόσθετη βιβλιογραφία που μπορεί να σας βοηθήσει να κατανοήσετε καλύτερα πώς το red teaming μπορεί να βοηθήσει στην αναγνώριση και μείωση των κινδύνων στα συστήματα AI σας: + +- [Σχεδιασμός red teaming για μεγάλα γλωσσικά μοντέλα (LLMs) και τις εφαρμογές τους](https://learn.microsoft.com/azure/ai-services/openai/concepts/red-teaming?WT.mc_id=academic-105485-koreyst) +- [Τι είναι το OpenAI Red Teaming Network;](https://openai.com/blog/red-teaming-network?WT.mc_id=academic-105485-koreyst) +- [AI Red Teaming - Μια Βασική Πρακτική για την Ανάπτυξη Ασφαλέστερων και Πιο Υπεύθυνων Λύσεων AI](https://rodtrent.substack.com/p/ai-red-teaming?WT.mc_id=academic-105485-koreyst) +- MITRE [ATLAS (Adversarial Threat Landscape for Artificial-Intelligence Systems)](https://atlas.mitre.org/?WT.mc_id=academic-105485-koreyst), μια βάση γνώσεων για τακτικές και τεχνικές που χρησιμοποιούνται από αντιπάλους σε πραγματικές επιθέσεις σε συστήματα AI. + +## Έλεγχος γνώσεων + +Ποια θα μπορούσε να είναι μια καλή προσέγγιση για τη διατήρηση της ακεραιότητας των δεδομένων και την αποτροπή κατάχρησης; + +1. Εφαρμογή ισχυρών ελέγχων πρόσβασης βάσει ρόλων για τη διαχείριση δεδομένων +1. Εφαρμογή και έλεγχος επισήμανσης δεδομένων για την αποτροπή παραπλάνησης ή κατάχρησης δεδομένων +1. Εξασφάλιση ότι η υποδομή AI σας υποστηρίζει φιλτράρισμα περιεχομένου + +Α:1, Παρόλο που και οι τρεις είναι εξαιρετικές συστάσεις, η εξασφάλιση ότι αποδίδετε τα κατάλληλα δικαιώματα πρόσβασης δεδομένων στους χρήστες θα συμβάλει σημαντικά στην αποτροπή χειραγώγησης και παραπλάνησης των δεδομένων που χρησιμοποιούνται από τα LLMs. + +## 🚀 Πρόκληση + +Διαβάστε περισσότερα για το πώς μπορείτε να [διαχειριστείτε και να προστατεύσετε ευαίσθητες πληροφορίες](https://learn.microsoft.com/training/paths/purview-protect-govern-ai/?WT.mc_id=academic-105485-koreyst) στην εποχή της AI. + +## Εξαιρετική δουλειά, συνεχίστε τη μάθηση σας + +Αφού ολοκληρώσετε αυτό το μάθημα, δείτε τη [Συλλογή Μάθησης για Γενετική AI](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) για να συνεχίσετε να αναβαθμίζετε τις γνώσεις σας στη Γενετική AI! + +Προχωρήστε στο Μάθημα 14, όπου θα εξετάσουμε [τον Κύκλο Ζωής Εφαρμογών Γενετικής AI](../14-the-generative-ai-application-lifecycle/README.md?WT.mc_id=academic-105485-koreyst)! + +--- + +**Αποποίηση ευθύνης**: +Αυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία μετάφρασης AI [Co-op Translator](https://github.com/Azure/co-op-translator). Παρόλο που καταβάλλουμε προσπάθειες για ακρίβεια, παρακαλούμε να έχετε υπόψη ότι οι αυτοματοποιημένες μεταφράσεις ενδέχεται να περιέχουν λάθη ή ανακρίβειες. Το πρωτότυπο έγγραφο στη μητρική του γλώσσα θα πρέπει να θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε ευθύνη για τυχόν παρεξηγήσεις ή εσφαλμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης. \ No newline at end of file diff --git a/translations/el/14-the-generative-ai-application-lifecycle/README.md b/translations/el/14-the-generative-ai-application-lifecycle/README.md index 586dc63487..36cb5b724b 100644 --- a/translations/el/14-the-generative-ai-application-lifecycle/README.md +++ b/translations/el/14-the-generative-ai-application-lifecycle/README.md @@ -1,98 +1,101 @@ - -[![Ενσωμάτωση με function calling](../../../translated_images/14-lesson-banner.066d74a31727ac121eeac06376a068a397d8e335281e63ce94130d11f516e46b.el.png)](https://aka.ms/gen-ai-lesson14-gh?WT.mc_id=academic-105485-koreyst) - -# Ο Κύκλος Ζωής Εφαρμογών Γεννητικής Τεχνητής Νοημοσύνης - -Ένα σημαντικό ερώτημα για όλες τις εφαρμογές ΤΝ είναι η συνάφεια των λειτουργιών ΤΝ, καθώς η ΤΝ εξελίσσεται ραγδαία. Για να διασφαλίσετε ότι η εφαρμογή σας παραμένει σχετική, αξιόπιστη και ανθεκτική, χρειάζεται να την παρακολουθείτε, να την αξιολογείτε και να την βελτιώνετε συνεχώς. Εδώ έρχεται ο κύκλος ζωής της γεννητικής ΤΝ. - -Ο κύκλος ζωής της γεννητικής ΤΝ είναι ένα πλαίσιο που σας καθοδηγεί στα στάδια ανάπτυξης, υλοποίησης και συντήρησης μιας εφαρμογής γεννητικής ΤΝ. Σας βοηθά να ορίσετε τους στόχους σας, να μετρήσετε την απόδοσή σας, να εντοπίσετε τις προκλήσεις και να εφαρμόσετε λύσεις. Επιπλέον, σας βοηθά να ευθυγραμμίσετε την εφαρμογή σας με τα ηθικά και νομικά πρότυπα του τομέα σας και των ενδιαφερομένων σας. Ακολουθώντας τον κύκλο ζωής της γεννητικής ΤΝ, διασφαλίζετε ότι η εφαρμογή σας προσφέρει πάντα αξία και ικανοποιεί τους χρήστες σας. - -## Εισαγωγή - -Σε αυτό το κεφάλαιο, θα: - -- Κατανοήσετε τη Μετατόπιση Παραδείγματος από MLOps σε LLMOps -- Τον Κύκλο Ζωής των LLM -- Εργαλεία Κύκλου Ζωής -- Μετρικές και Αξιολόγηση Κύκλου Ζωής - -## Κατανοήστε τη Μετατόπιση Παραδείγματος από MLOps σε LLMOps - -Τα LLMs είναι ένα νέο εργαλείο στο οπλοστάσιο της Τεχνητής Νοημοσύνης, εξαιρετικά ισχυρά σε εργασίες ανάλυσης και δημιουργίας για εφαρμογές. Ωστόσο, αυτή η ισχύς έχει συνέπειες στον τρόπο που οργανώνουμε τις εργασίες ΤΝ και Κλασικής Μηχανικής Μάθησης. - -Για αυτό χρειαζόμαστε ένα νέο παράδειγμα για να προσαρμόσουμε αυτό το εργαλείο δυναμικά, με τα σωστά κίνητρα. Μπορούμε να κατηγοριοποιήσουμε τις παλαιότερες εφαρμογές ΤΝ ως "ML Apps" και τις νεότερες ως "GenAI Apps" ή απλά "AI Apps", αντανακλώντας την κυρίαρχη τεχνολογία και τεχνικές της εποχής. Αυτό αλλάζει την αφήγησή μας με πολλούς τρόπους, δείτε την παρακάτω σύγκριση. - -![Σύγκριση LLMOps vs. MLOps](../../../translated_images/01-llmops-shift.29bc933cb3bb0080a562e1655c0c719b71a72c3be6252d5c564b7f598987e602.el.png) - -Παρατηρήστε ότι στο LLMOps, εστιάζουμε περισσότερο στους προγραμματιστές εφαρμογών, χρησιμοποιώντας ενσωματώσεις ως βασικό σημείο, αξιοποιώντας "Models-as-a-Service" και σκεπτόμενοι τα εξής για τις μετρικές: - -- Ποιότητα: Ποιότητα απάντησης -- Βλάβη: Υπεύθυνη ΤΝ -- Ειλικρίνεια: Βάση απάντησης (Έχει νόημα; Είναι σωστή;) -- Κόστος: Προϋπολογισμός λύσης -- Καθυστέρηση: Μέσος χρόνος απόκρισης ανά token - -## Ο Κύκλος Ζωής των LLM - -Πρώτα, για να κατανοήσουμε τον κύκλο ζωής και τις τροποποιήσεις, ας δούμε το παρακάτω infographic. - -![Infographic LLMOps](../../../translated_images/02-llmops.70a942ead05a7645db740f68727d90160cb438ab71f0fb20548bc7fe5cad83ff.el.png) - -Όπως ίσως παρατηρήσετε, αυτό διαφέρει από τους συνήθεις κύκλους ζωής του MLOps. Τα LLM έχουν πολλές νέες απαιτήσεις, όπως το Prompting, διαφορετικές τεχνικές βελτίωσης ποιότητας (Fine-Tuning, RAG, Meta-Prompts), διαφορετική αξιολόγηση και υπευθυνότητα με υπεύθυνη ΤΝ, και τέλος, νέες μετρικές αξιολόγησης (Ποιότητα, Βλάβη, Ειλικρίνεια, Κόστος και Καθυστέρηση). - -Για παράδειγμα, δείτε πώς κάνουμε ιδεασμό. Χρησιμοποιώντας prompt engineering για να πειραματιστούμε με διάφορα LLMs και να εξερευνήσουμε πιθανότητες για να ελέγξουμε αν η υπόθεσή μας μπορεί να είναι σωστή. - -Σημειώστε ότι δεν είναι γραμμικό, αλλά ενσωματωμένοι βρόχοι, επαναληπτικοί και με έναν υπερκείμενο κύκλο. - -Πώς μπορούμε να εξερευνήσουμε αυτά τα βήματα; Ας δούμε λεπτομερώς πώς μπορούμε να χτίσουμε έναν κύκλο ζωής. - -![Ροή εργασιών LLMOps](../../../translated_images/03-llm-stage-flows.3a1e1c401235a6cfa886ed6ba04aa52a096a545e1bc44fa54d7d5983a7201892.el.png) - -Αυτό μπορεί να φαίνεται λίγο περίπλοκο, ας εστιάσουμε πρώτα στα τρία μεγάλα βήματα. - -1. Ιδεασμός/Εξερεύνηση: Εξερεύνηση, εδώ μπορούμε να εξερευνήσουμε ανάλογα με τις επιχειρηματικές μας ανάγκες. Πρωτοτυποποίηση, δημιουργία ενός [PromptFlow](https://microsoft.github.io/promptflow/index.html?WT.mc_id=academic-105485-koreyst) και έλεγχος αν είναι αρκετά αποδοτικό για την υπόθεσή μας. -1. Κατασκευή/Ενίσχυση: Υλοποίηση, τώρα ξεκινάμε την αξιολόγηση σε μεγαλύτερα σύνολα δεδομένων, εφαρμόζοντας τεχνικές όπως Fine-tuning και RAG, για να ελέγξουμε την ανθεκτικότητα της λύσης μας. Αν δεν λειτουργεί, η επανυλοποίηση, η προσθήκη νέων βημάτων στη ροή ή η αναδιάρθρωση των δεδομένων μπορεί να βοηθήσει. Μετά τον έλεγχο της ροής και της κλίμακας, αν λειτουργεί και οι μετρικές είναι ικανοποιητικές, είναι έτοιμο για το επόμενο βήμα. -1. Λειτουργικοποίηση: Ενσωμάτωση, τώρα προσθέτουμε συστήματα παρακολούθησης και ειδοποιήσεων, ανάπτυξη και ενσωμάτωση της εφαρμογής στην πλατφόρμα μας. - -Στη συνέχεια, υπάρχει ο υπερκείμενος κύκλος της Διαχείρισης, με έμφαση στην ασφάλεια, τη συμμόρφωση και τη διακυβέρνηση. - -Συγχαρητήρια, τώρα η εφαρμογή ΤΝ σας είναι έτοιμη και λειτουργική. Για πρακτική εμπειρία, ρίξτε μια ματιά στο [Contoso Chat Demo.](https://nitya.github.io/contoso-chat/?WT.mc_id=academic-105485-koreys) - -Τώρα, ποια εργαλεία μπορούμε να χρησιμοποιήσουμε; - -## Εργαλεία Κύκλου Ζωής - -Για εργαλεία, η Microsoft παρέχει την [Azure AI Platform](https://azure.microsoft.com/solutions/ai/?WT.mc_id=academic-105485-koreys) και το [PromptFlow](https://microsoft.github.io/promptflow/index.html?WT.mc_id=academic-105485-koreyst) που διευκολύνουν και κάνουν τον κύκλο σας εύκολο στην υλοποίηση και έτοιμο για χρήση. - -Η [Azure AI Platform](https://azure.microsoft.com/solutions/ai/?WT.mc_id=academic-105485-koreys) σας επιτρέπει να χρησιμοποιήσετε το [AI Studio](https://ai.azure.com/?WT.mc_id=academic-105485-koreys). Το AI Studio είναι μια διαδικτυακή πύλη που σας επιτρέπει να εξερευνήσετε μοντέλα, δείγματα και εργαλεία. Διαχειρίζεστε τους πόρους σας, τις ροές ανάπτυξης UI και τις επιλογές SDK/CLI για ανάπτυξη με κώδικα. - -![Δυνατότητες Azure AI](../../../translated_images/04-azure-ai-platform.80203baf03a12fa8b166e194928f057074843d1955177baf0f5b53d50d7b6153.el.png) - -Το Azure AI σας επιτρέπει να χρησιμοποιήσετε πολλαπλούς πόρους για να διαχειριστείτε τις λειτουργίες, τις υπηρεσίες, τα έργα, τις ανάγκες αναζήτησης vector και βάσεων δεδομένων. - -![LLMOps με Azure AI](../../../translated_images/05-llm-azure-ai-prompt.a5ce85cdbb494bdf95420668e3464aae70d8b22275a744254e941dd5e73ae0d2.el.png) - -Κατασκευάστε, από Proof-of-Concept (POC) μέχρι εφαρμογές μεγάλης κλίμακας με το PromptFlow: - -- Σχεδιάστε και δημιουργήστε εφαρμογές από το VS Code, με οπτικά και λειτουργικά εργαλεία -- Δοκιμάστε και βελτιστοποιήστε τις εφαρμογές σας για ποιοτική ΤΝ, εύκολα -- Χρησιμοποιήστε το Azure AI Studio για να ενσωματώσετε και να επαναλάβετε με το cloud, να προωθήσετε και να αναπτύξετε για γρήγορη ενσωμάτωση - -![LLMOps με PromptFlow](../../../translated_images/06-llm-promptflow.a183eba07a3a7fdf4aa74db92a318b8cbbf4a608671f6b166216358d3203d8d4.el.png) - -## Τέλεια! Συνεχίστε τη Μάθησή σας! - -Καταπληκτικά, τώρα μάθετε περισσότερα για το πώς δομούμε μια εφαρμογή για να χρησιμοποιήσετε τις έννοιες με το [Contoso Chat App](https://nitya.github.io/contoso-chat/?WT.mc_id=academic-105485-koreyst), για να δείτε πώς το Cloud Advocacy ενσωματώνει αυτές τις έννοιες σε επιδείξεις. Για περισσότερο περιεχόμενο, δείτε την [Ignite breakout session!](https://www.youtube.com/watch?v=DdOylyrTOWg) - -Τώρα, δείτε το Μάθημα 15, για να κατανοήσετε πώς το [Retrieval Augmented Generation και οι Vector Databases](../15-rag-and-vector-databases/README.md?WT.mc_id=academic-105485-koreyst) επηρεάζουν τη Γεννητική ΤΝ και πώς να δημιουργήσετε πιο ελκυστικές εφαρμογές! - -**Αποποίηση ευθυνών**: -Αυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία αυτόματης μετάφρασης AI [Co-op Translator](https://github.com/Azure/co-op-translator). Παρόλο που επιδιώκουμε την ακρίβεια, παρακαλούμε να έχετε υπόψη ότι οι αυτόματες μεταφράσεις ενδέχεται να περιέχουν λάθη ή ανακρίβειες. Το πρωτότυπο έγγραφο στη γλώσσα του θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε ευθύνη για τυχόν παρεξηγήσεις ή λανθασμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης. \ No newline at end of file + +[![Ενσωμάτωση με κλήση λειτουργιών](../../../translated_images/14-lesson-banner.066d74a31727ac121eeac06376a068a397d8e335281e63ce94130d11f516e46b.el.png)](https://youtu.be/ewtQY_RJrzs?si=dyJ2bjiljH7UUHCh) + +# Ο Κύκλος Ζωής Εφαρμογών Γενετικής Τεχνητής Νοημοσύνης + +Ένα σημαντικό ερώτημα για όλες τις εφαρμογές AI είναι η συνάφεια των χαρακτηριστικών AI, καθώς το πεδίο της τεχνητής νοημοσύνης εξελίσσεται γρήγορα. Για να διασφαλίσετε ότι η εφαρμογή σας παραμένει σχετική, αξιόπιστη και ανθεκτική, πρέπει να την παρακολουθείτε, να την αξιολογείτε και να την βελτιώνετε συνεχώς. Εδώ έρχεται ο κύκλος ζωής της γενετικής τεχνητής νοημοσύνης. + +Ο κύκλος ζωής της γενετικής τεχνητής νοημοσύνης είναι ένα πλαίσιο που σας καθοδηγεί στα στάδια ανάπτυξης, υλοποίησης και συντήρησης μιας εφαρμογής γενετικής τεχνητής νοημοσύνης. Σας βοηθά να ορίσετε τους στόχους σας, να μετρήσετε την απόδοσή σας, να εντοπίσετε τις προκλήσεις σας και να εφαρμόσετε τις λύσεις σας. Επίσης, σας βοηθά να ευθυγραμμίσετε την εφαρμογή σας με τα ηθικά και νομικά πρότυπα του τομέα σας και των ενδιαφερόμενων μερών σας. Ακολουθώντας τον κύκλο ζωής της γενετικής τεχνητής νοημοσύνης, μπορείτε να διασφαλίσετε ότι η εφαρμογή σας προσφέρει πάντα αξία και ικανοποιεί τους χρήστες σας. + +## Εισαγωγή + +Σε αυτό το κεφάλαιο, θα: + +- Κατανοήσετε τη Μετατόπιση Παραδείγματος από MLOps σε LLMOps +- Τον Κύκλο Ζωής των LLM +- Εργαλεία Κύκλου Ζωής +- Μετρήσεις και Αξιολόγηση Κύκλου Ζωής + +## Κατανοήστε τη Μετατόπιση Παραδείγματος από MLOps σε LLMOps + +Τα LLMs είναι ένα νέο εργαλείο στο οπλοστάσιο της Τεχνητής Νοημοσύνης. Είναι εξαιρετικά ισχυρά σε εργασίες ανάλυσης και δημιουργίας για εφαρμογές, ωστόσο αυτή η δύναμη έχει συνέπειες στον τρόπο που οργανώνουμε τις εργασίες AI και Κλασικής Μηχανικής Μάθησης. + +Με αυτό, χρειαζόμαστε ένα νέο Παραδείγμα για να προσαρμόσουμε αυτό το εργαλείο δυναμικά, με τα σωστά κίνητρα. Μπορούμε να κατηγοριοποιήσουμε τις παλαιότερες εφαρμογές AI ως "ML Apps" και τις νεότερες εφαρμογές AI ως "GenAI Apps" ή απλά "AI Apps", αντανακλώντας την κυρίαρχη τεχνολογία και τεχνικές που χρησιμοποιούνται εκείνη την εποχή. Αυτό μετατοπίζει την αφήγησή μας με πολλούς τρόπους, δείτε την ακόλουθη σύγκριση. + +![Σύγκριση LLMOps vs. MLOps](../../../translated_images/01-llmops-shift.29bc933cb3bb0080a562e1655c0c719b71a72c3be6252d5c564b7f598987e602.el.png) + +Παρατηρήστε ότι στα LLMOps, εστιάζουμε περισσότερο στους Προγραμματιστές Εφαρμογών, χρησιμοποιώντας τις ενσωματώσεις ως βασικό σημείο, χρησιμοποιώντας "Models-as-a-Service" και σκεπτόμενοι τα ακόλουθα σημεία για μετρήσεις. + +- Ποιότητα: Ποιότητα απάντησης +- Βλάβη: Υπεύθυνη AI +- Ειλικρίνεια: Βάση απάντησης (Έχει νόημα; Είναι σωστή;) +- Κόστος: Προϋπολογισμός λύσης +- Καθυστέρηση: Μέσος χρόνος για απάντηση σε tokens + +## Ο Κύκλος Ζωής των LLM + +Πρώτα, για να κατανοήσουμε τον κύκλο ζωής και τις τροποποιήσεις, ας σημειώσουμε το επόμενο infographic. + +![Infographic LLMOps](../../../translated_images/02-llmops.70a942ead05a7645db740f68727d90160cb438ab71f0fb20548bc7fe5cad83ff.el.png) + +Όπως μπορείτε να παρατηρήσετε, αυτό είναι διαφορετικό από τους συνήθεις κύκλους ζωής του MLOps. Τα LLMs έχουν πολλές νέες απαιτήσεις, όπως Prompting, διαφορετικές τεχνικές για τη βελτίωση της ποιότητας (Fine-Tuning, RAG, Meta-Prompts), διαφορετική αξιολόγηση και ευθύνη με υπεύθυνη AI, και τέλος, νέες μετρικές αξιολόγησης (Ποιότητα, Βλάβη, Ειλικρίνεια, Κόστος και Καθυστέρηση). + +Για παράδειγμα, δείτε πώς δημιουργούμε ιδέες. Χρησιμοποιώντας την τεχνική prompt engineering για να πειραματιστούμε με διάφορα LLMs και να εξερευνήσουμε δυνατότητες για να δοκιμάσουμε αν η Υπόθεσή τους θα μπορούσε να είναι σωστή. + +Σημειώστε ότι αυτό δεν είναι γραμμικό, αλλά ενσωματωμένοι κύκλοι, επαναληπτικοί και με έναν γενικό κύκλο. + +Πώς θα μπορούσαμε να εξερευνήσουμε αυτά τα βήματα; Ας δούμε λεπτομερώς πώς θα μπορούσαμε να χτίσουμε έναν κύκλο ζωής. + +![Ροή Εργασίας LLMOps](../../../translated_images/03-llm-stage-flows.3a1e1c401235a6cfa886ed6ba04aa52a096a545e1bc44fa54d7d5983a7201892.el.png) + +Αυτό μπορεί να φαίνεται λίγο περίπλοκο, ας επικεντρωθούμε πρώτα στα τρία μεγάλα βήματα. + +1. Δημιουργία Ιδεών/Εξερεύνηση: Εξερεύνηση, εδώ μπορούμε να εξερευνήσουμε σύμφωνα με τις επιχειρηματικές μας ανάγκες. Δημιουργία πρωτοτύπων, δημιουργία ενός [PromptFlow](https://microsoft.github.io/promptflow/index.html?WT.mc_id=academic-105485-koreyst) και δοκιμή αν είναι αρκετά αποτελεσματικό για την Υπόθεσή μας. +1. Δημιουργία/Ενίσχυση: Υλοποίηση, τώρα, αρχίζουμε να αξιολογούμε για μεγαλύτερα σύνολα δεδομένων, εφαρμόζουμε τεχνικές όπως Fine-tuning και RAG, για να ελέγξουμε την ανθεκτικότητα της λύσης μας. Αν δεν είναι, η επανεφαρμογή της, η προσθήκη νέων βημάτων στη ροή μας ή η αναδιάρθρωση των δεδομένων μπορεί να βοηθήσει. Μετά τη δοκιμή της ροής μας και της κλίμακας μας, αν λειτουργεί και ελέγξουμε τις Μετρικές μας, είναι έτοιμη για το επόμενο βήμα. +1. Λειτουργικοποίηση: Ενσωμάτωση, τώρα προσθέτουμε Συστήματα Παρακολούθησης και Ειδοποιήσεων στο σύστημά μας, υλοποίηση και ενσωμάτωση εφαρμογής στην Εφαρμογή μας. + +Στη συνέχεια, έχουμε τον γενικό κύκλο της Διαχείρισης, εστιάζοντας στην ασφάλεια, τη συμμόρφωση και τη διακυβέρνηση. + +Συγχαρητήρια, τώρα η εφαρμογή AI σας είναι έτοιμη και λειτουργική. Για πρακτική εμπειρία, δείτε το [Contoso Chat Demo.](https://nitya.github.io/contoso-chat/?WT.mc_id=academic-105485-koreys) + +Τώρα, ποια εργαλεία θα μπορούσαμε να χρησιμοποιήσουμε; + +## Εργαλεία Κύκλου Ζωής + +Για εργαλεία, η Microsoft παρέχει την [Azure AI Platform](https://azure.microsoft.com/solutions/ai/?WT.mc_id=academic-105485-koreys) και το [PromptFlow](https://microsoft.github.io/promptflow/index.html?WT.mc_id=academic-105485-koreyst) για να διευκολύνει και να κάνει τον κύκλο σας εύκολο να υλοποιηθεί και έτοιμο να ξεκινήσει. + +Η [Azure AI Platform](https://azure.microsoft.com/solutions/ai/?WT.mc_id=academic-105485-koreys), σας επιτρέπει να χρησιμοποιήσετε το [AI Studio](https://ai.azure.com/?WT.mc_id=academic-105485-koreys). Το AI Studio είναι μια διαδικτυακή πύλη που σας επιτρέπει να εξερευνήσετε μοντέλα, δείγματα και εργαλεία. Διαχείριση των πόρων σας, ροές ανάπτυξης UI και επιλογές SDK/CLI για ανάπτυξη με βάση τον κώδικα. + +![Δυνατότητες Azure AI](../../../translated_images/04-azure-ai-platform.80203baf03a12fa8b166e194928f057074843d1955177baf0f5b53d50d7b6153.el.png) + +Το Azure AI σας επιτρέπει να χρησιμοποιήσετε πολλούς πόρους, για να διαχειριστείτε τις λειτουργίες σας, τις υπηρεσίες, τα έργα, τις ανάγκες αναζήτησης με βάση διανύσματα και βάσεις δεδομένων. + +![LLMOps με Azure AI](../../../translated_images/05-llm-azure-ai-prompt.a5ce85cdbb494bdf95420668e3464aae70d8b22275a744254e941dd5e73ae0d2.el.png) + +Δημιουργήστε, από Proof-of-Concept(POC) μέχρι εφαρμογές μεγάλης κλίμακας με το PromptFlow: + +- Σχεδιάστε και Δημιουργήστε εφαρμογές από το VS Code, με οπτικά και λειτουργικά εργαλεία +- Δοκιμάστε και βελτιώστε τις εφαρμογές σας για ποιοτική AI, με ευκολία. +- Χρησιμοποιήστε το Azure AI Studio για Ενσωμάτωση και Επανάληψη με το cloud, Push και Deploy για γρήγορη ενσωμάτωση. + +![LLMOps με PromptFlow](../../../translated_images/06-llm-promptflow.a183eba07a3a7fdf4aa74db92a318b8cbbf4a608671f6b166216358d3203d8d4.el.png) + +## Υπέροχα! Συνεχίστε τη Μάθηση σας! + +Καταπληκτικά, τώρα μάθετε περισσότερα για το πώς δομείται μια εφαρμογή για να χρησιμοποιήσει τις έννοιες με την [Εφαρμογή Contoso Chat](https://nitya.github.io/contoso-chat/?WT.mc_id=academic-105485-koreyst), για να δείτε πώς η Cloud Advocacy προσθέτει αυτές τις έννοιες σε επιδείξεις. Για περισσότερο περιεχόμενο, δείτε την [Ignite breakout session! +](https://www.youtube.com/watch?v=DdOylyrTOWg) + +Τώρα, δείτε το Μάθημα 15, για να κατανοήσετε πώς [Η Ανάκτηση Ενισχυμένης Δημιουργίας και οι Βάσεις Δεδομένων Διανυσμάτων](../15-rag-and-vector-databases/README.md?WT.mc_id=academic-105485-koreyst) επηρεάζουν τη Γενετική Τεχνητή Νοημοσύνη και πώς να δημιουργήσετε πιο ελκυστικές Εφαρμογές! + +--- + +**Αποποίηση ευθύνης**: +Αυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία μετάφρασης AI [Co-op Translator](https://github.com/Azure/co-op-translator). Παρόλο που καταβάλλουμε προσπάθειες για ακρίβεια, παρακαλούμε να γνωρίζετε ότι οι αυτοματοποιημένες μεταφράσεις ενδέχεται να περιέχουν λάθη ή ανακρίβειες. Το πρωτότυπο έγγραφο στη μητρική του γλώσσα θα πρέπει να θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε ευθύνη για τυχόν παρεξηγήσεις ή εσφαλμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης. \ No newline at end of file diff --git a/translations/el/15-rag-and-vector-databases/README.md b/translations/el/15-rag-and-vector-databases/README.md index 8133ba4685..25efaa76fd 100644 --- a/translations/el/15-rag-and-vector-databases/README.md +++ b/translations/el/15-rag-and-vector-databases/README.md @@ -1,259 +1,245 @@ - -# Retrieval Augmented Generation (RAG) και Βάσεις Δεδομένων Διανυσμάτων - -[![Retrieval Augmented Generation (RAG) και Βάσεις Δεδομένων Διανυσμάτων](../../../translated_images/15-lesson-banner.ac49e59506175d4fc6ce521561dab2f9ccc6187410236376cfaed13cde371b90.el.png)](https://aka.ms/gen-ai-lesson15-gh?WT.mc_id=academic-105485-koreyst) - -Στο μάθημα για τις εφαρμογές αναζήτησης, μάθαμε σύντομα πώς να ενσωματώνουμε τα δικά μας δεδομένα σε Μεγάλα Γλωσσικά Μοντέλα (LLMs). Σε αυτό το μάθημα, θα εμβαθύνουμε περισσότερο στις έννοιες της θεμελίωσης των δεδομένων σας στην εφαρμογή LLM, στη μηχανική της διαδικασίας και στις μεθόδους αποθήκευσης δεδομένων, συμπεριλαμβανομένων τόσο των embeddings όσο και του κειμένου. - -> **Βίντεο Έρχεται Σύντομα** - -## Εισαγωγή - -Σε αυτό το μάθημα θα καλύψουμε τα εξής: - -- Μια εισαγωγή στο RAG, τι είναι και γιατί χρησιμοποιείται στην Τεχνητή Νοημοσύνη (AI). - -- Κατανόηση των βάσεων δεδομένων διανυσμάτων και δημιουργία μίας για την εφαρμογή μας. - -- Ένα πρακτικό παράδειγμα για το πώς να ενσωματώσετε το RAG σε μια εφαρμογή. - -## Στόχοι Μάθησης - -Μετά την ολοκλήρωση αυτού του μαθήματος, θα μπορείτε να: - -- Εξηγήσετε τη σημασία του RAG στην ανάκτηση και επεξεργασία δεδομένων. - -- Ρυθμίσετε μια εφαρμογή RAG και να θεμελιώσετε τα δεδομένα σας σε ένα LLM. - -- Ενσωματώσετε αποτελεσματικά το RAG και τις βάσεις δεδομένων διανυσμάτων σε εφαρμογές LLM. - -## Το Σενάριό μας: βελτίωση των LLMs μας με τα δικά μας δεδομένα - -Για αυτό το μάθημα, θέλουμε να προσθέσουμε τις δικές μας σημειώσεις στην εκπαιδευτική startup, που επιτρέπει στο chatbot να λαμβάνει περισσότερες πληροφορίες για τα διάφορα θέματα. Χρησιμοποιώντας τις σημειώσεις που έχουμε, οι μαθητές θα μπορούν να μελετούν καλύτερα και να κατανοούν τα διάφορα θέματα, καθιστώντας ευκολότερη την επανάληψη για τις εξετάσεις τους. Για να δημιουργήσουμε το σενάριό μας, θα χρησιμοποιήσουμε: - -- `Azure OpenAI:` το LLM που θα χρησιμοποιήσουμε για να δημιουργήσουμε το chatbot μας - -- `Μάθημα AI για αρχάριους σχετικά με τα Νευρωνικά Δίκτυα:` αυτά θα είναι τα δεδομένα στα οποία θα θεμελιώσουμε το LLM μας - -- `Azure AI Search` και `Azure Cosmos DB:` βάση δεδομένων διανυσμάτων για την αποθήκευση των δεδομένων μας και τη δημιουργία ευρετηρίου αναζήτησης - -Οι χρήστες θα μπορούν να δημιουργούν πρακτικά κουίζ από τις σημειώσεις τους, κάρτες επανάληψης και να συνοψίζουν σε σύντομες επισκοπήσεις. Για να ξεκινήσουμε, ας δούμε τι είναι το RAG και πώς λειτουργεί: - -## Retrieval Augmented Generation (RAG) - -Ένα chatbot που τροφοδοτείται από LLM επεξεργάζεται τα ερωτήματα των χρηστών για να δημιουργήσει απαντήσεις. Έχει σχεδιαστεί να είναι διαδραστικό και να αλληλεπιδρά με τους χρήστες σε ένα ευρύ φάσμα θεμάτων. Ωστόσο, οι απαντήσεις του περιορίζονται στο πλαίσιο που του παρέχεται και στα βασικά δεδομένα εκπαίδευσής του. Για παράδειγμα, το GPT-4 έχει cutoff γνώσης τον Σεπτέμβριο του 2021, που σημαίνει ότι δεν γνωρίζει γεγονότα που συνέβησαν μετά από αυτή την περίοδο. Επιπλέον, τα δεδομένα που χρησιμοποιούνται για την εκπαίδευση των LLM αποκλείουν εμπιστευτικές πληροφορίες όπως προσωπικές σημειώσεις ή εγχειρίδια προϊόντων εταιρειών. - -### Πώς λειτουργούν τα RAG (Retrieval Augmented Generation) - -![σχέδιο που δείχνει πώς λειτουργούν τα RAG](../../../translated_images/how-rag-works.f5d0ff63942bd3a638e7efee7a6fce7f0787f6d7a1fca4e43f2a7a4d03cde3e0.el.png) - -Ας υποθέσουμε ότι θέλετε να αναπτύξετε ένα chatbot που δημιουργεί κουίζ από τις σημειώσεις σας, θα χρειαστείτε μια σύνδεση με τη βάση γνώσεων. Εδώ έρχεται το RAG να βοηθήσει. Τα RAG λειτουργούν ως εξής: - -- **Βάση γνώσεων:** Πριν από την ανάκτηση, αυτά τα έγγραφα πρέπει να εισαχθούν και να προεπεξεργαστούν, συνήθως διασπώντας μεγάλα έγγραφα σε μικρότερα κομμάτια, μετατρέποντάς τα σε text embeddings και αποθηκεύοντάς τα σε μια βάση δεδομένων. - -- **Ερώτημα χρήστη:** ο χρήστης θέτει μια ερώτηση - -- **Ανάκτηση:** Όταν ο χρήστης θέτει μια ερώτηση, το μοντέλο embedding ανακτά σχετικές πληροφορίες από τη βάση γνώσεων για να παρέχει περισσότερο πλαίσιο που θα ενσωματωθεί στο prompt. - -- **Ενισχυμένη Γενιά:** το LLM βελτιώνει την απάντησή του βασιζόμενο στα δεδομένα που ανακτήθηκαν. Επιτρέπει στην απάντηση να βασίζεται όχι μόνο σε προεκπαιδευμένα δεδομένα αλλά και σε σχετικές πληροφορίες από το πρόσθετο πλαίσιο. Τα ανακτηθέντα δεδομένα χρησιμοποιούνται για να ενισχύσουν τις απαντήσεις του LLM. Στη συνέχεια, το LLM επιστρέφει μια απάντηση στην ερώτηση του χρήστη. - -![σχέδιο που δείχνει την αρχιτεκτονική των RAG](../../../translated_images/encoder-decode.f2658c25d0eadee2377bb28cf3aee8b67aa9249bf64d3d57bb9be077c4bc4e1a.el.png) - -Η αρχιτεκτονική των RAG υλοποιείται με χρήση transformers που αποτελούνται από δύο μέρη: έναν encoder και έναν decoder. Για παράδειγμα, όταν ένας χρήστης θέτει μια ερώτηση, το εισαγόμενο κείμενο «κωδικοποιείται» σε διανύσματα που αποτυπώνουν το νόημα των λέξεων και τα διανύσματα «αποκωδικοποιούνται» στο ευρετήριο εγγράφων μας και παράγουν νέο κείμενο βασισμένο στο ερώτημα του χρήστη. Το LLM χρησιμοποιεί μοντέλο encoder-decoder για να παράγει το αποτέλεσμα. - -Δύο προσεγγίσεις κατά την υλοποίηση του RAG σύμφωνα με το προτεινόμενο άρθρο: [Retrieval-Augmented Generation for Knowledge intensive NLP Tasks](https://arxiv.org/pdf/2005.11401.pdf?WT.mc_id=academic-105485-koreyst) είναι: - -- **_RAG-Sequence_** που χρησιμοποιεί τα ανακτημένα έγγραφα για να προβλέψει την καλύτερη δυνατή απάντηση σε ένα ερώτημα χρήστη - -- **RAG-Token** που χρησιμοποιεί έγγραφα για να δημιουργήσει το επόμενο token και στη συνέχεια τα ανακτά για να απαντήσει στο ερώτημα του χρήστη - -### Γιατί να χρησιμοποιήσετε RAG;  - -- **Πλούτος πληροφοριών:** διασφαλίζει ότι οι απαντήσεις κειμένου είναι ενημερωμένες και τρέχουσες. Ενισχύει έτσι την απόδοση σε εργασίες συγκεκριμένου τομέα με πρόσβαση στη βάση γνώσεων. - -- Μειώνει τις ψευδείς πληροφορίες χρησιμοποιώντας **επαληθεύσιμα δεδομένα** στη βάση γνώσεων για να παρέχει πλαίσιο στα ερωτήματα των χρηστών. - -- Είναι **οικονομικό** καθώς κοστίζει λιγότερο σε σχέση με την εκπαίδευση (fine-tuning) ενός LLM. - -## Δημιουργία βάσης γνώσεων - -Η εφαρμογή μας βασίζεται στα προσωπικά μας δεδομένα, δηλαδή το μάθημα Νευρωνικών Δικτύων από το πρόγραμμα AI For Beginners. - -### Βάσεις Δεδομένων Διανυσμάτων - -Μια βάση δεδομένων διανυσμάτων, σε αντίθεση με τις παραδοσιακές βάσεις δεδομένων, είναι μια εξειδικευμένη βάση σχεδιασμένη για την αποθήκευση, διαχείριση και αναζήτηση ενσωματωμένων διανυσμάτων. Αποθηκεύει αριθμητικές αναπαραστάσεις εγγράφων. Η διάσπαση των δεδομένων σε αριθμητικά embeddings διευκολύνει το σύστημα AI να κατανοήσει και να επεξεργαστεί τα δεδομένα. - -Αποθηκεύουμε τα embeddings μας σε βάσεις δεδομένων διανυσμάτων καθώς τα LLM έχουν όριο στον αριθμό των tokens που δέχονται ως είσοδο. Επειδή δεν μπορείτε να περάσετε ολόκληρα τα embeddings σε ένα LLM, θα χρειαστεί να τα χωρίσουμε σε κομμάτια και όταν ένας χρήστης θέτει μια ερώτηση, τα embeddings που ταιριάζουν περισσότερο με την ερώτηση θα επιστραφούν μαζί με το prompt. Η διάσπαση μειώνει επίσης το κόστος στον αριθμό των tokens που περνούν από το LLM. - -Μερικές δημοφιλείς βάσεις δεδομένων διανυσμάτων είναι οι Azure Cosmos DB, Clarifyai, Pinecone, Chromadb, ScaNN, Qdrant και DeepLake. Μπορείτε να δημιουργήσετε ένα μοντέλο Azure Cosmos DB χρησιμοποιώντας το Azure CLI με την ακόλουθη εντολή: - -```bash -az login -az group create -n -l -az cosmosdb create -n -r -az cosmosdb list-keys -n -g -``` - -### Από κείμενο σε embeddings - -Πριν αποθηκεύσουμε τα δεδομένα μας, πρέπει να τα μετατρέψουμε σε vector embeddings πριν αποθηκευτούν στη βάση δεδομένων. Αν εργάζεστε με μεγάλα έγγραφα ή μεγάλα κείμενα, μπορείτε να τα χωρίσετε σε κομμάτια με βάση τα ερωτήματα που περιμένετε. Η διάσπαση μπορεί να γίνει σε επίπεδο πρότασης ή παραγράφου. Επειδή η διάσπαση αντλεί νόημα από τις λέξεις γύρω, μπορείτε να προσθέσετε και άλλο πλαίσιο σε ένα κομμάτι, για παράδειγμα, προσθέτοντας τον τίτλο του εγγράφου ή συμπεριλαμβάνοντας κάποιο κείμενο πριν ή μετά το κομμάτι. Μπορείτε να χωρίσετε τα δεδομένα ως εξής: - -```python -def split_text(text, max_length, min_length): - words = text.split() - chunks = [] - current_chunk = [] - - for word in words: - current_chunk.append(word) - if len(' '.join(current_chunk)) < max_length and len(' '.join(current_chunk)) > min_length: - chunks.append(' '.join(current_chunk)) - current_chunk = [] - - # If the last chunk didn't reach the minimum length, add it anyway - if current_chunk: - chunks.append(' '.join(current_chunk)) - - return chunks -``` - -Αφού χωριστούν, μπορούμε να ενσωματώσουμε το κείμενο χρησιμοποιώντας διάφορα μοντέλα embedding. Μερικά μοντέλα που μπορείτε να χρησιμοποιήσετε είναι: word2vec, ada-002 της OpenAI, Azure Computer Vision και πολλά άλλα. Η επιλογή μοντέλου εξαρτάται από τις γλώσσες που χρησιμοποιείτε, τον τύπο περιεχομένου που κωδικοποιείται (κείμενο/εικόνες/ήχος), το μέγεθος της εισόδου που μπορεί να κωδικοποιήσει και το μήκος της εξόδου embedding. - -Ένα παράδειγμα ενσωματωμένου κειμένου με το μοντέλο `text-embedding-ada-002` της OpenAI είναι: -![ένα embedding της λέξης cat](../../../translated_images/cat.74cbd7946bc9ca380a8894c4de0c706a4f85b16296ffabbf52d6175df6bf841e.el.png) - -## Ανάκτηση και Αναζήτηση Διανυσμάτων - -Όταν ένας χρήστης θέτει μια ερώτηση, ο retriever τη μετατρέπει σε διάνυσμα χρησιμοποιώντας τον query encoder, στη συνέχεια αναζητά στο ευρετήριο αναζήτησης εγγράφων για σχετικά διανύσματα που σχετίζονται με την είσοδο. Μόλις ολοκληρωθεί, μετατρέπει τόσο το διάνυσμα εισόδου όσο και τα διανύσματα εγγράφων σε κείμενο και τα περνάει στο LLM. - -### Ανάκτηση - -Η ανάκτηση συμβαίνει όταν το σύστημα προσπαθεί γρήγορα να βρει τα έγγραφα από το ευρετήριο που ικανοποιούν τα κριτήρια αναζήτησης. Ο στόχος του retriever είναι να πάρει έγγραφα που θα χρησιμοποιηθούν για να παρέχουν πλαίσιο και να θεμελιώσουν το LLM στα δεδομένα σας. - -Υπάρχουν διάφοροι τρόποι για να πραγματοποιήσουμε αναζήτηση στη βάση δεδομένων μας, όπως: - -- **Αναζήτηση με λέξεις-κλειδιά** - χρησιμοποιείται για αναζητήσεις κειμένου - -- **Σημασιολογική αναζήτηση** - χρησιμοποιεί το σημασιολογικό νόημα των λέξεων - -- **Αναζήτηση διανυσμάτων** - μετατρέπει έγγραφα από κείμενο σε διανυσματικές αναπαραστάσεις χρησιμοποιώντας μοντέλα embedding. Η ανάκτηση γίνεται με ερώτημα στα έγγραφα των οποίων οι διανυσματικές αναπαραστάσεις είναι πιο κοντά στην ερώτηση του χρήστη. - -- **Υβριδική** - συνδυασμός αναζήτησης με λέξεις-κλειδιά και διανυσμάτων. - -Μια πρόκληση στην ανάκτηση εμφανίζεται όταν δεν υπάρχει παρόμοια απάντηση στο ερώτημα στη βάση δεδομένων, τότε το σύστημα επιστρέφει την καλύτερη δυνατή πληροφορία που μπορεί να βρει, ωστόσο μπορείτε να χρησιμοποιήσετε τακτικές όπως ορισμός μέγιστης απόστασης για τη σχετικότητα ή χρήση υβριδικής αναζήτησης που συνδυάζει λέξεις-κλειδιά και αναζήτηση διανυσμάτων. Σε αυτό το μάθημα θα χρησιμοποιήσουμε υβριδική αναζήτηση, συνδυασμό αναζήτησης διανυσμάτων και λέξεων-κλειδιών. Θα αποθηκεύσουμε τα δεδομένα μας σε dataframe με στήλες που περιέχουν τα κομμάτια καθώς και τα embeddings. - -### Ομοιότητα Διανυσμάτων - -Ο retriever θα αναζητήσει στη βάση γνώσεων για embeddings που είναι κοντά μεταξύ τους, τον πιο κοντινό γείτονα, καθώς είναι κείμενα που μοιάζουν. Στο σενάριο που ένας χρήστης θέτει ένα ερώτημα, αυτό πρώτα ενσωματώνεται και στη συνέχεια ταιριάζει με παρόμοια embeddings. Η κοινή μέτρηση που χρησιμοποιείται για να βρεθεί πόσο παρόμοια είναι δύο διανύσματα είναι η cosine similarity, που βασίζεται στη γωνία μεταξύ δύο διανυσμάτων. - -Μπορούμε να μετρήσουμε την ομοιότητα και με άλλες μεθόδους όπως η Ευκλείδεια απόσταση, που είναι η ευθεία γραμμή μεταξύ των άκρων των διανυσμάτων, και το dot product που μετρά το άθροισμα των γινομένων των αντίστοιχων στοιχείων δύο διανυσμάτων. - -### Ευρετήριο αναζήτησης - -Κατά την ανάκτηση, θα χρειαστεί να δημιουργήσουμε ένα ευρετήριο αναζήτησης για τη βάση γνώσεων πριν εκτελέσουμε την αναζήτηση. Ένα ευρετήριο αποθηκεύει τα embeddings μας και μπορεί γρήγορα να ανακτήσει τα πιο παρόμοια κομμάτια ακόμα και σε μια μεγάλη βάση δεδομένων. Μπορούμε να δημιουργήσουμε το ευρετήριό μας τοπικά χρησιμοποιώντας: - -```python -from sklearn.neighbors import NearestNeighbors - -embeddings = flattened_df['embeddings'].to_list() - -# Create the search index -nbrs = NearestNeighbors(n_neighbors=5, algorithm='ball_tree').fit(embeddings) - -# To query the index, you can use the kneighbors method -distances, indices = nbrs.kneighbors(embeddings) -``` - -### Επαναταξινόμηση (Re-ranking) - -Αφού κάνετε το ερώτημα στη βάση δεδομένων, μπορεί να χρειαστεί να ταξινομήσετε τα αποτελέσματα από τα πιο σχετικά. Ένα reranking LLM χρησιμοποιεί Μηχανική Μάθηση για να βελτιώσει τη σχετικότητα των αποτελεσμάτων αναζήτησης ταξινομώντας τα από τα πιο σχετικά. Χρησιμοποιώντας το Azure AI Search, η επαναταξινόμηση γίνεται αυτόματα για εσάς με χρήση semantic reranker. Ένα παράδειγμα για το πώς λειτουργεί η επαναταξινόμηση με βάση τους κοντινότερους γείτονες: - -```python -# Find the most similar documents -distances, indices = nbrs.kneighbors([query_vector]) - -index = [] -# Print the most similar documents -for i in range(3): - index = indices[0][i] - for index in indices[0]: - print(flattened_df['chunks'].iloc[index]) - print(flattened_df['path'].iloc[index]) - print(flattened_df['distances'].iloc[index]) - else: - print(f"Index {index} not found in DataFrame") -``` - -## Όλα μαζί - -Το τελευταίο βήμα είναι να προσθέσουμε το LLM μας στο μείγμα ώστε να μπορούμε να λαμβάνουμε απαντήσεις που βασίζονται στα δεδομένα μας. Μπορούμε να το υλοποιήσουμε ως εξής: - -```python -user_input = "what is a perceptron?" - -def chatbot(user_input): - # Convert the question to a query vector - query_vector = create_embeddings(user_input) - - # Find the most similar documents - distances, indices = nbrs.kneighbors([query_vector]) - - # add documents to query to provide context - history = [] - for index in indices[0]: - history.append(flattened_df['chunks'].iloc[index]) - - # combine the history and the user input - history.append(user_input) - - # create a message object - messages=[ - {"role": "system", "content": "You are an AI assistant that helps with AI questions."}, - {"role": "user", "content": history[-1]} - ] - - # use chat completion to generate a response - response = openai.chat.completions.create( - model="gpt-4", - temperature=0.7, - max_tokens=800, - messages=messages - ) - - return response.choices[0].message - -chatbot(user_input) -``` - -## Αξιολόγηση της εφαρμογής μας - -### Μετρικές Αξιολόγησης - -- Ποιότητα των απαντήσεων, διασφαλίζοντας ότι ακούγονται φυσικές, ρέουσες και ανθρώπινες - -- Θεμελίωση των δεδομένων: αξιολόγηση αν η απάντηση προέρχεται από τα παρεχόμενα έγγραφα - -- Σχετικότητα: αξιολόγηση αν η απάντηση ταιριάζει και σχετίζεται με την ερώτηση που τέθηκε - -- Ρευστότητα - αν η απάντηση έχει γραμματικό νόημα - -## Περίπτωσεις χρήσης για RAG και βάσεις δεδομένων διανυσμάτων - -Υπάρχουν πολλές διαφορετικές περιπτώσεις όπου οι κλήσεις λειτουργιών μπορούν να βελτιώσουν την εφαρμογή σας, όπως: - -- Ερωτήσεις και Απαντήσεις: θεμελίωση των εταιρικών δεδομένων σε ένα chat που μπορούν να χρησιμοποιούν οι υπάλληλοι για να κάνουν ερωτήσεις. - -- Συστήματα Συστάσεων: όπου μπορείτε να δημιουργήσετε ένα σύστημα που ταιριάζει τις πιο παρόμοιες τιμές π.χ. ταινίες, εστιατόρια και πολλά άλλα. - -- Υπηρεσίες chatbot: μπορείτε να αποθηκεύσετε το ιστορικό συνομιλιών και να προσωποποιήσετε - -**Αποποίηση ευθυνών**: -Αυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία αυτόματης μετάφρασης AI [Co-op Translator](https://github.com/Azure/co-op-translator). Παρόλο που επιδιώκουμε την ακρίβεια, παρακαλούμε να έχετε υπόψη ότι οι αυτόματες μεταφράσεις ενδέχεται να περιέχουν λάθη ή ανακρίβειες. Το πρωτότυπο έγγραφο στη γλώσσα του θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε ευθύνη για τυχόν παρεξηγήσεις ή λανθασμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης. \ No newline at end of file + +# Ανάκτηση Ενισχυμένης Γενετικής (RAG) και Βάσεις Δεδομένων Διανυσμάτων + +[![Ανάκτηση Ενισχυμένης Γενετικής (RAG) και Βάσεις Δεδομένων Διανυσμάτων](../../../translated_images/15-lesson-banner.ac49e59506175d4fc6ce521561dab2f9ccc6187410236376cfaed13cde371b90.el.png)](https://youtu.be/4l8zhHUBeyI?si=BmvDmL1fnHtgQYkL) + +Στο μάθημα για τις εφαρμογές αναζήτησης, μάθαμε σύντομα πώς να ενσωματώσετε τα δικά σας δεδομένα σε Μεγάλα Γλωσσικά Μοντέλα (LLMs). Σε αυτό το μάθημα, θα εμβαθύνουμε περαιτέρω στις έννοιες της ενσωμάτωσης των δεδομένων σας στην εφαρμογή LLM, στους μηχανισμούς της διαδικασίας και στις μεθόδους αποθήκευσης δεδομένων, συμπεριλαμβανομένων των ενσωματώσεων και του κειμένου. + +> **Βίντεο Σύντομα Διαθέσιμο** + +## Εισαγωγή + +Σε αυτό το μάθημα θα καλύψουμε τα εξής: + +- Εισαγωγή στο RAG, τι είναι και γιατί χρησιμοποιείται στην τεχνητή νοημοσύνη (AI). + +- Κατανόηση τι είναι οι βάσεις δεδομένων διανυσμάτων και δημιουργία μιας για την εφαρμογή μας. + +- Ένα πρακτικό παράδειγμα για το πώς να ενσωματώσετε το RAG σε μια εφαρμογή. + +## Στόχοι Μάθησης + +Μετά την ολοκλήρωση αυτού του μαθήματος, θα μπορείτε να: + +- Εξηγήσετε τη σημασία του RAG στην ανάκτηση και επεξεργασία δεδομένων. + +- Ρυθμίσετε μια εφαρμογή RAG και να ενσωματώσετε τα δεδομένα σας σε ένα LLM. + +- Ενσωματώσετε αποτελεσματικά το RAG και τις Βάσεις Δεδομένων Διανυσμάτων σε Εφαρμογές LLM. + +## Το Σενάριό μας: Ενίσχυση των LLMs με τα δικά μας δεδομένα + +Για αυτό το μάθημα, θέλουμε να προσθέσουμε τις δικές μας σημειώσεις στην εκπαιδευτική startup, η οποία επιτρέπει στο chatbot να αποκτήσει περισσότερες πληροφορίες για τα διάφορα θέματα. Χρησιμοποιώντας τις σημειώσεις που έχουμε, οι μαθητές θα μπορούν να μελετούν καλύτερα και να κατανοούν τα διάφορα θέματα, διευκολύνοντας την επανάληψη για τις εξετάσεις τους. Για να δημιουργήσουμε το σενάριό μας, θα χρησιμοποιήσουμε: + +- `Azure OpenAI:` το LLM που θα χρησιμοποιήσουμε για να δημιουργήσουμε το chatbot μας + +- `Μάθημα για αρχάριους στην Τεχνητή Νοημοσύνη για Νευρωνικά Δίκτυα:` αυτά θα είναι τα δεδομένα που θα ενσωματώσουμε στο LLM μας + +- `Azure AI Search` και `Azure Cosmos DB:` βάση δεδομένων διανυσμάτων για την αποθήκευση των δεδομένων μας και τη δημιουργία ενός ευρετηρίου αναζήτησης + +Οι χρήστες θα μπορούν να δημιουργούν πρακτικά κουίζ από τις σημειώσεις τους, κάρτες επανάληψης και να τις συνοψίζουν σε συνοπτικές επισκοπήσεις. Για να ξεκινήσουμε, ας δούμε τι είναι το RAG και πώς λειτουργεί: + +## Ανάκτηση Ενισχυμένης Γενετικής (RAG) + +Ένα chatbot που βασίζεται σε LLM επεξεργάζεται τις προτροπές των χρηστών για να δημιουργήσει απαντήσεις. Είναι σχεδιασμένο να είναι διαδραστικό και να αλληλεπιδρά με τους χρήστες σε ένα ευρύ φάσμα θεμάτων. Ωστόσο, οι απαντήσεις του περιορίζονται στο πλαίσιο που παρέχεται και στα βασικά δεδομένα εκπαίδευσής του. Για παράδειγμα, η γνώση του GPT-4 περιορίζεται μέχρι τον Σεπτέμβριο του 2021, πράγμα που σημαίνει ότι δεν έχει γνώση γεγονότων που έχουν συμβεί μετά από αυτήν την περίοδο. Επιπλέον, τα δεδομένα που χρησιμοποιούνται για την εκπαίδευση των LLMs εξαιρούν εμπιστευτικές πληροφορίες όπως προσωπικές σημειώσεις ή το εγχειρίδιο προϊόντων μιας εταιρείας. + +### Πώς λειτουργούν τα RAGs (Ανάκτηση Ενισχυμένης Γενετικής) + +![σχέδιο που δείχνει πώς λειτουργούν τα RAGs](../../../translated_images/how-rag-works.f5d0ff63942bd3a638e7efee7a6fce7f0787f6d7a1fca4e43f2a7a4d03cde3e0.el.png) + +Ας υποθέσουμε ότι θέλετε να αναπτύξετε ένα chatbot που δημιουργεί κουίζ από τις σημειώσεις σας, θα χρειαστείτε μια σύνδεση με τη βάση γνώσεων. Εδώ έρχεται το RAG να σας βοηθήσει. Τα RAGs λειτουργούν ως εξής: + +- **Βάση γνώσεων:** Πριν από την ανάκτηση, αυτά τα έγγραφα πρέπει να εισαχθούν και να προεπεξεργαστούν, συνήθως διασπώντας μεγάλα έγγραφα σε μικρότερα τμήματα, μετατρέποντάς τα σε ενσωματώσεις κειμένου και αποθηκεύοντάς τα σε μια βάση δεδομένων. + +- **Ερώτηση χρήστη:** ο χρήστης θέτει μια ερώτηση + +- **Ανάκτηση:** Όταν ο χρήστης θέτει μια ερώτηση, το μοντέλο ενσωμάτωσης ανακτά σχετικές πληροφορίες από τη βάση γνώσεων μας για να παρέχει περισσότερο πλαίσιο που θα ενσωματωθεί στην προτροπή. + +- **Ενισχυμένη Γενετική:** το LLM βελτιώνει την απάντησή του βάσει των δεδομένων που ανακτήθηκαν. Επιτρέπει η απάντηση που δημιουργείται να βασίζεται όχι μόνο στα δεδομένα εκπαίδευσης αλλά και σε σχετικές πληροφορίες από το πρόσθετο πλαίσιο. Τα δεδομένα που ανακτήθηκαν χρησιμοποιούνται για την ενίσχυση των απαντήσεων του LLM. Το LLM επιστρέφει στη συνέχεια μια απάντηση στην ερώτηση του χρήστη. + +![σχέδιο που δείχνει την αρχιτεκτονική των RAGs](../../../translated_images/encoder-decode.f2658c25d0eadee2377bb28cf3aee8b67aa9249bf64d3d57bb9be077c4bc4e1a.el.png) + +Η αρχιτεκτονική των RAGs υλοποιείται χρησιμοποιώντας μετασχηματιστές που αποτελούνται από δύο μέρη: έναν κωδικοποιητή και έναν αποκωδικοποιητή. Για παράδειγμα, όταν ένας χρήστης θέτει μια ερώτηση, το κείμενο εισόδου 'κωδικοποιείται' σε διανύσματα που καταγράφουν τη σημασία των λέξεων και τα διανύσματα 'αποκωδικοποιούνται' στο ευρετήριο εγγράφων μας και δημιουργούν νέο κείμενο βάσει της ερώτησης του χρήστη. Το LLM χρησιμοποιεί τόσο ένα μοντέλο κωδικοποιητή-αποκωδικοποιητή για να δημιουργήσει την έξοδο. + +Δύο προσεγγίσεις κατά την υλοποίηση του RAG σύμφωνα με την προτεινόμενη εργασία: [Retrieval-Augmented Generation for Knowledge intensive NLP (natural language processing software) Tasks](https://arxiv.org/pdf/2005.11401.pdf?WT.mc_id=academic-105485-koreyst) είναι: + +- **_RAG-Sequence_** χρησιμοποιώντας ανακτημένα έγγραφα για να προβλέψει την καλύτερη δυνατή απάντηση σε μια ερώτηση χρήστη + +- **RAG-Token** χρησιμοποιώντας έγγραφα για να δημιουργήσει το επόμενο token και στη συνέχεια να τα ανακτήσει για να απαντήσει στην ερώτηση του χρήστη + +### Γιατί να χρησιμοποιήσετε RAGs; + +- **Πλούτος πληροφοριών:** εξασφαλίζει ότι οι απαντήσεις κειμένου είναι ενημερωμένες και τρέχουσες. Επομένως, βελτιώνει την απόδοση σε εργασίες συγκεκριμένου τομέα, αποκτώντας πρόσβαση στην εσωτερική βάση γνώσεων. + +- Μειώνει την κατασκευή πληροφοριών χρησιμοποιώντας **επαληθεύσιμα δεδομένα** στη βάση γνώσεων για να παρέχει πλαίσιο στις ερωτήσεις των χρηστών. + +- Είναι **οικονομικά αποδοτικό** καθώς είναι πιο οικονομικό σε σύγκριση με την προσαρμογή ενός LLM. + +## Δημιουργία βάσης γνώσεων + +Η εφαρμογή μας βασίζεται στα προσωπικά μας δεδομένα, δηλαδή το μάθημα για Νευρωνικά Δίκτυα από το πρόγραμμα σπουδών AI For Beginners. + +### Βάσεις Δεδομένων Διανυσμάτων + +Μια βάση δεδομένων διανυσμάτων, σε αντίθεση με τις παραδοσιακές βάσεις δεδομένων, είναι μια εξειδικευμένη βάση δεδομένων σχεδιασμένη να αποθηκεύει, να διαχειρίζεται και να αναζητά ενσωματωμένα διανύσματα. Αποθηκεύει αριθμητικές αναπαραστάσεις εγγράφων. Η διάσπαση δεδομένων σε αριθμητικές ενσωματώσεις διευκολύνει το σύστημα AI μας να κατανοήσει και να επεξεργαστεί τα δεδομένα. + +Αποθηκεύουμε τις ενσωματώσεις μας σε βάσεις δεδομένων διανυσμάτων καθώς τα LLMs έχουν όριο στον αριθμό των tokens που δέχονται ως είσοδο. Δεδομένου ότι δεν μπορείτε να περάσετε όλες τις ενσωματώσεις σε ένα LLM, θα χρειαστεί να τις διασπάσετε σε τμήματα και όταν ένας χρήστης θέτει μια ερώτηση, οι ενσωματώσεις που μοιάζουν περισσότερο με την ερώτηση θα επιστραφούν μαζί με την προτροπή. Η διάσπαση επίσης μειώνει το κόστος στον αριθμό των tokens που περνούν μέσω ενός LLM. + +Μερικές δημοφιλείς βάσεις δεδομένων διανυσμάτων περιλαμβάνουν Azure Cosmos DB, Clarifyai, Pinecone, Chromadb, ScaNN, Qdrant και DeepLake. Μπορείτε να δημιουργήσετε ένα μοντέλο Azure Cosmos DB χρησιμοποιώντας το Azure CLI με την ακόλουθη εντολή: + +```bash +az login +az group create -n -l +az cosmosdb create -n -r +az cosmosdb list-keys -n -g +``` + +### Από κείμενο σε ενσωματώσεις + +Πριν αποθηκεύσουμε τα δεδομένα μας, θα χρειαστεί να τα μετατρέψουμε σε ενσωματώσεις διανυσμάτων πριν αποθηκευτούν στη βάση δεδομένων. Εάν εργάζεστε με μεγάλα έγγραφα ή μακροσκελή κείμενα, μπορείτε να τα διασπάσετε βάσει ερωτήσεων που αναμένετε. Η διάσπαση μπορεί να γίνει σε επίπεδο πρότασης ή σε επίπεδο παραγράφου. Δεδομένου ότι η διάσπαση αντλεί νοήματα από τις λέξεις γύρω τους, μπορείτε να προσθέσετε κάποιο άλλο πλαίσιο σε ένα τμήμα, για παράδειγμα, προσθέτοντας τον τίτλο του εγγράφου ή συμπεριλαμβάνοντας κάποιο κείμενο πριν ή μετά το τμήμα. Μπορείτε να διασπάσετε τα δεδομένα ως εξής: + +```python +def split_text(text, max_length, min_length): + words = text.split() + chunks = [] + current_chunk = [] + + for word in words: + current_chunk.append(word) + if len(' '.join(current_chunk)) < max_length and len(' '.join(current_chunk)) > min_length: + chunks.append(' '.join(current_chunk)) + current_chunk = [] + + # If the last chunk didn't reach the minimum length, add it anyway + if current_chunk: + chunks.append(' '.join(current_chunk)) + + return chunks +``` + +Μόλις διασπαστούν, μπορούμε στη συνέχεια να ενσωματώσουμε το κείμενό μας χρησιμοποιώντας διαφορετικά μοντέλα ενσωμάτωσης. Μερικά μοντέλα που μπορείτε να χρησιμοποιήσετε περιλαμβάνουν: word2vec, ada-002 από την OpenAI, Azure Computer Vision και πολλά άλλα. Η επιλογή ενός μοντέλου θα εξαρτηθεί από τις γλώσσες που χρησιμοποιείτε, τον τύπο περιεχομένου που κωδικοποιείται (κείμενο/εικόνες/ήχος), το μέγεθος της εισόδου που μπορεί να κωδικοποιήσει και το μήκος της εξόδου ενσωμάτωσης. + +Ένα παράδειγμα ενσωματωμένου κειμένου χρησιμοποιώντας το μοντέλο `text-embedding-ada-002` της OpenAI είναι: +![μια ενσωμάτωση της λέξης γάτα](../../../translated_images/cat.74cbd7946bc9ca380a8894c4de0c706a4f85b16296ffabbf52d6175df6bf841e.el.png) + +## Ανάκτηση και Αναζήτηση Διανυσμάτων + +Όταν ένας χρήστης θέτει μια ερώτηση, ο ανακτητής τη μετατρέπει σε ένα διάνυσμα χρησιμοποιώντας τον κωδικοποιητή ερωτήσεων, στη συνέχεια αναζητά στο ευρετήριο εγγράφων μας για σχετικά διανύσματα στο έγγραφο που σχετίζονται με την είσοδο. Μόλις ολοκληρωθεί, μετατρέπει τόσο το διάνυσμα εισόδου όσο και τα διανύσματα εγγράφων σε κείμενο και τα περνά μέσω του LLM. + +### Ανάκτηση + +Η ανάκτηση συμβαίνει όταν το σύστημα προσπαθεί να βρει γρήγορα τα έγγραφα από το ευρετήριο που ικανοποιούν τα κριτήρια αναζήτησης. Ο στόχος του ανακτητή είναι να πάρει έγγραφα που θα χρησιμοποιηθούν για να παρέχουν πλαίσιο και να ενσωματώσουν το LLM στα δεδομένα σας. + +Υπάρχουν διάφοροι τρόποι για να πραγματοποιήσετε αναζήτηση μέσα στη βάση δεδομένων μας, όπως: + +- **Αναζήτηση λέξεων-κλειδιών** - χρησιμοποιείται για αναζητήσεις κειμένου + +- **Σημασιολογική αναζήτηση** - χρησιμοποιεί τη σημασιολογική σημασία των λέξεων + +- **Αναζήτηση διανυσμάτων** - μετατρέπει έγγραφα από κείμενο σε αναπαραστάσεις διανυσμάτων χρησιμοποιώντας μοντέλα ενσωμάτωσης. Η ανάκτηση θα γίνει με την ερώτηση των εγγράφων των οποίων οι αναπαραστάσεις διανυσμάτων είναι πιο κοντά στην ερώτηση του χρήστη. + +- **Υβριδική** - ένας συνδυασμός τόσο της αναζήτησης λέξεων-κλειδιών όσο και της αναζήτησης διανυσμάτων. + +Μια πρόκληση με την ανάκτηση προκύπτει όταν δεν υπάρχει παρόμοια απάντηση στην ερώτηση στη βάση δεδομένων, το σύστημα θα επιστρέψει την καλύτερη πληροφορία που μπορεί να βρει, ωστόσο, μπορείτε να χρησιμοποιήσετε τακτικές όπως να ορίσετε τη μέγιστη απόσταση για τη συνάφεια ή να χρησιμοποιήσετε υβριδική αναζήτηση που συνδυάζει τόσο λέξεις-κλειδιά όσο και αναζήτηση διανυσμάτων. Σε αυτό το μάθημα θα χρησιμοποιήσουμε υβριδική αναζήτηση, έναν συνδυασμό τόσο αναζήτησης διανυσμάτων όσο και λέξεων-κλειδιών. Θα αποθηκεύσουμε τα δεδομένα μας σε ένα dataframe με στήλες που περιέχουν τα τμήματα καθώς και τις ενσωματώσεις. + +### Ομοιότητα Διανυσμάτων + +Ο ανακτητής θα αναζητήσει στη βάση γνώσεων για ενσωματώσεις που είναι κοντά μεταξύ τους, τον πλησιέστερο γείτονα, καθώς είναι κείμενα που είναι παρόμοια. Στο σενάριο που ένας χρήστης θέτει μια ερώτηση, αυτή πρώτα ενσωματώνεται και στη συνέχεια αντιστοιχείται με παρόμοιες ενσωματώσεις. Η κοινή μέτρηση που χρησιμοποιείται για να βρεθεί πόσο παρόμοια είναι διαφορετικά διανύσματα είναι η συνημίτονη ομοιότητα, η οποία βασίζεται στη γωνία μεταξύ δύο διανυσμάτων. + +Μπορούμε να μετρήσουμε την ομοιότητα χρησιμοποιώντας άλλες εναλλακτικές όπως η Ευκλείδεια απόσταση, η οποία είναι η ευθεία γραμμή μεταξύ των άκρων των διανυσμάτων, και το εσωτερικό γινόμενο, το οποίο μετρά το άθροισμα των γινομένων των αντίστοιχων στοιχείων δύο διανυσμάτων. + +### Ευρετήριο Αναζήτησης + +Όταν κάνουμε ανάκτηση, θα χρειαστεί να δημιουργήσουμε ένα ευρετήριο αναζήτησης για τη βάση γνώσεων μας πριν πραγματοποιήσουμε αναζήτηση. Ένα ευρετήριο θα αποθηκεύσει τις ενσωματώσεις μας και μπορεί να ανακτήσει γρήγορα τα πιο παρόμοια τμήματα ακόμα και σε μια μεγάλη βάση δεδομένων. Μπορούμε να δημιουργήσουμε το ευρετήριο μας τοπικά χρησιμοποιώντας: + +```python +from sklearn.neighbors import NearestNeighbors + +embeddings = flattened_df['embeddings'].to_list() + +# Create the search index +nbrs = NearestNeighbors(n_neighbors=5, algorithm='ball_tree').fit(embeddings) + +# To query the index, you can use the kneighbors method +distances, indices = nbrs.kneighbors(embeddings) +``` + +### Επανακατάταξη + +Μόλις έχετε ερωτήσει τη βάση δεδομένων, μπορεί να χρειαστεί να ταξινομήσετε τα αποτελέσματα από τα πιο σχετικά. Ένα LLM επανακατάταξης χρησιμοποιεί Μηχανική Μάθηση για να βελτιώσει τη συνάφεια των αποτελεσμάτων αναζήτησης, ταξινομώντας τα από τα πιο σχετικά. Χρησιμοποιώντας το Azure AI Search, η επανακατάταξη γίνεται αυτόματα για εσάς χρησιμοποιώντας έναν σημασιολογικό επανακατατάκτη. Ένα παράδειγμα για το πώς λειτουργεί η επανακατάταξη χρησιμοποιώντας πλησιέστερους γείτονες: + +```python +# Find the most similar documents +distances, indices = nbrs.kneighbors([query_vector]) + +index = [] +# Print the most similar documents +for i in range(3): + index = indices[0][i] + for index in indices[0]: + print(flattened_df['chunks'].iloc[index]) + print(flattened_df['path'].iloc[index]) + print(flattened_df['distances'].iloc[index]) + else: + print(f"Index {index} not found in DataFrame") +``` + +## Συνδυάζοντας τα όλα + +Το τελευταίο βήμα είναι να προσθέσουμε το LLM μας στο μείγμα για να μπορέσουμε να λάβουμε απαντήσεις που βασίζονται στα δεδομένα μας. Μπορούμε να το υλοποιήσουμε ως εξής: + +```python +user_input = "what is a perceptron?" + +def chatbot(user_input): + # Convert the question to a query vector + query_vector = create_embeddings(user_input) + + # Find the most similar documents + distances, indices = nbrs.kneighbors([query_vector]) + + # add documents to query to provide context + history = [] + for index in indices[0]: + history.append(flattened_df['chunks'].iloc[index]) + + # combine the history and the user input + history.append(user_input) + + # create a message object + messages=[ + {"role": "system", "content": "You are an AI assistant that helps with AI questions."}, + {"role": "user", "content": history[-1]} + ] + + # use chat completion to generate a response + response = openai.chat.completions.create( + model="gpt-4", + temperature=0.7, + max_tokens=800, + messages=messages + ) + + return response.choices[0].message + +chatbot(user_input) +``` + +## Αξιολόγηση της εφαρμογής μας + +### Μετρικές Αξιολόγησης + +- Ποιότητα των απαντήσεων που παρέχονται, εξασφα + +--- + +**Αποποίηση ευθύνης**: +Αυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία μετάφρασης AI [Co-op Translator](https://github.com/Azure/co-op-translator). Παρόλο που καταβάλλουμε προσπάθειες για ακρίβεια, παρακαλούμε να έχετε υπόψη ότι οι αυτοματοποιημένες μεταφράσεις ενδέχεται να περιέχουν λάθη ή ανακρίβειες. Το πρωτότυπο έγγραφο στη μητρική του γλώσσα θα πρέπει να θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε ευθύνη για τυχόν παρεξηγήσεις ή εσφαλμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης. \ No newline at end of file diff --git a/translations/el/16-open-source-models/README.md b/translations/el/16-open-source-models/README.md index 9a5027a434..0a498fd5bc 100644 --- a/translations/el/16-open-source-models/README.md +++ b/translations/el/16-open-source-models/README.md @@ -1,93 +1,93 @@ -[![Open Source Models](../../../translated_images/16-lesson-banner.6b56555e8404fda1716382db4832cecbe616ccd764de381f0af6cfd694d05f74.el.png)](https://aka.ms/gen-ai-lesson16-gh?WT.mc_id=academic-105485-koreyst) +[![Ανοιχτά Μοντέλα](../../../translated_images/16-lesson-banner.6b56555e8404fda1716382db4832cecbe616ccd764de381f0af6cfd694d05f74.el.png)](https://youtu.be/CuICgfuHFSg?si=x8SpFRUsIxM9dohN) ## Εισαγωγή -Ο κόσμος των ανοιχτού κώδικα LLMs είναι συναρπαστικός και συνεχώς εξελίσσεται. Αυτό το μάθημα στοχεύει να παρέχει μια εις βάθος ματιά στα μοντέλα ανοιχτού κώδικα. Αν ψάχνετε πληροφορίες για το πώς συγκρίνονται τα ιδιόκτητα μοντέλα με τα μοντέλα ανοιχτού κώδικα, επισκεφθείτε το μάθημα ["Εξερεύνηση και Σύγκριση Διαφορετικών LLMs"](../02-exploring-and-comparing-different-llms/README.md?WT.mc_id=academic-105485-koreyst). Αυτό το μάθημα θα καλύψει επίσης το θέμα της προσαρμογής (fine-tuning), αλλά μια πιο λεπτομερής εξήγηση μπορεί να βρεθεί στο μάθημα ["Προσαρμογή LLMs"](../18-fine-tuning/README.md?WT.mc_id=academic-105485-koreyst). +Ο κόσμος των ανοιχτών LLMs είναι συναρπαστικός και συνεχώς εξελίσσεται. Αυτό το μάθημα έχει ως στόχο να παρέχει μια εις βάθος ματιά στα ανοιχτά μοντέλα. Αν ψάχνετε πληροφορίες για το πώς συγκρίνονται τα ιδιόκτητα μοντέλα με τα ανοιχτά μοντέλα, επισκεφθείτε το μάθημα ["Εξερεύνηση και Σύγκριση Διαφορετικών LLMs"](../02-exploring-and-comparing-different-llms/README.md?WT.mc_id=academic-105485-koreyst). Αυτό το μάθημα θα καλύψει επίσης το θέμα της προσαρμογής, αλλά μια πιο λεπτομερής εξήγηση μπορεί να βρεθεί στο μάθημα ["Προσαρμογή LLMs"](../18-fine-tuning/README.md?WT.mc_id=academic-105485-koreyst). -## Στόχοι μάθησης +## Στόχοι Μάθησης -- Κατανόηση των μοντέλων ανοιχτού κώδικα -- Κατανόηση των πλεονεκτημάτων της εργασίας με μοντέλα ανοιχτού κώδικα +- Κατανόηση των ανοιχτών μοντέλων +- Κατανόηση των πλεονεκτημάτων της εργασίας με ανοιχτά μοντέλα - Εξερεύνηση των ανοιχτών μοντέλων που είναι διαθέσιμα στο Hugging Face και το Azure AI Studio -## Τι είναι τα Μοντέλα Ανοιχτού Κώδικα; +## Τι είναι τα Ανοιχτά Μοντέλα; -Το λογισμικό ανοιχτού κώδικα έχει παίξει καθοριστικό ρόλο στην ανάπτυξη της τεχνολογίας σε διάφορους τομείς. Ο Οργανισμός Ανοιχτού Κώδικα (OSI) έχει ορίσει [10 κριτήρια για το λογισμικό](https://web.archive.org/web/20241126001143/https://opensource.org/osd?WT.mc_id=academic-105485-koreyst) ώστε να χαρακτηριστεί ως ανοιχτού κώδικα. Ο πηγαίος κώδικας πρέπει να κοινοποιείται ανοιχτά υπό άδεια που έχει εγκριθεί από τον OSI. +Το λογισμικό ανοιχτού κώδικα έχει παίξει καθοριστικό ρόλο στην ανάπτυξη της τεχνολογίας σε διάφορους τομείς. Η Open Source Initiative (OSI) έχει ορίσει [10 κριτήρια για το λογισμικό](https://web.archive.org/web/20241126001143/https://opensource.org/osd?WT.mc_id=academic-105485-koreyst) ώστε να ταξινομηθεί ως ανοιχτού κώδικα. Ο πηγαίος κώδικας πρέπει να μοιράζεται ανοιχτά υπό άδεια εγκεκριμένη από την OSI. Ενώ η ανάπτυξη των LLMs έχει παρόμοια στοιχεία με την ανάπτυξη λογισμικού, η διαδικασία δεν είναι ακριβώς η ίδια. Αυτό έχει προκαλέσει πολλές συζητήσεις στην κοινότητα σχετικά με τον ορισμό του ανοιχτού κώδικα στο πλαίσιο των LLMs. Για να ευθυγραμμιστεί ένα μοντέλο με τον παραδοσιακό ορισμό του ανοιχτού κώδικα, οι παρακάτω πληροφορίες πρέπει να είναι δημόσια διαθέσιμες: - Τα σύνολα δεδομένων που χρησιμοποιήθηκαν για την εκπαίδευση του μοντέλου. -- Τα πλήρη βάρη του μοντέλου ως μέρος της εκπαίδευσης. +- Πλήρη βάρη του μοντέλου ως μέρος της εκπαίδευσης. - Ο κώδικας αξιολόγησης. - Ο κώδικας προσαρμογής. -- Τα πλήρη βάρη του μοντέλου και οι μετρήσεις εκπαίδευσης. +- Πλήρη βάρη του μοντέλου και μετρικές εκπαίδευσης. -Προς το παρόν, υπάρχουν μόνο λίγα μοντέλα που πληρούν αυτά τα κριτήρια. Το [μοντέλο OLMo που δημιουργήθηκε από το Allen Institute for Artificial Intelligence (AllenAI)](https://huggingface.co/allenai/OLMo-7B?WT.mc_id=academic-105485-koreyst) είναι ένα από αυτά που ανήκουν σε αυτήν την κατηγορία. +Αυτή τη στιγμή υπάρχουν μόνο λίγα μοντέλα που πληρούν αυτά τα κριτήρια. Το [μοντέλο OLMo που δημιουργήθηκε από το Allen Institute for Artificial Intelligence (AllenAI)](https://huggingface.co/allenai/OLMo-7B?WT.mc_id=academic-105485-koreyst) είναι ένα από αυτά που ταιριάζει σε αυτή την κατηγορία. Για αυτό το μάθημα, θα αναφερόμαστε στα μοντέλα ως "ανοιχτά μοντέλα" από εδώ και στο εξής, καθώς μπορεί να μην πληρούν τα παραπάνω κριτήρια τη στιγμή της συγγραφής. ## Πλεονεκτήματα των Ανοιχτών Μοντέλων -**Υψηλή Προσαρμοστικότητα** - Επειδή τα ανοιχτά μοντέλα κυκλοφορούν με λεπτομερείς πληροφορίες εκπαίδευσης, οι ερευνητές και οι προγραμματιστές μπορούν να τροποποιήσουν τα εσωτερικά του μοντέλου. Αυτό επιτρέπει τη δημιουργία εξειδικευμένων μοντέλων που είναι προσαρμοσμένα για μια συγκεκριμένη εργασία ή τομέα μελέτης. Μερικά παραδείγματα είναι η δημιουργία κώδικα, οι μαθηματικές πράξεις και η βιολογία. +**Υψηλή Προσαρμοστικότητα** - Επειδή τα ανοιχτά μοντέλα κυκλοφορούν με λεπτομερείς πληροφορίες εκπαίδευσης, οι ερευνητές και οι προγραμματιστές μπορούν να τροποποιήσουν τα εσωτερικά του μοντέλου. Αυτό επιτρέπει τη δημιουργία εξειδικευμένων μοντέλων που είναι προσαρμοσμένα για συγκεκριμένες εργασίες ή τομείς μελέτης. Μερικά παραδείγματα είναι η δημιουργία κώδικα, οι μαθηματικές λειτουργίες και η βιολογία. -**Κόστος** - Το κόστος ανά token για τη χρήση και την ανάπτυξη αυτών των μοντέλων είναι χαμηλότερο από αυτό των ιδιόκτητων μοντέλων. Όταν δημιουργείτε εφαρμογές Γενετικής Τεχνητής Νοημοσύνης, θα πρέπει να εξετάζετε την απόδοση σε σχέση με το κόστος για την περίπτωσή σας. +**Κόστος** - Το κόστος ανά token για τη χρήση και την ανάπτυξη αυτών των μοντέλων είναι χαμηλότερο από αυτό των ιδιόκτητων μοντέλων. Κατά την κατασκευή εφαρμογών Generative AI, θα πρέπει να εξετάζεται η απόδοση σε σχέση με την τιμή όταν εργάζεστε με αυτά τα μοντέλα για την περίπτωσή σας. -![Model Cost](../../../translated_images/model-price.3f5a3e4d32ae00b465325159e1f4ebe7b5861e95117518c6bfc37fe842950687.el.png) +![Κόστος Μοντέλου](../../../translated_images/model-price.3f5a3e4d32ae00b465325159e1f4ebe7b5861e95117518c6bfc37fe842950687.el.png) Πηγή: Artificial Analysis -**Ευελιξία** - Η εργασία με ανοιχτά μοντέλα σας επιτρέπει να είστε ευέλικτοι όσον αφορά τη χρήση διαφορετικών μοντέλων ή τον συνδυασμό τους. Ένα παράδειγμα είναι οι [Βοηθοί HuggingChat](https://huggingface.co/chat?WT.mc_id=academic-105485-koreyst), όπου ο χρήστης μπορεί να επιλέξει το μοντέλο που χρησιμοποιείται απευθείας από τη διεπαφή χρήστη: +**Ευελιξία** - Η εργασία με ανοιχτά μοντέλα σας επιτρέπει να είστε ευέλικτοι όσον αφορά τη χρήση διαφορετικών μοντέλων ή τον συνδυασμό τους. Ένα παράδειγμα αυτού είναι οι [Βοηθοί HuggingChat](https://huggingface.co/chat?WT.mc_id=academic-105485-koreyst), όπου ο χρήστης μπορεί να επιλέξει το μοντέλο που χρησιμοποιείται απευθείας στη διεπαφή χρήστη: -![Choose Model](../../../translated_images/choose-model.f095d15bbac922141591fd4fac586dc8d25e69b42abf305d441b84c238e293f2.el.png) +![Επιλογή Μοντέλου](../../../translated_images/choose-model.f095d15bbac922141591fd4fac586dc8d25e69b42abf305d441b84c238e293f2.el.png) ## Εξερεύνηση Διαφορετικών Ανοιχτών Μοντέλων ### Llama 2 -Το [LLama2](https://huggingface.co/meta-llama?WT.mc_id=academic-105485-koreyst), που αναπτύχθηκε από τη Meta, είναι ένα ανοιχτό μοντέλο που είναι βελτιστοποιημένο για εφαρμογές συνομιλίας. Αυτό οφείλεται στη μέθοδο προσαρμογής του, η οποία περιλάμβανε μεγάλο όγκο διαλόγων και ανθρώπινης ανατροφοδότησης. Με αυτή τη μέθοδο, το μοντέλο παράγει αποτελέσματα που ευθυγραμμίζονται περισσότερο με τις προσδοκίες των ανθρώπων, προσφέροντας καλύτερη εμπειρία χρήστη. +[LLama2](https://huggingface.co/meta-llama?WT.mc_id=academic-105485-koreyst), που αναπτύχθηκε από τη Meta, είναι ένα ανοιχτό μοντέλο που είναι βελτιστοποιημένο για εφαρμογές βασισμένες σε συνομιλία. Αυτό οφείλεται στη μέθοδο προσαρμογής του, η οποία περιλάμβανε μεγάλο όγκο διαλόγου και ανθρώπινης ανατροφοδότησης. Με αυτή τη μέθοδο, το μοντέλο παράγει περισσότερα αποτελέσματα που ευθυγραμμίζονται με τις ανθρώπινες προσδοκίες, παρέχοντας καλύτερη εμπειρία χρήστη. Μερικά παραδείγματα προσαρμοσμένων εκδόσεων του Llama περιλαμβάνουν το [Japanese Llama](https://huggingface.co/elyza/ELYZA-japanese-Llama-2-7b?WT.mc_id=academic-105485-koreyst), που ειδικεύεται στα Ιαπωνικά, και το [Llama Pro](https://huggingface.co/TencentARC/LLaMA-Pro-8B?WT.mc_id=academic-105485-koreyst), που είναι μια βελτιωμένη έκδοση του βασικού μοντέλου. ### Mistral -Το [Mistral](https://huggingface.co/mistralai?WT.mc_id=academic-105485-koreyst) είναι ένα ανοιχτό μοντέλο με έντονη εστίαση στην υψηλή απόδοση και αποδοτικότητα. Χρησιμοποιεί την προσέγγιση Mixture-of-Experts, η οποία συνδυάζει μια ομάδα εξειδικευμένων μοντέλων σε ένα σύστημα, όπου ανάλογα με την είσοδο, επιλέγονται συγκεκριμένα μοντέλα για χρήση. Αυτό καθιστά τον υπολογισμό πιο αποδοτικό, καθώς τα μοντέλα ασχολούνται μόνο με τις εισόδους στις οποίες είναι εξειδικευμένα. +[Mistral](https://huggingface.co/mistralai?WT.mc_id=academic-105485-koreyst) είναι ένα ανοιχτό μοντέλο με έντονη εστίαση στην υψηλή απόδοση και αποτελεσματικότητα. Χρησιμοποιεί την προσέγγιση Mixture-of-Experts, η οποία συνδυάζει μια ομάδα εξειδικευμένων μοντέλων σε ένα σύστημα όπου, ανάλογα με την είσοδο, επιλέγονται συγκεκριμένα μοντέλα για χρήση. Αυτό καθιστά τον υπολογισμό πιο αποτελεσματικό, καθώς τα μοντέλα ασχολούνται μόνο με τις εισόδους στις οποίες είναι εξειδικευμένα. -Μερικά παραδείγματα προσαρμοσμένων εκδόσεων του Mistral περιλαμβάνουν το [BioMistral](https://huggingface.co/BioMistral/BioMistral-7B?text=Mon+nom+est+Thomas+et+mon+principal?WT.mc_id=academic-105485-koreyst), που εστιάζει στον ιατρικό τομέα, και το [OpenMath Mistral](https://huggingface.co/nvidia/OpenMath-Mistral-7B-v0.1-hf?WT.mc_id=academic-105485-koreyst), που εκτελεί μαθηματικούς υπολογισμούς. +Μερικά παραδείγματα προσαρμοσμένων εκδόσεων του Mistral περιλαμβάνουν το [BioMistral](https://huggingface.co/BioMistral/BioMistral-7B?text=Mon+nom+est+Thomas+et+mon+principal?WT.mc_id=academic-105485-koreyst), που επικεντρώνεται στον ιατρικό τομέα, και το [OpenMath Mistral](https://huggingface.co/nvidia/OpenMath-Mistral-7B-v0.1-hf?WT.mc_id=academic-105485-koreyst), που εκτελεί μαθηματικούς υπολογισμούς. ### Falcon -Το [Falcon](https://huggingface.co/tiiuae?WT.mc_id=academic-105485-koreyst) είναι ένα LLM που δημιουργήθηκε από το Technology Innovation Institute (**TII**). Το Falcon-40B εκπαιδεύτηκε σε 40 δισεκατομμύρια παραμέτρους, αποδεικνύοντας ότι αποδίδει καλύτερα από το GPT-3 με μικρότερο υπολογιστικό κόστος. Αυτό οφείλεται στη χρήση του αλγορίθμου FlashAttention και της multiquery attention, που μειώνουν τις απαιτήσεις μνήμης κατά τον χρόνο πρόβλεψης. Με αυτόν τον μειωμένο χρόνο πρόβλεψης, το Falcon-40B είναι κατάλληλο για εφαρμογές συνομιλίας. +[Falcon](https://huggingface.co/tiiuae?WT.mc_id=academic-105485-koreyst) είναι ένα LLM που δημιουργήθηκε από το Technology Innovation Institute (**TII**). Το Falcon-40B εκπαιδεύτηκε σε 40 δισεκατομμύρια παραμέτρους, κάτι που έχει δείξει ότι αποδίδει καλύτερα από το GPT-3 με μικρότερο προϋπολογισμό υπολογισμού. Αυτό οφείλεται στη χρήση του αλγορίθμου FlashAttention και της multiquery attention, που του επιτρέπει να μειώσει τις απαιτήσεις μνήμης κατά τον χρόνο πρόβλεψης. Με αυτόν τον μειωμένο χρόνο πρόβλεψης, το Falcon-40B είναι κατάλληλο για εφαρμογές συνομιλίας. Μερικά παραδείγματα προσαρμοσμένων εκδόσεων του Falcon είναι το [OpenAssistant](https://huggingface.co/OpenAssistant/falcon-40b-sft-top1-560?WT.mc_id=academic-105485-koreyst), ένας βοηθός βασισμένος σε ανοιχτά μοντέλα, και το [GPT4ALL](https://huggingface.co/nomic-ai/gpt4all-falcon?WT.mc_id=academic-105485-koreyst), που προσφέρει υψηλότερη απόδοση από το βασικό μοντέλο. ## Πώς να Επιλέξετε -Δεν υπάρχει μία απάντηση για την επιλογή ενός ανοιχτού μοντέλου. Ένα καλό σημείο εκκίνησης είναι η χρήση της δυνατότητας φιλτραρίσματος ανά εργασία στο Azure AI Studio. Αυτό θα σας βοηθήσει να κατανοήσετε για ποιους τύπους εργασιών έχει εκπαιδευτεί το μοντέλο. Το Hugging Face διατηρεί επίσης έναν πίνακα κατάταξης LLM, που δείχνει τα καλύτερα μοντέλα με βάση συγκεκριμένες μετρήσεις. +Δεν υπάρχει μία απάντηση για την επιλογή ενός ανοιχτού μοντέλου. Ένα καλό σημείο εκκίνησης είναι η χρήση της δυνατότητας φιλτραρίσματος ανά εργασία του Azure AI Studio. Αυτό θα σας βοηθήσει να κατανοήσετε τι είδους εργασίες έχει εκπαιδευτεί το μοντέλο να εκτελεί. Το Hugging Face διατηρεί επίσης έναν Πίνακα Κατάταξης LLM που σας δείχνει τα καλύτερα μοντέλα με βάση συγκεκριμένες μετρικές. Όταν θέλετε να συγκρίνετε LLMs μεταξύ διαφορετικών τύπων, το [Artificial Analysis](https://artificialanalysis.ai/?WT.mc_id=academic-105485-koreyst) είναι μια άλλη εξαιρετική πηγή: -![Model Quality](../../../translated_images/model-quality.aaae1c22e00f7ee1cd9dc186c611ac6ca6627eabd19e5364dce9e216d25ae8a5.el.png) +![Ποιότητα Μοντέλου](../../../translated_images/model-quality.aaae1c22e00f7ee1cd9dc186c611ac6ca6627eabd19e5364dce9e216d25ae8a5.el.png) Πηγή: Artificial Analysis -Αν εργάζεστε σε μια συγκεκριμένη περίπτωση χρήσης, η αναζήτηση προσαρμοσμένων εκδόσεων που εστιάζουν στον ίδιο τομέα μπορεί να είναι αποτελεσματική. Η δοκιμή πολλαπλών ανοιχτών μοντέλων για να δείτε πώς αποδίδουν σύμφωνα με τις προσδοκίες σας και των χρηστών σας είναι επίσης μια καλή πρακτική. +Αν εργάζεστε σε μια συγκεκριμένη περίπτωση χρήσης, η αναζήτηση προσαρμοσμένων εκδόσεων που επικεντρώνονται στον ίδιο τομέα μπορεί να είναι αποτελεσματική. Η δοκιμή πολλών ανοιχτών μοντέλων για να δείτε πώς αποδίδουν σύμφωνα με τις προσδοκίες σας και των χρηστών σας είναι μια άλλη καλή πρακτική. ## Επόμενα Βήματα -Το καλύτερο με τα ανοιχτά μοντέλα είναι ότι μπορείτε να ξεκινήσετε να εργάζεστε μαζί τους πολύ γρήγορα. Εξετάστε τον [Κατάλογο Μοντέλων Azure AI Foundry](https://ai.azure.com?WT.mc_id=academic-105485-koreyst), που περιλαμβάνει μια συγκεκριμένη συλλογή Hugging Face με τα μοντέλα που συζητήσαμε εδώ. +Το καλύτερο με τα ανοιχτά μοντέλα είναι ότι μπορείτε να ξεκινήσετε να εργάζεστε με αυτά αρκετά γρήγορα. Δείτε τον [Κατάλογο Μοντέλων του Azure AI Foundry](https://ai.azure.com?WT.mc_id=academic-105485-koreyst), που περιλαμβάνει μια συγκεκριμένη συλλογή Hugging Face με αυτά τα μοντέλα που συζητήσαμε εδώ. ## Η μάθηση δεν σταματά εδώ, συνεχίστε το ταξίδι -Αφού ολοκληρώσετε αυτό το μάθημα, εξετάστε τη [Συλλογή Μάθησης Γενετικής Τεχνητής Νοημοσύνης](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) για να συνεχίσετε να αναβαθμίζετε τις γνώσεις σας στη Γενετική Τεχνητή Νοημοσύνη! +Αφού ολοκληρώσετε αυτό το μάθημα, δείτε τη [Συλλογή Μάθησης Generative AI](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) για να συνεχίσετε να αναβαθμίζετε τις γνώσεις σας για το Generative AI! --- **Αποποίηση ευθύνης**: -Αυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία αυτόματης μετάφρασης [Co-op Translator](https://github.com/Azure/co-op-translator). Παρόλο που καταβάλλουμε προσπάθειες για ακρίβεια, παρακαλούμε να έχετε υπόψη ότι οι αυτοματοποιημένες μεταφράσεις ενδέχεται να περιέχουν σφάλματα ή ανακρίβειες. Το πρωτότυπο έγγραφο στη μητρική του γλώσσα θα πρέπει να θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε ευθύνη για τυχόν παρεξηγήσεις ή εσφαλμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης. \ No newline at end of file +Αυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία μετάφρασης AI [Co-op Translator](https://github.com/Azure/co-op-translator). Παρόλο που καταβάλλουμε προσπάθειες για ακρίβεια, παρακαλούμε να έχετε υπόψη ότι οι αυτοματοποιημένες μεταφράσεις ενδέχεται να περιέχουν λάθη ή ανακρίβειες. Το πρωτότυπο έγγραφο στη μητρική του γλώσσα θα πρέπει να θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε ευθύνη για τυχόν παρεξηγήσεις ή εσφαλμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης. \ No newline at end of file diff --git a/translations/el/17-ai-agents/README.md b/translations/el/17-ai-agents/README.md index e6362ce9db..e14676e0b0 100644 --- a/translations/el/17-ai-agents/README.md +++ b/translations/el/17-ai-agents/README.md @@ -1,173 +1,175 @@ - -[![Open Source Models](../../../translated_images/17-lesson-banner.a5b918fb0920e4e6d8d391a100f5cb1d5929f4c2752c937d40392905dec82592.el.png)](https://aka.ms/gen-ai-lesson17-gh?WT.mc_id=academic-105485-koreyst) - -## Εισαγωγή - -Οι AI Agents αποτελούν μια συναρπαστική εξέλιξη στην Γενετική Τεχνητή Νοημοσύνη, επιτρέποντας στα Μεγάλα Γλωσσικά Μοντέλα (LLMs) να εξελιχθούν από βοηθούς σε πράκτορες ικανούς να αναλαμβάνουν δράσεις. Τα πλαίσια εργασίας για AI Agents δίνουν τη δυνατότητα στους προγραμματιστές να δημιουργούν εφαρμογές που παρέχουν στα LLMs πρόσβαση σε εργαλεία και διαχείριση κατάστασης. Αυτά τα πλαίσια βελτιώνουν επίσης τη διαφάνεια, επιτρέποντας σε χρήστες και προγραμματιστές να παρακολουθούν τις ενέργειες που σχεδιάζουν τα LLMs, βελτιώνοντας έτσι τη διαχείριση της εμπειρίας. - -Το μάθημα θα καλύψει τα εξής θέματα: - -- Κατανόηση του τι είναι ένας AI Agent - Τι ακριβώς είναι ένας AI Agent; -- Εξερεύνηση τεσσάρων διαφορετικών πλαισίων AI Agent - Τι τα κάνει μοναδικά; -- Εφαρμογή αυτών των AI Agents σε διάφορες περιπτώσεις χρήσης - Πότε πρέπει να χρησιμοποιούμε AI Agents; - -## Στόχοι μάθησης - -Μετά την ολοκλήρωση αυτού του μαθήματος, θα μπορείτε να: - -- Εξηγήσετε τι είναι οι AI Agents και πώς μπορούν να χρησιμοποιηθούν. -- Κατανοήσετε τις διαφορές μεταξύ μερικών από τα δημοφιλή πλαίσια AI Agent και πώς διαφέρουν. -- Κατανοήσετε πώς λειτουργούν οι AI Agents ώστε να δημιουργήσετε εφαρμογές με αυτά. - -## Τι είναι οι AI Agents; - -Οι AI Agents είναι ένας πολύ συναρπαστικός τομέας στον κόσμο της Γενετικής Τεχνητής Νοημοσύνης. Μαζί με αυτόν τον ενθουσιασμό, συχνά προκύπτει σύγχυση σχετικά με τους όρους και την εφαρμογή τους. Για να κρατήσουμε τα πράγματα απλά και να συμπεριλάβουμε τα περισσότερα εργαλεία που αναφέρονται ως AI Agents, θα χρησιμοποιήσουμε τον εξής ορισμό: - -Οι AI Agents επιτρέπουν στα Μεγάλα Γλωσσικά Μοντέλα (LLMs) να εκτελούν εργασίες δίνοντάς τους πρόσβαση σε **κατάσταση** και **εργαλεία**. - -![Agent Model](../../../translated_images/what-agent.21f2893bdfd01e6a7fd09b0416c2b15594d97f44bbb2ab5a1ff8bf643d2fcb3d.el.png) - -Ας ορίσουμε αυτούς τους όρους: - -**Μεγάλα Γλωσσικά Μοντέλα** - Αυτά είναι τα μοντέλα που αναφέρονται σε όλο το μάθημα, όπως τα GPT-3.5, GPT-4, Llama-2 κ.ά. - -**Κατάσταση** - Αναφέρεται στο πλαίσιο μέσα στο οποίο εργάζεται το LLM. Το LLM χρησιμοποιεί το πλαίσιο των προηγούμενων ενεργειών του και το τρέχον πλαίσιο, καθοδηγώντας τη λήψη αποφάσεων για τις επόμενες ενέργειες. Τα πλαίσια AI Agent διευκολύνουν τους προγραμματιστές να διατηρούν αυτό το πλαίσιο. - -**Εργαλεία** - Για να ολοκληρώσει την εργασία που ζήτησε ο χρήστης και που έχει σχεδιάσει το LLM, το LLM χρειάζεται πρόσβαση σε εργαλεία. Παραδείγματα εργαλείων μπορεί να είναι μια βάση δεδομένων, ένα API, μια εξωτερική εφαρμογή ή ακόμα και ένα άλλο LLM! - -Αυτοί οι ορισμοί ελπίζουμε να σας δώσουν μια καλή βάση καθώς προχωράμε στην υλοποίηση τους. Ας εξερευνήσουμε μερικά διαφορετικά πλαίσια AI Agent: - -## LangChain Agents - -Το [LangChain Agents](https://python.langchain.com/docs/how_to/#agents?WT.mc_id=academic-105485-koreyst) είναι μια υλοποίηση των ορισμών που δώσαμε παραπάνω. - -Για τη διαχείριση της **κατάστασης**, χρησιμοποιεί μια ενσωματωμένη λειτουργία που ονομάζεται `AgentExecutor`. Αυτή δέχεται τον ορισμένο `agent` και τα `tools` που είναι διαθέσιμα. - -Ο `AgentExecutor` αποθηκεύει επίσης το ιστορικό συνομιλίας για να παρέχει το πλαίσιο της συνομιλίας. - -![Langchain Agents](../../../translated_images/langchain-agents.edcc55b5d5c437169a2037211284154561183c58bcec6d4ac2f8a79046fac9af.el.png) - -Το LangChain προσφέρει έναν [κατάλογο εργαλείων](https://integrations.langchain.com/tools?WT.mc_id=academic-105485-koreyst) που μπορούν να εισαχθούν στην εφαρμογή σας και στα οποία το LLM μπορεί να έχει πρόσβαση. Αυτά δημιουργούνται από την κοινότητα και την ομάδα του LangChain. - -Στη συνέχεια, μπορείτε να ορίσετε αυτά τα εργαλεία και να τα περάσετε στον `AgentExecutor`. - -Η διαφάνεια είναι ένα ακόμα σημαντικό στοιχείο όταν μιλάμε για AI Agents. Είναι σημαντικό για τους προγραμματιστές εφαρμογών να κατανοούν ποιο εργαλείο χρησιμοποιεί το LLM και γιατί. Για αυτό, η ομάδα του LangChain ανέπτυξε το LangSmith. - -## AutoGen - -Το επόμενο πλαίσιο AI Agent που θα συζητήσουμε είναι το [AutoGen](https://microsoft.github.io/autogen/?WT.mc_id=academic-105485-koreyst). Η κύρια εστίαση του AutoGen είναι οι συνομιλίες. Οι Agents είναι τόσο **συνομιλητικοί** όσο και **προσαρμόσιμοι**. - -**Συνομιλητικοί -** Τα LLMs μπορούν να ξεκινήσουν και να συνεχίσουν μια συνομιλία με άλλο LLM για να ολοκληρώσουν μια εργασία. Αυτό γίνεται δημιουργώντας `AssistantAgents` και δίνοντάς τους ένα συγκεκριμένο μήνυμα συστήματος. - -```python - -autogen.AssistantAgent( name="Coder", llm_config=llm_config, ) pm = autogen.AssistantAgent( name="Product_manager", system_message="Creative in software product ideas.", llm_config=llm_config, ) - -``` - -**Προσαρμόσιμοι** - Οι Agents μπορούν να οριστούν όχι μόνο ως LLMs αλλά και ως χρήστης ή εργαλείο. Ως προγραμματιστής, μπορείτε να ορίσετε έναν `UserProxyAgent` που είναι υπεύθυνος για την αλληλεπίδραση με τον χρήστη για ανατροφοδότηση στην ολοκλήρωση μιας εργασίας. Αυτή η ανατροφοδότηση μπορεί είτε να συνεχίσει την εκτέλεση της εργασίας είτε να τη σταματήσει. - -```python -user_proxy = UserProxyAgent(name="user_proxy") -``` - -### Κατάσταση και Εργαλεία - -Για να αλλάξει και να διαχειριστεί την κατάσταση, ένας βοηθητικός Agent δημιουργεί κώδικα Python για να ολοκληρώσει την εργασία. - -Ακολουθεί ένα παράδειγμα της διαδικασίας: - -![AutoGen](../../../translated_images/autogen.dee9a25a45fde584fedd84b812a6e31de5a6464687cdb66bb4f2cb7521391856.el.png) - -#### LLM ορισμένο με μήνυμα συστήματος - -```python -system_message="For weather related tasks, only use the functions you have been provided with. Reply TERMINATE when the task is done." -``` - -Αυτό το μήνυμα συστήματος καθοδηγεί το συγκεκριμένο LLM σχετικά με τις λειτουργίες που είναι σχετικές για την εργασία του. Θυμηθείτε, με το AutoGen μπορείτε να έχετε πολλούς ορισμένους AssistantAgents με διαφορετικά μηνύματα συστήματος. - -#### Η συνομιλία ξεκινά από τον χρήστη - -```python -user_proxy.initiate_chat( chatbot, message="I am planning a trip to NYC next week, can you help me pick out what to wear? ", ) - -``` - -Αυτό το μήνυμα από τον user_proxy (Άνθρωπο) είναι που θα ξεκινήσει τη διαδικασία του Agent να εξερευνήσει τις πιθανές λειτουργίες που πρέπει να εκτελέσει. - -#### Η λειτουργία εκτελείται - -```bash -chatbot (to user_proxy): - -***** Suggested tool Call: get_weather ***** Arguments: {"location":"New York City, NY","time_periond:"7","temperature_unit":"Celsius"} ******************************************************** -------------------------------------------------------------------------------- - ->>>>>>>> EXECUTING FUNCTION get_weather... user_proxy (to chatbot): ***** Response from calling function "get_weather" ***** 112.22727272727272 EUR **************************************************************** - -``` - -Μόλις επεξεργαστεί η αρχική συνομιλία, ο Agent θα στείλει το προτεινόμενο εργαλείο για κλήση. Σε αυτή την περίπτωση, είναι μια λειτουργία που ονομάζεται `get_weather`. Ανάλογα με τη ρύθμισή σας, αυτή η λειτουργία μπορεί να εκτελεστεί αυτόματα και να διαβαστεί από τον Agent ή να εκτελεστεί βάσει εισόδου χρήστη. - -Μπορείτε να βρείτε μια λίστα με [παραδείγματα κώδικα AutoGen](https://microsoft.github.io/autogen/docs/Examples/?WT.mc_id=academic-105485-koreyst) για να εξερευνήσετε περαιτέρω πώς να ξεκινήσετε την κατασκευή. - -## Taskweaver - -Το επόμενο πλαίσιο agent που θα εξερευνήσουμε είναι το [Taskweaver](https://microsoft.github.io/TaskWeaver/?WT.mc_id=academic-105485-koreyst). Είναι γνωστό ως "code-first" agent γιατί αντί να δουλεύει αυστηρά με `strings`, μπορεί να δουλέψει με DataFrames σε Python. Αυτό γίνεται εξαιρετικά χρήσιμο για εργασίες ανάλυσης και δημιουργίας δεδομένων. Μπορεί να είναι πράγματα όπως η δημιουργία γραφημάτων και διαγραμμάτων ή η παραγωγή τυχαίων αριθμών. - -### Κατάσταση και Εργαλεία - -Για να διαχειριστεί την κατάσταση της συνομιλίας, το TaskWeaver χρησιμοποιεί την έννοια του `Planner`. Ο `Planner` είναι ένα LLM που λαμβάνει το αίτημα από τους χρήστες και χαρτογραφεί τις εργασίες που πρέπει να ολοκληρωθούν για να ικανοποιηθεί το αίτημα. - -Για να ολοκληρώσει τις εργασίες, ο `Planner` έχει πρόσβαση στη συλλογή εργαλείων που ονομάζονται `Plugins`. Αυτά μπορεί να είναι κλάσεις Python ή ένας γενικός διερμηνέας κώδικα. Αυτά τα plugins αποθηκεύονται ως embeddings ώστε το LLM να μπορεί να αναζητά καλύτερα το σωστό plugin. - -![Taskweaver](../../../translated_images/taskweaver.da8559999267715a95b7677cf9b7d7dd8420aee6f3c484ced1833f081988dcd5.el.png) - -Ακολουθεί ένα παράδειγμα plugin για ανίχνευση ανωμαλιών: - -```python -class AnomalyDetectionPlugin(Plugin): def __call__(self, df: pd.DataFrame, time_col_name: str, value_col_name: str): -``` - -Ο κώδικας ελέγχεται πριν εκτελεστεί. Μια ακόμα λειτουργία για τη διαχείριση του πλαισίου στο Taskweaver είναι η `experience`. Η εμπειρία επιτρέπει την αποθήκευση του πλαισίου μιας συνομιλίας μακροπρόθεσμα σε ένα αρχείο YAML. Αυτό μπορεί να ρυθμιστεί ώστε το LLM να βελτιώνεται με τον χρόνο σε συγκεκριμένες εργασίες, δεδομένου ότι εκτίθεται σε προηγούμενες συνομιλίες. - -## JARVIS - -Το τελευταίο πλαίσιο agent που θα εξερευνήσουμε είναι το [JARVIS](https://github.com/microsoft/JARVIS?tab=readme-ov-file?WT.mc_id=academic-105485-koreyst). Αυτό που κάνει το JARVIS μοναδικό είναι ότι χρησιμοποιεί ένα LLM για να διαχειριστεί την `κατάσταση` της συνομιλίας και τα `εργαλεία` είναι άλλα μοντέλα AI. Κάθε ένα από αυτά τα μοντέλα AI είναι εξειδικευμένο σε συγκεκριμένες εργασίες όπως ανίχνευση αντικειμένων, μεταγραφή ή περιγραφή εικόνας. - -![JARVIS](../../../translated_images/jarvis.762ddbadbd1a3a3364d4ca3db1a7a9c0d2180060c0f8da6f7bd5b5ea2a115aa7.el.png) - -Το LLM, ως γενικού σκοπού μοντέλο, λαμβάνει το αίτημα από τον χρήστη και εντοπίζει την συγκεκριμένη εργασία και τυχόν επιχειρήματα/δεδομένα που χρειάζονται για να ολοκληρωθεί η εργασία. - -```python -[{"task": "object-detection", "id": 0, "dep": [-1], "args": {"image": "e1.jpg" }}] -``` - -Στη συνέχεια, το LLM μορφοποιεί το αίτημα με τρόπο που το εξειδικευμένο μοντέλο AI μπορεί να ερμηνεύσει, όπως σε JSON. Μόλις το μοντέλο AI επιστρέψει την πρόβλεψή του βάσει της εργασίας, το LLM λαμβάνει την απάντηση. - -Αν απαιτούνται πολλαπλά μοντέλα για να ολοκληρωθεί η εργασία, το LLM θα ερμηνεύσει επίσης τις απαντήσεις από αυτά τα μοντέλα πριν τις συνδυάσει για να δημιουργήσει την απάντηση προς τον χρήστη. - -Το παρακάτω παράδειγμα δείχνει πώς λειτουργεί αυτό όταν ένας χρήστης ζητά περιγραφή και καταμέτρηση των αντικειμένων σε μια εικόνα: - -## Εργασία - -Για να συνεχίσετε την εκμάθησή σας για τους AI Agents, μπορείτε να δημιουργήσετε με το AutoGen: - -- Μια εφαρμογή που προσομοιώνει μια επιχειρηματική συνάντηση με διαφορετικά τμήματα μιας εκπαιδευτικής startup. -- Δημιουργήστε μηνύματα συστήματος που καθοδηγούν τα LLMs στην κατανόηση διαφορετικών προσωπικοτήτων και προτεραιοτήτων, και επιτρέπουν στον χρήστη να παρουσιάσει μια νέα ιδέα προϊόντος. -- Το LLM θα πρέπει στη συνέχεια να δημιουργήσει ερωτήσεις παρακολούθησης από κάθε τμήμα για να βελτιώσει και να τελειοποιήσει την παρουσίαση και την ιδέα του προϊόντος. - -## Η μάθηση δεν σταματά εδώ, συνεχίστε το ταξίδι - -Μετά την ολοκλήρωση αυτού του μαθήματος, ρίξτε μια ματιά στη [συλλογή μάθησης για Γενετική Τεχνητή Νοημοσύνη](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) για να συνεχίσετε να αναβαθμίζετε τις γνώσεις σας στην Γενετική Τεχνητή Νοημοσύνη! - -**Αποποίηση ευθυνών**: -Αυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία αυτόματης μετάφρασης AI [Co-op Translator](https://github.com/Azure/co-op-translator). Παρόλο που επιδιώκουμε την ακρίβεια, παρακαλούμε να γνωρίζετε ότι οι αυτόματες μεταφράσεις ενδέχεται να περιέχουν λάθη ή ανακρίβειες. Το πρωτότυπο έγγραφο στη γλώσσα του θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε ευθύνη για τυχόν παρεξηγήσεις ή λανθασμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης. \ No newline at end of file + +[![Ανοιχτά Μοντέλα Πηγής](../../../translated_images/17-lesson-banner.a5b918fb0920e4e6d8d391a100f5cb1d5929f4c2752c937d40392905dec82592.el.png)](https://youtu.be/yAXVW-lUINc?si=bOtW9nL6jc3XJgOM) + +## Εισαγωγή + +Οι Πράκτορες Τεχνητής Νοημοσύνης (AI Agents) αντιπροσωπεύουν μια συναρπαστική εξέλιξη στην Γενετική Τεχνητή Νοημοσύνη, επιτρέποντας στα Μεγάλα Γλωσσικά Μοντέλα (LLMs) να εξελιχθούν από βοηθοί σε πράκτορες που μπορούν να αναλαμβάνουν δράση. Τα πλαίσια Πρακτόρων Τεχνητής Νοημοσύνης επιτρέπουν στους προγραμματιστές να δημιουργούν εφαρμογές που παρέχουν στα LLMs πρόσβαση σε εργαλεία και διαχείριση κατάστασης. Αυτά τα πλαίσια βελτιώνουν επίσης την ορατότητα, επιτρέποντας στους χρήστες και στους προγραμματιστές να παρακολουθούν τις ενέργειες που σχεδιάζουν τα LLMs, βελτιώνοντας έτσι τη διαχείριση της εμπειρίας. + +Το μάθημα θα καλύψει τα εξής: + +- Κατανόηση του τι είναι ένας Πράκτορας Τεχνητής Νοημοσύνης - Τι ακριβώς είναι ένας Πράκτορας Τεχνητής Νοημοσύνης; +- Εξερεύνηση τεσσάρων διαφορετικών Πλαισίων Πρακτόρων Τεχνητής Νοημοσύνης - Τι τα κάνει μοναδικά; +- Εφαρμογή αυτών των Πρακτόρων Τεχνητής Νοημοσύνης σε διαφορετικές περιπτώσεις χρήσης - Πότε πρέπει να χρησιμοποιούμε Πράκτορες Τεχνητής Νοημοσύνης; + +## Στόχοι μάθησης + +Μετά την ολοκλήρωση αυτού του μαθήματος, θα μπορείτε: + +- Να εξηγήσετε τι είναι οι Πράκτορες Τεχνητής Νοημοσύνης και πώς μπορούν να χρησιμοποιηθούν. +- Να κατανοήσετε τις διαφορές μεταξύ ορισμένων δημοφιλών Πλαισίων Πρακτόρων Τεχνητής Νοημοσύνης και πώς διαφέρουν. +- Να κατανοήσετε πώς λειτουργούν οι Πράκτορες Τεχνητής Νοημοσύνης για να δημιουργήσετε εφαρμογές με αυτούς. + +## Τι είναι οι Πράκτορες Τεχνητής Νοημοσύνης; + +Οι Πράκτορες Τεχνητής Νοημοσύνης είναι ένα πολύ συναρπαστικό πεδίο στον κόσμο της Γενετικής Τεχνητής Νοημοσύνης. Με αυτή τη συναρπαστική εξέλιξη έρχεται μερικές φορές και η σύγχυση των όρων και της εφαρμογής τους. Για να διατηρήσουμε τα πράγματα απλά και να συμπεριλάβουμε τα περισσότερα εργαλεία που αναφέρονται ως Πράκτορες Τεχνητής Νοημοσύνης, θα χρησιμοποιήσουμε τον εξής ορισμό: + +Οι Πράκτορες Τεχνητής Νοημοσύνης επιτρέπουν στα Μεγάλα Γλωσσικά Μοντέλα (LLMs) να εκτελούν εργασίες παρέχοντάς τους πρόσβαση σε **κατάσταση** και **εργαλεία**. + +![Μοντέλο Πράκτορα](../../../translated_images/what-agent.21f2893bdfd01e6a7fd09b0416c2b15594d97f44bbb2ab5a1ff8bf643d2fcb3d.el.png) + +Ας ορίσουμε αυτούς τους όρους: + +**Μεγάλα Γλωσσικά Μοντέλα** - Αυτά είναι τα μοντέλα που αναφέρονται σε όλο το μάθημα, όπως GPT-3.5, GPT-4, Llama-2, κ.λπ. + +**Κατάσταση** - Αυτό αναφέρεται στο πλαίσιο στο οποίο εργάζεται το LLM. Το LLM χρησιμοποιεί το πλαίσιο των προηγούμενων ενεργειών του και το τρέχον πλαίσιο, καθοδηγώντας τη λήψη αποφάσεων για επόμενες ενέργειες. Τα Πλαίσια Πρακτόρων Τεχνητής Νοημοσύνης επιτρέπουν στους προγραμματιστές να διατηρούν αυτό το πλαίσιο πιο εύκολα. + +**Εργαλεία** - Για να ολοκληρώσει την εργασία που έχει ζητήσει ο χρήστης και που έχει σχεδιάσει το LLM, το LLM χρειάζεται πρόσβαση σε εργαλεία. Μερικά παραδείγματα εργαλείων μπορεί να είναι μια βάση δεδομένων, ένα API, μια εξωτερική εφαρμογή ή ακόμα και ένα άλλο LLM! + +Αυτοί οι ορισμοί ελπίζουμε να σας δώσουν μια καλή βάση καθώς προχωράμε στην υλοποίησή τους. Ας εξερευνήσουμε μερικά διαφορετικά Πλαίσια Πρακτόρων Τεχνητής Νοημοσύνης: + +## LangChain Agents + +[LangChain Agents](https://python.langchain.com/docs/how_to/#agents?WT.mc_id=academic-105485-koreyst) είναι μια υλοποίηση των ορισμών που παρέχονται παραπάνω. + +Για τη διαχείριση της **κατάστασης**, χρησιμοποιεί μια ενσωματωμένη λειτουργία που ονομάζεται `AgentExecutor`. Αυτή δέχεται τον καθορισμένο `agent` και τα `tools` που είναι διαθέσιμα σε αυτόν. + +Ο `AgentExecutor` αποθηκεύει επίσης το ιστορικό συνομιλιών για να παρέχει το πλαίσιο της συνομιλίας. + +![Langchain Agents](../../../translated_images/langchain-agents.edcc55b5d5c437169a2037211284154561183c58bcec6d4ac2f8a79046fac9af.el.png) + +Το LangChain προσφέρει έναν [κατάλογο εργαλείων](https://integrations.langchain.com/tools?WT.mc_id=academic-105485-koreyst) που μπορούν να εισαχθούν στην εφαρμογή σας, στα οποία το LLM μπορεί να αποκτήσει πρόσβαση. Αυτά δημιουργούνται από την κοινότητα και την ομάδα του LangChain. + +Μπορείτε στη συνέχεια να ορίσετε αυτά τα εργαλεία και να τα περάσετε στον `AgentExecutor`. + +Η ορατότητα είναι μια άλλη σημαντική πτυχή όταν μιλάμε για Πράκτορες Τεχνητής Νοημοσύνης. Είναι σημαντικό για τους προγραμματιστές εφαρμογών να κατανοούν ποιο εργαλείο χρησιμοποιεί το LLM και γιατί. Για αυτό, η ομάδα του LangChain έχει αναπτύξει το LangSmith. + +## AutoGen + +Το επόμενο Πλαίσιο Πρακτόρων Τεχνητής Νοημοσύνης που θα συζητήσουμε είναι το [AutoGen](https://microsoft.github.io/autogen/?WT.mc_id=academic-105485-koreyst). Η κύρια εστίαση του AutoGen είναι οι συνομιλίες. Οι Πράκτορες είναι τόσο **συνομιλητικοί** όσο και **προσαρμόσιμοι**. + +**Συνομιλητικοί -** Τα LLMs μπορούν να ξεκινήσουν και να συνεχίσουν μια συνομιλία με ένα άλλο LLM για να ολοκληρώσουν μια εργασία. Αυτό γίνεται με τη δημιουργία `AssistantAgents` και την παροχή ενός συγκεκριμένου μηνύματος συστήματος. + +```python + +autogen.AssistantAgent( name="Coder", llm_config=llm_config, ) pm = autogen.AssistantAgent( name="Product_manager", system_message="Creative in software product ideas.", llm_config=llm_config, ) + +``` + +**Προσαρμόσιμοι** - Οι Πράκτορες μπορούν να οριστούν όχι μόνο ως LLMs αλλά και ως χρήστης ή εργαλείο. Ως προγραμματιστής, μπορείτε να ορίσετε έναν `UserProxyAgent` που είναι υπεύθυνος για την αλληλεπίδραση με τον χρήστη για ανατροφοδότηση κατά την ολοκλήρωση μιας εργασίας. Αυτή η ανατροφοδότηση μπορεί είτε να συνεχίσει την εκτέλεση της εργασίας είτε να την σταματήσει. + +```python +user_proxy = UserProxyAgent(name="user_proxy") +``` + +### Κατάσταση και Εργαλεία + +Για να αλλάξει και να διαχειριστεί την κατάσταση, ένας Assistant Agent δημιουργεί κώδικα Python για να ολοκληρώσει την εργασία. + +Ακολουθεί ένα παράδειγμα της διαδικασίας: + +![AutoGen](../../../translated_images/autogen.dee9a25a45fde584fedd84b812a6e31de5a6464687cdb66bb4f2cb7521391856.el.png) + +#### LLM Ορισμένο με Μήνυμα Συστήματος + +```python +system_message="For weather related tasks, only use the functions you have been provided with. Reply TERMINATE when the task is done." +``` + +Αυτό το μήνυμα συστήματος καθοδηγεί αυτό το συγκεκριμένο LLM στις λειτουργίες που είναι σχετικές για την εργασία του. Θυμηθείτε, με το AutoGen μπορείτε να έχετε πολλούς καθορισμένους AssistantAgents με διαφορετικά μηνύματα συστήματος. + +#### Η Συνομιλία Ξεκινά από τον Χρήστη + +```python +user_proxy.initiate_chat( chatbot, message="I am planning a trip to NYC next week, can you help me pick out what to wear? ", ) + +``` + +Αυτό το μήνυμα από τον user_proxy (Άνθρωπο) είναι αυτό που θα ξεκινήσει τη διαδικασία του Πράκτορα να εξερευνήσει τις πιθανές λειτουργίες που πρέπει να εκτελέσει. + +#### Η Λειτουργία Εκτελείται + +```bash +chatbot (to user_proxy): + +***** Suggested tool Call: get_weather ***** Arguments: {"location":"New York City, NY","time_periond:"7","temperature_unit":"Celsius"} ******************************************************** -------------------------------------------------------------------------------- + +>>>>>>>> EXECUTING FUNCTION get_weather... user_proxy (to chatbot): ***** Response from calling function "get_weather" ***** 112.22727272727272 EUR **************************************************************** + +``` + +Μόλις επεξεργαστεί η αρχική συνομιλία, ο Πράκτορας θα στείλει το προτεινόμενο εργαλείο για κλήση. Σε αυτή την περίπτωση, είναι μια λειτουργία που ονομάζεται `get_weather`. Ανάλογα με τη διαμόρφωσή σας, αυτή η λειτουργία μπορεί να εκτελεστεί αυτόματα και να διαβαστεί από τον Πράκτορα ή να εκτελεστεί βάσει εισόδου του χρήστη. + +Μπορείτε να βρείτε μια λίστα με [δείγματα κώδικα AutoGen](https://microsoft.github.io/autogen/docs/Examples/?WT.mc_id=academic-105485-koreyst) για να εξερευνήσετε περαιτέρω πώς να ξεκινήσετε την κατασκευή. + +## Taskweaver + +Το επόμενο πλαίσιο πρακτόρων που θα εξερευνήσουμε είναι το [Taskweaver](https://microsoft.github.io/TaskWeaver/?WT.mc_id=academic-105485-koreyst). Είναι γνωστό ως πράκτορας "πρώτα ο κώδικας" επειδή αντί να εργάζεται αυστηρά με `strings`, μπορεί να εργάζεται με DataFrames σε Python. Αυτό γίνεται εξαιρετικά χρήσιμο για εργασίες ανάλυσης δεδομένων και δημιουργίας. Αυτές μπορεί να είναι πράγματα όπως η δημιουργία γραφημάτων και διαγραμμάτων ή η δημιουργία τυχαίων αριθμών. + +### Κατάσταση και Εργαλεία + +Για να διαχειριστεί την κατάσταση της συνομιλίας, το TaskWeaver χρησιμοποιεί την έννοια του `Planner`. Ο `Planner` είναι ένα LLM που λαμβάνει το αίτημα από τους χρήστες και χαρτογραφεί τις εργασίες που πρέπει να ολοκληρωθούν για να εκπληρωθεί αυτό το αίτημα. + +Για να ολοκληρώσει τις εργασίες, ο `Planner` έχει πρόσβαση σε μια συλλογή εργαλείων που ονομάζονται `Plugins`. Αυτά μπορεί να είναι κλάσεις Python ή ένας γενικός διερμηνέας κώδικα. Αυτά τα plugins αποθηκεύονται ως embeddings ώστε το LLM να μπορεί να αναζητήσει καλύτερα το σωστό plugin. + +![Taskweaver](../../../translated_images/taskweaver.da8559999267715a95b7677cf9b7d7dd8420aee6f3c484ced1833f081988dcd5.el.png) + +Ακολουθεί ένα παράδειγμα plugin για την ανίχνευση ανωμαλιών: + +```python +class AnomalyDetectionPlugin(Plugin): def __call__(self, df: pd.DataFrame, time_col_name: str, value_col_name: str): +``` + +Ο κώδικας επαληθεύεται πριν από την εκτέλεση. Ένα άλλο χαρακτηριστικό για τη διαχείριση του πλαισίου στο Taskweaver είναι η `εμπειρία`. Η εμπειρία επιτρέπει το πλαίσιο μιας συνομιλίας να αποθηκεύεται μακροπρόθεσμα σε ένα αρχείο YAML. Αυτό μπορεί να διαμορφωθεί ώστε το LLM να βελτιώνεται με την πάροδο του χρόνου σε συγκεκριμένες εργασίες δεδομένου ότι εκτίθεται σε προηγούμενες συνομιλίες. + +## JARVIS + +Το τελευταίο πλαίσιο πρακτόρων που θα εξερευνήσουμε είναι το [JARVIS](https://github.com/microsoft/JARVIS?tab=readme-ov-file?WT.mc_id=academic-105485-koreyst). Αυτό που κάνει το JARVIS μοναδικό είναι ότι χρησιμοποιεί ένα LLM για να διαχειριστεί την `κατάσταση` της συνομιλίας και τα `εργαλεία` είναι άλλα μοντέλα AI. Κάθε ένα από τα μοντέλα AI είναι εξειδικευμένα μοντέλα που εκτελούν συγκεκριμένες εργασίες όπως ανίχνευση αντικειμένων, μεταγραφή ή περιγραφή εικόνων. + +![JARVIS](../../../translated_images/jarvis.762ddbadbd1a3a3364d4ca3db1a7a9c0d2180060c0f8da6f7bd5b5ea2a115aa7.el.png) + +Το LLM, ως γενικό μοντέλο, λαμβάνει το αίτημα από τον χρήστη και προσδιορίζει τη συγκεκριμένη εργασία και οποιαδήποτε επιχειρήματα/δεδομένα χρειάζονται για την ολοκλήρωση της εργασίας. + +```python +[{"task": "object-detection", "id": 0, "dep": [-1], "args": {"image": "e1.jpg" }}] +``` + +Το LLM στη συνέχεια μορφοποιεί το αίτημα με τρόπο που το εξειδικευμένο μοντέλο AI μπορεί να ερμηνεύσει, όπως JSON. Μόλις το μοντέλο AI επιστρέψει την πρόβλεψή του βάσει της εργασίας, το LLM λαμβάνει την απάντηση. + +Εάν απαιτούνται πολλαπλά μοντέλα για την ολοκλήρωση της εργασίας, θα ερμηνεύσει επίσης την απάντηση από αυτά τα μοντέλα πριν τα συνδυάσει για να δημιουργήσει την απάντηση προς τον χρήστη. + +Το παρακάτω παράδειγμα δείχνει πώς θα λειτουργούσε αυτό όταν ένας χρήστης ζητά μια περιγραφή και τον αριθμό των αντικειμένων σε μια εικόνα: + +## Εργασία + +Για να συνεχίσετε τη μάθηση σας σχετικά με τους Πράκτορες Τεχνητής Νοημοσύνης, μπορείτε να δημιουργήσετε με το AutoGen: + +- Μια εφαρμογή που προσομοιώνει μια επιχειρηματική συνάντηση με διαφορετικά τμήματα μιας startup εκπαίδευσης. +- Δημιουργήστε μηνύματα συστήματος που καθοδηγούν τα LLMs να κατανοήσουν διαφορετικές προσωπικότητες και προτεραιότητες, και επιτρέψτε στον χρήστη να παρουσιάσει μια νέα ιδέα προϊόντος. +- Το LLM θα πρέπει στη συνέχεια να δημιουργήσει ερωτήσεις παρακολούθησης από κάθε τμήμα για να βελτιώσει την παρουσίαση και την ιδέα του προϊόντος. + +## Η μάθηση δεν σταματά εδώ, συνεχίστε το ταξίδι σας + +Μετά την ολοκλήρωση αυτού του μαθήματος, δείτε τη [συλλογή μάθησης Γενετικής Τεχνητής Νοημοσύνης](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) για να συνεχίσετε να αναβαθμίζετε τις γνώσεις σας στη Γενετική Τεχνητή Νοημοσύνη! + +--- + +**Αποποίηση ευθύνης**: +Αυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία μετάφρασης AI [Co-op Translator](https://github.com/Azure/co-op-translator). Παρόλο που καταβάλλουμε προσπάθειες για ακρίβεια, παρακαλούμε να έχετε υπόψη ότι οι αυτοματοποιημένες μεταφράσεις ενδέχεται να περιέχουν λάθη ή ανακρίβειες. Το πρωτότυπο έγγραφο στη μητρική του γλώσσα θα πρέπει να θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε ευθύνη για τυχόν παρεξηγήσεις ή εσφαλμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης. \ No newline at end of file diff --git a/translations/el/18-fine-tuning/README.md b/translations/el/18-fine-tuning/README.md index 0832a17623..a14155e142 100644 --- a/translations/el/18-fine-tuning/README.md +++ b/translations/el/18-fine-tuning/README.md @@ -1,109 +1,110 @@ - -[![Open Source Models](../../../translated_images/18-lesson-banner.f30176815b1a5074fce9cceba317720586caa99e24001231a92fd04eeb54a121.el.png)](https://aka.ms/gen-ai-lesson18-gh?WT.mc_id=academic-105485-koreyst) - -# Βελτιστοποίηση του LLM σας - -Η χρήση μεγάλων γλωσσικών μοντέλων για την ανάπτυξη εφαρμογών γεννητικής τεχνητής νοημοσύνης φέρνει νέες προκλήσεις. Ένα βασικό ζήτημα είναι η διασφάλιση της ποιότητας των απαντήσεων (ακρίβεια και σχετικότητα) στο περιεχόμενο που παράγεται από το μοντέλο για ένα συγκεκριμένο αίτημα χρήστη. Σε προηγούμενα μαθήματα, συζητήσαμε τεχνικές όπως το prompt engineering και τη δημιουργία με ανάκτηση (retrieval-augmented generation) που προσπαθούν να λύσουν το πρόβλημα με το _να τροποποιούν την είσοδο του prompt_ στο υπάρχον μοντέλο. - -Στο σημερινό μάθημα, θα εξετάσουμε μια τρίτη τεχνική, την **βελτιστοποίηση (fine-tuning)**, που προσπαθεί να αντιμετωπίσει την πρόκληση με το _να εκπαιδεύει ξανά το ίδιο το μοντέλο_ με επιπλέον δεδομένα. Ας δούμε τις λεπτομέρειες. - -## Στόχοι Μάθησης - -Αυτό το μάθημα εισάγει την έννοια της βελτιστοποίησης για προεκπαιδευμένα γλωσσικά μοντέλα, εξερευνά τα οφέλη και τις προκλήσεις αυτής της προσέγγισης και παρέχει οδηγίες για το πότε και πώς να χρησιμοποιήσετε τη βελτιστοποίηση για να βελτιώσετε την απόδοση των μοντέλων γεννητικής τεχνητής νοημοσύνης σας. - -Στο τέλος αυτού του μαθήματος, θα πρέπει να μπορείτε να απαντήσετε στις εξής ερωτήσεις: - -- Τι είναι η βελτιστοποίηση για γλωσσικά μοντέλα; -- Πότε και γιατί είναι χρήσιμη η βελτιστοποίηση; -- Πώς μπορώ να βελτιστοποιήσω ένα προεκπαιδευμένο μοντέλο; -- Ποιες είναι οι περιορισμοί της βελτιστοποίησης; - -Έτοιμοι; Ας ξεκινήσουμε. - -## Εικονογραφημένος Οδηγός - -Θέλετε να πάρετε μια συνολική εικόνα για το τι θα καλύψουμε πριν εμβαθύνουμε; Δείτε αυτόν τον εικονογραφημένο οδηγό που περιγράφει το ταξίδι μάθησης για αυτό το μάθημα - από την εκμάθηση των βασικών εννοιών και του κίνητρου για βελτιστοποίηση, μέχρι την κατανόηση της διαδικασίας και των βέλτιστων πρακτικών για την εκτέλεση της εργασίας βελτιστοποίησης. Πρόκειται για ένα συναρπαστικό θέμα για εξερεύνηση, οπότε μην ξεχάσετε να επισκεφτείτε τη σελίδα [Resources](./RESOURCES.md?WT.mc_id=academic-105485-koreyst) για επιπλέον συνδέσμους που θα υποστηρίξουν το αυτοκαθοδηγούμενο ταξίδι μάθησής σας! - -![Illustrated Guide to Fine Tuning Language Models](../../../translated_images/18-fine-tuning-sketchnote.11b21f9ec8a703467a120cb79a28b5ac1effc8d8d9d5b31bbbac6b8640432e14.el.png) - -## Τι είναι η βελτιστοποίηση για γλωσσικά μοντέλα; - -Κατά τον ορισμό, τα μεγάλα γλωσσικά μοντέλα είναι _προεκπαιδευμένα_ σε μεγάλες ποσότητες κειμένου που προέρχονται από διάφορες πηγές, συμπεριλαμβανομένου του διαδικτύου. Όπως μάθαμε σε προηγούμενα μαθήματα, χρειαζόμαστε τεχνικές όπως το _prompt engineering_ και τη _δημιουργία με ανάκτηση_ για να βελτιώσουμε την ποιότητα των απαντήσεων του μοντέλου στις ερωτήσεις ("prompts") του χρήστη. - -Μια δημοφιλής τεχνική prompt engineering περιλαμβάνει το να δίνουμε στο μοντέλο περισσότερη καθοδήγηση για το τι αναμένεται στην απάντηση, είτε παρέχοντας _οδηγίες_ (ρητή καθοδήγηση) είτε _δίνοντάς του μερικά παραδείγματα_ (έμμεση καθοδήγηση). Αυτό αναφέρεται ως _few-shot learning_, αλλά έχει δύο περιορισμούς: - -- Τα όρια των tokens του μοντέλου μπορούν να περιορίσουν τον αριθμό των παραδειγμάτων που μπορείτε να δώσετε και να μειώσουν την αποτελεσματικότητα. -- Το κόστος των tokens μπορεί να κάνει ακριβό το να προσθέτετε παραδείγματα σε κάθε prompt και να περιορίσει την ευελιξία. - -Η βελτιστοποίηση είναι μια κοινή πρακτική στα συστήματα μηχανικής μάθησης όπου παίρνουμε ένα προεκπαιδευμένο μοντέλο και το εκπαιδεύουμε ξανά με νέα δεδομένα για να βελτιώσουμε την απόδοσή του σε μια συγκεκριμένη εργασία. Στο πλαίσιο των γλωσσικών μοντέλων, μπορούμε να βελτιστοποιήσουμε το προεκπαιδευμένο μοντέλο _με ένα επιλεγμένο σύνολο παραδειγμάτων για μια συγκεκριμένη εργασία ή τομέα εφαρμογής_ για να δημιουργήσουμε ένα **προσαρμοσμένο μοντέλο** που μπορεί να είναι πιο ακριβές και σχετικό για αυτήν την εργασία ή τομέα. Ένα επιπλέον όφελος της βελτιστοποίησης είναι ότι μπορεί επίσης να μειώσει τον αριθμό των παραδειγμάτων που χρειάζονται για το few-shot learning - μειώνοντας τη χρήση tokens και τα σχετικά κόστη. - -## Πότε και γιατί πρέπει να βελτιστοποιούμε μοντέλα; - -Σε _αυτό_ το πλαίσιο, όταν μιλάμε για βελτιστοποίηση, αναφερόμαστε σε **εποπτευόμενη** βελτιστοποίηση όπου η επανεκπαίδευση γίνεται με **προσθήκη νέων δεδομένων** που δεν ήταν μέρος του αρχικού συνόλου εκπαίδευσης. Αυτό διαφέρει από μια μη εποπτευόμενη προσέγγιση βελτιστοποίησης όπου το μοντέλο εκπαιδεύεται ξανά στα αρχικά δεδομένα, αλλά με διαφορετικές υπερπαραμέτρους. - -Το βασικό που πρέπει να θυμάστε είναι ότι η βελτιστοποίηση είναι μια προχωρημένη τεχνική που απαιτεί ένα επίπεδο εξειδίκευσης για να επιτευχθούν τα επιθυμητά αποτελέσματα. Αν γίνει λανθασμένα, μπορεί να μην προσφέρει τις αναμενόμενες βελτιώσεις και μπορεί ακόμη και να υποβαθμίσει την απόδοση του μοντέλου για τον στοχευμένο τομέα σας. - -Έτσι, πριν μάθετε "πώς" να βελτιστοποιείτε γλωσσικά μοντέλα, πρέπει να ξέρετε "γιατί" να ακολουθήσετε αυτήν την οδό και "πότε" να ξεκινήσετε τη διαδικασία βελτιστοποίησης. Ξεκινήστε ρωτώντας τον εαυτό σας τα εξής: - -- **Περίπτωση Χρήσης**: Ποια είναι η _περίπτωση χρήσης_ σας για βελτιστοποίηση; Ποια πτυχή του τρέχοντος προεκπαιδευμένου μοντέλου θέλετε να βελτιώσετε; -- **Εναλλακτικές**: Έχετε δοκιμάσει _άλλες τεχνικές_ για να πετύχετε τα επιθυμητά αποτελέσματα; Χρησιμοποιήστε τις για να δημιουργήσετε μια βάση σύγκρισης. - - Prompt engineering: Δοκιμάστε τεχνικές όπως few-shot prompting με παραδείγματα σχετικών απαντήσεων. Αξιολογήστε την ποιότητα των απαντήσεων. - - Retrieval Augmented Generation: Δοκιμάστε να ενισχύσετε τα prompts με αποτελέσματα αναζήτησης στα δεδομένα σας. Αξιολογήστε την ποιότητα των απαντήσεων. -- **Κόστη**: Έχετε εντοπίσει τα κόστη για τη βελτιστοποίηση; - - Δυνατότητα βελτιστοποίησης - είναι διαθέσιμο το προεκπαιδευμένο μοντέλο για βελτιστοποίηση; - - Προσπάθεια - για την προετοιμασία των δεδομένων εκπαίδευσης, την αξιολόγηση και τη βελτίωση του μοντέλου. - - Υπολογιστική ισχύς - για την εκτέλεση των εργασιών βελτιστοποίησης και την ανάπτυξη του βελτιστοποιημένου μοντέλου. - - Δεδομένα - πρόσβαση σε επαρκή και ποιοτικά παραδείγματα για να έχει αποτέλεσμα η βελτιστοποίηση. -- **Οφέλη**: Έχετε επιβεβαιώσει τα οφέλη της βελτιστοποίησης; - - Ποιότητα - το βελτιστοποιημένο μοντέλο ξεπέρασε τη βάση αναφοράς; - - Κόστος - μειώνει τη χρήση tokens απλοποιώντας τα prompts; - - Επεκτασιμότητα - μπορείτε να επαναχρησιμοποιήσετε το βασικό μοντέλο για νέους τομείς; - -Απαντώντας σε αυτές τις ερωτήσεις, θα πρέπει να μπορείτε να αποφασίσετε αν η βελτιστοποίηση είναι η σωστή προσέγγιση για την περίπτωσή σας. Ιδανικά, η προσέγγιση είναι έγκυρη μόνο αν τα οφέλη υπερτερούν των κόστους. Μόλις αποφασίσετε να προχωρήσετε, είναι ώρα να σκεφτείτε _πώς_ μπορείτε να βελτιστοποιήσετε το προεκπαιδευμένο μοντέλο. - -Θέλετε περισσότερες πληροφορίες για τη διαδικασία λήψης αποφάσεων; Δείτε το [To fine-tune or not to fine-tune](https://www.youtube.com/watch?v=0Jo-z-MFxJs) - -## Πώς μπορούμε να βελτιστοποιήσουμε ένα προεκπαιδευμένο μοντέλο; - -Για να βελτιστοποιήσετε ένα προεκπαιδευμένο μοντέλο, χρειάζεστε: - -- ένα προεκπαιδευμένο μοντέλο για βελτιστοποίηση -- ένα σύνολο δεδομένων για χρήση στη βελτιστοποίηση -- ένα περιβάλλον εκπαίδευσης για να τρέξετε την εργασία βελτιστοποίησης -- ένα περιβάλλον φιλοξενίας για να αναπτύξετε το βελτιστοποιημένο μοντέλο - -## Βελτιστοποίηση στην Πράξη - -Οι παρακάτω πηγές παρέχουν βήμα-βήμα οδηγούς για να σας καθοδηγήσουν σε ένα πραγματικό παράδειγμα χρησιμοποιώντας ένα επιλεγμένο μοντέλο με ένα επιμελημένο σύνολο δεδομένων. Για να δουλέψετε με αυτούς τους οδηγούς, χρειάζεστε λογαριασμό στον αντίστοιχο πάροχο, καθώς και πρόσβαση στο σχετικό μοντέλο και τα σύνολα δεδομένων. - -| Πάροχος | Οδηγός | Περιγραφή | -| ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| OpenAI | [How to fine-tune chat models](https://github.com/openai/openai-cookbook/blob/main/examples/How_to_finetune_chat_models.ipynb?WT.mc_id=academic-105485-koreyst) | Μάθετε πώς να βελτιστοποιήσετε ένα `gpt-35-turbo` για έναν συγκεκριμένο τομέα ("βοηθός συνταγών") προετοιμάζοντας δεδομένα εκπαίδευσης, τρέχοντας την εργασία βελτιστοποίησης και χρησιμοποιώντας το βελτιστοποιημένο μοντέλο για συμπερασματολογία. | -| Azure OpenAI | [GPT 3.5 Turbo fine-tuning tutorial](https://learn.microsoft.com/azure/ai-services/openai/tutorials/fine-tune?tabs=python-new%2Ccommand-line?WT.mc_id=academic-105485-koreyst) | Μάθετε πώς να βελτιστοποιήσετε ένα μοντέλο `gpt-35-turbo-0613` **στο Azure** ακολουθώντας βήματα για τη δημιουργία και μεταφόρτωση δεδομένων εκπαίδευσης, την εκτέλεση της εργασίας βελτιστοποίησης, την ανάπτυξη και χρήση του νέου μοντέλου. | -| Hugging Face | [Fine-tuning LLMs with Hugging Face](https://www.philschmid.de/fine-tune-llms-in-2024-with-trl?WT.mc_id=academic-105485-koreyst) | Αυτό το άρθρο σας καθοδηγεί στη βελτιστοποίηση ενός _ανοιχτού LLM_ (π.χ. `CodeLlama 7B`) χρησιμοποιώντας τη βιβλιοθήκη [transformers](https://huggingface.co/docs/transformers/index?WT.mc_id=academic-105485-koreyst) και το [Transformer Reinforcement Learning (TRL)](https://huggingface.co/docs/trl/index?WT.mc_id=academic-105485-koreyst) με ανοιχτά [datasets](https://huggingface.co/docs/datasets/index?WT.mc_id=academic-105485-koreyst) στο Hugging Face. | -| | | | -| 🤗 AutoTrain | [Fine-tuning LLMs with AutoTrain](https://github.com/huggingface/autotrain-advanced/?WT.mc_id=academic-105485-koreyst) | Το AutoTrain (ή AutoTrain Advanced) είναι μια βιβλιοθήκη Python που αναπτύχθηκε από το Hugging Face και επιτρέπει τη βελτιστοποίηση για πολλές διαφορετικές εργασίες, συμπεριλαμβανομένης της βελτιστοποίησης LLM. Το AutoTrain είναι μια λύση χωρίς κώδικα και η βελτιστοποίηση μπορεί να γίνει στο δικό σας cloud, στα Hugging Face Spaces ή τοπικά. Υποστηρίζει τόσο web-based GUI, CLI όσο και εκπαίδευση μέσω αρχείων ρυθμίσεων yaml. | -| | | | - -## Άσκηση - -Επιλέξτε έναν από τους παραπάνω οδηγούς και ακολουθήστε τον βήμα-βήμα. _Ενδέχεται να αναπαράγουμε μια έκδοση αυτών των οδηγών σε Jupyter Notebooks σε αυτό το αποθετήριο μόνο για αναφορά. Παρακαλούμε χρησιμοποιήστε τις πρωτότυπες πηγές απευθείας για να έχετε τις πιο πρόσφατες εκδόσεις_. - -## Μπράβο! Συνεχίστε τη Μάθησή σας. - -Μετά την ολοκλήρωση αυτού του μαθήματος, επισκεφτείτε τη συλλογή μας [Generative AI Learning collection](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) για να συνεχίσετε να αναβαθμίζετε τις γνώσεις σας στην Γεννητική Τεχνητή Νοημοσύνη! - -Συγχαρητήρια!! Ολοκληρώσατε το τελευταίο μάθημα της σειράς v2 για αυτό το μάθημα! Μην σταματήσετε να μαθαίνετε και να δημιουργείτε. \*\*Δείτε τη σελίδα [RESOURCES](RESOURCES.md?WT.mc_id=academic-105485-koreyst) για μια λίστα με επιπλέον προτάσεις μόνο για αυτό το θέμα. - -Η σειρά μαθημάτων v1 έχει επίσης ενημερωθεί με περισσότερες ασκήσεις και έννοιες. Πάρτε ένα λεπτό να ανανεώσετε τις γνώσεις σας - και παρακαλούμε [μοιραστείτε τις ερωτήσεις και τα σχόλιά σας](https://github.com/microsoft/generative-ai-for-beginners/issues?WT.mc_id=academic-105485-koreyst) για να μας βοηθήσετε να βελτιώσουμε αυτά τα μαθήματα για την κοινότητα. - -**Αποποίηση ευθυνών**: -Αυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία αυτόματης μετάφρασης AI [Co-op Translator](https://github.com/Azure/co-op-translator). Παρόλο που επιδιώκουμε την ακρίβεια, παρακαλούμε να έχετε υπόψη ότι οι αυτόματες μεταφράσεις ενδέχεται να περιέχουν λάθη ή ανακρίβειες. Το πρωτότυπο έγγραφο στη γλώσσα του θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε ευθύνη για τυχόν παρεξηγήσεις ή λανθασμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης. \ No newline at end of file + +[![Ανοιχτά Μοντέλα Πηγής](../../../translated_images/18-lesson-banner.f30176815b1a5074fce9cceba317720586caa99e24001231a92fd04eeb54a121.el.png)](https://youtu.be/6UAwhL9Q-TQ?si=5jJd8yeQsCfJ97em) + +# Προσαρμογή του LLM σας + +Η χρήση μεγάλων γλωσσικών μοντέλων για την ανάπτυξη εφαρμογών γεννητικής τεχνητής νοημοσύνης συνοδεύεται από νέες προκλήσεις. Ένα βασικό ζήτημα είναι η διασφάλιση της ποιότητας των απαντήσεων (ακρίβεια και συνάφεια) στο περιεχόμενο που δημιουργείται από το μοντέλο για ένα συγκεκριμένο αίτημα χρήστη. Στα προηγούμενα μαθήματα, συζητήσαμε τεχνικές όπως η διαμόρφωση προτροπών και η δημιουργία με ενισχυμένη ανάκτηση, που προσπαθούν να λύσουν το πρόβλημα _τροποποιώντας την είσοδο της προτροπής_ στο υπάρχον μοντέλο. + +Στο σημερινό μάθημα, συζητάμε μια τρίτη τεχνική, την **προσαρμογή**, η οποία προσπαθεί να αντιμετωπίσει την πρόκληση _εκπαιδεύοντας εκ νέου το ίδιο το μοντέλο_ με πρόσθετα δεδομένα. Ας δούμε τις λεπτομέρειες. + +## Στόχοι Μάθησης + +Αυτό το μάθημα εισάγει την έννοια της προσαρμογής για προεκπαιδευμένα γλωσσικά μοντέλα, εξετάζει τα οφέλη και τις προκλήσεις αυτής της προσέγγισης και παρέχει καθοδήγηση για το πότε και πώς να χρησιμοποιήσετε την προσαρμογή για να βελτιώσετε την απόδοση των γεννητικών μοντέλων τεχνητής νοημοσύνης σας. + +Μέχρι το τέλος αυτού του μαθήματος, θα πρέπει να μπορείτε να απαντήσετε στις παρακάτω ερωτήσεις: + +- Τι είναι η προσαρμογή για γλωσσικά μοντέλα; +- Πότε και γιατί είναι χρήσιμη η προσαρμογή; +- Πώς μπορώ να προσαρμόσω ένα προεκπαιδευμένο μοντέλο; +- Ποιες είναι οι περιορισμοί της προσαρμογής; + +Έτοιμοι; Ας ξεκινήσουμε. + +## Εικονογραφημένος Οδηγός + +Θέλετε να αποκτήσετε μια γενική εικόνα για το τι θα καλύψουμε πριν εμβαθύνετε; Δείτε αυτόν τον εικονογραφημένο οδηγό που περιγράφει τη μαθησιακή πορεία αυτού του μαθήματος - από την εκμάθηση των βασικών εννοιών και της κινητοποίησης για την προσαρμογή, μέχρι την κατανόηση της διαδικασίας και των βέλτιστων πρακτικών για την εκτέλεση της εργασίας προσαρμογής. Είναι ένα συναρπαστικό θέμα για εξερεύνηση, οπότε μην ξεχάσετε να δείτε τη σελίδα [Πόροι](./RESOURCES.md?WT.mc_id=academic-105485-koreyst) για πρόσθετους συνδέσμους που θα υποστηρίξουν την αυτοκατευθυνόμενη μαθησιακή σας πορεία! + +![Εικονογραφημένος Οδηγός για την Προσαρμογή Γλωσσικών Μοντέλων](../../../translated_images/18-fine-tuning-sketchnote.11b21f9ec8a703467a120cb79a28b5ac1effc8d8d9d5b31bbbac6b8640432e14.el.png) + +## Τι είναι η προσαρμογή για γλωσσικά μοντέλα; + +Κατά τον ορισμό, τα μεγάλα γλωσσικά μοντέλα είναι _προεκπαιδευμένα_ σε μεγάλες ποσότητες κειμένου που προέρχονται από διάφορες πηγές, συμπεριλαμβανομένου του διαδικτύου. Όπως μάθαμε στα προηγούμενα μαθήματα, χρειαζόμαστε τεχνικές όπως η _διαμόρφωση προτροπών_ και η _δημιουργία με ενισχυμένη ανάκτηση_ για να βελτιώσουμε την ποιότητα των απαντήσεων του μοντέλου στις ερωτήσεις του χρήστη ("προτροπές"). + +Μια δημοφιλής τεχνική διαμόρφωσης προτροπών περιλαμβάνει την παροχή περισσότερης καθοδήγησης στο μοντέλο σχετικά με το τι αναμένεται στην απάντηση, είτε παρέχοντας _οδηγίες_ (ρητή καθοδήγηση) είτε _δίνοντάς του μερικά παραδείγματα_ (έμμεση καθοδήγηση). Αυτό αναφέρεται ως _εκμάθηση με λίγα παραδείγματα_, αλλά έχει δύο περιορισμούς: + +- Τα όρια των tokens του μοντέλου μπορούν να περιορίσουν τον αριθμό των παραδειγμάτων που μπορείτε να δώσετε και να μειώσουν την αποτελεσματικότητα. +- Το κόστος των tokens του μοντέλου μπορεί να κάνει ακριβή την προσθήκη παραδειγμάτων σε κάθε προτροπή και να περιορίσει την ευελιξία. + +Η προσαρμογή είναι μια κοινή πρακτική στα συστήματα μηχανικής μάθησης, όπου παίρνουμε ένα προεκπαιδευμένο μοντέλο και το εκπαιδεύουμε εκ νέου με νέα δεδομένα για να βελτιώσουμε την απόδοσή του σε μια συγκεκριμένη εργασία. Στο πλαίσιο των γλωσσικών μοντέλων, μπορούμε να προσαρμόσουμε το προεκπαιδευμένο μοντέλο _με ένα επιλεγμένο σύνολο παραδειγμάτων για μια συγκεκριμένη εργασία ή τομέα εφαρμογής_ για να δημιουργήσουμε ένα **προσαρμοσμένο μοντέλο** που μπορεί να είναι πιο ακριβές και σχετικό για αυτήν τη συγκεκριμένη εργασία ή τομέα. Ένα παράπλευρο όφελος της προσαρμογής είναι ότι μπορεί επίσης να μειώσει τον αριθμό των παραδειγμάτων που χρειάζονται για εκμάθηση με λίγα παραδείγματα - μειώνοντας τη χρήση tokens και τα σχετικά κόστη. + +## Πότε και γιατί πρέπει να προσαρμόζουμε μοντέλα; + +Σε _αυτό_ το πλαίσιο, όταν μιλάμε για προσαρμογή, αναφερόμαστε στην **εποπτευόμενη** προσαρμογή, όπου η εκπαίδευση εκ νέου γίνεται με **προσθήκη νέων δεδομένων** που δεν ήταν μέρος του αρχικού συνόλου δεδομένων εκπαίδευσης. Αυτό είναι διαφορετικό από την προσέγγιση μη εποπτευόμενης προσαρμογής, όπου το μοντέλο εκπαιδεύεται εκ νέου στα αρχικά δεδομένα, αλλά με διαφορετικές υπερπαραμέτρους. + +Το βασικό που πρέπει να θυμάστε είναι ότι η προσαρμογή είναι μια προηγμένη τεχνική που απαιτεί ένα ορισμένο επίπεδο εξειδίκευσης για να επιτευχθούν τα επιθυμητά αποτελέσματα. Αν γίνει λανθασμένα, μπορεί να μην παρέχει τις αναμενόμενες βελτιώσεις και μπορεί ακόμη και να υποβαθμίσει την απόδοση του μοντέλου για τον στοχευμένο τομέα σας. + +Πριν μάθετε "πώς" να προσαρμόσετε γλωσσικά μοντέλα, πρέπει να γνωρίζετε "γιατί" πρέπει να ακολουθήσετε αυτήν τη διαδρομή και "πότε" να ξεκινήσετε τη διαδικασία προσαρμογής. Ξεκινήστε κάνοντας στον εαυτό σας τις εξής ερωτήσεις: + +- **Περίπτωση Χρήσης**: Ποια είναι η _περίπτωση χρήσης_ σας για την προσαρμογή; Ποια πτυχή του τρέχοντος προεκπαιδευμένου μοντέλου θέλετε να βελτιώσετε; +- **Εναλλακτικές**: Έχετε δοκιμάσει _άλλες τεχνικές_ για να επιτύχετε τα επιθυμητά αποτελέσματα; Χρησιμοποιήστε τις για να δημιουργήσετε μια βάση για σύγκριση. + - Διαμόρφωση προτροπών: Δοκιμάστε τεχνικές όπως η προτροπή με λίγα παραδείγματα με παραδείγματα σχετικών απαντήσεων προτροπών. Αξιολογήστε την ποιότητα των απαντήσεων. + - Δημιουργία με Ενισχυμένη Ανάκτηση: Δοκιμάστε να ενισχύσετε τις προτροπές με αποτελέσματα αναζήτησης που ανακτώνται από τα δεδομένα σας. Αξιολογήστε την ποιότητα των απαντήσεων. +- **Κόστη**: Έχετε εντοπίσει τα κόστη για την προσαρμογή; + - Δυνατότητα προσαρμογής - είναι το προεκπαιδευμένο μοντέλο διαθέσιμο για προσαρμογή; + - Προσπάθεια - για την προετοιμασία δεδομένων εκπαίδευσης, την αξιολόγηση και τη βελτίωση του μοντέλου. + - Υπολογιστική ισχύς - για την εκτέλεση εργασιών προσαρμογής και την ανάπτυξη του προσαρμοσμένου μοντέλου. + - Δεδομένα - πρόσβαση σε επαρκή ποιοτικά παραδείγματα για την επίδραση της προσαρμογής. +- **Οφέλη**: Έχετε επιβεβαιώσει τα οφέλη της προσαρμογής; + - Ποιότητα - το προσαρμοσμένο μοντέλο υπερέχει της βάσης; + - Κόστος - μειώνει τη χρήση tokens απλοποιώντας τις προτροπές; + - Επεκτασιμότητα - μπορείτε να επαναχρησιμοποιήσετε το βασικό μοντέλο για νέους τομείς; + +Απαντώντας σε αυτές τις ερωτήσεις, θα πρέπει να μπορείτε να αποφασίσετε αν η προσαρμογή είναι η σωστή προσέγγιση για την περίπτωση χρήσης σας. Ιδανικά, η προσέγγιση είναι έγκυρη μόνο αν τα οφέλη υπερβαίνουν τα κόστη. Μόλις αποφασίσετε να προχωρήσετε, είναι ώρα να σκεφτείτε _πώς_ μπορείτε να προσαρμόσετε το προεκπαιδευμένο μοντέλο. + +Θέλετε περισσότερες πληροφορίες για τη διαδικασία λήψης αποφάσεων; Δείτε το [Να προσαρμόσω ή όχι](https://www.youtube.com/watch?v=0Jo-z-MFxJs) + +## Πώς μπορούμε να προσαρμόσουμε ένα προεκπαιδευμένο μοντέλο; + +Για να προσαρμόσετε ένα προεκπαιδευμένο μοντέλο, χρειάζεστε: + +- ένα προεκπαιδευμένο μοντέλο για προσαρμογή +- ένα σύνολο δεδομένων για χρήση στην προσαρμογή +- ένα περιβάλλον εκπαίδευσης για την εκτέλεση της εργασίας προσαρμογής +- ένα περιβάλλον φιλοξενίας για την ανάπτυξη του προσαρμοσμένου μοντέλου + +## Προσαρμογή στην Πράξη + +Οι παρακάτω πόροι παρέχουν βήμα προς βήμα οδηγούς για να σας καθοδηγήσουν σε ένα πραγματικό παράδειγμα χρησιμοποιώντας ένα επιλεγμένο μοντέλο με ένα επιλεγμένο σύνολο δεδομένων. Για να εργαστείτε με αυτούς τους οδηγούς, χρειάζεστε έναν λογαριασμό στον συγκεκριμένο πάροχο, μαζί με πρόσβαση στο σχετικό μοντέλο και τα σύνολα δεδομένων. + +| Πάροχος | Οδηγός | Περιγραφή | +| ------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| OpenAI | [Πώς να προσαρμόσετε μοντέλα συνομιλίας](https://github.com/openai/openai-cookbook/blob/main/examples/How_to_finetune_chat_models.ipynb?WT.mc_id=academic-105485-koreyst) | Μάθετε να προσαρμόζετε ένα `gpt-35-turbo` για έναν συγκεκριμένο τομέα ("βοηθός συνταγών") προετοιμάζοντας δεδομένα εκπαίδευσης, εκτελώντας την εργασία προσαρμογής και χρησιμοποιώντας το προσαρμοσμένο μοντέλο για συμπεράσματα. | +| Azure OpenAI | [Οδηγός προσαρμογής GPT 3.5 Turbo](https://learn.microsoft.com/azure/ai-services/openai/tutorials/fine-tune?tabs=python-new%2Ccommand-line?WT.mc_id=academic-105485-koreyst) | Μάθετε να προσαρμόζετε ένα μοντέλο `gpt-35-turbo-0613` **στο Azure** ακολουθώντας βήματα για τη δημιουργία και τη μεταφόρτωση δεδομένων εκπαίδευσης, την εκτέλεση της εργασίας προσαρμογής. Αναπτύξτε και χρησιμοποιήστε το νέο μοντέλο. | +| Hugging Face | [Προσαρμογή LLMs με Hugging Face](https://www.philschmid.de/fine-tune-llms-in-2024-with-trl?WT.mc_id=academic-105485-koreyst) | Αυτή η ανάρτηση στο blog σας καθοδηγεί στην προσαρμογή ενός _ανοιχτού LLM_ (π.χ. `CodeLlama 7B`) χρησιμοποιώντας τη βιβλιοθήκη [transformers](https://huggingface.co/docs/transformers/index?WT.mc_id=academic-105485-koreyst) και το [Transformer Reinforcement Learning (TRL)](https://huggingface.co/docs/trl/index?WT.mc_id=academic-105485-koreyst]) με ανοιχτά [σύνολα δεδομένων](https://huggingface.co/docs/datasets/index?WT.mc_id=academic-105485-koreyst) στο Hugging Face. | +| | | | +| 🤗 AutoTrain | [Προσαρμογή LLMs με AutoTrain](https://github.com/huggingface/autotrain-advanced/?WT.mc_id=academic-105485-koreyst) | Το AutoTrain (ή AutoTrain Advanced) είναι μια βιβλιοθήκη python που αναπτύχθηκε από το Hugging Face και επιτρέπει την προσαρμογή για πολλές διαφορετικές εργασίες, συμπεριλαμβανομένης της προσαρμογής LLM. Το AutoTrain είναι μια λύση χωρίς κώδικα και η προσαρμογή μπορεί να γίνει στο δικό σας cloud, στο Hugging Face Spaces ή τοπικά. Υποστηρίζει τόσο μια διαδικτυακή διεπαφή GUI, CLI όσο και εκπαίδευση μέσω αρχείων ρυθμίσεων yaml. | + +## Εργασία + +Επιλέξτε έναν από τους παραπάνω οδηγούς και ακολουθήστε τον. _Μπορεί να αναπαράγουμε μια έκδοση αυτών των οδηγών σε Jupyter Notebooks σε αυτό το αποθετήριο μόνο για αναφορά. Παρακαλούμε χρησιμοποιήστε τις αρχικές πηγές απευθείας για να αποκτήσετε τις πιο πρόσφατες εκδόσεις_. + +## Καλή Δουλειά! Συνεχίστε τη Μάθηση. + +Αφού ολοκληρώσετε αυτό το μάθημα, δείτε τη [Συλλογή Μάθησης Γεννητικής Τεχνητής Νοημοσύνης](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) για να συνεχίσετε να αναβαθμίζετε τις γνώσεις σας στη Γεννητική Τεχνητή Νοημοσύνη! + +Συγχαρητήρια!! Ολοκληρώσατε το τελευταίο μάθημα από τη σειρά v2 αυτού του μαθήματος! Μην σταματάτε να μαθαίνετε και να δημιουργείτε. \*\*Δείτε τη σελίδα [ΠΟΡΟΙ](RESOURCES.md?WT.mc_id=academic-105485-koreyst) για μια λίστα πρόσθετων προτάσεων για αυτό το θέμα. + +Η σειρά μαθημάτων v1 έχει επίσης ενημερωθεί με περισσότερες εργασίες και έννοιες. Οπότε αφιερώστε λίγο χρόνο για να ανανεώσετε τις γνώσεις σας - και παρακαλούμε [μοιραστείτε τις ερωτήσεις και τα σχόλιά σας](https://github.com/microsoft/generative-ai-for-beginners/issues?WT.mc_id=academic-105485-koreyst) για να μας βοηθήσετε να βελτιώσουμε αυτά τα μαθήματα για την κοινότητα. + +--- + +**Αποποίηση ευθύνης**: +Αυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία μετάφρασης AI [Co-op Translator](https://github.com/Azure/co-op-translator). Παρόλο που καταβάλλουμε προσπάθειες για ακρίβεια, παρακαλούμε να γνωρίζετε ότι οι αυτοματοποιημένες μεταφράσεις ενδέχεται να περιέχουν λάθη ή ανακρίβειες. Το πρωτότυπο έγγραφο στη μητρική του γλώσσα θα πρέπει να θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε ευθύνη για τυχόν παρεξηγήσεις ή εσφαλμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης. \ No newline at end of file diff --git a/translations/el/README.md b/translations/el/README.md index d7927e6269..da813c2f2e 100644 --- a/translations/el/README.md +++ b/translations/el/README.md @@ -1,49 +1,49 @@ -![Generative AI For Beginners](../../translated_images/repo-thumbnailv4-fixed.11f1ce6a85d01461c33c11943bb61f2b6d6dcce3a3b25cd27e627031f41f8e00.el.png) +![Γενετική Τεχνητή Νοημοσύνη για Αρχάριους](../../translated_images/repo-thumbnailv4-fixed.11f1ce6a85d01461c33c11943bb61f2b6d6dcce3a3b25cd27e627031f41f8e00.el.png) -### 21 Μαθήματα που διδάσκουν όλα όσα χρειάζεστε για να ξεκινήσετε να δημιουργείτε εφαρμογές Generative AI +### 21 Μαθήματα που διδάσκουν όλα όσα χρειάζεστε για να ξεκινήσετε να δημιουργείτε εφαρμογές Γενετικής Τεχνητής Νοημοσύνης -[![GitHub license](https://img.shields.io/github/license/microsoft/Generative-AI-For-Beginners.svg)](https://github.com/microsoft/Generative-AI-For-Beginners/blob/master/LICENSE?WT.mc_id=academic-105485-koreyst) -[![GitHub contributors](https://img.shields.io/github/contributors/microsoft/Generative-AI-For-Beginners.svg)](https://GitHub.com/microsoft/Generative-AI-For-Beginners/graphs/contributors/?WT.mc_id=academic-105485-koreyst) -[![GitHub issues](https://img.shields.io/github/issues/microsoft/Generative-AI-For-Beginners.svg)](https://GitHub.com/microsoft/Generative-AI-For-Beginners/issues/?WT.mc_id=academic-105485-koreyst) -[![GitHub pull-requests](https://img.shields.io/github/issues-pr/microsoft/Generative-AI-For-Beginners.svg)](https://GitHub.com/microsoft/Generative-AI-For-Beginners/pulls/?WT.mc_id=academic-105485-koreyst) +[![Άδεια GitHub](https://img.shields.io/github/license/microsoft/Generative-AI-For-Beginners.svg)](https://github.com/microsoft/Generative-AI-For-Beginners/blob/master/LICENSE?WT.mc_id=academic-105485-koreyst) +[![Συνεργάτες GitHub](https://img.shields.io/github/contributors/microsoft/Generative-AI-For-Beginners.svg)](https://GitHub.com/microsoft/Generative-AI-For-Beginners/graphs/contributors/?WT.mc_id=academic-105485-koreyst) +[![Θέματα GitHub](https://img.shields.io/github/issues/microsoft/Generative-AI-For-Beginners.svg)](https://GitHub.com/microsoft/Generative-AI-For-Beginners/issues/?WT.mc_id=academic-105485-koreyst) +[![Αιτήματα GitHub](https://img.shields.io/github/issues-pr/microsoft/Generative-AI-For-Beginners.svg)](https://GitHub.com/microsoft/Generative-AI-For-Beginners/pulls/?WT.mc_id=academic-105485-koreyst) [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com?WT.mc_id=academic-105485-koreyst) -[![GitHub watchers](https://img.shields.io/github/watchers/microsoft/Generative-AI-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/Generative-AI-For-Beginners/watchers/?WT.mc_id=academic-105485-koreyst) -[![GitHub forks](https://img.shields.io/github/forks/microsoft/Generative-AI-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/Generative-AI-For-Beginners/network/?WT.mc_id=academic-105485-koreyst) -[![GitHub stars](https://img.shields.io/github/stars/microsoft/Generative-AI-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/Generative-AI-For-Beginners/stargazers/?WT.mc_id=academic-105485-koreyst) +[![Παρατηρητές GitHub](https://img.shields.io/github/watchers/microsoft/Generative-AI-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/Generative-AI-For-Beginners/watchers/?WT.mc_id=academic-105485-koreyst) +[![Forks GitHub](https://img.shields.io/github/forks/microsoft/Generative-AI-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/Generative-AI-For-Beginners/network/?WT.mc_id=academic-105485-koreyst) +[![Αστέρια GitHub](https://img.shields.io/github/stars/microsoft/Generative-AI-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/Generative-AI-For-Beginners/stargazers/?WT.mc_id=academic-105485-koreyst) [![](https://dcbadge.limes.pink/api/server/ByRwuEEgH4)](https://aka.ms/genai-discord?WT.mc_id=academic-105485-koreyst) -### 🌐 Υποστήριξη Πολλαπλών Γλωσσών +### 🌐 Υποστήριξη Πολλών Γλωσσών #### Υποστηρίζεται μέσω GitHub Action (Αυτοματοποιημένο & Πάντα Ενημερωμένο) -[Arabic](../ar/README.md) | [Bengali](../bn/README.md) | [Bulgarian](../bg/README.md) | [Burmese (Myanmar)](../my/README.md) | [Chinese (Simplified)](../zh/README.md) | [Chinese (Traditional, Hong Kong)](../hk/README.md) | [Chinese (Traditional, Macau)](../mo/README.md) | [Chinese (Traditional, Taiwan)](../tw/README.md) | [Croatian](../hr/README.md) | [Czech](../cs/README.md) | [Danish](../da/README.md) | [Dutch](../nl/README.md) | [Estonian](../et/README.md) | [Finnish](../fi/README.md) | [French](../fr/README.md) | [German](../de/README.md) | [Greek](./README.md) | [Hebrew](../he/README.md) | [Hindi](../hi/README.md) | [Hungarian](../hu/README.md) | [Indonesian](../id/README.md) | [Italian](../it/README.md) | [Japanese](../ja/README.md) | [Korean](../ko/README.md) | [Lithuanian](../lt/README.md) | [Malay](../ms/README.md) | [Marathi](../mr/README.md) | [Nepali](../ne/README.md) | [Norwegian](../no/README.md) | [Persian (Farsi)](../fa/README.md) | [Polish](../pl/README.md) | [Portuguese (Brazil)](../br/README.md) | [Portuguese (Portugal)](../pt/README.md) | [Punjabi (Gurmukhi)](../pa/README.md) | [Romanian](../ro/README.md) | [Russian](../ru/README.md) | [Serbian (Cyrillic)](../sr/README.md) | [Slovak](../sk/README.md) | [Slovenian](../sl/README.md) | [Spanish](../es/README.md) | [Swahili](../sw/README.md) | [Swedish](../sv/README.md) | [Tagalog (Filipino)](../tl/README.md) | [Tamil](../ta/README.md) | [Thai](../th/README.md) | [Turkish](../tr/README.md) | [Ukrainian](../uk/README.md) | [Urdu](../ur/README.md) | [Vietnamese](../vi/README.md) +[Αραβικά](../ar/README.md) | [Μπενγκάλι](../bn/README.md) | [Βουλγαρικά](../bg/README.md) | [Βιρμανικά (Μιανμάρ)](../my/README.md) | [Κινέζικα (Απλοποιημένα)](../zh/README.md) | [Κινέζικα (Παραδοσιακά, Χονγκ Κονγκ)](../hk/README.md) | [Κινέζικα (Παραδοσιακά, Μακάο)](../mo/README.md) | [Κινέζικα (Παραδοσιακά, Ταϊβάν)](../tw/README.md) | [Κροατικά](../hr/README.md) | [Τσέχικα](../cs/README.md) | [Δανικά](../da/README.md) | [Ολλανδικά](../nl/README.md) | [Εσθονικά](../et/README.md) | [Φινλανδικά](../fi/README.md) | [Γαλλικά](../fr/README.md) | [Γερμανικά](../de/README.md) | [Ελληνικά](./README.md) | [Εβραϊκά](../he/README.md) | [Χίντι](../hi/README.md) | [Ουγγρικά](../hu/README.md) | [Ινδονησιακά](../id/README.md) | [Ιταλικά](../it/README.md) | [Ιαπωνικά](../ja/README.md) | [Κορεατικά](../ko/README.md) | [Λιθουανικά](../lt/README.md) | [Μαλαισιανά](../ms/README.md) | [Μαραθικά](../mr/README.md) | [Νεπαλικά](../ne/README.md) | [Νορβηγικά](../no/README.md) | [Περσικά (Φαρσί)](../fa/README.md) | [Πολωνικά](../pl/README.md) | [Πορτογαλικά (Βραζιλία)](../br/README.md) | [Πορτογαλικά (Πορτογαλία)](../pt/README.md) | [Παντζάμπι (Γκουρμούκι)](../pa/README.md) | [Ρουμανικά](../ro/README.md) | [Ρωσικά](../ru/README.md) | [Σερβικά (Κυριλλικά)](../sr/README.md) | [Σλοβακικά](../sk/README.md) | [Σλοβενικά](../sl/README.md) | [Ισπανικά](../es/README.md) | [Σουαχίλι](../sw/README.md) | [Σουηδικά](../sv/README.md) | [Ταγκαλόγκ (Φιλιππινέζικα)](../tl/README.md) | [Ταμίλ](../ta/README.md) | [Ταϊλανδικά](../th/README.md) | [Τουρκικά](../tr/README.md) | [Ουκρανικά](../uk/README.md) | [Ουρντού](../ur/README.md) | [Βιετναμέζικα](../vi/README.md) -# Generative AI για Αρχάριους (Έκδοση 3) - Ένα Μάθημα +# Γενετική Τεχνητή Νοημοσύνη για Αρχάριους (Έκδοση 3) - Ένα Μάθημα -Μάθετε τα βασικά για τη δημιουργία εφαρμογών Generative AI με το ολοκληρωμένο μάθημα 21 μαθημάτων από τους Microsoft Cloud Advocates. +Μάθετε τα βασικά για τη δημιουργία εφαρμογών Γενετικής Τεχνητής Νοημοσύνης με το ολοκληρωμένο μάθημα 21 μαθημάτων από τους Microsoft Cloud Advocates. ## 🌱 Ξεκινώντας -Αυτό το μάθημα περιλαμβάνει 21 μαθήματα. Κάθε μάθημα καλύπτει ένα ξεχωριστό θέμα, οπότε μπορείτε να ξεκινήσετε από όπου θέλετε! +Αυτό το μάθημα περιλαμβάνει 21 μαθήματα. Κάθε μάθημα καλύπτει ένα δικό του θέμα, οπότε ξεκινήστε από όπου θέλετε! -Τα μαθήματα είναι κατηγοριοποιημένα είτε ως "Learn" μαθήματα που εξηγούν μια έννοια του Generative AI είτε ως "Build" μαθήματα που εξηγούν μια έννοια και παρέχουν παραδείγματα κώδικα σε **Python** και **TypeScript** όπου είναι δυνατόν. +Τα μαθήματα χαρακτηρίζονται είτε ως "Μάθε" μαθήματα που εξηγούν μια έννοια της Γενετικής Τεχνητής Νοημοσύνης είτε ως "Δημιούργησε" μαθήματα που εξηγούν μια έννοια και παρέχουν παραδείγματα κώδικα σε **Python** και **TypeScript** όπου είναι δυνατόν. -Για προγραμματιστές .NET, δείτε το [Generative AI για Αρχάριους (.NET Edition)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst)! +Για προγραμματιστές .NET, δείτε το [Γενετική Τεχνητή Νοημοσύνη για Αρχάριους (.NET Έκδοση)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst)! -Κάθε μάθημα περιλαμβάνει επίσης μια ενότητα "Keep Learning" με επιπλέον εργαλεία μάθησης. +Κάθε μάθημα περιλαμβάνει επίσης μια ενότητα "Συνεχίστε να Μαθαίνετε" με επιπλέον εργαλεία μάθησης. ## Τι Χρειάζεστε ### Για να εκτελέσετε τον κώδικα αυτού του μαθήματος, μπορείτε να χρησιμοποιήσετε είτε: @@ -54,27 +54,27 @@ CO_OP_TRANSLATOR_METADATA: - Βασικές γνώσεις Python ή TypeScript είναι χρήσιμες - \*Για απόλυτους αρχάριους, δείτε αυτά τα μαθήματα [Python](https://aka.ms/genai-beginners/python?WT.mc_id=academic-105485-koreyst) και [TypeScript](https://aka.ms/genai-beginners/typescript?WT.mc_id=academic-105485-koreyst) - Ένας λογαριασμός GitHub για να [κλωνοποιήσετε ολόκληρο το αποθετήριο](https://aka.ms/genai-beginners/github?WT.mc_id=academic-105485-koreyst) στον δικό σας λογαριασμό GitHub -Έχουμε δημιουργήσει ένα μάθημα **[Course Setup](./00-course-setup/README.md?WT.mc_id=academic-105485-koreyst)** για να σας βοηθήσουμε να ρυθμίσετε το περιβάλλον ανάπτυξής σας. +Έχουμε δημιουργήσει ένα μάθημα **[Ρύθμιση Μαθήματος](./00-course-setup/README.md?WT.mc_id=academic-105485-koreyst)** για να σας βοηθήσουμε να ρυθμίσετε το περιβάλλον ανάπτυξής σας. Μην ξεχάσετε να [προσθέσετε αστέρι (🌟) σε αυτό το αποθετήριο](https://docs.github.com/en/get-started/exploring-projects-on-github/saving-repositories-with-stars?WT.mc_id=academic-105485-koreyst) για να το βρείτε πιο εύκολα αργότερα. ## 🧠 Έτοιμοι για Ανάπτυξη; -Αν ψάχνετε για πιο προχωρημένα παραδείγματα κώδικα, δείτε τη [συλλογή μας με δείγματα κώδικα Generative AI](https://aka.ms/genai-beg-code?WT.mc_id=academic-105485-koreyst) σε **Python** και **TypeScript**. +Αν ψάχνετε για πιο προχωρημένα παραδείγματα κώδικα, δείτε τη [συλλογή μας με Παραδείγματα Κώδικα Γενετικής Τεχνητής Νοημοσύνης](https://aka.ms/genai-beg-code?WT.mc_id=academic-105485-koreyst) σε **Python** και **TypeScript**. ## 🗣️ Γνωρίστε Άλλους Μαθητές, Λάβετε Υποστήριξη Γίνετε μέλος του [επίσημου Azure AI Foundry Discord server](https://aka.ms/genai-discord?WT.mc_id=academic-105485-koreyst) για να γνωρίσετε και να δικτυωθείτε με άλλους μαθητές που παρακολουθούν αυτό το μάθημα και να λάβετε υποστήριξη. -Κάντε ερωτήσεις ή μοιραστείτε σχόλια προϊόντος στο [Azure AI Foundry Developer Forum](https://aka.ms/azureaifoundry/forum) στο Github. +Κάντε ερωτήσεις ή μοιραστείτε σχόλια για το προϊόν στο [Azure AI Foundry Developer Forum](https://aka.ms/azureaifoundry/forum) στο Github. -## 🚀 Χτίζετε μια Startup; +## 🚀 Δημιουργείτε μια Startup; -Επισκεφθείτε το [Microsoft for Startups](https://www.microsoft.com/startups) για να μάθετε πώς να ξεκινήσετε να χτίζετε με πιστώσεις Azure σήμερα. +Επισκεφθείτε το [Microsoft for Startups](https://www.microsoft.com/startups) για να μάθετε πώς να ξεκινήσετε να δημιουργείτε με πιστώσεις Azure σήμερα. ## 🙏 Θέλετε να βοηθήσετε; -Έχετε προτάσεις ή βρήκατε ορθογραφικά ή λάθη στον κώδικα; [Ανοίξτε ένα θέμα](https://github.com/microsoft/generative-ai-for-beginners/issues?WT.mc_id=academic-105485-koreyst) ή [Δημιουργήστε ένα pull request](https://github.com/microsoft/generative-ai-for-beginners/pulls?WT.mc_id=academic-105485-koreyst) +Έχετε προτάσεις ή βρήκατε ορθογραφικά ή λάθη στον κώδικα; [Υποβάλετε ένα θέμα](https://github.com/microsoft/generative-ai-for-beginners/issues?WT.mc_id=academic-105485-koreyst) ή [Δημιουργήστε ένα αίτημα αλλαγής](https://github.com/microsoft/generative-ai-for-beginners/pulls?WT.mc_id=academic-105485-koreyst) ## 📂 Κάθε μάθημα περιλαμβάνει: @@ -87,34 +87,34 @@ CO_OP_TRANSLATOR_METADATA: | # | **Σύνδεσμος Μαθήματος** | **Περιγραφή** | **Βίντεο** | **Επιπλέον Μάθηση** | | --- | -------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------- | ------------------------------------------------------------------------------ | -| 00 | [Course Setup](./00-course-setup/README.md?WT.mc_id=academic-105485-koreyst) | **Μάθετε:** Πώς να ρυθμίσετε το περιβάλλον ανάπτυξής σας | Βίντεο Ερχόμενο Σύντομα | [Μάθετε Περισσότερα](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) | -| 01 | [Introduction to Generative AI and LLMs](./01-introduction-to-genai/README.md?WT.mc_id=academic-105485-koreyst) | **Μάθετε:** Κατανόηση του τι είναι το Generative AI και πώς λειτουργούν τα Large Language Models (LLMs). | [Βίντεο](https://aka.ms/gen-ai-lesson-1-gh?WT.mc_id=academic-105485-koreyst) | [Μάθετε Περισσότερα](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) | -| 02 | [Exploring and comparing different LLMs](./02-exploring-and-comparing-different-llms/README.md?WT.mc_id=academic-105485-koreyst) | **Μάθετε:** Πώς να επιλέξετε το κατάλληλο μοντέλο για την περίπτωσή σας | [Βίντεο](https://aka.ms/gen-ai-lesson2-gh?WT.mc_id=academic-105485-koreyst) | [Μάθετε Περισσότερα](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) | -| 03 | [Using Generative AI Responsibly](./03-using-generative-ai-responsibly/README.md?WT.mc_id=academic-105485-koreyst) | **Μάθετε:** Πώς να δημιουργείτε εφαρμογές Generative AI με υπευθυνότητα | [Βίντεο](https://aka.ms/gen-ai-lesson3-gh?WT.mc_id=academic-105485-koreyst) | [Μάθετε Περισσότερα](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) | -| 04 | [Understanding Prompt Engineering Fundamentals](./04-prompt-engineering-fundamentals/README.md?WT.mc_id=academic-105485-koreyst) | **Μάθετε:** Πρακτικές βέλτιστες για το Prompt Engineering | [Βίντεο](https://aka.ms/gen-ai-lesson4-gh?WT.mc_id=academic-105485-koreyst) | [Μάθετε Περισσότερα](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) | -| 05 | [Creating Advanced Prompts](./05-advanced-prompts/README.md?WT.mc_id=academic-105485-koreyst) | **Μάθετε:** Πώς να εφαρμόσετε τεχνικές prompt engineering που βελτιώνουν το αποτέλεσμα των prompts σας. | [Βίντεο](https://aka.ms/gen-ai-lesson5-gh?WT.mc_id=academic-105485-koreyst) | [Μάθετε Περισσότερα](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) | -| 06 | [Δημιουργία Εφαρμογών Παραγωγής Κειμένου](./06-text-generation-apps/README.md?WT.mc_id=academic-105485-koreyst) | **Δημιουργία:** Μια εφαρμογή παραγωγής κειμένου χρησιμοποιώντας Azure OpenAI / OpenAI API | [Βίντεο](https://aka.ms/gen-ai-lesson6-gh?WT.mc_id=academic-105485-koreyst) | [Μάθετε Περισσότερα](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) | +| 00 | [Ρύθμιση Μαθήματος](./00-course-setup/README.md?WT.mc_id=academic-105485-koreyst) | **Μάθε:** Πώς να ρυθμίσετε το περιβάλλον ανάπτυξής σας | Βίντεο Ερχόμενο Σύντομα | [Μάθε Περισσότερα](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) | +| 01 | [Εισαγωγή στη Γενετική Τεχνητή Νοημοσύνη και LLMs](./01-introduction-to-genai/README.md?WT.mc_id=academic-105485-koreyst) | **Μάθε:** Κατανόηση του τι είναι η Γενετική Τεχνητή Νοημοσύνη και πώς λειτουργούν τα Μεγάλα Γλωσσικά Μοντέλα (LLMs). | [Βίντεο](https://aka.ms/gen-ai-lesson-1-gh?WT.mc_id=academic-105485-koreyst) | [Μάθε Περισσότερα](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) | +| 02 | [Εξερεύνηση και σύγκριση διαφορετικών LLMs](./02-exploring-and-comparing-different-llms/README.md?WT.mc_id=academic-105485-koreyst) | **Μάθε:** Πώς να επιλέξετε το κατάλληλο μοντέλο για την περίπτωσή σας | [Βίντεο](https://aka.ms/gen-ai-lesson2-gh?WT.mc_id=academic-105485-koreyst) | [Μάθε Περισσότερα](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) | +| 03 | [Χρήση Γενετικής Τεχνητής Νοημοσύνης Υπεύθυνα](./03-using-generative-ai-responsibly/README.md?WT.mc_id=academic-105485-koreyst) | **Μάθε:** Πώς να δημιουργείτε εφαρμογές Γενετικής Τεχνητής Νοημοσύνης υπεύθυνα | [Βίντεο](https://aka.ms/gen-ai-lesson3-gh?WT.mc_id=academic-105485-koreyst) | [Μάθε Περισσότερα](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) | +| 04 | [Κατανόηση των Βασικών Αρχών της Μηχανικής Προτροπών](./04-prompt-engineering-fundamentals/README.md?WT.mc_id=academic-105485-koreyst) | **Μάθε:** Πρακτικές Καλύτερης Μηχανικής Προτροπών | [Βίντεο](https://aka.ms/gen-ai-lesson4-gh?WT.mc_id=academic-105485-koreyst) | [Μάθε Περισσότερα](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) | +| 05 | [Δημιουργία Προχωρημένων Προτροπών](./05-advanced-prompts/README.md?WT.mc_id=academic-105485-koreyst) | **Μάθε:** Πώς να εφαρμόσετε τεχνικές μηχανικής προτροπών που βελτιώνουν το αποτέλεσμα των προτροπών σας. | [Βίντεο](https://aka.ms/gen-ai-lesson5-gh?WT.mc_id=academic-105485-koreyst) | [Μάθε Περισσότερα](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) | +| 06 | [Δημιουργία Εφαρμογών Παραγωγής Κειμένου](./06-text-generation-apps/README.md?WT.mc_id=academic-105485-koreyst) | **Δημιουργία:** Μια εφαρμογή παραγωγής κειμένου χρησιμοποιώντας το Azure OpenAI / OpenAI API | [Βίντεο](https://aka.ms/gen-ai-lesson6-gh?WT.mc_id=academic-105485-koreyst) | [Μάθετε Περισσότερα](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) | | 07 | [Δημιουργία Εφαρμογών Συνομιλίας](./07-building-chat-applications/README.md?WT.mc_id=academic-105485-koreyst) | **Δημιουργία:** Τεχνικές για αποτελεσματική δημιουργία και ενσωμάτωση εφαρμογών συνομιλίας. | [Βίντεο](https://aka.ms/gen-ai-lessons7-gh?WT.mc_id=academic-105485-koreyst) | [Μάθετε Περισσότερα](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) | | 08 | [Δημιουργία Εφαρμογών Αναζήτησης με Βάσεις Δεδομένων Vector](./08-building-search-applications/README.md?WT.mc_id=academic-105485-koreyst) | **Δημιουργία:** Μια εφαρμογή αναζήτησης που χρησιμοποιεί Embeddings για αναζήτηση δεδομένων. | [Βίντεο](https://aka.ms/gen-ai-lesson8-gh?WT.mc_id=academic-105485-koreyst) | [Μάθετε Περισσότερα](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) | | 09 | [Δημιουργία Εφαρμογών Παραγωγής Εικόνων](./09-building-image-applications/README.md?WT.mc_id=academic-105485-koreyst) | **Δημιουργία:** Μια εφαρμογή παραγωγής εικόνων | [Βίντεο](https://aka.ms/gen-ai-lesson9-gh?WT.mc_id=academic-105485-koreyst) | [Μάθετε Περισσότερα](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) | | 10 | [Δημιουργία Εφαρμογών AI με Χαμηλό Κώδικα](./10-building-low-code-ai-applications/README.md?WT.mc_id=academic-105485-koreyst) | **Δημιουργία:** Μια εφαρμογή Generative AI χρησιμοποιώντας εργαλεία χαμηλού κώδικα | [Βίντεο](https://aka.ms/gen-ai-lesson10-gh?WT.mc_id=academic-105485-koreyst) | [Μάθετε Περισσότερα](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) | -| 11 | [Ενσωμάτωση Εξωτερικών Εφαρμογών με Function Calling](./11-integrating-with-function-calling/README.md?WT.mc_id=academic-105485-koreyst) | **Δημιουργία:** Τι είναι το function calling και οι περιπτώσεις χρήσης του για εφαρμογές | [Βίντεο](https://aka.ms/gen-ai-lesson11-gh?WT.mc_id=academic-105485-koreyst) | [Μάθετε Περισσότερα](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) | -| 12 | [Σχεδιασμός UX για Εφαρμογές AI](./12-designing-ux-for-ai-applications/README.md?WT.mc_id=academic-105485-koreyst) | **Μάθηση:** Πώς να εφαρμόσετε αρχές σχεδιασμού UX κατά την ανάπτυξη εφαρμογών Generative AI | [Βίντεο](https://aka.ms/gen-ai-lesson12-gh?WT.mc_id=academic-105485-koreyst) | [Μάθετε Περισσότερα](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) | -| 13 | [Ασφάλεια Εφαρμογών Generative AI](./13-securing-ai-applications/README.md?WT.mc_id=academic-105485-koreyst) | **Μάθηση:** Οι απειλές και οι κίνδυνοι για συστήματα AI και μέθοδοι για την ασφάλεια αυτών των συστημάτων. | [Βίντεο](https://aka.ms/gen-ai-lesson13-gh?WT.mc_id=academic-105485-koreyst) | [Μάθετε Περισσότερα](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) | -| 14 | [Ο Κύκλος Ζωής Εφαρμογών Generative AI](./14-the-generative-ai-application-lifecycle/README.md?WT.mc_id=academic-105485-koreyst) | **Μάθηση:** Τα εργαλεία και οι μετρήσεις για τη διαχείριση του κύκλου ζωής LLM και LLMOps | [Βίντεο](https://aka.ms/gen-ai-lesson14-gh?WT.mc_id=academic-105485-koreyst) | [Μάθετε Περισσότερα](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) | -| 15 | [Ανάκτηση Εμπλουτισμένης Παραγωγής (RAG) και Βάσεις Δεδομένων Vector](./15-rag-and-vector-databases/README.md?WT.mc_id=academic-105485-koreyst) | **Δημιουργία:** Μια εφαρμογή χρησιμοποιώντας το RAG Framework για την ανάκτηση embeddings από βάσεις δεδομένων Vector | [Βίντεο](https://aka.ms/gen-ai-lesson15-gh?WT.mc_id=academic-105485-koreyst) | [Μάθετε Περισσότερα](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) | -| 16 | [Ανοιχτά Μοντέλα και Hugging Face](./16-open-source-models/README.md?WT.mc_id=academic-105485-koreyst) | **Δημιουργία:** Μια εφαρμογή χρησιμοποιώντας ανοιχτά μοντέλα διαθέσιμα στο Hugging Face | [Βίντεο](https://aka.ms/gen-ai-lesson16-gh?WT.mc_id=academic-105485-koreyst) | [Μάθετε Περισσότερα](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) | -| 17 | [AI Agents](./17-ai-agents/README.md?WT.mc_id=academic-105485-koreyst) | **Δημιουργία:** Μια εφαρμογή χρησιμοποιώντας ένα AI Agent Framework | [Βίντεο](https://aka.ms/gen-ai-lesson17-gh?WT.mc_id=academic-105485-koreyst) | [Μάθετε Περισσότερα](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) | -| 18 | [Fine-Tuning LLMs](./18-fine-tuning/README.md?WT.mc_id=academic-105485-koreyst) | **Μάθηση:** Τι είναι, γιατί και πώς γίνεται το fine-tuning των LLMs | [Βίντεο](https://aka.ms/gen-ai-lesson18-gh?WT.mc_id=academic-105485-koreyst) | [Μάθετε Περισσότερα](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) | -| 19 | [Δημιουργία με SLMs](./19-slm/README.md?WT.mc_id=academic-105485-koreyst) | **Μάθηση:** Τα οφέλη της δημιουργίας με Small Language Models | Βίντεο Σύντομα | [Μάθετε Περισσότερα](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) | -| 20 | [Δημιουργία με Μοντέλα Mistral](./20-mistral/README.md?WT.mc_id=academic-105485-koreyst) | **Μάθηση:** Τα χαρακτηριστικά και οι διαφορές των μοντέλων της οικογένειας Mistral | Βίντεο Σύντομα | [Μάθετε Περισσότερα](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) | -| 21 | [Δημιουργία με Μοντέλα Meta](./21-meta/README.md?WT.mc_id=academic-105485-koreyst) | **Μάθηση:** Τα χαρακτηριστικά και οι διαφορές των μοντέλων της οικογένειας Meta | Βίντεο Σύντομα | [Μάθετε Περισσότερα](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) | +| 11 | [Ενσωμάτωση Εξωτερικών Εφαρμογών με Κλήση Λειτουργιών](./11-integrating-with-function-calling/README.md?WT.mc_id=academic-105485-koreyst) | **Δημιουργία:** Τι είναι η κλήση λειτουργιών και οι περιπτώσεις χρήσης της για εφαρμογές | [Βίντεο](https://aka.ms/gen-ai-lesson11-gh?WT.mc_id=academic-105485-koreyst) | [Μάθετε Περισσότερα](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) | +| 12 | [Σχεδιασμός UX για Εφαρμογές AI](./12-designing-ux-for-ai-applications/README.md?WT.mc_id=academic-105485-koreyst) | **Μάθετε:** Πώς να εφαρμόσετε αρχές σχεδιασμού UX κατά την ανάπτυξη εφαρμογών Generative AI | [Βίντεο](https://aka.ms/gen-ai-lesson12-gh?WT.mc_id=academic-105485-koreyst) | [Μάθετε Περισσότερα](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) | +| 13 | [Ασφάλεια Εφαρμογών Generative AI](./13-securing-ai-applications/README.md?WT.mc_id=academic-105485-koreyst) | **Μάθετε:** Οι απειλές και οι κίνδυνοι για συστήματα AI και οι μέθοδοι για την ασφάλεια αυτών των συστημάτων. | [Βίντεο](https://aka.ms/gen-ai-lesson13-gh?WT.mc_id=academic-105485-koreyst) | [Μάθετε Περισσότερα](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) | +| 14 | [Ο Κύκλος Ζωής Εφαρμογών Generative AI](./14-the-generative-ai-application-lifecycle/README.md?WT.mc_id=academic-105485-koreyst) | **Μάθετε:** Τα εργαλεία και οι μετρήσεις για τη διαχείριση του Κύκλου Ζωής LLM και LLMOps | [Βίντεο](https://aka.ms/gen-ai-lesson14-gh?WT.mc_id=academic-105485-koreyst) | [Μάθετε Περισσότερα](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) | +| 15 | [Ανάκτηση Εμπλουτισμένης Παραγωγής (RAG) και Βάσεις Δεδομένων Vector](./15-rag-and-vector-databases/README.md?WT.mc_id=academic-105485-koreyst) | **Δημιουργία:** Μια εφαρμογή χρησιμοποιώντας το RAG Framework για την ανάκτηση embeddings από Βάσεις Δεδομένων Vector | [Βίντεο](https://aka.ms/gen-ai-lesson15-gh?WT.mc_id=academic-105485-koreyst) | [Μάθετε Περισσότερα](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) | +| 16 | [Μοντέλα Ανοιχτού Κώδικα και Hugging Face](./16-open-source-models/README.md?WT.mc_id=academic-105485-koreyst) | **Δημιουργία:** Μια εφαρμογή χρησιμοποιώντας μοντέλα ανοιχτού κώδικα διαθέσιμα στο Hugging Face | [Βίντεο](https://aka.ms/gen-ai-lesson16-gh?WT.mc_id=academic-105485-koreyst) | [Μάθετε Περισσότερα](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) | +| 17 | [Πράκτορες AI](./17-ai-agents/README.md?WT.mc_id=academic-105485-koreyst) | **Δημιουργία:** Μια εφαρμογή χρησιμοποιώντας το AI Agent Framework | [Βίντεο](https://aka.ms/gen-ai-lesson17-gh?WT.mc_id=academic-105485-koreyst) | [Μάθετε Περισσότερα](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) | +| 18 | [Fine-Tuning LLMs](./18-fine-tuning/README.md?WT.mc_id=academic-105485-koreyst) | **Μάθετε:** Τι είναι, γιατί και πώς γίνεται το fine-tuning των LLMs | [Βίντεο](https://aka.ms/gen-ai-lesson18-gh?WT.mc_id=academic-105485-koreyst) | [Μάθετε Περισσότερα](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) | +| 19 | [Δημιουργία με SLMs](./19-slm/README.md?WT.mc_id=academic-105485-koreyst) | **Μάθετε:** Τα οφέλη της δημιουργίας με Μικρά Μοντέλα Γλώσσας | Βίντεο σύντομα διαθέσιμο | [Μάθετε Περισσότερα](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) | +| 20 | [Δημιουργία με Μοντέλα Mistral](./20-mistral/README.md?WT.mc_id=academic-105485-koreyst) | **Μάθετε:** Τα χαρακτηριστικά και οι διαφορές των Μοντέλων της Οικογένειας Mistral | Βίντεο σύντομα διαθέσιμο | [Μάθετε Περισσότερα](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) | +| 21 | [Δημιουργία με Μοντέλα Meta](./21-meta/README.md?WT.mc_id=academic-105485-koreyst) | **Μάθετε:** Τα χαρακτηριστικά και οι διαφορές των Μοντέλων της Οικογένειας Meta | Βίντεο σύντομα διαθέσιμο | [Μάθετε Περισσότερα](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) | ### 🌟 Ειδικές ευχαριστίες -Ειδικές ευχαριστίες στον [**John Aziz**](https://www.linkedin.com/in/john0isaac/) για τη δημιουργία όλων των GitHub Actions και workflows. +Ειδικές ευχαριστίες στον [**John Aziz**](https://www.linkedin.com/in/john0isaac/) για τη δημιουργία όλων των GitHub Actions και workflows -[**Bernhard Merkle**](https://www.linkedin.com/in/bernhard-merkle-738b73/) για τις σημαντικές συνεισφορές σε κάθε μάθημα, βελτιώνοντας την εμπειρία των μαθητών και του κώδικα. +[**Bernhard Merkle**](https://www.linkedin.com/in/bernhard-merkle-738b73/) για τις σημαντικές συνεισφορές του σε κάθε μάθημα για τη βελτίωση της εμπειρίας των μαθητών και του κώδικα. ## 🎒 Άλλα Μαθήματα @@ -150,4 +150,4 @@ CO_OP_TRANSLATOR_METADATA: --- **Αποποίηση ευθύνης**: -Αυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία αυτόματης μετάφρασης [Co-op Translator](https://github.com/Azure/co-op-translator). Παρόλο που καταβάλλουμε προσπάθειες για ακρίβεια, παρακαλούμε να έχετε υπόψη ότι οι αυτόματες μεταφράσεις ενδέχεται να περιέχουν λάθη ή ανακρίβειες. Το πρωτότυπο έγγραφο στη γλώσσα του θα πρέπει να θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε ευθύνη για τυχόν παρεξηγήσεις ή εσφαλμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης. \ No newline at end of file +Αυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία αυτόματης μετάφρασης [Co-op Translator](https://github.com/Azure/co-op-translator). Παρόλο που καταβάλλουμε προσπάθειες για ακρίβεια, παρακαλούμε να έχετε υπόψη ότι οι αυτόματες μεταφράσεις ενδέχεται να περιέχουν λάθη ή ανακρίβειες. Το πρωτότυπο έγγραφο στη μητρική του γλώσσα θα πρέπει να θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε ευθύνη για τυχόν παρεξηγήσεις ή εσφαλμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης. \ No newline at end of file diff --git a/translations/th/00-course-setup/README.md b/translations/th/00-course-setup/README.md index 6e84a1eea8..fb479c1935 100644 --- a/translations/th/00-course-setup/README.md +++ b/translations/th/00-course-setup/README.md @@ -1,239 +1,238 @@ - -# เริ่มต้นกับคอร์สนี้ - -เราตื่นเต้นมากที่คุณจะได้เริ่มต้นคอร์สนี้ และอยากเห็นว่าคุณจะได้รับแรงบันดาลใจในการสร้างอะไรกับ Generative AI! - -เพื่อให้คุณประสบความสำเร็จ หน้านี้จะอธิบายขั้นตอนการตั้งค่า ข้อกำหนดทางเทคนิค และช่องทางขอความช่วยเหลือหากจำเป็น - -## ขั้นตอนการตั้งค่า - -เพื่อเริ่มเรียนคอร์สนี้ คุณต้องทำตามขั้นตอนต่อไปนี้ - -### 1. Fork Repo นี้ - -[Fork repo นี้ทั้งหมด](https://github.com/microsoft/generative-ai-for-beginners/fork?WT.mc_id=academic-105485-koreyst) ไปยังบัญชี GitHub ของคุณเอง เพื่อให้คุณสามารถแก้ไขโค้ดและทำโจทย์ต่าง ๆ ได้ คุณยังสามารถ [กดดาว (🌟) repo นี้](https://docs.github.com/en/get-started/exploring-projects-on-github/saving-repositories-with-stars?WT.mc_id=academic-105485-koreyst) เพื่อกลับมาค้นหา repo นี้และ repo ที่เกี่ยวข้องได้ง่ายขึ้น - -### 2. สร้าง codespace - -เพื่อหลีกเลี่ยงปัญหา dependency เวลารันโค้ด เราแนะนำให้คุณเรียนคอร์สนี้ใน [GitHub Codespaces](https://github.com/features/codespaces?WT.mc_id=academic-105485-koreyst) - -ใน repo ที่คุณ fork: **Code -> Codespaces -> New on main** - -![Dialog showing buttons to create a codespace](../../../00-course-setup/images/who-will-pay.webp) - -#### 2.1 เพิ่ม secret - -1. ⚙️ ไอคอนรูปเฟือง -> Command Pallete-> Codespaces : Manage user secret -> Add a new secret -2. ตั้งชื่อว่า OPENAI_API_KEY, วาง key ของคุณ, กด Save - -### 3. ต่อไปทำอะไรดี? - -| ฉันต้องการ… | ไปที่… | -|---------------------|-------------------------------------------------------------------------| -| เริ่มบทเรียนที่ 1 | [`01-introduction-to-genai`](../01-introduction-to-genai/README.md) | -| ทำงานแบบออฟไลน์ | [`setup-local.md`](02-setup-local.md) | -| ตั้งค่า LLM Provider | [`providers.md`](providers.md) | -| พบปะผู้เรียนคนอื่น | [เข้าร่วม Discord ของเรา](https://aka.ms/genai-discord?WT.mc_id=academic-105485-koreyst) | - -## การแก้ไขปัญหา - - -| อาการ | วิธีแก้ | -|-----------------------------------------------|-------------------------------------------------------------------| -| Container build ค้าง > 10 นาที | **Codespaces ➜ “Rebuild Container”** | -| `python: command not found` | Terminal ไม่ได้แนบ; คลิก **+** ➜ *bash* | -| `401 Unauthorized` จาก OpenAI | `OPENAI_API_KEY` ผิดหรือหมดอายุ | -| VS Code แสดง “Dev container mounting…” | รีเฟรชแท็บเบราว์เซอร์—Codespaces บางครั้งหลุดการเชื่อมต่อ | -| ไม่พบ Notebook kernel | เมนู Notebook ➜ **Kernel ▸ Select Kernel ▸ Python 3** | - - ระบบ Unix-based: - - ```bash - touch .env - ``` - - Windows: - - ```cmd - echo . > .env - ``` - -3. **แก้ไขไฟล์ `.env`**: เปิดไฟล์ `.env` ใน text editor (เช่น VS Code, Notepad++ หรือ editor อื่น ๆ) เพิ่มบรรทัดต่อไปนี้ลงในไฟล์ โดยแทนที่ `your_github_token_here` ด้วย GitHub token ของคุณจริง ๆ: - - ```env - GITHUB_TOKEN=your_github_token_here - ``` - -4. **บันทึกไฟล์**: บันทึกการเปลี่ยนแปลงและปิด text editor - -5. **ติดตั้ง `python-dotenv`**: หากคุณยังไม่ได้ติดตั้ง คุณต้องติดตั้งแพ็กเกจ `python-dotenv` เพื่อโหลด environment variables จากไฟล์ `.env` เข้าแอป Python ของคุณ สามารถติดตั้งได้ด้วย `pip`: - - ```bash - pip install python-dotenv - ``` - -6. **โหลด Environment Variables ใน Python Script ของคุณ**: ในสคริปต์ Python ของคุณ ให้ใช้แพ็กเกจ `python-dotenv` เพื่อโหลด environment variables จากไฟล์ `.env`: - - ```python - from dotenv import load_dotenv - import os - - # Load environment variables from .env file - load_dotenv() - - # Access the GITHUB_TOKEN variable - github_token = os.getenv("GITHUB_TOKEN") - - print(github_token) - ``` - -เรียบร้อย! คุณได้สร้างไฟล์ `.env` เพิ่ม GitHub token ของคุณ และโหลดเข้าแอป Python แล้ว - -## วิธีรันโค้ดบนคอมพิวเตอร์ของคุณ - -หากต้องการรันโค้ดบนคอมพิวเตอร์ของคุณเอง คุณต้องมี [Python ติดตั้งอยู่](https://www.python.org/downloads/?WT.mc_id=academic-105485-koreyst) บางเวอร์ชัน - -จากนั้นเพื่อใช้งาน repository นี้ คุณต้อง clone มันมาก่อน: - -```shell -git clone https://github.com/microsoft/generative-ai-for-beginners -cd generative-ai-for-beginners -``` - -เมื่อคุณมีทุกอย่างพร้อมแล้ว ก็เริ่มต้นได้เลย! - -## ขั้นตอนเสริม - -### การติดตั้ง Miniconda - -[Miniconda](https://conda.io/en/latest/miniconda.html?WT.mc_id=academic-105485-koreyst) เป็นตัวติดตั้งขนาดเล็กสำหรับ [Conda](https://docs.conda.io/en/latest?WT.mc_id=academic-105485-koreyst), Python และแพ็กเกจบางตัว -Conda เองเป็นตัวจัดการแพ็กเกจ ที่ช่วยให้ตั้งค่าและสลับระหว่าง [**virtual environments**](https://docs.python.org/3/tutorial/venv.html?WT.mc_id=academic-105485-koreyst) และแพ็กเกจต่าง ๆ ได้ง่าย นอกจากนี้ยังสะดวกสำหรับติดตั้งแพ็กเกจที่ไม่มีใน `pip` - -คุณสามารถดู [คู่มือการติดตั้ง MiniConda](https://docs.anaconda.com/free/miniconda/#quick-command-line-install?WT.mc_id=academic-105485-koreyst) เพื่อเริ่มต้นได้ - -เมื่อคุณติดตั้ง Miniconda แล้ว ให้ clone [repository](https://github.com/microsoft/generative-ai-for-beginners/fork?WT.mc_id=academic-105485-koreyst) (ถ้ายังไม่ได้ทำ) - -ถัดไป คุณต้องสร้าง virtual environment โดยใช้ Conda ให้สร้างไฟล์ environment ใหม่ (_environment.yml_) ถ้าคุณใช้ Codespaces ให้สร้างไฟล์นี้ในโฟลเดอร์ `.devcontainer` เช่น `.devcontainer/environment.yml` - -เติมเนื้อหาในไฟล์ environment ด้วยโค้ดตัวอย่างด้านล่างนี้: - -```yml -name: -channels: - - defaults - - microsoft -dependencies: - - python= - - openai - - python-dotenv - - pip - - pip: - - azure-ai-ml -``` - -ถ้าคุณเจอปัญหาในการใช้ conda คุณสามารถติดตั้ง Microsoft AI Libraries ด้วยคำสั่งนี้ใน terminal ได้เอง - -``` -conda install -c microsoft azure-ai-ml -``` - -ไฟล์ environment จะระบุ dependencies ที่เราต้องใช้ `` คือชื่อ environment ที่คุณต้องการตั้ง และ `` คือเวอร์ชัน Python ที่ต้องการ เช่น `3` คือเวอร์ชันหลักล่าสุดของ Python - -เมื่อเสร็จแล้ว ให้สร้าง Conda environment โดยรันคำสั่งด้านล่างใน command line/terminal - -```bash -conda env create --name ai4beg --file .devcontainer/environment.yml # .devcontainer sub path applies to only Codespace setups -conda activate ai4beg -``` - -หากเจอปัญหาใด ๆ ดู [คู่มือ Conda environments](https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html?WT.mc_id=academic-105485-koreyst) - -### ใช้ Visual Studio Code พร้อมส่วนขยาย Python - -เราแนะนำให้ใช้ [Visual Studio Code (VS Code)](https://code.visualstudio.com/?WT.mc_id=academic-105485-koreyst) พร้อม [ส่วนขยาย Python](https://marketplace.visualstudio.com/items?itemName=ms-python.python&WT.mc_id=academic-105485-koreyst) สำหรับคอร์สนี้ แต่ก็เป็นเพียงคำแนะนำ ไม่ใช่ข้อบังคับ - -> **Note**: เมื่อเปิด repository คอร์สใน VS Code คุณสามารถตั้งค่าโปรเจกต์ใน container ได้ เพราะมี [โฟลเดอร์ `.devcontainer` พิเศษ](https://code.visualstudio.com/docs/devcontainers/containers?itemName=ms-python.python&WT.mc_id=academic-105485-koreyst) อยู่ใน repo นี้ รายละเอียดเพิ่มเติมจะกล่าวถึงภายหลัง - -> **Note**: เมื่อคุณ clone และเปิดโฟลเดอร์ใน VS Code ระบบจะแนะนำให้ติดตั้งส่วนขยาย Python อัตโนมัติ - -> **Note**: หาก VS Code แนะนำให้เปิด repo ใน container ให้ปฏิเสธ เพื่อใช้ Python ที่ติดตั้งในเครื่องของคุณ - -### ใช้ Jupyter ในเบราว์เซอร์ - -คุณสามารถทำโปรเจกต์นี้ผ่าน [Jupyter environment](https://jupyter.org?WT.mc_id=academic-105485-koreyst) ในเบราว์เซอร์ได้เลย ทั้ง Jupyter แบบคลาสสิกและ [Jupyter Hub](https://jupyter.org/hub?WT.mc_id=academic-105485-koreyst) ให้ประสบการณ์พัฒนาโค้ดที่ดี เช่น auto-completion, code highlighting ฯลฯ - -หากต้องการเริ่ม Jupyter ในเครื่อง ให้เปิด terminal/command line ไปยังโฟลเดอร์คอร์ส แล้วรันคำสั่ง: - -```bash -jupyter notebook -``` - -หรือ - -```bash -jupyterhub -``` - -จะมี Jupyter instance เริ่มทำงาน และแสดง URL สำหรับเข้าใช้งานในหน้าต่าง command line - -เมื่อเข้า URL ดังกล่าว คุณจะเห็นโครงสร้างคอร์ส และสามารถเข้าไปยังไฟล์ `*.ipynb` ใดก็ได้ เช่น `08-building-search-applications/python/oai-solution.ipynb` - -### รันใน container - -อีกทางเลือกหนึ่งนอกจากตั้งค่าทุกอย่างในเครื่องหรือ Codespace คือใช้ [container](../../../00-course-setup/) โฟลเดอร์ `.devcontainer` พิเศษใน repo นี้ ช่วยให้ VS Code ตั้งค่าโปรเจกต์ใน container ได้ นอก Codespaces คุณต้องติดตั้ง Docker และอาจต้องใช้ความชำนาญ จึงแนะนำสำหรับผู้ที่มีประสบการณ์กับ container เท่านั้น - -หนึ่งในวิธีที่ดีที่สุดในการเก็บ API key ให้ปลอดภัยเมื่อใช้ GitHub Codespaces คือใช้ Codespace Secrets โปรดดู [คู่มือการจัดการ Codespaces secrets](https://docs.github.com/en/codespaces/managing-your-codespaces/managing-secrets-for-your-codespaces?WT.mc_id=academic-105485-koreyst) เพื่อเรียนรู้เพิ่มเติม - -## บทเรียนและข้อกำหนดทางเทคนิค - -คอร์สนี้มีบทเรียนแนวคิด 6 บท และบทเรียนโค้ด 6 บท - -สำหรับบทเรียนโค้ด เราใช้ Azure OpenAI Service คุณต้องมีสิทธิ์เข้าถึง Azure OpenAI service และ API key เพื่อรันโค้ดนี้ คุณสามารถขอสิทธิ์ได้โดย [กรอกแบบฟอร์มนี้](https://azure.microsoft.com/products/ai-services/openai-service?WT.mc_id=academic-105485-koreyst) - -ระหว่างรอการอนุมัติ ในแต่ละบทเรียนโค้ดจะมีไฟล์ `README.md` ให้คุณดูโค้ดและผลลัพธ์ได้ - -## การใช้ Azure OpenAI Service ครั้งแรก - -ถ้านี่เป็นครั้งแรกที่คุณใช้ Azure OpenAI service โปรดดูคู่มือวิธี [สร้างและ deploy Azure OpenAI Service resource](https://learn.microsoft.com/azure/ai-services/openai/how-to/create-resource?pivots=web-portal&WT.mc_id=academic-105485-koreyst) - -## การใช้ OpenAI API ครั้งแรก - -ถ้านี่เป็นครั้งแรกที่คุณใช้ OpenAI API โปรดดูคู่มือวิธี [สร้างและใช้งาน Interface](https://platform.openai.com/docs/quickstart?context=pythont&WT.mc_id=academic-105485-koreyst) - -## พบปะผู้เรียนคนอื่น - -เราได้สร้างช่องทางใน [AI Community Discord server อย่างเป็นทางการ](https://aka.ms/genai-discord?WT.mc_id=academic-105485-koreyst) สำหรับพบปะผู้เรียนคนอื่น ๆ นี่เป็นโอกาสดีในการสร้างเครือข่ายกับผู้ประกอบการ นักพัฒนา นักศึกษา และทุกคนที่อยากพัฒนาทักษะด้าน Generative AI - -[![Join discord channel](https://dcbadge.limes.pink/api/server/ByRwuEEgH4)](https://aka.ms/genai-discord?WT.mc_id=academic-105485-koreyst) - -ทีมงานโปรเจกต์จะอยู่ใน Discord server นี้เพื่อช่วยเหลือผู้เรียนด้วย - -## มีส่วนร่วม - -คอร์สนี้เป็นโครงการ open-source หากคุณเห็นจุดที่ควรปรับปรุงหรือพบปัญหา โปรดสร้าง [Pull Request](https://github.com/microsoft/generative-ai-for-beginners/pulls?WT.mc_id=academic-105485-koreyst) หรือแจ้ง [GitHub issue](https://github.com/microsoft/generative-ai-for-beginners/issues?WT.mc_id=academic-105485-koreyst) - -ทีมงานจะติดตามทุกการมีส่วนร่วม การร่วมพัฒนา open source เป็นวิธีที่ยอดเยี่ยมในการสร้างเส้นทางอาชีพในสาย Generative AI - -การมีส่วนร่วมส่วนใหญ่จะต้องให้คุณยอมรับ Contributor License Agreement (CLA) เพื่อยืนยันว่าคุณมีสิทธิ์และอนุญาตให้เราใช้ผลงานของคุณ รายละเอียดดูที่ [เว็บไซต์ CLA, Contributor License Agreement](https://cla.microsoft.com?WT.mc_id=academic-105485-koreyst) - -สำคัญ: เมื่อแปลเนื้อหาใน repo นี้ กรุณาอย่าใช้เครื่องมือแปลภาษา เราจะตรวจสอบการแปลผ่านชุมชน ดังนั้นโปรดอาสาแปลเฉพาะภาษาที่คุณถนัดจริง ๆ - -เมื่อคุณส่ง pull request, CLA-bot จะตรวจสอบโดยอัตโนมัติว่าคุณต้องยื่น CLA หรือไม่ และจะติดป้ายกำกับหรือคอมเมนต์ให้ทำตามคำแนะนำของ bot คุณต้องทำขั้นตอนนี้เพียงครั้งเดียวสำหรับทุก repo ที่ใช้ CLA ของเรา - -โปรเจกต์นี้ใช้ [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/?WT.mc_id=academic-105485-koreyst) ดูข้อมูลเพิ่มเติมได้ที่ Code of Conduct FAQ หรืออีเมล [Email opencode](opencode@microsoft.com) หากมีคำถามหรือข้อเสนอแนะ - -## มาเริ่มกันเลย! -เมื่อคุณได้ทำตามขั้นตอนที่จำเป็นเพื่อจบคอร์สนี้แล้ว มาเริ่มต้นกันด้วยการทำความรู้จักกับ Generative AI และ LLMs ได้ที่นี่ [แนะนำ Generative AI และ LLMs](../01-introduction-to-genai/README.md?WT.mc_id=academic-105485-koreyst) - ---- - -**ข้อจำกัดความรับผิดชอบ**: -เอกสารนี้ได้รับการแปลโดยใช้บริการแปลภาษา AI [Co-op Translator](https://github.com/Azure/co-op-translator) แม้เราจะพยายามให้การแปลถูกต้องที่สุด แต่โปรดทราบว่าการแปลโดยอัตโนมัติอาจมีข้อผิดพลาดหรือความไม่ถูกต้อง เอกสารต้นฉบับในภาษาต้นทางควรถือเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลสำคัญ แนะนำให้ใช้บริการแปลโดยนักแปลมืออาชีพ ทางเราจะไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความที่เกิดจากการใช้การแปลนี้ \ No newline at end of file + +# เริ่มต้นกับคอร์สนี้ + +เรารู้สึกตื่นเต้นมากที่คุณจะเริ่มต้นคอร์สนี้ และได้เห็นสิ่งที่คุณจะสร้างสรรค์ด้วย Generative AI! + +เพื่อให้คุณประสบความสำเร็จ หน้านี้จะอธิบายขั้นตอนการตั้งค่า ข้อกำหนดทางเทคนิค และแหล่งข้อมูลที่คุณสามารถขอความช่วยเหลือได้หากจำเป็น + +## ขั้นตอนการตั้งค่า + +เพื่อเริ่มต้นคอร์สนี้ คุณจำเป็นต้องทำตามขั้นตอนต่อไปนี้ + +### 1. Fork Repo นี้ + +[Fork Repo ทั้งหมดนี้](https://github.com/microsoft/generative-ai-for-beginners/fork?WT.mc_id=academic-105485-koreyst) ไปยังบัญชี GitHub ของคุณเอง เพื่อให้คุณสามารถแก้ไขโค้ดและทำแบบฝึกหัดได้ นอกจากนี้คุณยังสามารถ [star (🌟) Repo นี้](https://docs.github.com/en/get-started/exploring-projects-on-github/saving-repositories-with-stars?WT.mc_id=academic-105485-koreyst) เพื่อค้นหา Repo นี้และ Repo ที่เกี่ยวข้องได้ง่ายขึ้น + +### 2. สร้าง Codespace + +เพื่อหลีกเลี่ยงปัญหาเกี่ยวกับ Dependency เมื่อรันโค้ด เราแนะนำให้คุณรันคอร์สนี้ใน [GitHub Codespaces](https://github.com/features/codespaces?WT.mc_id=academic-105485-koreyst) + +ใน Fork ของคุณ: **Code -> Codespaces -> New on main** + +![หน้าต่างแสดงปุ่มสำหรับสร้าง Codespace](../../../00-course-setup/images/who-will-pay.webp) + +#### 2.1 เพิ่ม Secret + +1. ⚙️ ไอคอนรูปเฟือง -> Command Pallete -> Codespaces : Manage user secret -> Add a new secret +2. ตั้งชื่อ OPENAI_API_KEY วางคีย์ของคุณ แล้วกด Save + +### 3. ทำอะไรต่อ? + +| ฉันต้องการ… | ไปที่… | +|---------------------|-------------------------------------------------------------------------| +| เริ่มบทเรียนที่ 1 | [`01-introduction-to-genai`](../01-introduction-to-genai/README.md) | +| ทำงานแบบออฟไลน์ | [`setup-local.md`](02-setup-local.md) | +| ตั้งค่าผู้ให้บริการ LLM | [`providers.md`](03-providers.md) | +| พบปะผู้เรียนคนอื่น | [เข้าร่วม Discord ของเรา](https://aka.ms/genai-discord?WT.mc_id=academic-105485-koreyst) | + +## การแก้ไขปัญหา + +| อาการ | วิธีแก้ไข | +|------------------------------------------|-----------------------------------------------------------------| +| การสร้าง Container ใช้เวลานานเกิน 10 นาที | **Codespaces ➜ “Rebuild Container”** | +| `python: command not found` | Terminal ไม่ได้เชื่อมต่อ; คลิก **+** ➜ *bash* | +| `401 Unauthorized` จาก OpenAI | `OPENAI_API_KEY` ผิดหรือหมดอายุ | +| VS Code แสดง “Dev container mounting…” | รีเฟรชแท็บเบราว์เซอร์—บางครั้ง Codespaces อาจหลุดการเชื่อมต่อ | +| Kernel ของ Notebook หายไป | เมนู Notebook ➜ **Kernel ▸ Select Kernel ▸ Python 3** | + + ระบบ Unix-based: + + ```bash + touch .env + ``` + + Windows: + + ```cmd + echo . > .env + ``` + +3. **แก้ไขไฟล์ `.env`**: เปิดไฟล์ `.env` ในโปรแกรมแก้ไขข้อความ (เช่น VS Code, Notepad++ หรือโปรแกรมอื่น ๆ) เพิ่มบรรทัดต่อไปนี้ในไฟล์ โดยแทนที่ `your_github_token_here` ด้วย GitHub token ของคุณ: + + ```env + GITHUB_TOKEN=your_github_token_here + ``` + +4. **บันทึกไฟล์**: บันทึกการเปลี่ยนแปลงและปิดโปรแกรมแก้ไขข้อความ + +5. **ติดตั้ง `python-dotenv`**: หากคุณยังไม่ได้ติดตั้ง คุณจำเป็นต้องติดตั้งแพ็กเกจ `python-dotenv` เพื่อโหลดตัวแปรสภาพแวดล้อมจากไฟล์ `.env` ไปยังแอปพลิเคชัน Python ของคุณ คุณสามารถติดตั้งได้โดยใช้ `pip`: + + ```bash + pip install python-dotenv + ``` + +6. **โหลดตัวแปรสภาพแวดล้อมในสคริปต์ Python ของคุณ**: ในสคริปต์ Python ของคุณ ใช้แพ็กเกจ `python-dotenv` เพื่อโหลดตัวแปรสภาพแวดล้อมจากไฟล์ `.env`: + + ```python + from dotenv import load_dotenv + import os + + # Load environment variables from .env file + load_dotenv() + + # Access the GITHUB_TOKEN variable + github_token = os.getenv("GITHUB_TOKEN") + + print(github_token) + ``` + +แค่นี้เอง! คุณได้สร้างไฟล์ `.env` เพิ่ม GitHub token ของคุณ และโหลดมันเข้าสู่แอปพลิเคชัน Python ของคุณเรียบร้อยแล้ว + +## วิธีรันโค้ดในเครื่องของคุณ + +เพื่อรันโค้ดในเครื่องของคุณ คุณจำเป็นต้องมี [Python เวอร์ชันใดก็ได้ติดตั้ง](https://www.python.org/downloads/?WT.mc_id=academic-105485-koreyst) + +จากนั้นเพื่อใช้งาน Repository คุณต้อง Clone มัน: + +```shell +git clone https://github.com/microsoft/generative-ai-for-beginners +cd generative-ai-for-beginners +``` + +เมื่อคุณตรวจสอบทุกอย่างแล้ว คุณก็สามารถเริ่มต้นได้เลย! + +## ขั้นตอนเพิ่มเติม + +### การติดตั้ง Miniconda + +[Miniconda](https://conda.io/en/latest/miniconda.html?WT.mc_id=academic-105485-koreyst) เป็นตัวติดตั้งน้ำหนักเบาสำหรับการติดตั้ง [Conda](https://docs.conda.io/en/latest?WT.mc_id=academic-105485-koreyst), Python และแพ็กเกจบางตัว +Conda เองเป็นตัวจัดการแพ็กเกจที่ทำให้การตั้งค่าและการสลับระหว่าง [**virtual environments**](https://docs.python.org/3/tutorial/venv.html?WT.mc_id=academic-105485-koreyst) และแพ็กเกจต่าง ๆ เป็นเรื่องง่าย นอกจากนี้ยังมีประโยชน์สำหรับการติดตั้งแพ็กเกจที่ไม่สามารถใช้ได้ผ่าน `pip` + +คุณสามารถทำตาม [คู่มือการติดตั้ง MiniConda](https://docs.anaconda.com/free/miniconda/#quick-command-line-install?WT.mc_id=academic-105485-koreyst) เพื่อเริ่มต้นใช้งาน + +เมื่อคุณติดตั้ง Miniconda แล้ว คุณต้อง Clone [Repository](https://github.com/microsoft/generative-ai-for-beginners/fork?WT.mc_id=academic-105485-koreyst) (หากคุณยังไม่ได้ทำ) + +ต่อไป คุณต้องสร้าง Virtual Environment เพื่อทำสิ่งนี้ด้วย Conda ให้สร้างไฟล์ Environment ใหม่ (_environment.yml_) หากคุณกำลังทำตามใน Codespaces ให้สร้างไฟล์นี้ในไดเรกทอรี `.devcontainer` ดังนั้น `.devcontainer/environment.yml` + +ไปที่ไฟล์ Environment ของคุณและเพิ่มโค้ดด้านล่าง: + +```yml +name: +channels: + - defaults + - microsoft +dependencies: + - python= + - openai + - python-dotenv + - pip + - pip: + - azure-ai-ml +``` + +หากคุณพบข้อผิดพลาดในการใช้ Conda คุณสามารถติดตั้ง Microsoft AI Libraries ด้วยคำสั่งต่อไปนี้ใน Terminal: + +``` +conda install -c microsoft azure-ai-ml +``` + +ไฟล์ Environment ระบุ Dependencies ที่เราต้องการ `` หมายถึงชื่อที่คุณต้องการใช้สำหรับ Conda Environment และ `` คือเวอร์ชันของ Python ที่คุณต้องการใช้ เช่น `3` ซึ่งเป็นเวอร์ชันหลักล่าสุดของ Python + +เมื่อเสร็จแล้ว คุณสามารถสร้าง Conda Environment ของคุณได้โดยรันคำสั่งด้านล่างใน Command Line/Terminal + +```bash +conda env create --name ai4beg --file .devcontainer/environment.yml # .devcontainer sub path applies to only Codespace setups +conda activate ai4beg +``` + +ดู [คู่มือ Conda environments](https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html?WT.mc_id=academic-105485-koreyst) หากคุณพบปัญหา + +### การใช้ Visual Studio Code กับส่วนขยาย Python + +เราแนะนำให้ใช้ [Visual Studio Code (VS Code)](https://code.visualstudio.com/?WT.mc_id=academic-105485-koreyst) พร้อมกับ [ส่วนขยาย Python](https://marketplace.visualstudio.com/items?itemName=ms-python.python&WT.mc_id=academic-105485-koreyst) สำหรับคอร์สนี้ อย่างไรก็ตาม นี่เป็นเพียงคำแนะนำ ไม่ใช่ข้อบังคับ + +> **หมายเหตุ**: โดยการเปิด Repository คอร์สใน VS Code คุณมีตัวเลือกในการตั้งค่าโปรเจกต์ใน Container เนื่องจาก [ไดเรกทอรี `.devcontainer` พิเศษ](https://code.visualstudio.com/docs/devcontainers/containers?itemName=ms-python.python&WT.mc_id=academic-105485-koreyst) ที่อยู่ใน Repository คอร์สนี้ รายละเอียดเพิ่มเติมจะกล่าวถึงในภายหลัง + +> **หมายเหตุ**: เมื่อคุณ Clone และเปิดไดเรกทอรีใน VS Code มันจะเสนอให้คุณติดตั้งส่วนขยาย Python โดยอัตโนมัติ + +> **หมายเหตุ**: หาก VS Code แนะนำให้คุณเปิด Repository ใน Container ให้ปฏิเสธคำขอนี้เพื่อใช้ Python เวอร์ชันที่ติดตั้งในเครื่อง + +### การใช้ Jupyter ในเบราว์เซอร์ + +คุณสามารถทำงานในโปรเจกต์โดยใช้ [Jupyter environment](https://jupyter.org?WT.mc_id=academic-105485-koreyst) ในเบราว์เซอร์ของคุณได้เช่นกัน ทั้ง Jupyter แบบคลาสสิกและ [Jupyter Hub](https://jupyter.org/hub?WT.mc_id=academic-105485-koreyst) มอบประสบการณ์การพัฒนาที่ดีพร้อมฟีเจอร์ เช่น การเติมคำอัตโนมัติ การไฮไลต์โค้ด เป็นต้น + +เพื่อเริ่มต้น Jupyter ในเครื่อง ให้ไปที่ Terminal/Command Line ไปยังไดเรกทอรีคอร์ส และรันคำสั่ง: + +```bash +jupyter notebook +``` + +หรือ + +```bash +jupyterhub +``` + +นี่จะเริ่มต้น Jupyter และ URL สำหรับการเข้าถึงจะปรากฏในหน้าต่าง Command Line + +เมื่อคุณเข้าถึง URL คุณจะเห็นโครงร่างคอร์สและสามารถไปยังไฟล์ `*.ipynb` ใดก็ได้ เช่น `08-building-search-applications/python/oai-solution.ipynb` + +### การรันใน Container + +อีกทางเลือกหนึ่งในการตั้งค่าทุกอย่างในเครื่องของคุณหรือ Codespace คือการใช้ [Container](../../../00-course-setup/) ไดเรกทอรี `.devcontainer` พิเศษใน Repository คอร์สทำให้ VS Code สามารถตั้งค่าโปรเจกต์ใน Container ได้ นอกเหนือจาก Codespaces สิ่งนี้จะต้องติดตั้ง Docker และค่อนข้างซับซ้อน ดังนั้นเราขอแนะนำเฉพาะผู้ที่มีประสบการณ์ในการทำงานกับ Container + +หนึ่งในวิธีที่ดีที่สุดในการรักษาความปลอดภัย API Key ของคุณเมื่อใช้ GitHub Codespaces คือการใช้ Codespace Secrets โปรดทำตาม [คู่มือการจัดการ Secrets ใน Codespaces](https://docs.github.com/en/codespaces/managing-your-codespaces/managing-secrets-for-your-codespaces?WT.mc_id=academic-105485-koreyst) เพื่อเรียนรู้เพิ่มเติมเกี่ยวกับเรื่องนี้ + +## บทเรียนและข้อกำหนดทางเทคนิค + +คอร์สนี้มีบทเรียนแนวคิด 6 บท และบทเรียนการเขียนโค้ด 6 บท + +สำหรับบทเรียนการเขียนโค้ด เราใช้บริการ Azure OpenAI Service คุณจะต้องเข้าถึงบริการ Azure OpenAI และมี API Key เพื่อรันโค้ดนี้ คุณสามารถสมัครเพื่อขอเข้าถึงได้โดย [กรอกแบบฟอร์มนี้](https://azure.microsoft.com/products/ai-services/openai-service?WT.mc_id=academic-105485-koreyst) + +ในขณะที่คุณรอการอนุมัติการสมัคร แต่ละบทเรียนการเขียนโค้ดยังมีไฟล์ `README.md` ที่คุณสามารถดูโค้ดและผลลัพธ์ได้ + +## การใช้บริการ Azure OpenAI เป็นครั้งแรก + +หากนี่เป็นครั้งแรกที่คุณทำงานกับบริการ Azure OpenAI โปรดทำตามคู่มือเกี่ยวกับวิธี [สร้างและปรับใช้ทรัพยากรบริการ Azure OpenAI](https://learn.microsoft.com/azure/ai-services/openai/how-to/create-resource?pivots=web-portal&WT.mc_id=academic-105485-koreyst) + +## การใช้ OpenAI API เป็นครั้งแรก + +หากนี่เป็นครั้งแรกที่คุณทำงานกับ OpenAI API โปรดทำตามคู่มือเกี่ยวกับวิธี [สร้างและใช้ Interface](https://platform.openai.com/docs/quickstart?context=pythont&WT.mc_id=academic-105485-koreyst) + +## พบปะผู้เรียนคนอื่น + +เราได้สร้างช่องทางใน [เซิร์ฟเวอร์ Discord ชุมชน AI อย่างเป็นทางการ](https://aka.ms/genai-discord?WT.mc_id=academic-105485-koreyst) เพื่อให้คุณได้พบปะกับผู้เรียนคนอื่น ๆ นี่เป็นวิธีที่ดีในการสร้างเครือข่ายกับผู้ประกอบการ ผู้สร้าง นักเรียน และผู้ที่ต้องการพัฒนาทักษะใน Generative AI + +[![เข้าร่วมช่อง Discord](https://dcbadge.limes.pink/api/server/ByRwuEEgH4)](https://aka.ms/genai-discord?WT.mc_id=academic-105485-koreyst) + +ทีมโปรเจกต์จะอยู่ในเซิร์ฟเวอร์ Discord นี้เพื่อช่วยเหลือผู้เรียนทุกคน + +## การมีส่วนร่วม + +คอร์สนี้เป็นโครงการโอเพ่นซอร์ส หากคุณเห็นจุดที่สามารถปรับปรุงหรือพบปัญหา โปรดสร้าง [Pull Request](https://github.com/microsoft/generative-ai-for-beginners/pulls?WT.mc_id=academic-105485-koreyst) หรือบันทึก [GitHub issue](https://github.com/microsoft/generative-ai-for-beginners/issues?WT.mc_id=academic-105485-koreyst) + +ทีมโปรเจกต์จะติดตามการมีส่วนร่วมทั้งหมด การมีส่วนร่วมในโอเพ่นซอร์สเป็นวิธีที่ยอดเยี่ยมในการสร้างอาชีพใน Generative AI + +การมีส่วนร่วมส่วนใหญ่ต้องการให้คุณยอมรับ Contributor License Agreement (CLA) ซึ่งระบุว่าคุณมีสิทธิ์และให้สิทธิ์เราในการใช้การมีส่วนร่วมของคุณ สำหรับรายละเอียดเพิ่มเติม โปรดเยี่ยมชม [เว็บไซต์ CLA, Contributor License Agreement](https://cla.microsoft.com?WT.mc_id=academic-105485-koreyst) + +สำคัญ: เมื่อแปลข้อความใน Repo นี้ โปรดตรวจสอบให้แน่ใจว่าคุณไม่ได้ใช้การแปลด้วยเครื่อง เราจะตรวจสอบการแปลผ่านชุมชน ดังนั้นโปรดอาสาแปลเฉพาะในภาษาที่คุณมีความชำนาญ + +เมื่อคุณส่ง Pull Request CLA-bot จะตรวจสอบโดยอัตโนมัติว่าคุณจำเป็นต้องให้ CLA หรือไม่ และจะตกแต่ง PR ตามความเหมาะสม (เช่น เพิ่มป้ายกำกับหรือความคิดเห็น) เพียงทำตามคำแนะนำที่บอทให้ คุณจะต้องทำสิ่งนี้เพียงครั้งเดียวสำหรับทุก Repository ที่ใช้ CLA ของเรา + +โครงการนี้ได้นำ [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/?WT.mc_id=academic-105485-koreyst) มาใช้ สำหรับข้อมูลเพิ่มเติม โปรดอ่าน Code of Conduct FAQ หรือ ติดต่อ [Email opencode](opencode@microsoft.com) หากมีคำถามหรือความคิดเห็นเพิ่มเติม + +## มาเริ่มกันเลย! +ตอนนี้คุณได้ทำตามขั้นตอนที่จำเป็นเพื่อจบหลักสูตรนี้แล้ว มาเริ่มต้นกันด้วยการ [แนะนำเกี่ยวกับ Generative AI และ LLMs](../01-introduction-to-genai/README.md?WT.mc_id=academic-105485-koreyst) + +--- + +**ข้อจำกัดความรับผิดชอบ**: +เอกสารนี้ได้รับการแปลโดยใช้บริการแปลภาษา AI [Co-op Translator](https://github.com/Azure/co-op-translator) แม้ว่าเราจะพยายามให้การแปลมีความถูกต้อง แต่โปรดทราบว่าการแปลอัตโนมัติอาจมีข้อผิดพลาดหรือความไม่ถูกต้อง เอกสารต้นฉบับในภาษาดั้งเดิมควรถือเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลสำคัญ ขอแนะนำให้ใช้บริการแปลภาษามนุษย์ที่เป็นมืออาชีพ เราไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความผิดที่เกิดจากการใช้การแปลนี้ \ No newline at end of file diff --git a/translations/th/01-introduction-to-genai/README.md b/translations/th/01-introduction-to-genai/README.md index 6055521979..62750474d7 100644 --- a/translations/th/01-introduction-to-genai/README.md +++ b/translations/th/01-introduction-to-genai/README.md @@ -1,146 +1,140 @@ - -# บทนำสู่ Generative AI และ Large Language Models - -[![บทนำสู่ Generative AI และ Large Language Models](../../../translated_images/01-lesson-banner.2424cfd092f43366707ee2d15749f62f76f80ea3cb0816f4f31d0abd5ffd4dd1.th.png)](https://aka.ms/gen-ai-lesson-1-gh?WT.mc_id=academic-105485-koreyst) - -_(คลิกที่ภาพด้านบนเพื่อดูวิดีโอของบทเรียนนี้)_ - -Generative AI คือปัญญาประดิษฐ์ที่สามารถสร้างข้อความ รูปภาพ และเนื้อหาประเภทอื่น ๆ ได้ สิ่งที่ทำให้เทคโนโลยีนี้น่าทึ่งคือมันทำให้ AI เป็นเรื่องที่ทุกคนเข้าถึงได้ง่าย เพียงแค่ใช้ข้อความสั้น ๆ หรือประโยคที่เขียนด้วยภาษาธรรมชาติ คุณไม่จำเป็นต้องเรียนรู้ภาษาโปรแกรมอย่าง Java หรือ SQL เพื่อทำสิ่งที่มีประโยชน์ สิ่งที่คุณต้องทำคือใช้ภาษาของคุณเอง บอกสิ่งที่ต้องการ แล้ว AI จะเสนอคำแนะนำออกมา แอปพลิเคชันและผลกระทบของเทคโนโลยีนี้มีมากมาย คุณสามารถเขียนหรือเข้าใจรายงาน เขียนแอปพลิเคชัน และอื่น ๆ ได้ในเวลาไม่กี่วินาที - -ในหลักสูตรนี้ เราจะสำรวจว่า startup ของเราใช้ Generative AI อย่างไรเพื่อเปิดโอกาสใหม่ ๆ ในโลกการศึกษา และเราจะจัดการกับความท้าทายที่หลีกเลี่ยงไม่ได้ที่เกี่ยวข้องกับผลกระทบทางสังคมและข้อจำกัดของเทคโนโลยีนี้อย่างไร - -## บทนำ - -บทเรียนนี้จะครอบคลุม: - -- แนะนำสถานการณ์ทางธุรกิจ: ไอเดียและพันธกิจของ startup ของเรา -- Generative AI และวิวัฒนาการของเทคโนโลยีในปัจจุบัน -- การทำงานภายในของ Large Language Model -- ความสามารถหลักและกรณีการใช้งานจริงของ Large Language Models - -## เป้าหมายการเรียนรู้ - -หลังจากเรียนจบบทเรียนนี้ คุณจะเข้าใจ: - -- Generative AI คืออะไร และ Large Language Models ทำงานอย่างไร -- วิธีใช้ Large Language Models ในกรณีการใช้งานต่าง ๆ โดยเน้นที่สถานการณ์ทางการศึกษา - -## สถานการณ์: startup ทางการศึกษาของเรา - -Generative Artificial Intelligence (AI) คือสุดยอดของเทคโนโลยี AI ที่ผลักดันขอบเขตของสิ่งที่เคยคิดว่าเป็นไปไม่ได้ โมเดล Generative AI มีความสามารถและการใช้งานหลากหลาย แต่ในหลักสูตรนี้เราจะสำรวจว่ามันเปลี่ยนแปลงวงการศึกษาอย่างไรผ่าน startup สมมติที่เราจะเรียกว่า _startup ของเรา_ Startup ของเราทำงานในด้านการศึกษาพร้อมพันธกิจที่ทะเยอทะยานว่า - -> _พัฒนาการเข้าถึงการเรียนรู้ในระดับโลก เพื่อให้ทุกคนได้รับการศึกษาอย่างเท่าเทียม และมอบประสบการณ์การเรียนรู้ที่ปรับให้เหมาะกับผู้เรียนแต่ละคนตามความต้องการ_ - -ทีมงาน startup ของเราตระหนักดีว่าเราจะไม่สามารถบรรลุเป้าหมายนี้ได้หากไม่ใช้เครื่องมือที่ทรงพลังที่สุดในยุคนี้ – Large Language Models (LLMs) - -Generative AI คาดว่าจะปฏิวัติวิธีการเรียนรู้และการสอนในปัจจุบัน โดยนักเรียนจะมีครูเสมือนที่พร้อมให้บริการตลอด 24 ชั่วโมง ให้ข้อมูลและตัวอย่างจำนวนมาก และครูสามารถใช้เครื่องมือใหม่ ๆ ในการประเมินนักเรียนและให้คำแนะนำได้ - -![นักเรียนวัยรุ่นห้าคนกำลังมองหน้าจอ - ภาพโดย DALLE2](../../../translated_images/students-by-DALLE2.b70fddaced1042ee47092320243050c4c9a7da78b31eeba515b09b2f0dca009b.th.png) - -เริ่มต้นกันด้วยการกำหนดแนวคิดและคำศัพท์พื้นฐานที่เราจะใช้ตลอดหลักสูตรนี้ - -## Generative AI มาจากไหน? - -แม้จะมีการพูดถึงอย่างมากในช่วงหลังจากการเปิดตัวโมเดล Generative AI เทคโนโลยีนี้ถูกพัฒนามานานหลายสิบปี โดยงานวิจัยแรกเริ่มย้อนกลับไปในยุค 60 ตอนนี้ AI มีความสามารถทางปัญญาเหมือนมนุษย์ เช่น การสนทนา ตัวอย่างเช่น [OpenAI ChatGPT](https://openai.com/chatgpt) หรือ [Bing Chat](https://www.microsoft.com/edge/features/bing-chat?WT.mc_id=academic-105485-koreyst) ซึ่งใช้โมเดล GPT สำหรับการค้นหาบนเว็บ Bing - -ย้อนกลับไปในอดีต ต้นแบบแรกของ AI คือ chatbot ที่พิมพ์ข้อความตอบโต้ โดยอาศัยฐานความรู้ที่ได้จากกลุ่มผู้เชี่ยวชาญและถูกเก็บไว้ในคอมพิวเตอร์ คำตอบในฐานความรู้จะถูกเรียกใช้โดยคำสำคัญที่ปรากฏในข้อความที่ป้อนเข้าไป แต่ไม่นานก็พบว่าวิธีนี้ไม่สามารถขยายผลได้ดี - -### วิธีการทางสถิติใน AI: Machine Learning - -จุดเปลี่ยนเกิดขึ้นในยุค 90 เมื่อมีการนำวิธีการทางสถิติมาใช้วิเคราะห์ข้อความ ส่งผลให้เกิดอัลกอริทึมใหม่ ๆ ที่เรียกว่า machine learning ซึ่งสามารถเรียนรู้รูปแบบจากข้อมูลโดยไม่ต้องถูกโปรแกรมอย่างชัดเจน วิธีนี้ช่วยให้เครื่องจักรจำลองความเข้าใจภาษามนุษย์ได้: โมเดลสถิติถูกฝึกด้วยข้อความที่จับคู่กับป้ายกำกับ ทำให้โมเดลสามารถจัดประเภทข้อความที่ไม่รู้จักด้วยป้ายกำกับที่แสดงเจตนาของข้อความนั้น - -### Neural networks และผู้ช่วยเสมือนสมัยใหม่ - -ในช่วงไม่กี่ปีที่ผ่านมา การพัฒนาฮาร์ดแวร์ที่สามารถจัดการข้อมูลจำนวนมากและการคำนวณที่ซับซ้อนมากขึ้น ส่งเสริมงานวิจัย AI จนเกิดอัลกอริทึม machine learning ขั้นสูงที่เรียกว่า neural networks หรือ deep learning - -Neural networks (โดยเฉพาะ Recurrent Neural Networks – RNNs) ช่วยพัฒนาการประมวลผลภาษาธรรมชาติอย่างมาก ทำให้สามารถแสดงความหมายของข้อความได้อย่างลึกซึ้งขึ้น โดยคำนึงถึงบริบทของคำในประโยค - -นี่คือเทคโนโลยีที่ขับเคลื่อนผู้ช่วยเสมือนที่เกิดขึ้นในทศวรรษแรกของศตวรรษใหม่ ซึ่งมีความสามารถในการตีความภาษามนุษย์ ระบุความต้องการ และดำเนินการตอบสนอง เช่น ตอบด้วยสคริปต์ที่กำหนดไว้ล่วงหน้าหรือเรียกใช้บริการจากภายนอก - -### ปัจจุบัน Generative AI - -นี่คือที่มาของ Generative AI ในปัจจุบัน ซึ่งถือเป็นส่วนหนึ่งของ deep learning - -![AI, ML, DL และ Generative AI](../../../translated_images/AI-diagram.c391fa518451a40de58d4f792c88adb8568d8cb4c48eed6e97b6b16e621eeb77.th.png) - -หลังจากงานวิจัยในวงการ AI มาหลายสิบปี สถาปัตยกรรมโมเดลใหม่ที่เรียกว่า _Transformer_ ได้ก้าวข้ามข้อจำกัดของ RNNs โดยสามารถรับข้อความที่ยาวขึ้นเป็นอินพุต Transformers ใช้กลไก attention ซึ่งช่วยให้โมเดลให้ความสำคัญกับข้อมูลที่เกี่ยวข้องมากที่สุดโดยไม่ขึ้นกับลำดับของข้อความ - -โมเดล Generative AI ส่วนใหญ่ในปัจจุบัน หรือที่เรียกว่า Large Language Models (LLMs) ซึ่งทำงานกับข้อความทั้งอินพุตและเอาต์พุต ล้วนใช้สถาปัตยกรรมนี้ โมเดลเหล่านี้ถูกฝึกด้วยข้อมูลจำนวนมหาศาลที่ไม่มีป้ายกำกับจากแหล่งต่าง ๆ เช่น หนังสือ บทความ และเว็บไซต์ สิ่งที่น่าสนใจคือโมเดลเหล่านี้สามารถปรับใช้กับงานหลากหลายและสร้างข้อความที่ถูกต้องตามหลักไวยากรณ์พร้อมความคิดสร้างสรรค์ในระดับหนึ่ง ไม่เพียงแต่เพิ่มความสามารถของเครื่องจักรในการ ‘เข้าใจ’ ข้อความอินพุต แต่ยังช่วยให้สามารถสร้างคำตอบต้นฉบับในภาษามนุษย์ได้ - -## Large Language Models ทำงานอย่างไร? - -ในบทถัดไปเราจะสำรวจโมเดล Generative AI ประเภทต่าง ๆ แต่ตอนนี้มาดูการทำงานของ Large Language Models โดยเน้นที่ OpenAI GPT (Generative Pre-trained Transformer) - -- **Tokenizer, แปลงข้อความเป็นตัวเลข**: Large Language Models รับข้อความเป็นอินพุตและสร้างข้อความเป็นเอาต์พุต แต่เนื่องจากเป็นโมเดลสถิติ จึงทำงานได้ดีกับตัวเลขมากกว่าข้อความ ดังนั้นทุกอินพุตจะถูกประมวลผลโดย tokenizer ก่อนส่งให้โมเดลหลัก Token คือชิ้นส่วนของข้อความที่ประกอบด้วยตัวอักษรจำนวนหนึ่ง หน้าที่หลักของ tokenizer คือแยกข้อความอินพุตออกเป็นชุดของ tokens จากนั้นแต่ละ token จะถูกแมปกับ token index ซึ่งเป็นการเข้ารหัสเป็นจำนวนเต็มของข้อความต้นฉบับ - -![ตัวอย่างการทำ tokenization](../../../translated_images/tokenizer-example.80a5c151ee7d1bd485eff5aca60ac3d2c1eaaff4c0746e09b98c696c959afbfa.th.png) - -- **การทำนาย token เอาต์พุต**: เมื่อได้รับ n tokens เป็นอินพุต (โดย n สูงสุดจะแตกต่างกันไปในแต่ละโมเดล) โมเดลจะทำนาย token ตัวถัดไปเป็นเอาต์พุต token นี้จะถูกเพิ่มเข้าไปในอินพุตของรอบถัดไปในรูปแบบหน้าต่างที่ขยายออก ช่วยให้ผู้ใช้ได้รับคำตอบเป็นประโยคหนึ่งหรือหลายประโยค นี่คือเหตุผลที่ถ้าคุณเคยใช้ ChatGPT อาจสังเกตเห็นว่าบางครั้งมันหยุดกลางประโยค - -- **กระบวนการเลือก token, การแจกแจงความน่าจะเป็น**: token เอาต์พุตถูกเลือกโดยโมเดลตามความน่าจะเป็นที่จะเกิดขึ้นหลังข้อความปัจจุบัน โมเดลจะทำนายการแจกแจงความน่าจะเป็นของ ‘token ถัดไป’ ทั้งหมดตามการฝึกฝน อย่างไรก็ตาม token ที่มีความน่าจะเป็นสูงสุดไม่ได้ถูกเลือกเสมอไป จะมีการเพิ่มความสุ่มในกระบวนการเลือกนี้ เพื่อให้โมเดลทำงานในลักษณะที่ไม่ตายตัว — เราจะไม่ได้ผลลัพธ์เหมือนกันทุกครั้งสำหรับอินพุตเดียวกัน ความสุ่มนี้ช่วยจำลองกระบวนการคิดสร้างสรรค์ และสามารถปรับได้ด้วยพารามิเตอร์ที่เรียกว่า temperature - -## Startup ของเราจะใช้ Large Language Models อย่างไร? - -เมื่อเราเข้าใจการทำงานภายในของ Large Language Model แล้ว มาดูตัวอย่างการใช้งานจริงที่พบบ่อย โดยเน้นที่สถานการณ์ทางธุรกิจของเรา - -ความสามารถหลักของ Large Language Model คือ _การสร้างข้อความใหม่ตั้งแต่ต้น โดยเริ่มจากข้อความอินพุตที่เขียนด้วยภาษาธรรมชาติ_ - -แต่ข้อความอินพุตและเอาต์พุตแบบไหนล่ะ? อินพุตของโมเดลใหญ่เรียกว่า prompt ส่วนเอาต์พุตเรียกว่า completion ซึ่งหมายถึงกลไกของโมเดลในการสร้าง token ถัดไปเพื่อเติมข้อความอินพุตปัจจุบัน เราจะเจาะลึกว่า prompt คืออะไรและออกแบบอย่างไรเพื่อให้ได้ประโยชน์สูงสุดจากโมเดล แต่ตอนนี้ขอแค่บอกว่า prompt อาจประกอบด้วย: - -- **คำสั่ง** ที่ระบุประเภทของเอาต์พุตที่เราคาดหวัง คำสั่งนี้บางครั้งอาจมีตัวอย่างหรือข้อมูลเพิ่มเติมแฝงอยู่ - - 1. สรุปบทความ หนังสือ รีวิวสินค้า และอื่น ๆ พร้อมทั้งสกัดข้อมูลเชิงลึกจากข้อมูลที่ไม่มีโครงสร้าง - - ![ตัวอย่างการสรุป](../../../translated_images/summarization-example.7b7ff97147b3d790477169f442b5e3f8f78079f152450e62c45dbdc23b1423c1.th.png) - - 2. การสร้างสรรค์ไอเดียและออกแบบบทความ เรียงความ งานมอบหมาย หรืออื่น ๆ - - ![ตัวอย่างการเขียนสร้างสรรค์](../../../translated_images/creative-writing-example.e24a685b5a543ad1287ad8f6c963019518920e92a1cf7510f354e85b0830fbe8.th.png) - -- **คำถาม** ที่ถามในรูปแบบการสนทนากับตัวแทน - - ![ตัวอย่างการสนทนา](../../../translated_images/conversation-example.60c2afc0f595fa599f367d36ccc3909ffc15e1d5265cb33b907d3560f3d03116.th.png) - -- ข้อความบางส่วนที่ต้องการให้เติมต่อ ซึ่งโดยนัยคือการขอความช่วยเหลือในการเขียน - - ![ตัวอย่างการเติมข้อความ](../../../translated_images/text-completion-example.cbb0f28403d427524f8f8c935f84d084a9765b683a6bf37f977df3adb868b0e7.th.png) - -- โค้ดบางส่วนพร้อมคำขอให้ช่วยอธิบายและจัดทำเอกสาร หรือคอมเมนต์ที่ขอให้สร้างโค้ดเพื่อทำงานเฉพาะ - - ![ตัวอย่างการเขียนโค้ด](../../../translated_images/coding-example.50ebabe8a6afff20267c91f18aab1957ddd9561ee2988b2362b7365aa6796935.th.png) - -ตัวอย่างข้างต้นเป็นเพียงตัวอย่างง่าย ๆ และไม่ได้แสดงศักยภาพทั้งหมดของ Large Language Models แต่มีจุดประสงค์เพื่อแสดงศักยภาพของ Generative AI โดยเฉพาะในบริบททางการศึกษา - -อย่างไรก็ตาม ผลลัพธ์จากโมเดล Generative AI ไม่สมบูรณ์แบบ และบางครั้งความคิดสร้างสรรค์ของโมเดลอาจทำให้ผลลัพธ์ออกมาเป็นคำที่มนุษย์อาจตีความว่าเป็นการบิดเบือนความจริง หรืออาจมีเนื้อหาที่ไม่เหมาะสม Generative AI ไม่ใช่ปัญญาที่แท้จริง — อย่างน้อยในความหมายที่ครอบคลุมของปัญญา ซึ่งรวมถึงการคิดวิเคราะห์และสร้างสรรค์ หรือปัญญาทางอารมณ์ มันไม่ใช่ระบบที่ตายตัว และไม่ควรเชื่อถือได้เสมอไป เพราะอาจมีการสร้างข้อมูลเท็จ เช่น การอ้างอิงผิดพลาด เนื้อหา และคำกล่าวที่ผสมผสานกับข้อมูลที่ถูกต้องและนำเสนออย่างน่าเชื่อถือ ในบทเรียนถัดไป เราจะพูดถึงข้อจำกัดเหล่านี้และวิธีจัดการกับมัน - -## การบ้าน - -การบ้านของคุณคืออ่านเพิ่มเติมเกี่ยวกับ [generative AI](https://en.wikipedia.org/wiki/Generative_artificial_intelligence?WT.mc_id=academic-105485-koreyst) และลองหาว่ามีพื้นที่ใดบ้างที่คุณอยากเพิ่ม generative AI เข้าไปในวันนี้ซึ่งยังไม่มีผลกระทบอย่างชัดเจน ผลกระทบจะต่างจากวิธีเดิมอย่างไร คุณจะทำอะไรได้ที่ไม่เคยทำได้มาก่อน หรือทำได้เร็วขึ้น? เขียนสรุป 300 คำเกี่ยวกับ startup AI ในฝันของคุณ โดยใส่หัวข้อเช่น "ปัญหา", "วิธีใช้ AI", "ผลกระทบ" และถ้าต้องการสามารถเพิ่มแผนธุรกิจได้ - -ถ้าคุณทำงานนี้เสร็จแล้ว คุณอาจพร้อมสมัครเข้าร่วมโครงการบ่มเพาะของ Microsoft, [Microsoft for Startups Founders Hub](https://www.microsoft.com/startups?WT.mc_id=academic-105485-koreyst) ซึ่งเรามีเครดิตสำหรับ Azure, OpenAI, การให้คำปรึกษา และอื่น ๆ อีกมากมาย ลองดูได้เลย! - -## แบบทดสอบความรู้ - -อะไรคือความจริงเกี่ยวกับ Large Language Models? - -1. คุณจะได้คำตอบเหมือนเดิมทุกครั้ง -2. มันทำงานได้สมบูรณ์แบบ เช่น คำนวณเลขได้ดี สร้างโค้ดที่ใช้งานได้ ฯลฯ -3. คำตอบอาจเปลี่ยนแปลงได้แม้ใช้ prompt เดิม มันยังช่วยให้คุณได้ร่างแรกของข้อความหรือโค้ด แต่คุณต้องปรับปรุงผลลัพธ์ต่อไป - -คำตอบ: 3, LLM เป็นระบบที่ไม่ตายตัว คำตอบจึงเปลี่ยนแปลงได้ แต่คุณสามารถควบคุมความแปรปรวนนี้ด้วยการตั้งค่า temperature คุณไม่ควรคาดหวังว่ามันจะทำงานได้สมบูรณ์แบบ มันถูกออกแบบมาเพื่อช่วยทำงานหนักให้คุณ ซึ่งมักหมายถึงคุณจะได้ร่างแรกที่ดีที่ต้องปรับปรุงต่อไป - -## ทำได้ดีมาก! เดินหน้าต่อไป - -หลังจากเรียนจบบทเรียนนี้แล้ว ลองดู [คอลเลกชันการเรียนรู้ Generative AI](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) ของเราเพื่อพัฒนาความรู้ด้าน Generative AI ต่อไป! -ไปที่บทเรียนที่ 2 ซึ่งเราจะมาดูวิธี [สำรวจและเปรียบเทียบประเภท LLM ต่างๆ](../02-exploring-and-comparing-different-llms/README.md?WT.mc_id=academic-105485-koreyst)! - -**ข้อจำกัดความรับผิดชอบ**: -เอกสารนี้ได้รับการแปลโดยใช้บริการแปลภาษาอัตโนมัติ [Co-op Translator](https://github.com/Azure/co-op-translator) แม้เราจะพยายามให้ความถูกต้องสูงสุด แต่โปรดทราบว่าการแปลอัตโนมัติอาจมีข้อผิดพลาดหรือความไม่ถูกต้อง เอกสารต้นฉบับในภาษาต้นทางถือเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลที่สำคัญ ขอแนะนำให้ใช้บริการแปลโดยผู้เชี่ยวชาญมนุษย์ เราไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความผิดใด ๆ ที่เกิดจากการใช้การแปลนี้ \ No newline at end of file + +# การแนะนำ AI สร้างสรรค์และโมเดลภาษาขนาดใหญ่ + +[![การแนะนำ AI สร้างสรรค์และโมเดลภาษาขนาดใหญ่](../../../translated_images/01-lesson-banner.2424cfd092f43366707ee2d15749f62f76f80ea3cb0816f4f31d0abd5ffd4dd1.th.png)](https://youtu.be/lFXQkBvEe0o?si=6ZBcQTwLJJDpnX0K) + +_(คลิกที่ภาพด้านบนเพื่อดูวิดีโอของบทเรียนนี้)_ + +AI สร้างสรรค์คือปัญญาประดิษฐ์ที่สามารถสร้างข้อความ รูปภาพ และเนื้อหาอื่น ๆ ได้ สิ่งที่ทำให้มันเป็นเทคโนโลยีที่ยอดเยี่ยมคือการที่มันทำให้ AI เข้าถึงได้ง่ายขึ้น ทุกคนสามารถใช้งานได้เพียงแค่ใช้ข้อความสั้น ๆ หรือประโยคที่เขียนในภาษาธรรมชาติ คุณไม่จำเป็นต้องเรียนรู้ภาษาโปรแกรมอย่าง Java หรือ SQL เพื่อทำสิ่งที่มีคุณค่า สิ่งที่คุณต้องทำคือใช้ภาษาของคุณ ระบุสิ่งที่คุณต้องการ และ AI จะเสนอคำแนะนำให้คุณ แอปพลิเคชันและผลกระทบของสิ่งนี้มีมากมาย เช่น การเขียนหรือทำความเข้าใจรายงาน การเขียนแอปพลิเคชัน และอื่น ๆ อีกมากมาย ทั้งหมดนี้ใช้เวลาเพียงไม่กี่วินาที + +ในหลักสูตรนี้ เราจะสำรวจว่าเราใช้ AI สร้างสรรค์ในสตาร์ทอัพของเราเพื่อเปิดโอกาสใหม่ ๆ ในโลกการศึกษาอย่างไร และเราจะจัดการกับความท้าทายที่หลีกเลี่ยงไม่ได้ที่เกี่ยวข้องกับผลกระทบทางสังคมของการใช้งานและข้อจำกัดของเทคโนโลยีอย่างไร + +## การแนะนำ + +บทเรียนนี้จะครอบคลุม: + +- การแนะนำสถานการณ์ธุรกิจ: ไอเดียและภารกิจของสตาร์ทอัพของเรา +- AI สร้างสรรค์และวิวัฒนาการของเทคโนโลยีในปัจจุบัน +- การทำงานภายในของโมเดลภาษาขนาดใหญ่ +- ความสามารถหลักและกรณีการใช้งานจริงของโมเดลภาษาขนาดใหญ่ + +## เป้าหมายการเรียนรู้ + +หลังจากจบบทเรียนนี้ คุณจะเข้าใจ: + +- AI สร้างสรรค์คืออะไรและโมเดลภาษาขนาดใหญ่ทำงานอย่างไร +- วิธีที่คุณสามารถใช้โมเดลภาษาขนาดใหญ่ในกรณีการใช้งานต่าง ๆ โดยเน้นไปที่สถานการณ์ในด้านการศึกษา + +## สถานการณ์: สตาร์ทอัพด้านการศึกษาของเรา + +AI สร้างสรรค์เป็นตัวแทนของเทคโนโลยี AI ที่ก้าวหน้าที่สุด ผลักดันขอบเขตของสิ่งที่เคยคิดว่าเป็นไปไม่ได้ โมเดล AI สร้างสรรค์มีความสามารถและการใช้งานหลากหลาย แต่สำหรับหลักสูตรนี้ เราจะสำรวจว่ามันเปลี่ยนแปลงการศึกษาอย่างไรผ่านสตาร์ทอัพสมมติ เราจะเรียกสตาร์ทอัพนี้ว่า _สตาร์ทอัพของเรา_ สตาร์ทอัพของเราทำงานในด้านการศึกษาด้วยภารกิจที่ทะเยอทะยานคือ + +> _ปรับปรุงการเข้าถึงการเรียนรู้ในระดับโลก เพื่อให้การศึกษาเข้าถึงได้อย่างเท่าเทียม และมอบประสบการณ์การเรียนรู้ที่ปรับให้เหมาะสมกับความต้องการของผู้เรียนแต่ละคน_ + +ทีมของสตาร์ทอัพของเราตระหนักว่าเราจะไม่สามารถบรรลุเป้าหมายนี้ได้หากไม่ใช้หนึ่งในเครื่องมือที่ทรงพลังที่สุดในยุคปัจจุบัน – โมเดลภาษาขนาดใหญ่ (LLMs) + +AI สร้างสรรค์คาดว่าจะเปลี่ยนแปลงวิธีการเรียนรู้และการสอนในปัจจุบัน โดยนักเรียนสามารถเข้าถึงครูเสมือนจริงได้ตลอด 24 ชั่วโมง ที่ให้ข้อมูลและตัวอย่างมากมาย และครูสามารถใช้เครื่องมือที่เป็นนวัตกรรมเพื่อประเมินนักเรียนและให้คำแนะนำ + +![นักเรียนห้าคนกำลังดูหน้าจอ - ภาพโดย DALLE2](../../../translated_images/students-by-DALLE2.b70fddaced1042ee47092320243050c4c9a7da78b31eeba515b09b2f0dca009b.th.png) + +เริ่มต้นกันด้วยการกำหนดแนวคิดและคำศัพท์พื้นฐานที่เราจะใช้ตลอดหลักสูตรนี้ + +## เราได้ AI สร้างสรรค์มาอย่างไร? + +แม้จะมี _กระแส_ ที่เกิดขึ้นจากการประกาศโมเดล AI สร้างสรรค์เมื่อเร็ว ๆ นี้ แต่เทคโนโลยีนี้ได้ถูกพัฒนามาหลายทศวรรษ โดยมีการวิจัยครั้งแรกตั้งแต่ยุค 60s ตอนนี้เราอยู่ในจุดที่ AI มีความสามารถทางปัญญาของมนุษย์ เช่น การสนทนา อย่างที่เห็นได้จาก [OpenAI ChatGPT](https://openai.com/chatgpt) หรือ [Bing Chat](https://www.microsoft.com/edge/features/bing-chat?WT.mc_id=academic-105485-koreyst) ซึ่งใช้โมเดล GPT ในการค้นหาบนเว็บและสนทนา + +ย้อนกลับไปเล็กน้อย โปรโตไทป์แรกของ AI ประกอบด้วยแชทบอทที่พิมพ์ข้อความ โดยอาศัยฐานความรู้ที่สกัดจากกลุ่มผู้เชี่ยวชาญและแสดงผลในคอมพิวเตอร์ คำตอบในฐานความรู้ถูกกระตุ้นโดยคำสำคัญที่ปรากฏในข้อความที่ป้อนเข้าไป อย่างไรก็ตาม ไม่นานก็เห็นได้ชัดว่าแนวทางนี้โดยใช้แชทบอทที่พิมพ์ข้อความไม่สามารถขยายตัวได้ดี + +### แนวทางทางสถิติต่อ AI: การเรียนรู้ของเครื่อง + +จุดเปลี่ยนเกิดขึ้นในช่วงยุค 90s ด้วยการประยุกต์ใช้แนวทางทางสถิติต่อการวิเคราะห์ข้อความ สิ่งนี้นำไปสู่การพัฒนาอัลกอริทึมใหม่ – ที่รู้จักกันในชื่อการเรียนรู้ของเครื่อง – ซึ่งสามารถเรียนรู้รูปแบบจากข้อมูลโดยไม่ต้องถูกโปรแกรมอย่างชัดเจน แนวทางนี้ช่วยให้เครื่องจำลองความเข้าใจภาษาของมนุษย์ได้: โมเดลทางสถิติถูกฝึกด้วยคู่ข้อความและป้ายกำกับ ทำให้โมเดลสามารถจัดประเภทข้อความที่ป้อนเข้ามาโดยไม่รู้จักด้วยป้ายกำกับที่กำหนดไว้ล่วงหน้า ซึ่งแสดงถึงเจตนาของข้อความ + +### เครือข่ายประสาทและผู้ช่วยเสมือนในยุคปัจจุบัน + +ในช่วงไม่กี่ปีที่ผ่านมา การพัฒนาทางเทคโนโลยีของฮาร์ดแวร์ที่สามารถจัดการข้อมูลจำนวนมากขึ้นและการคำนวณที่ซับซ้อนมากขึ้น ได้ส่งเสริมการวิจัยใน AI นำไปสู่การพัฒนาอัลกอริทึมการเรียนรู้ของเครื่องขั้นสูงที่รู้จักกันในชื่อเครือข่ายประสาทหรืออัลกอริทึมการเรียนรู้เชิงลึก + +เครือข่ายประสาท (โดยเฉพาะเครือข่ายประสาทแบบวนซ้ำ – RNNs) ได้เพิ่มประสิทธิภาพการประมวลผลภาษาธรรมชาติอย่างมาก ทำให้สามารถแสดงความหมายของข้อความในรูปแบบที่มีความหมายมากขึ้น โดยให้ความสำคัญกับบริบทของคำในประโยค + +นี่คือเทคโนโลยีที่ขับเคลื่อนผู้ช่วยเสมือนที่เกิดขึ้นในทศวรรษแรกของศตวรรษใหม่ ซึ่งมีความสามารถสูงในการตีความภาษาของมนุษย์ ระบุความต้องการ และดำเนินการเพื่อสนองความต้องการนั้น – เช่น การตอบกลับด้วยสคริปต์ที่กำหนดไว้ล่วงหน้าหรือการใช้บริการของบุคคลที่สาม + +### ปัจจุบัน, AI สร้างสรรค์ + +และนี่คือวิธีที่เรามาถึง AI สร้างสรรค์ในปัจจุบัน ซึ่งสามารถมองว่าเป็นส่วนย่อยของการเรียนรู้เชิงลึก + +![AI, ML, DL และ AI สร้างสรรค์](../../../translated_images/AI-diagram.c391fa518451a40de58d4f792c88adb8568d8cb4c48eed6e97b6b16e621eeb77.th.png) + +หลังจากการวิจัยในด้าน AI มาหลายทศวรรษ สถาปัตยกรรมโมเดลใหม่ – ที่เรียกว่า _Transformer_ – ได้เอาชนะข้อจำกัดของ RNNs โดยสามารถรับลำดับข้อความที่ยาวขึ้นมากเป็นข้อมูลเข้า Transformers ใช้กลไกการให้ความสนใจ ทำให้โมเดลสามารถให้ความสำคัญกับข้อมูลที่ได้รับในระดับต่าง ๆ โดย ‘ให้ความสนใจมากขึ้น’ ในที่ที่ข้อมูลที่เกี่ยวข้องมากที่สุดถูกกระจายอยู่ โดยไม่คำนึงถึงลำดับของมันในลำดับข้อความ + +โมเดล AI สร้างสรรค์ล่าสุดส่วนใหญ่ – ที่รู้จักกันในชื่อโมเดลภาษาขนาดใหญ่ (LLMs) เนื่องจากพวกมันทำงานกับข้อมูลเข้าและออกที่เป็นข้อความ – ล้วนใช้สถาปัตยกรรมนี้ สิ่งที่น่าสนใจเกี่ยวกับโมเดลเหล่านี้ – ที่ถูกฝึกด้วยข้อมูลจำนวนมหาศาลที่ไม่มีป้ายกำกับจากแหล่งข้อมูลหลากหลาย เช่น หนังสือ บทความ และเว็บไซต์ – คือพวกมันสามารถปรับให้เหมาะสมกับงานหลากหลายและสร้างข้อความที่ถูกต้องตามหลักไวยากรณ์พร้อมความสร้างสรรค์ในระดับหนึ่ง ดังนั้น ไม่เพียงแต่พวกมันเพิ่มความสามารถของเครื่องในการ ‘เข้าใจ’ ข้อความที่ป้อนเข้า แต่ยังเพิ่มความสามารถในการสร้างคำตอบต้นฉบับในภาษามนุษย์ + +## โมเดลภาษาขนาดใหญ่ทำงานอย่างไร? + +ในบทถัดไป เราจะสำรวจประเภทต่าง ๆ ของโมเดล AI สร้างสรรค์ แต่สำหรับตอนนี้ มาดูกันว่าโมเดลภาษาขนาดใหญ่ทำงานอย่างไร โดยเน้นไปที่โมเดล GPT (Generative Pre-trained Transformer) ของ OpenAI + +- **Tokenizer, ข้อความเป็นตัวเลข**: โมเดลภาษาขนาดใหญ่รับข้อความเป็นข้อมูลเข้าและสร้างข้อความเป็นข้อมูลออก อย่างไรก็ตาม เนื่องจากเป็นโมเดลทางสถิติ พวกมันทำงานได้ดีกว่ากับตัวเลขมากกว่าลำดับข้อความ นั่นคือเหตุผลที่ทุกข้อมูลเข้าของโมเดลถูกประมวลผลโดย tokenizer ก่อนที่จะถูกใช้โดยโมเดลหลัก Token คือส่วนของข้อความ – ประกอบด้วยจำนวนตัวอักษรที่เปลี่ยนแปลงได้ ดังนั้นงานหลักของ tokenizer คือการแบ่งข้อมูลเข้าออกเป็นอาร์เรย์ของ tokens จากนั้นแต่ละ token จะถูกจับคู่กับ token index ซึ่งเป็นการเข้ารหัสตัวเลขของส่วนข้อความต้นฉบับ + +![ตัวอย่างการทำ tokenization](../../../translated_images/tokenizer-example.80a5c151ee7d1bd485eff5aca60ac3d2c1eaaff4c0746e09b98c696c959afbfa.th.png) + +- **การทำนาย token ข้อมูลออก**: เมื่อได้รับ n tokens เป็นข้อมูลเข้า (โดย n สูงสุดจะแตกต่างกันไปในแต่ละโมเดล) โมเดลสามารถทำนาย token หนึ่งตัวเป็นข้อมูลออกได้ Token นี้จะถูกนำไปใช้ในข้อมูลเข้าของการวนซ้ำครั้งถัดไป ในรูปแบบหน้าต่างที่ขยายออก ทำให้ประสบการณ์ผู้ใช้ดีขึ้นในการได้รับหนึ่ง (หรือหลาย) ประโยคเป็นคำตอบ นี่อธิบายว่าทำไม หากคุณเคยเล่นกับ ChatGPT คุณอาจสังเกตเห็นว่าบางครั้งมันดูเหมือนหยุดกลางประโยค + +- **กระบวนการเลือก, การแจกแจงความน่าจะเป็น**: Token ข้อมูลออกถูกเลือกโดยโมเดลตามความน่าจะเป็นที่จะเกิดขึ้นหลังจากลำดับข้อความปัจจุบัน นี่เป็นเพราะโมเดลทำนายการแจกแจงความน่าจะเป็นเหนือ ‘token ถัดไป’ ทั้งหมดที่เป็นไปได้ ซึ่งคำนวณจากการฝึกของมัน อย่างไรก็ตาม ไม่ใช่ทุกครั้งที่ token ที่มีความน่าจะเป็นสูงสุดถูกเลือกจากการแจกแจงที่ได้ มีการเพิ่มระดับของความสุ่มในตัวเลือกนี้ ในลักษณะที่โมเดลทำงานในรูปแบบที่ไม่กำหนดแน่นอน – เราจะไม่ได้รับข้อมูลออกที่เหมือนกันทุกครั้งสำหรับข้อมูลเข้าที่เหมือนกัน ระดับของความสุ่มนี้ถูกเพิ่มเพื่อจำลองกระบวนการคิดสร้างสรรค์ และสามารถปรับแต่งได้โดยใช้พารามิเตอร์ของโมเดลที่เรียกว่า temperature + +## สตาร์ทอัพของเราสามารถใช้โมเดลภาษาขนาดใหญ่ได้อย่างไร? + +ตอนนี้เราเข้าใจการทำงานภายในของโมเดลภาษาขนาดใหญ่แล้ว มาดูตัวอย่างการใช้งานจริงของงานที่พวกมันสามารถทำได้ดี โดยเน้นไปที่สถานการณ์ธุรกิจของเรา เรากล่าวว่าความสามารถหลักของโมเดลภาษาขนาดใหญ่คือ _การสร้างข้อความจากศูนย์ โดยเริ่มจากข้อมูลเข้าเป็นข้อความที่เขียนในภาษาธรรมชาติ_ + +แต่ข้อมูลเข้าและข้อมูลออกแบบไหนล่ะ? +ข้อมูลเข้าของโมเดลภาษาขนาดใหญ่เรียกว่า prompt ในขณะที่ข้อมูลออกเรียกว่า completion ซึ่งหมายถึงกลไกของโมเดลในการสร้าง token ถัดไปเพื่อเติมเต็มข้อมูลเข้าปัจจุบัน เราจะเจาะลึกว่า prompt คืออะไรและวิธีการออกแบบมันเพื่อให้ได้ประโยชน์สูงสุดจากโมเดลของเรา แต่สำหรับตอนนี้ มาดูกันว่า prompt อาจประกอบด้วยอะไรบ้าง: + +- **คำแนะนำ** ที่ระบุประเภทของข้อมูลออกที่เราคาดหวังจากโมเดล คำแนะนำนี้บางครั้งอาจรวมตัวอย่างหรือข้อมูลเพิ่มเติมบางอย่าง + + 1. การสรุปบทความ หนังสือ รีวิวสินค้า และอื่น ๆ พร้อมการสกัดข้อมูลเชิงลึกจากข้อมูลที่ไม่มีโครงสร้าง + + ![ตัวอย่างการสรุป](../../../translated_images/summarization-example.7b7ff97147b3d790477169f442b5e3f8f78079f152450e62c45dbdc23b1423c1.th.png) + + 2. การสร้างสรรค์ไอเดียและการออกแบบบทความ เรียงความ งานเขียน หรืออื่น ๆ + + ![ตัวอย่างการเขียนสร้างสรรค์](../../../translated_images/creative-writing-example.e24a685b5a543ad1287ad8f6c963019518920e92a1cf7510f354e85b0830fbe8.th.png) + +- **คำถาม** ที่ถามในรูปแบบการสนทนากับตัวแทน + + ![ตัวอย่างการสนทนา](../../../translated_images/conversation-example.60c2afc0f595fa599f367d36ccc3909ffc15e1d5265cb33b907d3560f3d03116.th.png) + +- ส่วนของ **ข้อความเพื่อเติมเต็ม** ซึ่งโดยนัยคือการขอความช่วยเหลือในการเขียน + + ![ตัวอย่างการเติมเต็มข้อความ](../../../translated_images/text-completion-example.cbb0f28403d427524f8f8c935f84d084a9765b683a6bf37f977df3adb868b0e7.th.png) + +- ส่วนของ **โค้ด** พร้อมกับการขอคำอธิบายและการจัดทำเอกสาร หรือความคิดเห็นที่ขอให้สร้างโค้ดที่ทำงานเฉพาะ + + ![ตัวอย่างการเขียนโค้ด](../../../translated_images/coding-example.50ebabe8a6afff20267c91f18aab1957ddd9561ee2988b2362b7365aa6796935.th.png) + +ตัวอย่างข้างต้นค่อนข้างง่ายและไม่ได้ตั้งใจให้เป็นการแสดงความสามารถของโมเดลภาษาขนาดใหญ่ที่ครบถ้วน พวกมันมีจุดประสงค์เพื่อแสดงศักยภาพของการใช้ AI สร้างสรรค์ โดยเฉพาะแต่ไม่จำกัดเฉพาะบริบทด้านการศึกษา + +นอกจากนี้ ข้อมูลออกของโมเดล AI สร้างสรรค์ไม่สมบูรณ์แบบ และบางครั้งความสร้างสรรค์ของโมเดลอาจทำงานตรงข้ามกับมัน ส่งผลให้ข้อมูลออกเป็นการผสมผสานของคำที่ผู้ใช้มนุษย์สามารถตีความว่าเป็นการบิดเบือนความจริง หรืออาจเป็นการล่วงละเมิด AI สร้างสรรค์ไม่ใช่ปัญญา – อย่างน้อยในนิยามที่ครอบคลุมของปัญญา รวมถึงการให้เหตุผลเชิงวิพากษ์และสร้างสรรค์ หรือปัญญาทางอารมณ์; มันไม่ใช่ระบบที่กำหนดแน่นอน และมันไม่ใช่สิ่งที่เชื่อถือได้ เนื่องจากการสร้างข้อมูลที่ผิด เช่น การอ้างอิงที่ผิดพลาด เนื้อหา และข้อความ อาจถูกผสมกับข้อมูลที่ถูกต้อง และนำเสนอในลักษณะที่โน้มน้าวใจและมั่นใจ ในบทเรียนถัดไป เราจะจัดการกับข้อจำกัดเหล่านี้และดูว่าเราสามารถทำอะไรเพื่อบรรเทาพวกมัน + +## งานที่ได้รับมอบหมาย + +งานของคุณคือการอ่านเพิ่มเติมเกี่ยวกับ [AI สร้างสรรค์](https://en.wikipedia.org/wiki/Generative_artificial_intelligence?WT.mc_id=academic-105485-koreyst) และลองระบุพื้นที่ที่คุณจะเพิ่ม AI สร้างสรรค์ในวันนี้ที่ยังไม่มีมัน ผลกระทบจะต่างจากการทำแบบ "วิธีเดิม" อย่างไร คุณสามารถทำสิ่งที่ไม่เคยทำได้มาก่อน หรือคุณเร็วขึ้นหรือไม่? เขียนสรุป 300 คำเกี่ยวกับสิ่งที่สตาร์ทอัพ AI ในฝันของคุณจะมีลักษณะอย่างไร และรวมส่วนหัวเช่น "ปัญหา", "วิธีที่ฉันจะใช้ AI", "ผลกระทบ" และแผนธุรกิจ (ถ้ามี) + +หากคุณทำงานนี้ คุณอาจพร้อมที่จะสมัครเข้าร่วมโครงการบ่มเพาะของ Microsoft, [Microsoft for Startups Founders Hub](https://www.microsoft.com/startups?WT.mc_id=academic-105485-koreyst) เรามีเครดิตสำหรับทั้ง Azure, OpenAI, การให้คำปรึกษา และอื่น ๆ อีกมากมาย ลองดูสิ! + +## การตรวจสอบความรู้ + +อะไรที่เป็นจริงเกี่ยวกับโมเดลภาษาขนาดใหญ่? + +1. คุณจะได้รับคำตอบเดิมทุกครั้ง +1. มันทำสิ่งต่าง ๆ ได้อย่างสมบูรณ์ +ไปที่บทเรียนที่ 2 ซึ่งเราจะมาดูวิธี [สำรวจและเปรียบเทียบประเภท LLM ต่างๆ](../02-exploring-and-comparing-different-llms/README.md?WT.mc_id=academic-105485-koreyst)! + +--- + +**ข้อจำกัดความรับผิดชอบ**: +เอกสารนี้ได้รับการแปลโดยใช้บริการแปลภาษา AI [Co-op Translator](https://github.com/Azure/co-op-translator) แม้ว่าเราจะพยายามให้การแปลมีความถูกต้อง แต่โปรดทราบว่าการแปลโดยอัตโนมัติอาจมีข้อผิดพลาดหรือความไม่ถูกต้อง เอกสารต้นฉบับในภาษาดั้งเดิมควรถือเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลสำคัญ แนะนำให้ใช้บริการแปลภาษามนุษย์ที่มีความเชี่ยวชาญ เราไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความผิดที่เกิดจากการใช้การแปลนี้ \ No newline at end of file diff --git a/translations/th/02-exploring-and-comparing-different-llms/README.md b/translations/th/02-exploring-and-comparing-different-llms/README.md index 635fbc93ce..f74877041a 100644 --- a/translations/th/02-exploring-and-comparing-different-llms/README.md +++ b/translations/th/02-exploring-and-comparing-different-llms/README.md @@ -1,214 +1,202 @@ - -# การสำรวจและเปรียบเทียบ LLMs ต่างๆ - -[![การสำรวจและเปรียบเทียบ LLMs ต่างๆ](../../../translated_images/02-lesson-banner.ef94c84979f97f60f07e27d905e708cbcbdf78707120553ccab27d91c947805b.th.png)](https://aka.ms/gen-ai-lesson2-gh?WT.mc_id=academic-105485-koreyst) - -> _คลิกที่ภาพด้านบนเพื่อดูวิดีโอของบทเรียนนี้_ - -จากบทเรียนก่อนหน้า เราได้เห็นว่า Generative AI กำลังเปลี่ยนแปลงภูมิทัศน์ทางเทคโนโลยีอย่างไร, LLMs ทำงานอย่างไร และธุรกิจอย่างสตาร์ทอัพของเราจะนำไปใช้กับกรณีใช้งานและเติบโตได้อย่างไร! ในบทนี้ เราจะเปรียบเทียบและวิเคราะห์ข้อดีข้อเสียของโมเดลภาษาใหญ่ (LLMs) ประเภทต่างๆ - -ขั้นตอนถัดไปในเส้นทางของสตาร์ทอัพของเราคือการสำรวจภูมิทัศน์ปัจจุบันของ LLMs และทำความเข้าใจว่าโมเดลใดเหมาะสมกับกรณีใช้งานของเรา - -## บทนำ - -บทเรียนนี้จะครอบคลุม: - -- ประเภทต่างๆ ของ LLMs ในภูมิทัศน์ปัจจุบัน -- การทดสอบ, การปรับปรุง และการเปรียบเทียบโมเดลต่างๆ สำหรับกรณีใช้งานของคุณใน Azure -- วิธีการนำ LLM ไปใช้งาน - -## เป้าหมายการเรียนรู้ - -หลังจากเรียนบทนี้จบ คุณจะสามารถ: - -- เลือกโมเดลที่เหมาะสมกับกรณีใช้งานของคุณ -- เข้าใจวิธีการทดสอบ, ปรับปรุง และเพิ่มประสิทธิภาพของโมเดล -- รู้วิธีที่ธุรกิจนำโมเดลไปใช้งาน - -## ทำความเข้าใจประเภทต่างๆ ของ LLMs - -LLMs สามารถแบ่งประเภทได้หลายแบบตามสถาปัตยกรรม, ข้อมูลที่ใช้ฝึก และกรณีใช้งาน การเข้าใจความแตกต่างเหล่านี้จะช่วยให้สตาร์ทอัพของเราเลือกโมเดลที่เหมาะสมกับสถานการณ์ และเข้าใจวิธีทดสอบ, ปรับปรุง และเพิ่มประสิทธิภาพ - -มีโมเดล LLMs หลายประเภท การเลือกโมเดลขึ้นอยู่กับวัตถุประสงค์การใช้งาน, ข้อมูลของคุณ, งบประมาณ และปัจจัยอื่นๆ - -ขึ้นอยู่กับว่าคุณต้องการใช้โมเดลสำหรับข้อความ, เสียง, วิดีโอ, การสร้างภาพ หรืออื่นๆ คุณอาจเลือกโมเดลที่แตกต่างกัน - -- **การรู้จำเสียงและคำพูด** สำหรับวัตถุประสงค์นี้ โมเดลประเภท Whisper เป็นตัวเลือกที่ดีเพราะเป็นโมเดลทั่วไปที่เน้นการรู้จำคำพูด ฝึกด้วยข้อมูลเสียงหลากหลายและสามารถรู้จำคำพูดหลายภาษาได้ เรียนรู้เพิ่มเติมเกี่ยวกับ [โมเดลประเภท Whisper ที่นี่](https://platform.openai.com/docs/models/whisper?WT.mc_id=academic-105485-koreyst) - -- **การสร้างภาพ** สำหรับการสร้างภาพ DALL-E และ Midjourney เป็นตัวเลือกที่รู้จักกันดี DALL-E ให้บริการโดย Azure OpenAI [อ่านเพิ่มเติมเกี่ยวกับ DALL-E ที่นี่](https://platform.openai.com/docs/models/dall-e?WT.mc_id=academic-105485-koreyst) และในบทที่ 9 ของหลักสูตรนี้ - -- **การสร้างข้อความ** โมเดลส่วนใหญ่ถูกฝึกเพื่อสร้างข้อความ และคุณมีตัวเลือกมากมายตั้งแต่ GPT-3.5 ถึง GPT-4 ซึ่งมีค่าใช้จ่ายต่างกัน โดย GPT-4 เป็นรุ่นที่แพงที่สุด ควรลองใช้ [Azure OpenAI playground](https://oai.azure.com/portal/playground?WT.mc_id=academic-105485-koreyst) เพื่อประเมินว่าโมเดลใดเหมาะกับความต้องการของคุณทั้งในด้านความสามารถและค่าใช้จ่าย - -- **มัลติ-โมดัล** หากคุณต้องการจัดการข้อมูลหลายประเภททั้งอินพุตและเอาต์พุต คุณอาจสนใจโมเดลอย่าง [gpt-4 turbo with vision หรือ gpt-4o](https://learn.microsoft.com/azure/ai-services/openai/concepts/models#gpt-4-and-gpt-4-turbo-models?WT.mc_id=academic-105485-koreyst) ซึ่งเป็นโมเดลล่าสุดของ OpenAI ที่สามารถผสมผสานการประมวลผลภาษาธรรมชาติกับการเข้าใจภาพ ช่วยให้โต้ตอบผ่านอินเทอร์เฟซมัลติ-โมดัลได้ - -การเลือกโมเดลหมายถึงคุณจะได้ความสามารถพื้นฐานบางอย่าง ซึ่งอาจยังไม่เพียงพอเสมอไป บ่อยครั้งคุณมีข้อมูลเฉพาะของบริษัทที่ต้องการบอกกับ LLM มีหลายวิธีในการจัดการเรื่องนี้ ซึ่งจะกล่าวถึงในส่วนถัดไป - -### Foundation Models กับ LLMs - -คำว่า Foundation Model ถูก [ตั้งขึ้นโดยนักวิจัยจาก Stanford](https://arxiv.org/abs/2108.07258?WT.mc_id=academic-105485-koreyst) และนิยามว่าเป็นโมเดล AI ที่มีคุณสมบัติดังนี้: - -- **ฝึกด้วยการเรียนรู้แบบไม่มีผู้สอนหรือการเรียนรู้ด้วยตนเอง** หมายความว่าโมเดลถูกฝึกด้วยข้อมูลมัลติ-โมดัลที่ไม่มีป้ายกำกับ และไม่ต้องการการติดป้ายหรือการระบุข้อมูลโดยมนุษย์ในกระบวนการฝึก -- **เป็นโมเดลขนาดใหญ่** โดยใช้โครงข่ายประสาทเทียมลึกที่มีพารามิเตอร์นับพันล้านตัว -- **โดยปกติใช้เป็น ‘ฐาน’ สำหรับโมเดลอื่นๆ** หมายความว่าสามารถใช้เป็นจุดเริ่มต้นสำหรับการสร้างโมเดลอื่นๆ โดยการปรับแต่งเพิ่มเติม - -![Foundation Models versus LLMs](../../../translated_images/FoundationModel.e4859dbb7a825c94b284f17eae1c186aabc21d4d8644331f5b007d809cf8d0f2.th.png) - -ที่มาของภาพ: [Essential Guide to Foundation Models and Large Language Models | โดย Babar M Bhatti | Medium](https://thebabar.medium.com/essential-guide-to-foundation-models-and-large-language-models-27dab58f7404) - -เพื่อให้เข้าใจความแตกต่างนี้ชัดเจนขึ้น ลองดูตัวอย่าง ChatGPT ในการสร้างเวอร์ชันแรกของ ChatGPT โมเดลที่ชื่อ GPT-3.5 ถูกใช้เป็น Foundation Model ซึ่งหมายความว่า OpenAI ใช้ข้อมูลเฉพาะสำหรับแชทเพื่อสร้างเวอร์ชันที่ปรับแต่งของ GPT-3.5 ที่เชี่ยวชาญในการทำงานในสถานการณ์สนทนา เช่น แชทบอท - -![Foundation Model](../../../translated_images/Multimodal.2c389c6439e0fc51b0b7b226d95d7d900d372ae66902d71b8ce5ec4951b8efbe.th.png) - -ที่มาของภาพ: [2108.07258.pdf (arxiv.org)](https://arxiv.org/pdf/2108.07258.pdf?WT.mc_id=academic-105485-koreyst) - -### โมเดลโอเพนซอร์สกับโมเดลลิขสิทธิ์ - -อีกวิธีหนึ่งในการแบ่งประเภท LLMs คือแบ่งตามว่าเป็นโอเพนซอร์สหรือโมเดลลิขสิทธิ์ - -โมเดลโอเพนซอร์สคือโมเดลที่เปิดให้สาธารณชนใช้งานได้และใครก็ใช้ได้ มักถูกเผยแพร่โดยบริษัทผู้สร้างหรือชุมชนนักวิจัย โมเดลเหล่านี้สามารถตรวจสอบ, ปรับแต่ง และใช้งานในกรณีต่างๆ ได้ แต่ไม่เสมอไปที่จะเหมาะกับการใช้งานในระดับผลิต และอาจมีประสิทธิภาพต่ำกว่าโมเดลลิขสิทธิ์ นอกจากนี้ งบประมาณสำหรับโมเดลโอเพนซอร์สอาจจำกัด และอาจไม่ได้รับการดูแลหรืออัปเดตอย่างต่อเนื่อง ตัวอย่างโมเดลโอเพนซอร์สยอดนิยมได้แก่ [Alpaca](https://crfm.stanford.edu/2023/03/13/alpaca.html?WT.mc_id=academic-105485-koreyst), [Bloom](https://huggingface.co/bigscience/bloom) และ [LLaMA](https://llama.meta.com) - -โมเดลลิขสิทธิ์คือโมเดลที่เป็นกรรมสิทธิ์ของบริษัทและไม่เปิดให้สาธารณชนใช้งาน มักถูกปรับแต่งให้เหมาะกับการใช้งานในระดับผลิต แต่ไม่อนุญาตให้ตรวจสอบ, ปรับแต่ง หรือใช้งานในกรณีต่างๆ ได้อย่างอิสระ นอกจากนี้ โมเดลเหล่านี้มักไม่ฟรี และอาจต้องสมัครสมาชิกหรือจ่ายเงินเพื่อใช้งาน ผู้ใช้จึงต้องไว้วางใจเจ้าของโมเดลในเรื่องความเป็นส่วนตัวของข้อมูลและการใช้ AI อย่างรับผิดชอบ ตัวอย่างโมเดลลิขสิทธิ์ยอดนิยมได้แก่ [OpenAI models](https://platform.openai.com/docs/models/overview?WT.mc_id=academic-105485-koreyst), [Google Bard](https://sapling.ai/llm/bard?WT.mc_id=academic-105485-koreyst) และ [Claude 2](https://www.anthropic.com/index/claude-2?WT.mc_id=academic-105485-koreyst) - -### Embedding กับ การสร้างภาพ กับ การสร้างข้อความและโค้ด - -LLMs ยังสามารถแบ่งตามประเภทของผลลัพธ์ที่สร้างได้ - -Embedding คือโมเดลที่แปลงข้อความเป็นรูปแบบตัวเลขที่เรียกว่า embedding ซึ่งเป็นตัวแทนเชิงตัวเลขของข้อความอินพุต Embedding ช่วยให้เครื่องเข้าใจความสัมพันธ์ระหว่างคำหรือประโยคได้ง่ายขึ้น และสามารถนำไปใช้เป็นอินพุตให้โมเดลอื่นๆ เช่น โมเดลจัดประเภท หรือโมเดลจัดกลุ่มที่ทำงานได้ดีขึ้นกับข้อมูลเชิงตัวเลข โมเดล embedding มักใช้ในงาน transfer learning ที่สร้างโมเดลสำหรับงานแทนที่มีข้อมูลมาก จากนั้นนำ embedding ที่ได้ไปใช้กับงานอื่น ตัวอย่างเช่น [OpenAI embeddings](https://platform.openai.com/docs/models/embeddings?WT.mc_id=academic-105485-koreyst) - -![Embedding](../../../translated_images/Embedding.c3708fe988ccf76073d348483dbb7569f622211104f073e22e43106075c04800.th.png) - -โมเดลสร้างภาพคือโมเดลที่สร้างภาพ มักใช้สำหรับแก้ไขภาพ, สังเคราะห์ภาพ และแปลงภาพ โมเดลเหล่านี้มักถูกฝึกด้วยชุดข้อมูลภาพขนาดใหญ่ เช่น [LAION-5B](https://laion.ai/blog/laion-5b/?WT.mc_id=academic-105485-koreyst) และสามารถสร้างภาพใหม่หรือแก้ไขภาพที่มีอยู่ด้วยเทคนิค inpainting, super-resolution และ colorization ตัวอย่างเช่น [DALL-E-3](https://openai.com/dall-e-3?WT.mc_id=academic-105485-koreyst) และ [Stable Diffusion models](https://github.com/Stability-AI/StableDiffusion?WT.mc_id=academic-105485-koreyst) - -![Image generation](../../../translated_images/Image.349c080266a763fd255b840a921cd8fc526ed78dc58708fa569ff1873d302345.th.png) - -โมเดลสร้างข้อความและโค้ดคือโมเดลที่สร้างข้อความหรือโค้ด มักใช้สำหรับสรุปข้อความ, แปลภาษา และตอบคำถาม โมเดลสร้างข้อความมักถูกฝึกด้วยชุดข้อมูลข้อความขนาดใหญ่ เช่น [BookCorpus](https://www.cv-foundation.org/openaccess/content_iccv_2015/html/Zhu_Aligning_Books_and_ICCV_2015_paper.html?WT.mc_id=academic-105485-koreyst) และสามารถสร้างข้อความใหม่หรือตอบคำถามได้ โมเดลสร้างโค้ด เช่น [CodeParrot](https://huggingface.co/codeparrot?WT.mc_id=academic-105485-koreyst) มักถูกฝึกด้วยชุดข้อมูลโค้ดขนาดใหญ่ เช่น GitHub และสามารถสร้างโค้ดใหม่หรือแก้ไขบั๊กในโค้ดที่มีอยู่ได้ - -![Text and code generation](../../../translated_images/Text.a8c0cf139e5cc2a0cd3edaba8d675103774e6ddcb3c9fc5a98bb17c9a450e31d.th.png) - -### Encoder-Decoder กับ Decoder-only - -เพื่อพูดถึงสถาปัตยกรรมต่างๆ ของ LLMs ลองใช้การเปรียบเทียบนี้ - -สมมติว่าผู้จัดการของคุณมอบหมายงานให้เขียนแบบทดสอบสำหรับนักเรียน คุณมีเพื่อนร่วมงานสองคน คนหนึ่งดูแลการสร้างเนื้อหา อีกคนดูแลการตรวจทาน - -ผู้สร้างเนื้อหาเหมือนกับโมเดล Decoder-only พวกเขาสามารถดูหัวข้อและสิ่งที่คุณเขียนไว้แล้ว จากนั้นเขียนเนื้อหาตามนั้นได้ พวกเขาเก่งในการเขียนเนื้อหาที่น่าสนใจและให้ข้อมูล แต่ไม่เก่งในการเข้าใจหัวข้อและวัตถุประสงค์การเรียนรู้ ตัวอย่างโมเดล Decoder เช่น โมเดลในตระกูล GPT เช่น GPT-3 - -ผู้ตรวจทานเหมือนกับโมเดล Encoder-only พวกเขาดูเนื้อหาที่เขียนและคำตอบ สังเกตความสัมพันธ์และเข้าใจบริบท แต่ไม่เก่งในการสร้างเนื้อหา ตัวอย่างโมเดล Encoder-only เช่น BERT - -ลองนึกภาพว่ามีคนที่สามารถสร้างและตรวจทานแบบทดสอบได้ นี่คือโมเดล Encoder-Decoder ตัวอย่างเช่น BART และ T5 - -### บริการกับโมเดล - -ตอนนี้มาพูดถึงความแตกต่างระหว่างบริการกับโมเดล บริการคือผลิตภัณฑ์ที่ให้โดยผู้ให้บริการคลาวด์ มักเป็นการรวมกันของโมเดล, ข้อมูล และส่วนประกอบอื่นๆ โมเดลคือส่วนประกอบหลักของบริการ มักเป็น Foundation Model เช่น LLM - -บริการมักถูกปรับแต่งให้เหมาะกับการใช้งานในระดับผลิต และใช้งานง่ายกว่าผ่านอินเทอร์เฟซกราฟิก อย่างไรก็ตาม บริการไม่ใช่ของฟรีเสมอไป และอาจต้องสมัครสมาชิกหรือจ่ายเงินเพื่อใช้งาน แลกกับการใช้ทรัพยากรและอุปกรณ์ของเจ้าของบริการ ช่วยประหยัดค่าใช้จ่ายและขยายระบบได้ง่าย ตัวอย่างบริการคือ [Azure OpenAI Service](https://learn.microsoft.com/azure/ai-services/openai/overview?WT.mc_id=academic-105485-koreyst) ที่มีแผนจ่ายตามการใช้งานจริง และยังมีความปลอดภัยระดับองค์กรและกรอบการใช้ AI อย่างรับผิดชอบบนพื้นฐานความสามารถของโมเดล - -โมเดลคือโครงข่ายประสาทเทียมที่มีพารามิเตอร์และน้ำหนักต่างๆ อนุญาตให้บริษัทรันโมเดลได้ในเครื่องของตัวเอง แต่ต้องซื้ออุปกรณ์ สร้างโครงสร้างสำหรับขยายระบบ และซื้อไลเซนส์หรือใช้โมเดลโอเพนซอร์ส โมเดลอย่าง LLaMA สามารถใช้งานได้ แต่ต้องใช้พลังประมวลผลในการรันโมเดล - -## วิธีทดสอบและปรับปรุงโมเดลต่างๆ เพื่อเข้าใจประสิทธิภาพบน Azure - -เมื่อทีมของเราได้สำรวจภูมิทัศน์ LLMs ปัจจุบันและเลือกโมเดลที่เหมาะสมกับสถานการณ์แล้ว ขั้นตอนถัดไปคือการทดสอบโมเดลเหล่านั้นกับข้อมูลและภาระงานของเรา นี่เป็นกระบวนการทำซ้ำที่ทำผ่านการทดลองและวัดผล -โมเดลส่วนใหญ่ที่เราได้กล่าวถึงในย่อหน้าก่อนหน้า (โมเดล OpenAI, โมเดลโอเพนซอร์สอย่าง Llama2 และ Hugging Face transformers) สามารถหาได้ใน [Model Catalog](https://learn.microsoft.com/azure/ai-studio/how-to/model-catalog-overview?WT.mc_id=academic-105485-koreyst) ใน [Azure AI Studio](https://ai.azure.com/?WT.mc_id=academic-105485-koreyst) - -[Azure AI Studio](https://learn.microsoft.com/azure/ai-studio/what-is-ai-studio?WT.mc_id=academic-105485-koreyst) คือแพลตฟอร์มคลาวด์ที่ออกแบบมาเพื่อให้นักพัฒนาสามารถสร้างแอปพลิเคชัน AI เชิงสร้างสรรค์และจัดการวงจรการพัฒนาทั้งหมด ตั้งแต่การทดลองจนถึงการประเมินผล โดยรวมบริการ Azure AI ทั้งหมดไว้ในที่เดียวพร้อมอินเทอร์เฟซที่ใช้งานง่าย Model Catalog ใน Azure AI Studio ช่วยให้ผู้ใช้สามารถ: - -- ค้นหา Foundation Model ที่สนใจในแคตตาล็อก ไม่ว่าจะเป็นโมเดลที่เป็นกรรมสิทธิ์หรือโอเพนซอร์ส โดยกรองตามงาน ใบอนุญาต หรือชื่อ เพื่อเพิ่มความสะดวกในการค้นหา โมเดลจะถูกจัดกลุ่มเป็นคอลเลกชัน เช่น คอลเลกชัน Azure OpenAI, คอลเลกชัน Hugging Face และอื่นๆ - -![Model catalog](../../../translated_images/AzureAIStudioModelCatalog.3cf8a499aa8ba0314f2c73d4048b3225d324165f547525f5b7cfa5f6c9c68941.th.png) - -- ตรวจสอบ model card ซึ่งรวมถึงคำอธิบายรายละเอียดเกี่ยวกับการใช้งานที่ตั้งใจไว้และข้อมูลการฝึกอบรม ตัวอย่างโค้ด และผลการประเมินจากไลบรารีการประเมินภายใน - -![Model card](../../../translated_images/ModelCard.598051692c6e400d681a713ba7717e8b6e5e65f08d12131556fcec0f1789459b.th.png) - -- เปรียบเทียบเกณฑ์มาตรฐานระหว่างโมเดลและชุดข้อมูลที่มีในอุตสาหกรรมเพื่อประเมินว่าโมเดลใดเหมาะสมกับสถานการณ์ทางธุรกิจ ผ่านแผง [Model Benchmarks](https://learn.microsoft.com/azure/ai-studio/how-to/model-benchmarks?WT.mc_id=academic-105485-koreyst) - -![Model benchmarks](../../../translated_images/ModelBenchmarks.254cb20fbd06c03a4ca53994585c5ea4300a88bcec8eff0450f2866ee2ac5ff3.th.png) - -- ปรับแต่งโมเดลด้วยข้อมูลฝึกอบรมเฉพาะเพื่อเพิ่มประสิทธิภาพในงานเฉพาะ โดยใช้ความสามารถในการทดลองและติดตามของ Azure AI Studio - -![Model fine-tuning](../../../translated_images/FineTuning.aac48f07142e36fddc6571b1f43ea2e003325c9c6d8e3fc9d8834b771e308dbf.th.png) - -- นำโมเดลที่ผ่านการฝึกอบรมล่วงหน้าหรือเวอร์ชันที่ปรับแต่งแล้วไปใช้งานบนระบบเรียลไทม์ระยะไกล - managed compute - หรือ serverless api endpoint - [pay-as-you-go](https://learn.microsoft.com/azure/ai-studio/how-to/model-catalog-overview#model-deployment-managed-compute-and-serverless-api-pay-as-you-go?WT.mc_id=academic-105485-koreyst) - เพื่อให้แอปพลิเคชันสามารถเรียกใช้งานได้ - -![Model deployment](../../../translated_images/ModelDeploy.890da48cbd0bccdb4abfc9257f3d884831e5d41b723e7d1ceeac9d60c3c4f984.th.png) - -> [!NOTE] -> โมเดลทั้งหมดในแคตตาล็อกไม่ได้เปิดให้ปรับแต่งหรือใช้งานแบบ pay-as-you-go ได้ในขณะนี้ โปรดตรวจสอบ model card เพื่อดูรายละเอียดเกี่ยวกับความสามารถและข้อจำกัดของโมเดล - -## การปรับปรุงผลลัพธ์ของ LLM - -ทีมสตาร์ทอัพของเราได้ทดลองใช้ LLM หลายประเภทและแพลตฟอร์มคลาวด์ (Azure Machine Learning) ที่ช่วยให้เราสามารถเปรียบเทียบโมเดลต่างๆ ประเมินผลบนข้อมูลทดสอบ ปรับปรุงประสิทธิภาพ และนำไปใช้งานบนจุดให้บริการ inference - -แต่เมื่อไหร่ควรพิจารณาปรับแต่งโมเดลแทนการใช้โมเดลที่ผ่านการฝึกอบรมล่วงหน้า? มีวิธีอื่นในการปรับปรุงประสิทธิภาพโมเดลในงานเฉพาะหรือไม่? - -ธุรกิจสามารถใช้วิธีต่างๆ เพื่อให้ได้ผลลัพธ์ที่ต้องการจาก LLM คุณสามารถเลือกใช้โมเดลประเภทต่างๆ ที่มีระดับการฝึกอบรมแตกต่างกันเมื่อใช้งาน LLM ในการผลิต โดยมีความซับซ้อน ค่าใช้จ่าย และคุณภาพที่แตกต่างกัน นี่คือวิธีการต่างๆ: - -- **การออกแบบ prompt พร้อมบริบท** แนวคิดคือการให้บริบทเพียงพอเมื่อส่ง prompt เพื่อให้ได้คำตอบที่ต้องการ - -- **Retrieval Augmented Generation, RAG** ข้อมูลของคุณอาจอยู่ในฐานข้อมูลหรือเว็บเอนด์พอยต์ เพื่อให้ข้อมูลนี้หรือส่วนหนึ่งของข้อมูลถูกรวมอยู่ในเวลาส่ง prompt คุณสามารถดึงข้อมูลที่เกี่ยวข้องมาและทำให้เป็นส่วนหนึ่งของ prompt ของผู้ใช้ - -- **โมเดลที่ผ่านการปรับแต่ง** ในกรณีนี้ คุณได้ฝึกโมเดลเพิ่มเติมด้วยข้อมูลของคุณเอง ทำให้โมเดลมีความแม่นยำและตอบสนองความต้องการได้ดีขึ้น แต่ก็อาจมีค่าใช้จ่ายสูง - -![LLMs deployment](../../../translated_images/Deploy.18b2d27412ec8c02871386cbe91097c7f2190a8c6e2be88f66392b411609a48c.th.png) - -ที่มาภาพ: [Four Ways that Enterprises Deploy LLMs | Fiddler AI Blog](https://www.fiddler.ai/blog/four-ways-that-enterprises-deploy-llms?WT.mc_id=academic-105485-koreyst) - -### การออกแบบ Prompt พร้อมบริบท - -LLM ที่ผ่านการฝึกอบรมล่วงหน้าทำงานได้ดีมากกับงานภาษาธรรมชาติทั่วไป แม้เพียงแค่ส่ง prompt สั้นๆ เช่น ประโยคที่ต้องการเติมหรือคำถาม – เรียกว่า “zero-shot” learning - -อย่างไรก็ตาม ยิ่งผู้ใช้สามารถกำหนดคำถามได้ละเอียดมากขึ้น พร้อมคำขอและตัวอย่าง – หรือที่เรียกว่า บริบท – คำตอบก็จะยิ่งแม่นยำและตรงกับความคาดหวังของผู้ใช้มากขึ้น ในกรณีนี้ เราเรียกว่า “one-shot” learning หาก prompt มีตัวอย่างเพียงหนึ่งตัวอย่าง และ “few-shot learning” หากมีหลายตัวอย่าง -การออกแบบ prompt พร้อมบริบทเป็นวิธีที่คุ้มค่าที่สุดในการเริ่มต้น - -### Retrieval Augmented Generation (RAG) - -LLM มีข้อจำกัดที่สามารถใช้ข้อมูลได้เฉพาะที่ใช้ในการฝึกอบรมเท่านั้นในการสร้างคำตอบ ซึ่งหมายความว่าโมเดลไม่ทราบข้อมูลหรือเหตุการณ์ที่เกิดขึ้นหลังจากการฝึกอบรม และไม่สามารถเข้าถึงข้อมูลที่ไม่เปิดเผยสู่สาธารณะ (เช่น ข้อมูลบริษัท) -ข้อจำกัดนี้สามารถแก้ไขได้ด้วย RAG ซึ่งเป็นเทคนิคที่เพิ่มข้อมูลภายนอกในรูปแบบของชิ้นส่วนเอกสารเข้าไปใน prompt โดยคำนึงถึงข้อจำกัดความยาวของ prompt เทคนิคนี้ได้รับการสนับสนุนโดยเครื่องมือฐานข้อมูลเวกเตอร์ (เช่น [Azure Vector Search](https://learn.microsoft.com/azure/search/vector-search-overview?WT.mc_id=academic-105485-koreyst)) ที่ดึงชิ้นส่วนข้อมูลที่เป็นประโยชน์จากแหล่งข้อมูลที่กำหนดไว้ล่วงหน้าและเพิ่มเข้าไปในบริบทของ prompt - -เทคนิคนี้มีประโยชน์มากเมื่อธุรกิจไม่มีข้อมูลเพียงพอ เวลา หรือทรัพยากรในการปรับแต่ง LLM แต่ยังต้องการปรับปรุงประสิทธิภาพในงานเฉพาะและลดความเสี่ยงจากข้อมูลเท็จ เช่น การบิดเบือนความจริงหรือเนื้อหาที่เป็นอันตราย - -### โมเดลที่ผ่านการปรับแต่ง - -การปรับแต่ง (fine-tuning) เป็นกระบวนการที่ใช้การเรียนรู้ถ่ายโอน (transfer learning) เพื่อ ‘ปรับ’ โมเดลให้เหมาะกับงานเฉพาะหรือแก้ปัญหาเฉพาะ แตกต่างจาก few-shot learning และ RAG ที่จะได้โมเดลใหม่ที่มีน้ำหนักและไบแอสที่อัปเดต ต้องใช้ชุดตัวอย่างฝึกอบรมที่ประกอบด้วยอินพุตเดียว (prompt) และผลลัพธ์ที่เกี่ยวข้อง (completion) -วิธีนี้เหมาะสมหาก: - -- **ใช้โมเดลที่ผ่านการปรับแต่ง** ธุรกิจต้องการใช้โมเดลที่ผ่านการปรับแต่งที่มีความสามารถน้อยกว่า (เช่น โมเดล embedding) แทนโมเดลประสิทธิภาพสูง เพื่อให้ได้ทางเลือกที่ประหยัดและรวดเร็วกว่า - -- **พิจารณาความหน่วงเวลา (latency)** ความหน่วงเวลามีความสำคัญสำหรับกรณีใช้งานเฉพาะ จึงไม่สามารถใช้ prompt ที่ยาวมาก หรือจำนวนตัวอย่างที่โมเดลต้องเรียนรู้เกินขีดจำกัดความยาวของ prompt - -- **ต้องการข้อมูลที่ทันสมัย** ธุรกิจมีข้อมูลคุณภาพสูงและป้ายกำกับความจริง (ground truth) จำนวนมาก รวมถึงทรัพยากรที่จำเป็นในการดูแลข้อมูลให้ทันสมัยอยู่เสมอ - -### โมเดลที่ฝึกอบรมเอง - -การฝึก LLM ตั้งแต่ต้นเป็นวิธีที่ยากและซับซ้อนที่สุด ต้องใช้ข้อมูลจำนวนมหาศาล ทรัพยากรที่มีทักษะ และกำลังประมวลผลที่เหมาะสม ตัวเลือกนี้ควรพิจารณาเฉพาะในกรณีที่ธุรกิจมีกรณีใช้งานเฉพาะด้านและข้อมูลเฉพาะด้านจำนวนมาก - -## ตรวจสอบความรู้ - -วิธีใดเป็นวิธีที่ดีในการปรับปรุงผลลัพธ์ของ LLM completion? - -1. การออกแบบ prompt พร้อมบริบท -2. RAG -3. โมเดลที่ผ่านการปรับแต่ง - -ตอบ: 3 หากคุณมีเวลา ทรัพยากร และข้อมูลคุณภาพสูง การปรับแต่งเป็นตัวเลือกที่ดีกว่าเพื่อให้ข้อมูลทันสมัย อย่างไรก็ตาม หากต้องการปรับปรุงและมีเวลาจำกัด ควรพิจารณาใช้ RAG ก่อน - -## 🚀 ความท้าทาย - -ศึกษาข้อมูลเพิ่มเติมเกี่ยวกับวิธีการ [ใช้ RAG](https://learn.microsoft.com/azure/search/retrieval-augmented-generation-overview?WT.mc_id=academic-105485-koreyst) สำหรับธุรกิจของคุณ - -## ทำได้ดีมาก ต่อเนื่องกับการเรียนรู้ของคุณ - -หลังจากเรียนบทนี้เสร็จแล้ว ลองดู [คอลเลกชันการเรียนรู้ Generative AI](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) เพื่อพัฒนาความรู้ด้าน Generative AI ของคุณต่อไป! - -ไปที่บทเรียนที่ 3 ซึ่งเราจะเรียนรู้วิธี [สร้างด้วย Generative AI อย่างรับผิดชอบ](../03-using-generative-ai-responsibly/README.md?WT.mc_id=academic-105485-koreyst)! - -**ข้อจำกัดความรับผิดชอบ**: -เอกสารนี้ได้รับการแปลโดยใช้บริการแปลภาษาอัตโนมัติ [Co-op Translator](https://github.com/Azure/co-op-translator) แม้เราจะพยายามให้ความถูกต้องสูงสุด แต่โปรดทราบว่าการแปลอัตโนมัติอาจมีข้อผิดพลาดหรือความไม่ถูกต้อง เอกสารต้นฉบับในภาษาต้นทางถือเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลที่สำคัญ ขอแนะนำให้ใช้บริการแปลโดยผู้เชี่ยวชาญมนุษย์ เราไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความผิดใด ๆ ที่เกิดจากการใช้การแปลนี้ \ No newline at end of file + +# การสำรวจและเปรียบเทียบ LLMs ต่างๆ + +[![การสำรวจและเปรียบเทียบ LLMs ต่างๆ](../../../translated_images/02-lesson-banner.ef94c84979f97f60f07e27d905e708cbcbdf78707120553ccab27d91c947805b.th.png)](https://youtu.be/KIRUeDKscfI?si=8BHX1zvwzQBn-PlK) + +> _คลิกที่ภาพด้านบนเพื่อดูวิดีโอของบทเรียนนี้_ + +ในบทเรียนก่อนหน้านี้ เราได้เห็นว่า Generative AI กำลังเปลี่ยนแปลงภูมิทัศน์ของเทคโนโลยีอย่างไร วิธีการทำงานของ Large Language Models (LLMs) และวิธีที่ธุรกิจ เช่น สตาร์ทอัพของเรา สามารถนำไปใช้กับกรณีการใช้งานและเติบโตได้! ในบทนี้ เราจะเปรียบเทียบและวิเคราะห์ LLMs ประเภทต่างๆ เพื่อทำความเข้าใจข้อดีและข้อเสียของแต่ละแบบ + +ขั้นตอนต่อไปในเส้นทางของสตาร์ทอัพของเราคือการสำรวจภูมิทัศน์ปัจจุบันของ LLMs และทำความเข้าใจว่าแบบใดเหมาะสมกับกรณีการใช้งานของเรา + +## บทนำ + +บทเรียนนี้จะครอบคลุม: + +- ประเภทต่างๆ ของ LLMs ในภูมิทัศน์ปัจจุบัน +- การทดสอบ การปรับปรุง และการเปรียบเทียบโมเดลต่างๆ สำหรับกรณีการใช้งานของคุณใน Azure +- วิธีการปรับใช้ LLM + +## เป้าหมายการเรียนรู้ + +หลังจากจบบทเรียนนี้ คุณจะสามารถ: + +- เลือกโมเดลที่เหมาะสมสำหรับกรณีการใช้งานของคุณ +- เข้าใจวิธีการทดสอบ ปรับปรุง และเพิ่มประสิทธิภาพของโมเดลของคุณ +- รู้วิธีที่ธุรกิจปรับใช้โมเดล + +## ทำความเข้าใจประเภทต่างๆ ของ LLMs + +LLMs สามารถแบ่งประเภทได้หลายแบบตามสถาปัตยกรรม ข้อมูลการฝึก และกรณีการใช้งาน การทำความเข้าใจความแตกต่างเหล่านี้จะช่วยให้สตาร์ทอัพของเราเลือกโมเดลที่เหมาะสมกับสถานการณ์ และเข้าใจวิธีการทดสอบ ปรับปรุง และเพิ่มประสิทธิภาพ + +มีโมเดล LLMs หลายประเภท การเลือกโมเดลขึ้นอยู่กับสิ่งที่คุณต้องการใช้ ข้อมูลของคุณ งบประมาณ และอื่นๆ + +ขึ้นอยู่กับว่าคุณต้องการใช้โมเดลสำหรับการสร้างข้อความ เสียง วิดีโอ ภาพ และอื่นๆ คุณอาจเลือกใช้โมเดลประเภทต่างๆ + +- **การรู้จำเสียงและคำพูด** สำหรับวัตถุประสงค์นี้ โมเดลประเภท Whisper เป็นตัวเลือกที่ดี เนื่องจากเป็นโมเดลทั่วไปที่มุ่งเน้นการรู้จำคำพูด มันถูกฝึกด้วยเสียงที่หลากหลายและสามารถทำการรู้จำคำพูดหลายภาษาได้ เรียนรู้เพิ่มเติมเกี่ยวกับ [โมเดลประเภท Whisper ที่นี่](https://platform.openai.com/docs/models/whisper?WT.mc_id=academic-105485-koreyst) + +- **การสร้างภาพ** สำหรับการสร้างภาพ DALL-E และ Midjourney เป็นตัวเลือกที่รู้จักกันดี DALL-E มีให้บริการผ่าน Azure OpenAI [อ่านเพิ่มเติมเกี่ยวกับ DALL-E ที่นี่](https://platform.openai.com/docs/models/dall-e?WT.mc_id=academic-105485-koreyst) และในบทที่ 9 ของหลักสูตรนี้ + +- **การสร้างข้อความ** โมเดลส่วนใหญ่ถูกฝึกเพื่อการสร้างข้อความ และคุณมีตัวเลือกมากมายตั้งแต่ GPT-3.5 ถึง GPT-4 ซึ่งมีค่าใช้จ่ายต่างกัน โดย GPT-4 มีราคาสูงที่สุด ควรลองดู [Azure OpenAI playground](https://oai.azure.com/portal/playground?WT.mc_id=academic-105485-koreyst) เพื่อประเมินว่าโมเดลใดเหมาะสมที่สุดสำหรับความต้องการของคุณในแง่ของความสามารถและค่าใช้จ่าย + +- **การทำงานหลายรูปแบบ** หากคุณต้องการจัดการข้อมูลหลายประเภทในอินพุตและเอาต์พุต คุณอาจต้องการดูโมเดลอย่าง [gpt-4 turbo with vision หรือ gpt-4o](https://learn.microsoft.com/azure/ai-services/openai/concepts/models#gpt-4-and-gpt-4-turbo-models?WT.mc_id=academic-105485-koreyst) ซึ่งเป็นรุ่นล่าสุดของโมเดล OpenAI ที่สามารถรวมการประมวลผลภาษาธรรมชาติกับการเข้าใจภาพ ทำให้สามารถโต้ตอบผ่านอินเทอร์เฟซหลายรูปแบบได้ + +การเลือกโมเดลหมายความว่าคุณจะได้รับความสามารถพื้นฐาน ซึ่งอาจยังไม่เพียงพอ อย่างไรก็ตาม บ่อยครั้งคุณมีข้อมูลเฉพาะของบริษัทที่คุณต้องบอก LLMs ด้วย มีวิธีการหลายแบบในการจัดการเรื่องนี้ ซึ่งจะกล่าวถึงในส่วนถัดไป + +### Foundation Models กับ LLMs + +คำว่า Foundation Model ถูก [บัญญัติโดยนักวิจัยจาก Stanford](https://arxiv.org/abs/2108.07258?WT.mc_id=academic-105485-koreyst) และถูกนิยามว่าเป็นโมเดล AI ที่มีเกณฑ์บางอย่าง เช่น: + +- **ถูกฝึกด้วยการเรียนรู้แบบไม่มีผู้ดูแลหรือการเรียนรู้แบบมีผู้ดูแลตัวเอง** หมายความว่ามันถูกฝึกด้วยข้อมูลหลายรูปแบบที่ไม่มีการติดป้ายกำกับ และไม่ต้องการการติดป้ายกำกับหรือการบันทึกข้อมูลโดยมนุษย์ในกระบวนการฝึก +- **เป็นโมเดลขนาดใหญ่** ที่ใช้เครือข่ายประสาทลึกมากและถูกฝึกด้วยพารามิเตอร์นับพันล้าน +- **มักถูกออกแบบมาเพื่อเป็น ‘พื้นฐาน’ สำหรับโมเดลอื่นๆ** หมายความว่ามันสามารถใช้เป็นจุดเริ่มต้นสำหรับการสร้างโมเดลอื่นๆ โดยการปรับแต่งเพิ่มเติม + +![Foundation Models กับ LLMs](../../../translated_images/FoundationModel.e4859dbb7a825c94b284f17eae1c186aabc21d4d8644331f5b007d809cf8d0f2.th.png) + +แหล่งที่มาของภาพ: [Essential Guide to Foundation Models and Large Language Models | โดย Babar M Bhatti | Medium +](https://thebabar.medium.com/essential-guide-to-foundation-models-and-large-language-models-27dab58f7404) + +เพื่ออธิบายความแตกต่างนี้เพิ่มเติม ลองใช้ ChatGPT เป็นตัวอย่าง ในการสร้าง ChatGPT รุ่นแรก โมเดลที่เรียกว่า GPT-3.5 ถูกใช้เป็น Foundation Model ซึ่งหมายความว่า OpenAI ใช้ข้อมูลเฉพาะสำหรับการสนทนาเพื่อสร้างเวอร์ชันที่ปรับแต่งของ GPT-3.5 ที่เชี่ยวชาญในการทำงานได้ดีในสถานการณ์การสนทนา เช่น chatbot + +![Foundation Model](../../../translated_images/Multimodal.2c389c6439e0fc51b0b7b226d95d7d900d372ae66902d71b8ce5ec4951b8efbe.th.png) + +แหล่งที่มาของภาพ: [2108.07258.pdf (arxiv.org)](https://arxiv.org/pdf/2108.07258.pdf?WT.mc_id=academic-105485-koreyst) + +### โมเดลโอเพ่นซอร์สกับโมเดลที่เป็นกรรมสิทธิ์ + +อีกวิธีหนึ่งในการจัดประเภท LLMs คือการพิจารณาว่าเป็นโอเพ่นซอร์สหรือเป็นกรรมสิทธิ์ + +โมเดลโอเพ่นซอร์สคือโมเดลที่เปิดให้สาธารณะและสามารถใช้งานได้โดยทุกคน มักถูกเผยแพร่โดยบริษัทที่สร้างมันขึ้นมา หรือโดยชุมชนวิจัย โมเดลเหล่านี้สามารถตรวจสอบ แก้ไข และปรับแต่งสำหรับกรณีการใช้งานต่างๆ ใน LLMs อย่างไรก็ตาม โมเดลเหล่านี้ไม่ได้ถูกปรับให้เหมาะสมสำหรับการใช้งานในระดับการผลิตเสมอไป และอาจไม่สามารถทำงานได้ดีเท่ากับโมเดลที่เป็นกรรมสิทธิ์ นอกจากนี้ การสนับสนุนทางการเงินสำหรับโมเดลโอเพ่นซอร์สอาจมีจำกัด และอาจไม่ได้รับการดูแลในระยะยาวหรือไม่ได้รับการอัปเดตด้วยงานวิจัยล่าสุด ตัวอย่างของโมเดลโอเพ่นซอร์สที่ได้รับความนิยม ได้แก่ [Alpaca](https://crfm.stanford.edu/2023/03/13/alpaca.html?WT.mc_id=academic-105485-koreyst), [Bloom](https://huggingface.co/bigscience/bloom) และ [LLaMA](https://llama.meta.com) + +โมเดลที่เป็นกรรมสิทธิ์คือโมเดลที่เป็นของบริษัทและไม่ได้เปิดให้สาธารณะ โมเดลเหล่านี้มักถูกปรับให้เหมาะสมสำหรับการใช้งานในระดับการผลิต อย่างไรก็ตาม โมเดลเหล่านี้ไม่สามารถตรวจสอบ แก้ไข หรือปรับแต่งสำหรับกรณีการใช้งานต่างๆ ได้ นอกจากนี้ โมเดลเหล่านี้ไม่ได้เปิดให้ใช้งานฟรีเสมอไป และอาจต้องการการสมัครสมาชิกหรือการชำระเงินเพื่อใช้งาน นอกจากนี้ ผู้ใช้ไม่มีการควบคุมข้อมูลที่ใช้ในการฝึกโมเดล ซึ่งหมายความว่าพวกเขาต้องไว้วางใจเจ้าของโมเดลในการรับรองความมุ่งมั่นต่อความเป็นส่วนตัวของข้อมูลและการใช้ AI อย่างมีความรับผิดชอบ ตัวอย่างของโมเดลที่เป็นกรรมสิทธิ์ที่ได้รับความนิยม ได้แก่ [OpenAI models](https://platform.openai.com/docs/models/overview?WT.mc_id=academic-105485-koreyst), [Google Bard](https://sapling.ai/llm/bard?WT.mc_id=academic-105485-koreyst) หรือ [Claude 2](https://www.anthropic.com/index/claude-2?WT.mc_id=academic-105485-koreyst) + +### การฝังข้อมูลกับการสร้างภาพกับการสร้างข้อความและโค้ด + +LLMs ยังสามารถจัดประเภทตามผลลัพธ์ที่พวกเขาสร้างได้ + +การฝังข้อมูลคือชุดของโมเดลที่สามารถแปลงข้อความเป็นรูปแบบตัวเลขที่เรียกว่าการฝังข้อมูล ซึ่งเป็นการแสดงผลตัวเลขของข้อความที่ป้อน การฝังข้อมูลทำให้เครื่องจักรเข้าใจความสัมพันธ์ระหว่างคำหรือประโยคได้ง่ายขึ้น และสามารถใช้เป็นอินพุตโดยโมเดลอื่นๆ เช่น โมเดลการจำแนกประเภท หรือโมเดลการจัดกลุ่มที่มีประสิทธิภาพดีกว่าบนข้อมูลตัวเลข โมเดลการฝังข้อมูลมักถูกใช้สำหรับการเรียนรู้แบบถ่ายโอน ซึ่งโมเดลถูกสร้างขึ้นสำหรับงานตัวแทนที่มีข้อมูลมากมาย และจากนั้นน้ำหนักของโมเดล (การฝังข้อมูล) ถูกนำไปใช้ใหม่สำหรับงานต่อเนื่อง ตัวอย่างของหมวดหมู่นี้คือ [OpenAI embeddings](https://platform.openai.com/docs/models/embeddings?WT.mc_id=academic-105485-koreyst) + +![การฝังข้อมูล](../../../translated_images/Embedding.c3708fe988ccf76073d348483dbb7569f622211104f073e22e43106075c04800.th.png) + +โมเดลการสร้างภาพคือโมเดลที่สร้างภาพ โมเดลเหล่านี้มักถูกใช้สำหรับการแก้ไขภาพ การสังเคราะห์ภาพ และการแปลภาพ โมเดลการสร้างภาพมักถูกฝึกด้วยชุดข้อมูลขนาดใหญ่ของภาพ เช่น [LAION-5B](https://laion.ai/blog/laion-5b/?WT.mc_id=academic-105485-koreyst) และสามารถใช้สร้างภาพใหม่หรือแก้ไขภาพที่มีอยู่ด้วยเทคนิคการเติมภาพ การเพิ่มความละเอียด และการปรับสี ตัวอย่างได้แก่ [DALL-E-3](https://openai.com/dall-e-3?WT.mc_id=academic-105485-koreyst) และ [Stable Diffusion models](https://github.com/Stability-AI/StableDiffusion?WT.mc_id=academic-105485-koreyst) + +![การสร้างภาพ](../../../translated_images/Image.349c080266a763fd255b840a921cd8fc526ed78dc58708fa569ff1873d302345.th.png) + +โมเดลการสร้างข้อความและโค้ดคือโมเดลที่สร้างข้อความหรือโค้ด โมเดลเหล่านี้มักถูกใช้สำหรับการสรุปข้อความ การแปล และการตอบคำถาม โมเดลการสร้างข้อความมักถูกฝึกด้วยชุดข้อมูลขนาดใหญ่ของข้อความ เช่น [BookCorpus](https://www.cv-foundation.org/openaccess/content_iccv_2015/html/Zhu_Aligning_Books_and_ICCV_2015_paper.html?WT.mc_id=academic-105485-koreyst) และสามารถใช้สร้างข้อความใหม่หรือตอบคำถาม โมเดลการสร้างโค้ด เช่น [CodeParrot](https://huggingface.co/codeparrot?WT.mc_id=academic-105485-koreyst) มักถูกฝึกด้วยชุดข้อมูลขนาดใหญ่ของโค้ด เช่น GitHub และสามารถใช้สร้างโค้ดใหม่หรือแก้ไขข้อผิดพลาดในโค้ดที่มีอยู่ + +![การสร้างข้อความและโค้ด](../../../translated_images/Text.a8c0cf139e5cc2a0cd3edaba8d675103774e6ddcb3c9fc5a98bb17c9a450e31d.th.png) + +### Encoder-Decoder กับ Decoder-only + +เพื่อพูดถึงประเภทต่างๆ ของสถาปัตยกรรมของ LLMs ลองใช้การเปรียบเทียบ + +ลองจินตนาการว่าผู้จัดการของคุณมอบหมายงานให้คุณเขียนแบบทดสอบสำหรับนักเรียน คุณมีเพื่อนร่วมงานสองคน คนหนึ่งดูแลการสร้างเนื้อหาและอีกคนดูแลการตรวจสอบ + +ผู้สร้างเนื้อหาเปรียบเสมือนโมเดล Decoder-only พวกเขาสามารถดูหัวข้อและสิ่งที่คุณเขียนแล้วสร้างเนื้อหาตามนั้น พวกเขาเก่งในการเขียนเนื้อหาที่น่าสนใจและให้ข้อมูล แต่ไม่เก่งในการทำความเข้าใจหัวข้อและวัตถุประสงค์การเรียนรู้ ตัวอย่างของโมเดล Decoder-only คือโมเดลตระกูล GPT เช่น GPT-3 + +ผู้ตรวจสอบเปรียบเสมือนโมเดล Encoder-only พวกเขาดูเนื้อหาที่เขียนและคำตอบ สังเกตความสัมพันธ์ระหว่างกันและเข้าใจบริบท แต่ไม่เก่งในการสร้างเนื้อหา ตัวอย่างของโมเดล Encoder-only คือ BERT + +ลองจินตนาการว่าเรามีคนที่สามารถสร้างและตรวจสอบแบบทดสอบได้ด้วย นี่คือโมเดล Encoder-Decoder ตัวอย่างได้แก่ BART และ T5 + +### บริการกับโมเดล + +ตอนนี้เรามาพูดถึงความแตกต่างระหว่างบริการและโมเดล บริการคือผลิตภัณฑ์ที่นำเสนอโดยผู้ให้บริการคลาวด์ และมักเป็นการรวมกันของโมเดล ข้อมูล และส่วนประกอบอื่นๆ โมเดลคือส่วนประกอบหลักของบริการ และมักเป็น Foundation Model เช่น LLM + +บริการมักถูกปรับให้เหมาะสมสำหรับการใช้งานในระดับการผลิต และมักใช้งานง่ายกว่าด้วยอินเทอร์เฟซแบบกราฟิก อย่างไรก็ตาม บริการไม่ได้เปิดให้ใช้งานฟรีเสมอไป และอาจต้องการการสมัครสมาชิกหรือการชำระเงินเพื่อใช้งาน เพื่อแลกกับการใช้ทรัพยากรและอุปกรณ์ของเจ้าของบริการ ลดค่าใช้จ่ายและปรับขนาดได้ง่าย ตัวอย่างของบริการคือ [Azure OpenAI Service](https://learn.microsoft.com/azure/ai-services/openai/overview?WT.mc_id=academic-105485-koreyst) ซึ่งมีแผนการชำระเงินตามการใช้งาน หมายความว่าผู้ใช้จะถูกเรียกเก็บเงินตามสัดส่วนของการใช้งาน นอกจากนี้ Azure OpenAI Service ยังมีความปลอดภัยระดับองค์กรและกรอบการทำงาน AI ที่มีความรับผิดชอบบนความสามารถของโมเดล + +โมเดลคือเพียงแค่เครือข่ายประสาท พร้อมพารามิเตอร์ น้ำหนัก และอื่นๆ อนุญาตให้บริษัทใช้งานในพื้นที่ได้ อย่างไรก็ตาม จะต้องซื้ออุปกรณ์ สร้างโครงสร้างเพื่อปรับขนาด และซื้อใบอนุญาตหรือใช้โมเดลโอเพ่นซอร์ส โมเดลอย่าง LLaMA มีให้ใช้งาน แต่ต้องการพลังการประมวลผลเพื่อรันโมเดล + +## วิธีการทดสอบและปรับปรุงด้วยโมเดลต่างๆ เพื่อทำความเข้าใจประสิทธิภาพใน Azure + +เมื่อทีมของเราได้สำรวจภูมิทัศน์ LLMs ปัจจุบันและระบุผู้สมัครที่ดีสำหรับสถานการณ์ของพวกเขา ขั้นตอนต่อไปคือการทดสอบโมเดลเหล่านั้นกับข้อมูลและงานของพวกเขา นี่เป็นกระบวนการที่ต้องทำซ้ำ โดยการทดลองและวัดผล +โมเดลส่วนใหญ่ที่เราได้กล่าวถึงในย่อหน้าก่อนหน้านี้ (โมเดลของ OpenAI, โมเดลโอเพ่นซอร์สอย่าง Llama2 และ Hugging Face transformers) มีให้ใช้งานใน [Model Catalog](https://learn.microsoft.com/azure/ai-studio/how-to/model-catalog-overview?WT.mc_id=academic-105485-koreyst) ใน [Azure AI Studio](https://ai.azure.com/?WT.mc_id=academic-105485-koreyst) + +[Azure AI Studio](https://learn.microsoft.com/azure/ai-studio/what-is-ai-studio?WT.mc_id=academic-105485-koreyst) เป็นแพลตฟอร์มคลาวด์ที่ออกแบบมาสำหรับนักพัฒนาเพื่อสร้างแอปพลิเคชัน AI เชิงสร้างสรรค์และจัดการวงจรการพัฒนาทั้งหมด ตั้งแต่การทดลองไปจนถึงการประเมินผล โดยการรวมบริการ Azure AI ทั้งหมดไว้ในศูนย์กลางเดียวที่มี GUI ใช้งานง่าย Model Catalog ใน Azure AI Studio ช่วยให้ผู้ใช้สามารถ: + +- ค้นหา Foundation Model ที่สนใจในแคตตาล็อก ไม่ว่าจะเป็นโมเดลที่เป็นกรรมสิทธิ์หรือโอเพ่นซอร์ส โดยสามารถกรองตามงานที่ต้องการ ใบอนุญาต หรือชื่อ เพื่อเพิ่มความสะดวกในการค้นหา โมเดลจะถูกจัดกลุ่มเป็นคอลเลกชัน เช่น Azure OpenAI collection, Hugging Face collection และอื่นๆ + +- ตรวจสอบ model card ซึ่งรวมถึงคำอธิบายรายละเอียดเกี่ยวกับการใช้งานที่ตั้งใจไว้และข้อมูลการฝึกอบรม ตัวอย่างโค้ด และผลการประเมินในคลังการประเมินภายใน + +- เปรียบเทียบ benchmarks ระหว่างโมเดลและชุดข้อมูลที่มีอยู่ในอุตสาหกรรมเพื่อประเมินว่าโมเดลใดเหมาะสมกับสถานการณ์ธุรกิจ ผ่านหน้าต่าง [Model Benchmarks](https://learn.microsoft.com/azure/ai-studio/how-to/model-benchmarks?WT.mc_id=academic-105485-koreyst) + +- ปรับแต่งโมเดลด้วยข้อมูลการฝึกอบรมเฉพาะเพื่อปรับปรุงประสิทธิภาพของโมเดลในงานเฉพาะ โดยใช้ความสามารถในการทดลองและติดตามของ Azure AI Studio + +- นำโมเดลที่ผ่านการฝึกอบรมล่วงหน้าหรือเวอร์ชันที่ปรับแต่งแล้วไปใช้งานใน inference แบบเรียลไทม์ - การประมวลผลที่มีการจัดการ - หรือ endpoint API แบบ serverless - [จ่ายตามการใช้งาน](https://learn.microsoft.com/azure/ai-studio/how-to/model-catalog-overview#model-deployment-managed-compute-and-serverless-api-pay-as-you-go?WT.mc_id=academic-105485-koreyst) - เพื่อให้แอปพลิเคชันสามารถใช้งานได้ + +> [!NOTE] +> ไม่ใช่ทุกโมเดลในแคตตาล็อกที่สามารถปรับแต่งและ/หรือใช้งานแบบจ่ายตามการใช้งานได้ในปัจจุบัน โปรดตรวจสอบ model card เพื่อดูรายละเอียดเกี่ยวกับความสามารถและข้อจำกัดของโมเดล + +## การปรับปรุงผลลัพธ์ของ LLM + +เราได้สำรวจร่วมกับทีมสตาร์ทอัพของเราเกี่ยวกับ LLM ประเภทต่างๆ และแพลตฟอร์มคลาวด์ (Azure Machine Learning) ที่ช่วยให้เราสามารถเปรียบเทียบโมเดลต่างๆ ประเมินผลบนข้อมูลทดสอบ ปรับปรุงประสิทธิภาพ และนำไปใช้งานบน inference endpoints + +แต่เมื่อไหร่ที่ควรพิจารณาปรับแต่งโมเดลแทนที่จะใช้โมเดลที่ผ่านการฝึกอบรมล่วงหน้า? มีวิธีอื่นๆ ในการปรับปรุงประสิทธิภาพของโมเดลในงานเฉพาะหรือไม่? + +มีหลายวิธีที่ธุรกิจสามารถใช้เพื่อให้ได้ผลลัพธ์ที่ต้องการจาก LLM คุณสามารถเลือกโมเดลประเภทต่างๆ ที่มีระดับการฝึกอบรมแตกต่างกันเมื่อใช้งาน LLM ในการผลิต โดยมีระดับความซับซ้อน ค่าใช้จ่าย และคุณภาพที่แตกต่างกัน นี่คือวิธีการต่างๆ: + +- **การออกแบบคำสั่ง (Prompt engineering) พร้อมบริบท** แนวคิดคือการให้บริบทที่เพียงพอเมื่อคุณส่งคำสั่งเพื่อให้ได้คำตอบที่คุณต้องการ + +- **Retrieval Augmented Generation, RAG** ข้อมูลของคุณอาจอยู่ในฐานข้อมูลหรือ endpoint เว็บ ตัวอย่างเช่น เพื่อให้แน่ใจว่าข้อมูลนี้หรือส่วนหนึ่งของข้อมูลนี้ถูกรวมไว้ในเวลาที่ส่งคำสั่ง คุณสามารถดึงข้อมูลที่เกี่ยวข้องและทำให้เป็นส่วนหนึ่งของคำสั่งของผู้ใช้ + +- **โมเดลที่ปรับแต่งแล้ว** ในกรณีนี้ คุณฝึกอบรมโมเดลเพิ่มเติมด้วยข้อมูลของคุณเอง ซึ่งทำให้โมเดลมีความแม่นยำและตอบสนองต่อความต้องการของคุณมากขึ้น แต่ก็อาจมีค่าใช้จ่ายสูง + +### การออกแบบคำสั่ง (Prompt Engineering) พร้อมบริบท + +LLM ที่ผ่านการฝึกอบรมล่วงหน้าทำงานได้ดีมากในงานภาษาธรรมชาติทั่วไป แม้กระทั่งการเรียกใช้งานด้วยคำสั่งสั้นๆ เช่น ประโยคที่ต้องการให้เติมเต็มหรือคำถาม – ซึ่งเรียกว่า “zero-shot” learning + +อย่างไรก็ตาม ยิ่งผู้ใช้สามารถกำหนดคำถามของตนได้มากขึ้น ด้วยคำขอที่ละเอียดและตัวอย่าง – บริบท – คำตอบก็จะยิ่งแม่นยำและใกล้เคียงกับความคาดหวังของผู้ใช้มากขึ้น ในกรณีนี้ เราจะพูดถึง “one-shot” learning หากคำสั่งมีเพียงตัวอย่างเดียว และ “few-shot learning” หากมีตัวอย่างหลายตัวอย่าง การออกแบบคำสั่งพร้อมบริบทเป็นวิธีที่คุ้มค่าที่สุดในการเริ่มต้น + +### Retrieval Augmented Generation (RAG) + +LLM มีข้อจำกัดที่สามารถใช้ได้เฉพาะข้อมูลที่ถูกใช้ในระหว่างการฝึกอบรมเพื่อสร้างคำตอบ ซึ่งหมายความว่าพวกมันไม่สามารถรู้เกี่ยวกับข้อเท็จจริงที่เกิดขึ้นหลังจากกระบวนการฝึกอบรม และไม่สามารถเข้าถึงข้อมูลที่ไม่เปิดเผยต่อสาธารณะ (เช่น ข้อมูลบริษัท) +สิ่งนี้สามารถแก้ไขได้ด้วย RAG ซึ่งเป็นเทคนิคที่เพิ่มคำสั่งด้วยข้อมูลภายนอกในรูปแบบของส่วนของเอกสาร โดยพิจารณาจากข้อจำกัดของความยาวคำสั่ง ซึ่งได้รับการสนับสนุนโดยเครื่องมือฐานข้อมูล Vector (เช่น [Azure Vector Search](https://learn.microsoft.com/azure/search/vector-search-overview?WT.mc_id=academic-105485-koreyst)) ที่ดึงส่วนที่มีประโยชน์จากแหล่งข้อมูลที่กำหนดไว้ล่วงหน้าและเพิ่มเข้าไปในบริบทของคำสั่ง + +เทคนิคนี้มีประโยชน์มากเมื่อธุรกิจไม่มีข้อมูลเพียงพอ ไม่มีเวลาเพียงพอ หรือทรัพยากรในการปรับแต่ง LLM แต่ยังต้องการปรับปรุงประสิทธิภาพในงานเฉพาะและลดความเสี่ยงของการสร้างข้อมูลเท็จ เช่น การบิดเบือนความจริงหรือเนื้อหาที่เป็นอันตราย + +### โมเดลที่ปรับแต่งแล้ว + +การปรับแต่งเป็นกระบวนการที่ใช้การเรียนรู้แบบถ่ายโอน (transfer learning) เพื่อ ‘ปรับ’ โมเดลให้เหมาะสมกับงานที่ต้องการหรือแก้ปัญหาเฉพาะ แตกต่างจากการเรียนรู้แบบ few-shot และ RAG มันส่งผลให้เกิดโมเดลใหม่ที่มีการปรับปรุงน้ำหนักและอคติ มันต้องการชุดตัวอย่างการฝึกอบรมที่ประกอบด้วยอินพุตเดียว (คำสั่ง) และผลลัพธ์ที่เกี่ยวข้อง (การเติมเต็ม) +นี่จะเป็นวิธีที่เหมาะสมหาก: + +- **การใช้โมเดลที่ปรับแต่งแล้ว** ธุรกิจต้องการใช้โมเดลที่ปรับแต่งแล้วที่มีความสามารถน้อยกว่า (เช่น embedding models) แทนที่จะใช้โมเดลที่มีประสิทธิภาพสูง ซึ่งส่งผลให้เป็นโซลูชันที่คุ้มค่าและรวดเร็วกว่า + +- **พิจารณาความล่าช้า** ความล่าช้ามีความสำคัญสำหรับกรณีการใช้งานเฉพาะ ดังนั้นจึงไม่สามารถใช้คำสั่งที่ยาวมากหรือจำนวนตัวอย่างที่ควรเรียนรู้จากโมเดลที่ไม่เหมาะสมกับข้อจำกัดความยาวคำสั่ง + +- **การอัปเดตข้อมูล** ธุรกิจมีข้อมูลคุณภาพสูงและป้ายกำกับความจริงที่ต้องการ และทรัพยากรที่จำเป็นในการรักษาข้อมูลนี้ให้ทันสมัยอยู่เสมอ + +### โมเดลที่ฝึกอบรมแล้ว + +การฝึกอบรม LLM ตั้งแต่เริ่มต้นเป็นวิธีที่ยากที่สุดและซับซ้อนที่สุดในการนำไปใช้ ต้องการข้อมูลจำนวนมาก ทรัพยากรที่มีความเชี่ยวชาญ และพลังการประมวลผลที่เหมาะสม ตัวเลือกนี้ควรพิจารณาเฉพาะในกรณีที่ธุรกิจมีกรณีการใช้งานเฉพาะด้านและข้อมูลที่เน้นเฉพาะด้านในปริมาณมาก + +## ทดสอบความรู้ + +วิธีใดที่เหมาะสมในการปรับปรุงผลลัพธ์การเติมเต็มของ LLM? + +1. การออกแบบคำสั่งพร้อมบริบท +1. RAG +1. โมเดลที่ปรับแต่งแล้ว + +A:3, หากคุณมีเวลาและทรัพยากรและข้อมูลคุณภาพสูง การปรับแต่งจะเป็นตัวเลือกที่ดีกว่าในการรักษาความทันสมัย อย่างไรก็ตาม หากคุณต้องการปรับปรุงและไม่มีเวลา ควรพิจารณา RAG ก่อน + +## 🚀 ความท้าทาย + +ศึกษาข้อมูลเพิ่มเติมเกี่ยวกับวิธีที่คุณสามารถ [ใช้ RAG](https://learn.microsoft.com/azure/search/retrieval-augmented-generation-overview?WT.mc_id=academic-105485-koreyst) สำหรับธุรกิจของคุณ + +## ทำได้ดีมาก, เรียนรู้ต่อไป + +หลังจากจบบทเรียนนี้แล้ว ลองดู [Generative AI Learning collection](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) ของเราเพื่อเพิ่มพูนความรู้เกี่ยวกับ Generative AI ของคุณ! + +ไปที่บทเรียนที่ 3 ซึ่งเราจะมาดูวิธี [สร้างด้วย Generative AI อย่างมีความรับผิดชอบ](../03-using-generative-ai-responsibly/README.md?WT.mc_id=academic-105485-koreyst)! + +--- + +**ข้อจำกัดความรับผิดชอบ**: +เอกสารนี้ได้รับการแปลโดยใช้บริการแปลภาษา AI [Co-op Translator](https://github.com/Azure/co-op-translator) แม้ว่าเราจะพยายามให้การแปลมีความถูกต้อง แต่โปรดทราบว่าการแปลโดยอัตโนมัติอาจมีข้อผิดพลาดหรือความไม่ถูกต้อง เอกสารต้นฉบับในภาษาดั้งเดิมควรถือเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลที่สำคัญ ขอแนะนำให้ใช้บริการแปลภาษามืออาชีพ เราไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความผิดที่เกิดจากการใช้การแปลนี้ \ No newline at end of file diff --git a/translations/th/03-using-generative-ai-responsibly/README.md b/translations/th/03-using-generative-ai-responsibly/README.md index 7ec7d54b8b..8975b284d5 100644 --- a/translations/th/03-using-generative-ai-responsibly/README.md +++ b/translations/th/03-using-generative-ai-responsibly/README.md @@ -1,145 +1,145 @@ - -# การใช้ Generative AI อย่างรับผิดชอบ - -[![Using Generative AI Responsibly](../../../translated_images/03-lesson-banner.1ed56067a452d97709d51f6cc8b6953918b2287132f4909ade2008c936cd4af9.th.png)](https://aka.ms/gen-ai-lesson3-gh?WT.mc_id=academic-105485-koreyst) - -> _คลิกที่ภาพด้านบนเพื่อดูวิดีโอบทเรียนนี้_ - -การที่เราหลงใหลใน AI โดยเฉพาะ Generative AI เป็นเรื่องง่าย แต่คุณต้องพิจารณาว่าจะใช้มันอย่างรับผิดชอบอย่างไร คุณต้องคำนึงถึงเรื่องต่างๆ เช่น วิธีการทำให้ผลลัพธ์เป็นธรรม ไม่ก่อให้เกิดอันตราย และอื่นๆ บทนี้มีเป้าหมายเพื่อให้บริบทที่กล่าวถึง สิ่งที่ควรพิจารณา และวิธีการดำเนินการอย่างจริงจังเพื่อพัฒนาการใช้งาน AI ของคุณ - -## บทนำ - -บทเรียนนี้จะครอบคลุม: - -- เหตุผลที่คุณควรให้ความสำคัญกับ Responsible AI เมื่อสร้างแอปพลิเคชัน Generative AI -- หลักการสำคัญของ Responsible AI และความสัมพันธ์กับ Generative AI -- วิธีการนำหลักการ Responsible AI ไปใช้จริงผ่านกลยุทธ์และเครื่องมือ - -## เป้าหมายการเรียนรู้ - -หลังจากเรียนบทเรียนนี้จบ คุณจะเข้าใจ: - -- ความสำคัญของ Responsible AI เมื่อสร้างแอปพลิเคชัน Generative AI -- เมื่อใดควรคิดและนำหลักการสำคัญของ Responsible AI ไปใช้ในการสร้างแอปพลิเคชัน Generative AI -- เครื่องมือและกลยุทธ์ที่มีให้ใช้เพื่อปฏิบัติแนวคิด Responsible AI - -## หลักการ Responsible AI - -ความตื่นเต้นกับ Generative AI ไม่เคยสูงขนาดนี้มาก่อน ความตื่นเต้นนี้ได้นำพานักพัฒนารายใหม่ ความสนใจ และเงินทุนจำนวนมากเข้าสู่พื้นที่นี้ แม้ว่าจะเป็นเรื่องดีสำหรับใครก็ตามที่ต้องการสร้างผลิตภัณฑ์และบริษัทโดยใช้ Generative AI แต่ก็สำคัญที่เราจะต้องดำเนินการอย่างรับผิดชอบ - -ตลอดหลักสูตรนี้ เราจะมุ่งเน้นการสร้างสตาร์ทอัพและผลิตภัณฑ์การศึกษาด้าน AI ของเรา เราจะใช้หลักการ Responsible AI ได้แก่ ความเป็นธรรม (Fairness), ความครอบคลุม (Inclusiveness), ความน่าเชื่อถือ/ความปลอดภัย (Reliability/Safety), ความมั่นคงและความเป็นส่วนตัว (Security & Privacy), ความโปร่งใส (Transparency) และความรับผิดชอบ (Accountability) ด้วยหลักการเหล่านี้ เราจะสำรวจว่ามันเกี่ยวข้องกับการใช้ Generative AI ในผลิตภัณฑ์ของเราอย่างไร - -## ทำไมคุณควรให้ความสำคัญกับ Responsible AI - -เมื่อสร้างผลิตภัณฑ์ การใช้แนวทางที่เน้นมนุษย์เป็นศูนย์กลางโดยคำนึงถึงประโยชน์สูงสุดของผู้ใช้จะนำไปสู่ผลลัพธ์ที่ดีที่สุด - -ความพิเศษของ Generative AI คือพลังในการสร้างคำตอบ ข้อมูล คำแนะนำ และเนื้อหาที่เป็นประโยชน์สำหรับผู้ใช้ ซึ่งสามารถทำได้โดยไม่ต้องผ่านขั้นตอนด้วยมือมากมาย ทำให้ได้ผลลัพธ์ที่น่าประทับใจมาก แต่หากไม่มีการวางแผนและกลยุทธ์ที่เหมาะสม ก็อาจนำไปสู่ผลลัพธ์ที่เป็นอันตรายต่อผู้ใช้ ผลิตภัณฑ์ และสังคมโดยรวมได้ - -มาดูตัวอย่างบางส่วน (แต่ไม่ใช่ทั้งหมด) ของผลลัพธ์ที่อาจเป็นอันตรายเหล่านี้: - -### Hallucinations - -Hallucinations คือคำที่ใช้เรียกเมื่อ LLM สร้างเนื้อหาที่ไม่มีความหมายเลย หรือเป็นสิ่งที่เรารู้ว่าผิดจากข้อเท็จจริงตามแหล่งข้อมูลอื่น - -สมมติว่าเราสร้างฟีเจอร์สำหรับสตาร์ทอัพของเราที่ให้นักเรียนถามคำถามเกี่ยวกับประวัติศาสตร์กับโมเดล นักเรียนถามคำถามว่า `ใครเป็นผู้รอดชีวิตเพียงคนเดียวจากเรือไททานิก?` - -โมเดลตอบกลับด้วยคำตอบดังนี้: - -![Prompt saying "Who was the sole survivor of the Titanic"](../../../03-using-generative-ai-responsibly/images/ChatGPT-titanic-survivor-prompt.webp) - -> _(ที่มา: [Flying bisons](https://flyingbisons.com?WT.mc_id=academic-105485-koreyst))_ - -นี่เป็นคำตอบที่มั่นใจและละเอียดมาก แต่น่าเสียดายที่มันไม่ถูกต้อง แม้เพียงการค้นคว้าเล็กน้อยก็จะพบว่ามีผู้รอดชีวิตมากกว่าหนึ่งคนจากเหตุการณ์เรือไททานิก สำหรับนักเรียนที่เพิ่งเริ่มต้นศึกษาหัวข้อนี้ คำตอบนี้อาจโน้มน้าวให้เชื่อโดยไม่ตั้งคำถามและถือเป็นข้อเท็จจริง ผลลัพธ์นี้อาจทำให้ระบบ AI ไม่น่าเชื่อถือและส่งผลเสียต่อชื่อเสียงของสตาร์ทอัพของเรา - -ในแต่ละเวอร์ชันของ LLM เราเห็นการพัฒนาประสิทธิภาพในการลด hallucinations แม้จะมีการพัฒนานี้ เราในฐานะผู้สร้างแอปและผู้ใช้ยังต้องตระหนักถึงข้อจำกัดเหล่านี้อยู่เสมอ - -### เนื้อหาที่เป็นอันตราย - -เราได้พูดถึงในส่วนก่อนหน้านี้เมื่อ LLM สร้างคำตอบที่ผิดหรือไม่มีความหมาย อีกความเสี่ยงที่ต้องระวังคือเมื่อโมเดลตอบกลับด้วยเนื้อหาที่เป็นอันตราย - -เนื้อหาที่เป็นอันตรายหมายถึง: - -- การให้คำแนะนำหรือสนับสนุนการทำร้ายตัวเองหรือผู้อื่นบางกลุ่ม -- เนื้อหาที่เกลียดชังหรือดูถูก -- การชี้แนะการวางแผนการโจมตีหรือการกระทำรุนแรงใดๆ -- การให้คำแนะนำในการค้นหาเนื้อหาที่ผิดกฎหมายหรือการกระทำผิดกฎหมาย -- การแสดงเนื้อหาทางเพศอย่างชัดเจน - -สำหรับสตาร์ทอัพของเรา เราต้องมั่นใจว่าเรามีเครื่องมือและกลยุทธ์ที่เหมาะสมเพื่อป้องกันไม่ให้เนื้อหาประเภทนี้ถูกมองเห็นโดยนักเรียน - -### ขาดความเป็นธรรม - -ความเป็นธรรมหมายถึง “การทำให้ระบบ AI ปราศจากอคติและการเลือกปฏิบัติ และปฏิบัติต่อทุกคนอย่างเท่าเทียมและเป็นธรรม” ในโลกของ Generative AI เราต้องมั่นใจว่าโมเดลไม่เสริมสร้างมุมมองที่กีดกันกลุ่มคนชายขอบผ่านผลลัพธ์ที่สร้างขึ้น - -ผลลัพธ์ประเภทนี้ไม่เพียงแต่ทำลายประสบการณ์การใช้ผลิตภัณฑ์ที่ดีสำหรับผู้ใช้ของเราเท่านั้น แต่ยังก่อให้เกิดความเสียหายต่อสังคมมากขึ้นอีกด้วย ในฐานะผู้สร้างแอป เราควรคำนึงถึงฐานผู้ใช้ที่กว้างและหลากหลายเสมอเมื่อสร้างโซลูชันด้วย Generative AI - -## วิธีใช้ Generative AI อย่างรับผิดชอบ - -เมื่อเราเข้าใจความสำคัญของ Responsible Generative AI แล้ว มาดู 4 ขั้นตอนที่เราสามารถทำได้เพื่อสร้างโซลูชัน AI อย่างรับผิดชอบ: - -![Mitigate Cycle](../../../translated_images/mitigate-cycle.babcd5a5658e1775d5f2cb47f2ff305cca090400a72d98d0f9e57e9db5637c72.th.png) - -### วัดผลความเสี่ยงที่อาจเกิดขึ้น - -ในการทดสอบซอฟต์แวร์ เราทดสอบการกระทำที่คาดหวังของผู้ใช้บนแอปพลิเคชัน ในทำนองเดียวกัน การทดสอบชุดคำถามที่หลากหลายซึ่งผู้ใช้น่าจะใช้บ่อยเป็นวิธีที่ดีในการวัดความเสี่ยงที่อาจเกิดขึ้น - -เนื่องจากสตาร์ทอัพของเรากำลังสร้างผลิตภัณฑ์การศึกษา การเตรียมรายการคำถามที่เกี่ยวข้องกับการศึกษา เช่น หัวข้อวิชา ข้อเท็จจริงทางประวัติศาสตร์ และคำถามเกี่ยวกับชีวิตนักเรียน จะเป็นประโยชน์ - -### ลดความเสี่ยงที่อาจเกิดขึ้น - -ถึงเวลาหาวิธีป้องกันหรือลดความเสี่ยงที่อาจเกิดจากโมเดลและคำตอบของมัน เราสามารถพิจารณาใน 4 ชั้นต่างๆ ดังนี้: - -![Mitigation Layers](../../../translated_images/mitigation-layers.377215120b9a1159a8c3982c6bbcf41b6adf8c8fa04ce35cbaeeb13b4979cdfc.th.png) - -- **Model** เลือกโมเดลที่เหมาะสมกับกรณีการใช้งาน โมเดลที่ใหญ่และซับซ้อนกว่า เช่น GPT-4 อาจมีความเสี่ยงในการสร้างเนื้อหาที่เป็นอันตรายมากขึ้นเมื่อใช้กับกรณีการใช้งานที่เล็กและเฉพาะเจาะจง การใช้ข้อมูลฝึกอบรมของคุณเองเพื่อปรับแต่งโมเดลยังช่วยลดความเสี่ยงนี้ได้ - -- **Safety System** ระบบความปลอดภัยคือชุดเครื่องมือและการตั้งค่าบนแพลตฟอร์มที่ให้บริการโมเดลเพื่อช่วยลดความเสี่ยง ตัวอย่างเช่น ระบบกรองเนื้อหาบนบริการ Azure OpenAI ระบบเหล่านี้ควรตรวจจับการโจมตี jailbreak และกิจกรรมที่ไม่พึงประสงค์ เช่น คำขอจากบอท - -- **Metaprompt** Metaprompt และ grounding คือวิธีที่เราสามารถกำหนดหรือจำกัดโมเดลตามพฤติกรรมและข้อมูลบางอย่าง เช่น การใช้ข้อมูลระบบเพื่อกำหนดขอบเขตของโมเดล นอกจากนี้ยังช่วยให้ผลลัพธ์มีความเกี่ยวข้องกับขอบเขตหรือโดเมนของระบบมากขึ้น - -นอกจากนี้ยังสามารถใช้เทคนิคอย่าง Retrieval Augmented Generation (RAG) เพื่อให้โมเดลดึงข้อมูลเฉพาะจากแหล่งที่เชื่อถือได้เท่านั้น มีบทเรียนในหลักสูตรนี้เกี่ยวกับ [การสร้างแอปพลิเคชันค้นหา](../08-building-search-applications/README.md?WT.mc_id=academic-105485-koreyst) - -- **User Experience** ชั้นสุดท้ายคือที่ที่ผู้ใช้โต้ตอบกับโมเดลผ่านอินเทอร์เฟซของแอปพลิเคชัน เราสามารถออกแบบ UI/UX เพื่อจำกัดประเภทของข้อมูลที่ผู้ใช้ส่งไปยังโมเดล รวมถึงข้อความหรือภาพที่แสดงให้ผู้ใช้เห็น เมื่อเปิดใช้งานแอป AI เราต้องโปร่งใสเกี่ยวกับสิ่งที่แอป Generative AI ของเราทำได้และทำไม่ได้ - -เรามีบทเรียนทั้งหมดที่อุทิศให้กับ [การออกแบบ UX สำหรับแอป AI](../12-designing-ux-for-ai-applications/README.md?WT.mc_id=academic-105485-koreyst) - -- **ประเมินโมเดล** การทำงานกับ LLM อาจท้าทายเพราะเราไม่สามารถควบคุมข้อมูลที่ใช้ฝึกโมเดลได้เสมอไป อย่างไรก็ตาม เราควรประเมินประสิทธิภาพและผลลัพธ์ของโมเดลเสมอ การวัดความแม่นยำ ความคล้ายคลึง ความมีพื้นฐาน และความเกี่ยวข้องของผลลัพธ์ยังคงสำคัญ ซึ่งช่วยสร้างความโปร่งใสและความไว้วางใจให้กับผู้มีส่วนได้ส่วนเสียและผู้ใช้ - -### ดำเนินการโซลูชัน Generative AI อย่างรับผิดชอบ - -การสร้างแนวปฏิบัติการใช้งานรอบด้านสำหรับแอป AI ของคุณคือขั้นตอนสุดท้าย ซึ่งรวมถึงการร่วมมือกับฝ่ายอื่นๆ ในสตาร์ทอัพ เช่น ฝ่ายกฎหมายและฝ่ายความปลอดภัย เพื่อให้มั่นใจว่าเราปฏิบัติตามนโยบายและกฎระเบียบทั้งหมด ก่อนเปิดตัว เรายังต้องวางแผนการส่งมอบ การจัดการเหตุการณ์ และการย้อนกลับเพื่อป้องกันความเสียหายที่อาจเกิดขึ้นกับผู้ใช้ - -## เครื่องมือ - -แม้ว่าการพัฒนาโซลูชัน Responsible AI อาจดูเหมือนงานหนัก แต่เป็นงานที่คุ้มค่า เมื่อพื้นที่ Generative AI เติบโตขึ้น เครื่องมือที่ช่วยให้นักพัฒนาผสานความรับผิดชอบเข้ากับกระบวนการทำงานได้อย่างมีประสิทธิภาพก็จะพัฒนาไปด้วย เช่น [Azure AI Content Safety](https://learn.microsoft.com/azure/ai-services/content-safety/overview?WT.mc_id=academic-105485-koreyst) ที่ช่วยตรวจจับเนื้อหาและภาพที่เป็นอันตรายผ่านการเรียก API - -## ตรวจสอบความรู้ - -มีสิ่งใดบ้างที่คุณต้องใส่ใจเพื่อให้การใช้ AI เป็นไปอย่างรับผิดชอบ? - -1. คำตอบต้องถูกต้อง -1. การใช้งานที่เป็นอันตราย ต้องไม่ใช้ AI เพื่อวัตถุประสงค์ทางอาชญากรรม -1. ต้องมั่นใจว่า AI ปราศจากอคติและการเลือกปฏิบัติ - -ตอบ: ข้อ 2 และ 3 ถูกต้อง Responsible AI ช่วยให้คุณพิจารณาวิธีลดผลกระทบที่เป็นอันตรายและอคติ รวมถึงเรื่องอื่นๆ - -## 🚀 ความท้าทาย - -อ่านเพิ่มเติมเกี่ยวกับ [Azure AI Content Safety](https://learn.microsoft.com/azure/ai-services/content-safety/overview?WT.mc_id=academic-105485-koreyst) และดูว่าคุณจะนำไปใช้กับการใช้งานของคุณได้อย่างไร - -## ทำได้ดีมาก ต่อเนื่องการเรียนรู้ของคุณ - -หลังจากเรียนบทเรียนนี้จบแล้ว ลองดู [คอลเลกชันการเรียนรู้ Generative AI](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) เพื่อพัฒนาความรู้ด้าน Generative AI ของคุณให้สูงขึ้น! - -ไปที่บทเรียนที่ 4 ซึ่งเราจะพูดถึง [พื้นฐานการออกแบบ Prompt](../04-prompt-engineering-fundamentals/README.md?WT.mc_id=academic-105485-koreyst)! - -**ข้อจำกัดความรับผิดชอบ**: -เอกสารนี้ได้รับการแปลโดยใช้บริการแปลภาษาอัตโนมัติ [Co-op Translator](https://github.com/Azure/co-op-translator) แม้เราจะพยายามให้ความถูกต้องสูงสุด แต่โปรดทราบว่าการแปลอัตโนมัติอาจมีข้อผิดพลาดหรือความไม่ถูกต้อง เอกสารต้นฉบับในภาษาต้นทางถือเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลที่สำคัญ ขอแนะนำให้ใช้บริการแปลโดยผู้เชี่ยวชาญมนุษย์ เราไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความผิดใด ๆ ที่เกิดจากการใช้การแปลนี้ \ No newline at end of file + +# การใช้ Generative AI อย่างรับผิดชอบ + +[![การใช้ Generative AI อย่างรับผิดชอบ](../../../translated_images/03-lesson-banner.1ed56067a452d97709d51f6cc8b6953918b2287132f4909ade2008c936cd4af9.th.png)](https://youtu.be/YOp-e1GjZdA?si=7Wv4wu3x44L1DCVj) + +> _คลิกที่ภาพด้านบนเพื่อดูวิดีโอของบทเรียนนี้_ + +AI และ Generative AI นั้นน่าตื่นเต้นและน่าสนใจ แต่คุณต้องพิจารณาว่าจะใช้งานมันอย่างรับผิดชอบได้อย่างไร คุณต้องคำนึงถึงสิ่งต่าง ๆ เช่น การทำให้ผลลัพธ์มีความยุติธรรม ไม่เป็นอันตราย และอื่น ๆ บทนี้มีเป้าหมายที่จะให้บริบทที่กล่าวถึง สิ่งที่ควรพิจารณา และวิธีการดำเนินการเพื่อปรับปรุงการใช้งาน AI ของคุณ + +## บทนำ + +บทเรียนนี้จะครอบคลุม: + +- เหตุผลที่คุณควรให้ความสำคัญกับ Responsible AI เมื่อสร้างแอปพลิเคชัน Generative AI +- หลักการสำคัญของ Responsible AI และความสัมพันธ์กับ Generative AI +- วิธีการนำหลักการ Responsible AI ไปปฏิบัติผ่านกลยุทธ์และเครื่องมือ + +## เป้าหมายการเรียนรู้ + +หลังจากจบบทเรียนนี้ คุณจะทราบว่า: + +- ความสำคัญของ Responsible AI เมื่อสร้างแอปพลิเคชัน Generative AI +- เมื่อใดควรคิดและนำหลักการสำคัญของ Responsible AI ไปใช้เมื่อสร้างแอปพลิเคชัน Generative AI +- เครื่องมือและกลยุทธ์ที่มีอยู่เพื่อช่วยให้คุณนำแนวคิดของ Responsible AI ไปปฏิบัติ + +## หลักการของ Responsible AI + +ความตื่นเต้นเกี่ยวกับ Generative AI นั้นสูงกว่าที่เคย ความตื่นเต้นนี้ได้นำพานักพัฒนารายใหม่ ความสนใจ และเงินทุนจำนวนมากมายังพื้นที่นี้ แม้ว่าสิ่งนี้จะเป็นเรื่องดีสำหรับผู้ที่ต้องการสร้างผลิตภัณฑ์และบริษัทโดยใช้ Generative AI แต่ก็สำคัญที่เราจะดำเนินการอย่างรับผิดชอบ + +ตลอดหลักสูตรนี้ เรามุ่งเน้นไปที่การสร้างสตาร์ทอัพและผลิตภัณฑ์การศึกษา AI ของเรา เราจะใช้หลักการของ Responsible AI: ความยุติธรรม ความครอบคลุม ความน่าเชื่อถือ/ความปลอดภัย ความปลอดภัยและความเป็นส่วนตัว ความโปร่งใส และความรับผิดชอบ ด้วยหลักการเหล่านี้ เราจะสำรวจว่ามันเกี่ยวข้องกับการใช้ Generative AI ในผลิตภัณฑ์ของเราอย่างไร + +## ทำไมคุณควรให้ความสำคัญกับ Responsible AI + +เมื่อสร้างผลิตภัณฑ์ การใช้วิธีการที่มุ่งเน้นมนุษย์โดยคำนึงถึงผลประโยชน์สูงสุดของผู้ใช้จะนำไปสู่ผลลัพธ์ที่ดีที่สุด + +ความพิเศษของ Generative AI คือพลังในการสร้างคำตอบที่เป็นประโยชน์ ข้อมูล คำแนะนำ และเนื้อหาสำหรับผู้ใช้ สิ่งนี้สามารถทำได้โดยไม่ต้องมีขั้นตอนที่ซับซ้อนมากมาย ซึ่งสามารถนำไปสู่ผลลัพธ์ที่น่าประทับใจมาก อย่างไรก็ตาม หากไม่มีการวางแผนและกลยุทธ์ที่เหมาะสม ก็อาจนำไปสู่ผลลัพธ์ที่เป็นอันตรายต่อผู้ใช้ ผลิตภัณฑ์ และสังคมโดยรวมได้ + +ลองมาดูผลลัพธ์ที่อาจเป็นอันตรายบางส่วน (แต่ไม่ทั้งหมด): + +### การสร้างข้อมูลผิดพลาด (Hallucinations) + +Hallucinations เป็นคำที่ใช้เพื่ออธิบายเมื่อ LLM สร้างเนื้อหาที่ไม่มีความหมายหรือสิ่งที่เรารู้ว่าไม่ถูกต้องตามข้อเท็จจริงจากแหล่งข้อมูลอื่น + +ลองสมมติว่าเราสร้างฟีเจอร์สำหรับสตาร์ทอัพของเราที่ให้นักเรียนถามคำถามเกี่ยวกับประวัติศาสตร์กับโมเดล นักเรียนถามคำถามว่า `ใครเป็นผู้รอดชีวิตเพียงคนเดียวจากเรือ Titanic?` + +โมเดลสร้างคำตอบเช่นนี้: + +![Prompt saying "Who was the sole survivor of the Titanic"](../../../03-using-generative-ai-responsibly/images/ChatGPT-titanic-survivor-prompt.webp) + +> _(แหล่งที่มา: [Flying bisons](https://flyingbisons.com?WT.mc_id=academic-105485-koreyst))_ + +นี่เป็นคำตอบที่มั่นใจและละเอียดมาก แต่โชคร้ายที่มันไม่ถูกต้อง แม้จะมีการค้นคว้าเพียงเล็กน้อย ก็จะพบว่ามีผู้รอดชีวิตมากกว่าหนึ่งคนจากเหตุการณ์เรือ Titanic สำหรับนักเรียนที่เพิ่งเริ่มต้นค้นคว้าหัวข้อนี้ คำตอบนี้อาจโน้มน้าวใจพอที่จะไม่ถูกตั้งคำถามและถูกมองว่าเป็นข้อเท็จจริง ผลกระทบของสิ่งนี้อาจทำให้ระบบ AI ไม่น่าเชื่อถือและส่งผลเสียต่อชื่อเสียงของสตาร์ทอัพของเรา + +ด้วยการปรับปรุงในแต่ละรุ่นของ LLM เราได้เห็นการพัฒนาประสิทธิภาพในการลด Hallucinations แม้จะมีการปรับปรุงนี้ เราในฐานะผู้สร้างแอปพลิเคชันและผู้ใช้ยังคงต้องตระหนักถึงข้อจำกัดเหล่านี้ + +### เนื้อหาที่เป็นอันตราย + +เราได้กล่าวถึงในส่วนก่อนหน้านี้เมื่อ LLM สร้างคำตอบที่ไม่ถูกต้องหรือไม่มีความหมาย อีกหนึ่งความเสี่ยงที่เราต้องตระหนักคือเมื่อโมเดลตอบกลับด้วยเนื้อหาที่เป็นอันตราย + +เนื้อหาที่เป็นอันตรายสามารถนิยามได้ว่า: + +- ให้คำแนะนำหรือสนับสนุนการทำร้ายตัวเองหรือกลุ่มคนบางกลุ่ม +- เนื้อหาที่แสดงความเกลียดชังหรือดูถูก +- แนะนำการวางแผนการโจมตีหรือการกระทำที่รุนแรง +- ให้คำแนะนำเกี่ยวกับวิธีการค้นหาเนื้อหาที่ผิดกฎหมายหรือกระทำการผิดกฎหมาย +- แสดงเนื้อหาที่มีลักษณะทางเพศอย่างชัดเจน + +สำหรับสตาร์ทอัพของเรา เราต้องการให้แน่ใจว่าเรามีเครื่องมือและกลยุทธ์ที่เหมาะสมเพื่อป้องกันไม่ให้เนื้อหาประเภทนี้ถูกมองเห็นโดยนักเรียน + +### การขาดความยุติธรรม + +ความยุติธรรมถูกนิยามว่า “การทำให้ระบบ AI ปราศจากอคติและการเลือกปฏิบัติ และทำให้มันปฏิบัติต่อทุกคนอย่างยุติธรรมและเท่าเทียมกัน” ในโลกของ Generative AI เราต้องการให้แน่ใจว่ามุมมองที่กีดกันของกลุ่มที่ถูกกดขี่ไม่ได้ถูกเสริมสร้างโดยผลลัพธ์ของโมเดล + +ผลลัพธ์ประเภทนี้ไม่เพียงแต่ทำลายประสบการณ์การใช้งานผลิตภัณฑ์ที่ดีสำหรับผู้ใช้ของเรา แต่ยังก่อให้เกิดอันตรายต่อสังคมในวงกว้าง ในฐานะผู้สร้างแอปพลิเคชัน เราควรคำนึงถึงฐานผู้ใช้ที่หลากหลายและกว้างขวางเมื่อสร้างโซลูชันด้วย Generative AI + +## วิธีการใช้ Generative AI อย่างรับผิดชอบ + +ตอนนี้เราได้ระบุความสำคัญของ Responsible Generative AI แล้ว ลองมาดู 4 ขั้นตอนที่เราสามารถทำได้เพื่อสร้างโซลูชัน AI ของเราอย่างรับผิดชอบ: + +![Mitigate Cycle](../../../translated_images/mitigate-cycle.babcd5a5658e1775d5f2cb47f2ff305cca090400a72d98d0f9e57e9db5637c72.th.png) + +### วัดผลกระทบที่อาจเกิดขึ้น + +ในการทดสอบซอฟต์แวร์ เราทดสอบการกระทำที่คาดหวังของผู้ใช้บนแอปพลิเคชัน ในทำนองเดียวกัน การทดสอบชุดคำถามที่หลากหลายที่ผู้ใช้อาจใช้เป็นวิธีที่ดีในการวัดผลกระทบที่อาจเกิดขึ้น + +เนื่องจากสตาร์ทอัพของเรากำลังสร้างผลิตภัณฑ์การศึกษา การเตรียมรายการคำถามที่เกี่ยวข้องกับการศึกษาจะเป็นประโยชน์ สิ่งนี้อาจครอบคลุมหัวข้อบางอย่าง ข้อเท็จจริงทางประวัติศาสตร์ และคำถามเกี่ยวกับชีวิตนักเรียน + +### ลดผลกระทบที่อาจเกิดขึ้น + +ถึงเวลาหาวิธีที่เราสามารถป้องกันหรือจำกัดผลกระทบที่อาจเกิดขึ้นจากโมเดลและคำตอบของมัน เราสามารถมองสิ่งนี้ใน 4 ชั้น: + +![Mitigation Layers](../../../translated_images/mitigation-layers.377215120b9a1159a8c3982c6bbcf41b6adf8c8fa04ce35cbaeeb13b4979cdfc.th.png) + +- **โมเดล**. เลือกโมเดลที่เหมาะสมกับกรณีการใช้งานที่เหมาะสม โมเดลที่ใหญ่และซับซ้อนกว่า เช่น GPT-4 อาจก่อให้เกิดความเสี่ยงของเนื้อหาที่เป็นอันตรายมากขึ้นเมื่อใช้กับกรณีการใช้งานที่เล็กและเฉพาะเจาะจง การใช้ข้อมูลการฝึกอบรมของคุณเพื่อปรับแต่งโมเดลยังช่วยลดความเสี่ยงของเนื้อหาที่เป็นอันตราย + +- **ระบบความปลอดภัย**. ระบบความปลอดภัยคือชุดเครื่องมือและการกำหนดค่าบนแพลตฟอร์มที่ให้บริการโมเดลที่ช่วยลดผลกระทบ ตัวอย่างเช่น ระบบกรองเนื้อหาบน Azure OpenAI service ระบบควรตรวจจับการโจมตีแบบ jailbreak และกิจกรรมที่ไม่พึงประสงค์ เช่น คำขอจากบอท + +- **Metaprompt**. Metaprompt และ grounding เป็นวิธีที่เราสามารถกำหนดหรือจำกัดโมเดลตามพฤติกรรมและข้อมูลบางอย่าง สิ่งนี้อาจเป็นการใช้ข้อมูลระบบเพื่อกำหนดขอบเขตของโมเดล นอกจากนี้ยังสามารถใช้เทคนิคเช่น Retrieval Augmented Generation (RAG) เพื่อให้โมเดลดึงข้อมูลจากแหล่งข้อมูลที่เชื่อถือได้เท่านั้น มีบทเรียนในหลักสูตรนี้เกี่ยวกับ [การสร้างแอปพลิเคชันการค้นหา](../08-building-search-applications/README.md?WT.mc_id=academic-105485-koreyst) + +- **ประสบการณ์ผู้ใช้**. ชั้นสุดท้ายคือที่ที่ผู้ใช้โต้ตอบโดยตรงกับโมเดลผ่านอินเทอร์เฟซของแอปพลิเคชันของเรา ในวิธีนี้เราสามารถออกแบบ UI/UX เพื่อจำกัดผู้ใช้ในประเภทของข้อมูลที่พวกเขาสามารถส่งไปยังโมเดล รวมถึงข้อความหรือภาพที่แสดงให้ผู้ใช้เห็น เมื่อเปิดตัวแอปพลิเคชัน AI เราต้องโปร่งใสเกี่ยวกับสิ่งที่แอปพลิเคชัน Generative AI ของเราสามารถทำได้และไม่สามารถทำได้ + +เรามีบทเรียนทั้งหมดที่อุทิศให้กับ [การออกแบบ UX สำหรับแอปพลิเคชัน AI](../12-designing-ux-for-ai-applications/README.md?WT.mc_id=academic-105485-koreyst) + +- **ประเมินโมเดล**. การทำงานกับ LLM อาจเป็นเรื่องท้าทายเพราะเราไม่ได้ควบคุมข้อมูลที่โมเดลถูกฝึกมาเสมอไป อย่างไรก็ตาม เราควรประเมินประสิทธิภาพและผลลัพธ์ของโมเดลเสมอ การวัดความถูกต้อง ความคล้ายคลึง ความเชื่อมโยง และความเกี่ยวข้องของผลลัพธ์ยังคงเป็นสิ่งสำคัญ สิ่งนี้ช่วยให้เกิดความโปร่งใสและความไว้วางใจต่อผู้มีส่วนได้ส่วนเสียและผู้ใช้ + +### การดำเนินการโซลูชัน Generative AI อย่างรับผิดชอบ + +การสร้างแนวปฏิบัติการดำเนินงานรอบแอปพลิเคชัน AI ของคุณเป็นขั้นตอนสุดท้าย ซึ่งรวมถึงการร่วมมือกับส่วนอื่น ๆ ของสตาร์ทอัพของเรา เช่น ฝ่ายกฎหมายและความปลอดภัย เพื่อให้แน่ใจว่าเราปฏิบัติตามนโยบายข้อบังคับทั้งหมด ก่อนเปิดตัว เราควรสร้างแผนเกี่ยวกับการส่งมอบ การจัดการเหตุการณ์ และการย้อนกลับเพื่อป้องกันไม่ให้เกิดอันตรายต่อผู้ใช้ของเรา + +## เครื่องมือ + +แม้ว่างานพัฒนาโซลูชัน Responsible AI อาจดูเหมือนเป็นงานที่มาก แต่ก็เป็นงานที่คุ้มค่ากับความพยายาม เมื่อพื้นที่ของ Generative AI เติบโตขึ้น เครื่องมือที่ช่วยให้นักพัฒนารวมความรับผิดชอบเข้ากับกระบวนการทำงานของพวกเขาอย่างมีประสิทธิภาพจะพัฒนาไปด้วย ตัวอย่างเช่น [Azure AI Content Safety](https://learn.microsoft.com/azure/ai-services/content-safety/overview?WT.mc_id=academic-105485-koreyst) สามารถช่วยตรวจจับเนื้อหาและภาพที่เป็นอันตรายผ่านการร้องขอ API + +## ตรวจสอบความรู้ + +สิ่งที่คุณต้องใส่ใจเพื่อให้มั่นใจว่าการใช้งาน AI อย่างรับผิดชอบมีอะไรบ้าง? + +1. คำตอบต้องถูกต้อง +1. การใช้งานที่เป็นอันตราย เช่น AI ไม่ถูกใช้ในทางอาชญากรรม +1. การทำให้ AI ปราศจากอคติและการเลือกปฏิบัติ + +A: ข้อ 2 และ 3 ถูกต้อง Responsible AI ช่วยให้คุณพิจารณาวิธีการลดผลกระทบที่เป็นอันตรายและอคติ รวมถึงอื่น ๆ + +## 🚀 ความท้าทาย + +ศึกษาข้อมูลเกี่ยวกับ [Azure AI Content Safety](https://learn.microsoft.com/azure/ai-services/content-safety/overview?WT.mc_id=academic-105485-koreyst) และดูว่าคุณสามารถนำไปใช้ประโยชน์ได้อย่างไร + +## ทำได้ดีมาก! เรียนรู้เพิ่มเติมกันต่อ + +หลังจากจบบทเรียนนี้ ลองดู [Generative AI Learning collection](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) ของเราเพื่อเพิ่มพูนความรู้เกี่ยวกับ Generative AI ของคุณ! + +ไปที่บทเรียนที่ 4 ซึ่งเราจะศึกษาพื้นฐานของ [Prompt Engineering](../04-prompt-engineering-fundamentals/README.md?WT.mc_id=academic-105485-koreyst)! + +--- + +**ข้อจำกัดความรับผิดชอบ**: +เอกสารนี้ได้รับการแปลโดยใช้บริการแปลภาษา AI [Co-op Translator](https://github.com/Azure/co-op-translator) แม้ว่าเราจะพยายามให้การแปลมีความถูกต้อง แต่โปรดทราบว่าการแปลอัตโนมัติอาจมีข้อผิดพลาดหรือความไม่ถูกต้อง เอกสารต้นฉบับในภาษาดั้งเดิมควรถือเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลที่สำคัญ ขอแนะนำให้ใช้บริการแปลภาษามืออาชีพ เราไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความผิดที่เกิดจากการใช้การแปลนี้ \ No newline at end of file diff --git a/translations/th/04-prompt-engineering-fundamentals/README.md b/translations/th/04-prompt-engineering-fundamentals/README.md index 15295f8b30..b8c0ebeb60 100644 --- a/translations/th/04-prompt-engineering-fundamentals/README.md +++ b/translations/th/04-prompt-engineering-fundamentals/README.md @@ -1,106 +1,96 @@ # พื้นฐานการออกแบบคำสั่ง (Prompt Engineering) -[![พื้นฐานการออกแบบคำสั่ง](../../../translated_images/04-lesson-banner.a2c90deba7fedacda69f35b41636a8951ec91c2e33f5420b1254534ac85bc18e.th.png)](https://aka.ms/gen-ai-lesson4-gh?WT.mc_id=academic-105485-koreyst) +[![พื้นฐานการออกแบบคำสั่ง](../../../translated_images/04-lesson-banner.a2c90deba7fedacda69f35b41636a8951ec91c2e33f5420b1254534ac85bc18e.th.png)](https://youtu.be/GElCu2kUlRs?si=qrXsBvXnCW12epb8) ## บทนำ -โมดูลนี้ครอบคลุมแนวคิดและเทคนิคสำคัญสำหรับการสร้างคำสั่งที่มีประสิทธิภาพในโมเดล AI เชิงสร้างสรรค์ (Generative AI) วิธีการเขียนคำสั่ง (prompt) ให้กับ LLM มีความสำคัญมาก คำสั่งที่ถูกออกแบบมาอย่างดีสามารถให้ผลลัพธ์ที่มีคุณภาพดีกว่า แต่คำว่า _prompt_ และ _prompt engineering_ หมายถึงอะไร? และเราจะปรับปรุงคำสั่ง _input_ ที่ส่งไปยัง LLM ได้อย่างไร? คำถามเหล่านี้จะได้รับคำตอบในบทนี้และบทถัดไป +โมดูลนี้ครอบคลุมแนวคิดและเทคนิคสำคัญสำหรับการสร้างคำสั่งที่มีประสิทธิภาพในโมเดล AI เชิงสร้างสรรค์ วิธีการเขียนคำสั่งให้กับ LLM มีความสำคัญมาก คำสั่งที่ถูกออกแบบมาอย่างดีสามารถให้ผลลัพธ์ที่มีคุณภาพดีกว่า แต่คำว่า _คำสั่ง_ และ _การออกแบบคำสั่ง_ หมายถึงอะไร? และเราจะปรับปรุงคำสั่ง _อินพุต_ ที่เราส่งไปยัง LLM ได้อย่างไร? นี่คือคำถามที่เราจะพยายามตอบในบทนี้และบทถัดไป -_Generative AI_ มีความสามารถในการสร้างเนื้อหาใหม่ (เช่น ข้อความ รูปภาพ เสียง โค้ด ฯลฯ) ตามคำขอของผู้ใช้ โดยใช้ _Large Language Models_ เช่น GPT ("Generative Pre-trained Transformer") ของ OpenAI ซึ่งได้รับการฝึกฝนให้ใช้ภาษาธรรมชาติและโค้ด +_Generative AI_ สามารถสร้างเนื้อหาใหม่ (เช่น ข้อความ รูปภาพ เสียง โค้ด ฯลฯ) ตามคำขอของผู้ใช้ โดยใช้ _Large Language Models_ เช่น GPT ("Generative Pre-trained Transformer") ของ OpenAI ซึ่งได้รับการฝึกฝนให้ใช้ภาษาธรรมชาติและโค้ด -ผู้ใช้สามารถโต้ตอบกับโมเดลเหล่านี้ได้ผ่านรูปแบบที่คุ้นเคย เช่น การแชท โดยไม่จำเป็นต้องมีความเชี่ยวชาญทางเทคนิคหรือการฝึกอบรม โมเดลเหล่านี้เป็น _prompt-based_ - ผู้ใช้ส่งข้อความ (prompt) และได้รับการตอบกลับจาก AI (completion) จากนั้นสามารถ "แชทกับ AI" ได้อย่างต่อเนื่องในบทสนทนาแบบหลายรอบ โดยปรับแต่งคำสั่งจนกว่าผลลัพธ์จะตรงกับความคาดหวัง +ผู้ใช้สามารถโต้ตอบกับโมเดลเหล่านี้ได้โดยใช้รูปแบบที่คุ้นเคย เช่น การแชท โดยไม่จำเป็นต้องมีความเชี่ยวชาญทางเทคนิคหรือการฝึกอบรม โมเดลเหล่านี้เป็น _โมเดลที่ใช้คำสั่ง_ - ผู้ใช้ส่งข้อความอินพุต (คำสั่ง) และได้รับการตอบกลับจาก AI (ผลลัพธ์) จากนั้นผู้ใช้สามารถ "แชทกับ AI" อย่างต่อเนื่องในบทสนทนาแบบหลายรอบ ปรับแต่งคำสั่งจนกว่าผลลัพธ์จะตรงกับความคาดหวัง -"คำสั่ง" กลายเป็น _อินเทอร์เฟซการเขียนโปรแกรม_ หลักสำหรับแอปพลิเคชัน AI เชิงสร้างสรรค์ โดยบอกโมเดลว่าต้องทำอะไรและมีผลต่อคุณภาพของผลลัพธ์ที่ได้ "Prompt Engineering" เป็นสาขาการศึกษาที่เติบโตอย่างรวดเร็ว ซึ่งมุ่งเน้นไปที่ _การออกแบบและการปรับปรุง_ คำสั่งเพื่อให้ได้ผลลัพธ์ที่มีคุณภาพและสม่ำเสมอในระดับใหญ่ +"คำสั่ง" กลายเป็น _อินเทอร์เฟซการเขียนโปรแกรม_ หลักสำหรับแอปพลิเคชัน AI เชิงสร้างสรรค์ โดยบอกโมเดลว่าต้องทำอะไรและมีผลต่อคุณภาพของผลลัพธ์ที่ได้ "การออกแบบคำสั่ง" เป็นสาขาการศึกษาที่เติบโตอย่างรวดเร็ว ซึ่งมุ่งเน้นไปที่ _การออกแบบและการปรับแต่ง_ คำสั่งเพื่อให้ได้ผลลัพธ์ที่มีคุณภาพและสม่ำเสมอในระดับใหญ่ ## เป้าหมายการเรียนรู้ -ในบทเรียนนี้ เราจะเรียนรู้ว่า Prompt Engineering คืออะไร ทำไมมันถึงสำคัญ และเราจะสร้างคำสั่งที่มีประสิทธิภาพมากขึ้นสำหรับโมเดลและเป้าหมายของแอปพลิเคชันได้อย่างไร เราจะเข้าใจแนวคิดหลักและแนวปฏิบัติที่ดีที่สุดสำหรับการออกแบบคำสั่ง - และเรียนรู้เกี่ยวกับสภาพแวดล้อม "sandbox" ใน Jupyter Notebooks ที่เราสามารถเห็นการนำแนวคิดเหล่านี้ไปใช้กับตัวอย่างจริง +ในบทเรียนนี้ เราจะเรียนรู้ว่า การออกแบบคำสั่งคืออะไร ทำไมมันถึงสำคัญ และเราจะสร้างคำสั่งที่มีประสิทธิภาพมากขึ้นสำหรับโมเดลและเป้าหมายแอปพลิเคชันได้อย่างไร เราจะเข้าใจแนวคิดหลักและแนวปฏิบัติที่ดีที่สุดสำหรับการออกแบบคำสั่ง - และเรียนรู้เกี่ยวกับสภาพแวดล้อม "sandbox" ใน Jupyter Notebooks ที่เราสามารถเห็นการประยุกต์ใช้แนวคิดเหล่านี้กับตัวอย่างจริง เมื่อจบบทเรียนนี้ เราจะสามารถ: -1. อธิบายว่า Prompt Engineering คืออะไรและทำไมมันถึงสำคัญ -2. อธิบายองค์ประกอบของคำสั่งและวิธีการใช้งาน +1. อธิบายว่า การออกแบบคำสั่งคืออะไร และทำไมมันถึงสำคัญ +2. อธิบายส่วนประกอบของคำสั่งและวิธีการใช้งาน 3. เรียนรู้แนวปฏิบัติและเทคนิคที่ดีที่สุดสำหรับการออกแบบคำสั่ง -4. นำเทคนิคที่เรียนรู้ไปใช้กับตัวอย่างจริง โดยใช้ OpenAI endpoint +4. ประยุกต์ใช้เทคนิคที่เรียนรู้กับตัวอย่างจริง โดยใช้ OpenAI endpoint ## คำศัพท์สำคัญ -Prompt Engineering: การออกแบบและปรับปรุงคำสั่งเพื่อชี้นำโมเดล AI ให้สร้างผลลัพธ์ตามที่ต้องการ -Tokenization: กระบวนการแปลงข้อความเป็นหน่วยย่อยที่เรียกว่าโทเค็น ซึ่งโมเดลสามารถเข้าใจและประมวลผลได้ +การออกแบบคำสั่ง: การปฏิบัติในการออกแบบและปรับแต่งอินพุตเพื่อชี้นำโมเดล AI ให้สร้างผลลัพธ์ตามที่ต้องการ +การแปลงข้อความเป็นโทเค็น: กระบวนการแปลงข้อความเป็นหน่วยย่อยที่เรียกว่าโทเค็น ซึ่งโมเดลสามารถเข้าใจและประมวลผลได้ Instruction-Tuned LLMs: โมเดลภาษาใหญ่ (LLMs) ที่ได้รับการปรับแต่งด้วยคำสั่งเฉพาะเพื่อปรับปรุงความแม่นยำและความเกี่ยวข้องของการตอบสนอง ## Learning Sandbox -การออกแบบคำสั่งในปัจจุบันยังคงเป็นศิลปะมากกว่าวิทยาศาสตร์ วิธีที่ดีที่สุดในการพัฒนาสัญชาตญาณสำหรับมันคือ _การฝึกฝนมากขึ้น_ และใช้วิธีการลองผิดลองถูกที่ผสมผสานความเชี่ยวชาญในโดเมนแอปพลิเคชันกับเทคนิคที่แนะนำและการปรับแต่งเฉพาะโมเดล +การออกแบบคำสั่งในปัจจุบันยังคงเป็นศิลปะมากกว่าวิทยาศาสตร์ วิธีที่ดีที่สุดในการพัฒนาสัญชาตญาณสำหรับมันคือ _ฝึกฝนมากขึ้น_ และใช้วิธีการลองผิดลองถูกที่ผสมผสานความเชี่ยวชาญในโดเมนแอปพลิเคชันกับเทคนิคที่แนะนำและการปรับแต่งเฉพาะโมเดล -Jupyter Notebook ที่มาพร้อมกับบทเรียนนี้ให้สภาพแวดล้อม _sandbox_ ที่คุณสามารถลองสิ่งที่คุณเรียนรู้ - ทั้งในระหว่างการเรียนหรือเป็นส่วนหนึ่งของการท้าทายโค้ดในตอนท้าย ในการดำเนินการแบบฝึกหัด คุณจะต้อง: +Jupyter Notebook ที่มาพร้อมกับบทเรียนนี้ให้สภาพแวดล้อม _sandbox_ ที่คุณสามารถลองสิ่งที่คุณเรียนรู้ - ขณะเรียนหรือเป็นส่วนหนึ่งของการท้าทายโค้ดในตอนท้าย ในการดำเนินการแบบฝึกหัด คุณจะต้อง: 1. **Azure OpenAI API key** - endpoint บริการสำหรับโมเดล LLM ที่ปรับใช้แล้ว 2. **Python Runtime** - ที่สามารถรัน Notebook ได้ -3. **Local Env Variables** - _ทำตามขั้นตอน [SETUP](./../00-course-setup/02-setup-local.md?WT.mc_id=academic-105485-koreyst) เพื่อเตรียมความพร้อม_ +3. **ตัวแปรในสภาพแวดล้อมท้องถิ่น** - _ทำตามขั้นตอน [SETUP](./../00-course-setup/02-setup-local.md?WT.mc_id=academic-105485-koreyst) ตอนนี้เพื่อเตรียมตัว_ -Notebook มาพร้อมกับแบบฝึกหัด _เริ่มต้น_ - แต่คุณได้รับการสนับสนุนให้เพิ่มส่วน _Markdown_ (คำอธิบาย) และ _Code_ (คำสั่ง) ของคุณเองเพื่อทดลองตัวอย่างหรือไอเดียเพิ่มเติม - และสร้างสัญชาตญาณสำหรับการออกแบบคำสั่ง +Notebook มาพร้อมกับแบบฝึกหัด _เริ่มต้น_ - แต่คุณได้รับการสนับสนุนให้เพิ่มส่วน _Markdown_ (คำอธิบาย) และ _Code_ (คำขอคำสั่ง) ของคุณเองเพื่อทดลองตัวอย่างหรือไอเดียเพิ่มเติม - และสร้างสัญชาตญาณสำหรับการออกแบบคำสั่ง ## คู่มือภาพประกอบ -ต้องการเห็นภาพรวมของสิ่งที่บทเรียนนี้ครอบคลุมก่อนที่จะเริ่มต้นใช่ไหม? ลองดูคู่มือภาพประกอบนี้ ซึ่งให้ความเข้าใจเกี่ยวกับหัวข้อหลักที่ครอบคลุมและประเด็นสำคัญที่คุณควรคิดถึงในแต่ละหัวข้อ แผนที่บทเรียนจะนำคุณจากการทำความเข้าใจแนวคิดและความท้าทายหลักไปสู่การแก้ไขด้วยเทคนิคและแนวปฏิบัติที่ดีที่สุดสำหรับการออกแบบคำสั่ง โปรดทราบว่าส่วน "Advanced Techniques" ในคู่มือนี้อ้างถึงเนื้อหาที่ครอบคลุมในบทถัดไปของหลักสูตรนี้ +ต้องการเห็นภาพรวมของสิ่งที่บทเรียนนี้ครอบคลุมก่อนที่จะเริ่มต้นใช่ไหม? ลองดูคู่มือภาพประกอบนี้ ซึ่งให้ความเข้าใจเกี่ยวกับหัวข้อหลักที่ครอบคลุมและประเด็นสำคัญที่คุณควรพิจารณาในแต่ละหัวข้อ แผนที่บทเรียนจะนำคุณจากการทำความเข้าใจแนวคิดและความท้าทายหลักไปสู่การแก้ไขด้วยเทคนิคและแนวปฏิบัติที่ดีที่สุดสำหรับการออกแบบคำสั่ง โปรดทราบว่าส่วน "เทคนิคขั้นสูง" ในคู่มือนี้อ้างถึงเนื้อหาที่ครอบคลุมในบทถัดไปของหลักสูตรนี้ -![คู่มือภาพประกอบสำหรับการออกแบบคำสั่ง](../../../translated_images/04-prompt-engineering-sketchnote.d5f33336957a1e4f623b826195c2146ef4cc49974b72fa373de6929b474e8b70.th.png) +![คู่มือภาพประกอบการออกแบบคำสั่ง](../../../translated_images/04-prompt-engineering-sketchnote.d5f33336957a1e4f623b826195c2146ef4cc49974b72fa373de6929b474e8b70.th.png) ## สตาร์ทอัพของเรา -ตอนนี้ มาพูดถึงว่า _หัวข้อนี้_ เกี่ยวข้องกับภารกิจของสตาร์ทอัพของเราในการ [นำ AI มาสู่การศึกษา](https://educationblog.microsoft.com/2023/06/collaborating-to-bring-ai-innovation-to-education?WT.mc_id=academic-105485-koreyst) อย่างไร เราต้องการสร้างแอปพลิเคชันที่ขับเคลื่อนด้วย AI สำหรับ _การเรียนรู้แบบเฉพาะบุคคล_ - ดังนั้นลองคิดดูว่าผู้ใช้ต่างๆ ของแอปพลิเคชันของเราอาจ "ออกแบบ" คำสั่งอย่างไร: +ตอนนี้ มาพูดถึงว่า _หัวข้อนี้_ เกี่ยวข้องกับภารกิจสตาร์ทอัพของเราในการ [นำ AI มาสู่การศึกษา](https://educationblog.microsoft.com/2023/06/collaborating-to-bring-ai-innovation-to-education?WT.mc_id=academic-105485-koreyst) อย่างไร เราต้องการสร้างแอปพลิเคชันที่ขับเคลื่อนด้วย AI สำหรับ _การเรียนรู้แบบเฉพาะบุคคล_ - ดังนั้นลองคิดดูว่าผู้ใช้ต่างๆ ของแอปพลิเคชันของเราอาจ "ออกแบบ" คำสั่งอย่างไร: - **ผู้ดูแลระบบ** อาจขอให้ AI _วิเคราะห์ข้อมูลหลักสูตรเพื่อระบุช่องว่างในเนื้อหา_ AI สามารถสรุปผลลัพธ์หรือแสดงภาพด้วยโค้ด -- **ครูผู้สอน** อาจขอให้ AI _สร้างแผนการสอนสำหรับกลุ่มเป้าหมายและหัวข้อที่กำหนด_ AI สามารถสร้างแผนเฉพาะบุคคลในรูปแบบที่ระบุ -- **นักเรียน** อาจขอให้ AI _สอนพวกเขาในวิชาที่ยาก_ AI สามารถแนะนำบทเรียน คำใบ้ และตัวอย่างที่ปรับให้เหมาะสมกับระดับของนักเรียน +- **ครู** อาจขอให้ AI _สร้างแผนการสอนสำหรับกลุ่มเป้าหมายและหัวข้อเฉพาะ_ AI สามารถสร้างแผนการสอนเฉพาะบุคคลในรูปแบบที่กำหนด +- **นักเรียน** อาจขอให้ AI _สอนพวกเขาในวิชาที่ยาก_ AI สามารถแนะนำบทเรียน คำใบ้ และตัวอย่างที่ปรับให้เหมาะกับระดับของนักเรียน -นี่เป็นเพียงจุดเริ่มต้นเท่านั้น ลองดู [Prompts For Education](https://github.com/microsoft/prompts-for-edu/tree/main?WT.mc_id=academic-105485-koreyst) - ไลบรารีคำสั่งแบบโอเพ่นซอร์สที่รวบรวมโดยผู้เชี่ยวชาญด้านการศึกษา - เพื่อให้เห็นถึงความเป็นไปได้ที่กว้างขึ้น! _ลองรันคำสั่งเหล่านั้นใน sandbox หรือใช้ OpenAI Playground เพื่อดูผลลัพธ์!_ +นี่เป็นเพียงจุดเริ่มต้นเท่านั้น ลองดู [Prompts For Education](https://github.com/microsoft/prompts-for-edu/tree/main?WT.mc_id=academic-105485-koreyst) - ไลบรารีคำสั่งโอเพ่นซอร์สที่คัดสรรโดยผู้เชี่ยวชาญด้านการศึกษา - เพื่อให้เข้าใจถึงความเป็นไปได้ที่กว้างขึ้น! _ลองรันคำสั่งเหล่านั้นใน sandbox หรือใช้ OpenAI Playground เพื่อดูผลลัพธ์!_ - - -## Prompt Engineering คืออะไร? +## การออกแบบคำสั่งคืออะไร? -เราเริ่มบทเรียนนี้ด้วยการนิยาม **Prompt Engineering** ว่าเป็นกระบวนการ _ออกแบบและปรับปรุง_ ข้อความคำสั่ง (prompts) เพื่อให้ได้ผลลัพธ์ที่สม่ำเสมอและมีคุณภาพ (completions) สำหรับเป้าหมายของแอปพลิเคชันและโมเดลที่กำหนด เราสามารถคิดถึงสิ่งนี้เป็นกระบวนการ 2 ขั้นตอน: +เราเริ่มบทเรียนนี้ด้วยการนิยาม **การออกแบบคำสั่ง** ว่าเป็นกระบวนการ _ออกแบบและปรับแต่ง_ ข้อความอินพุต (คำสั่ง) เพื่อให้ได้ผลลัพธ์ที่สม่ำเสมอและมีคุณภาพ (ผลลัพธ์) สำหรับเป้าหมายแอปพลิเคชันและโมเดลที่กำหนด เราสามารถคิดว่านี่เป็นกระบวนการ 2 ขั้นตอน: - _ออกแบบ_ คำสั่งเริ่มต้นสำหรับโมเดลและเป้าหมายที่กำหนด -- _ปรับปรุง_ คำสั่งอย่างต่อเนื่องเพื่อเพิ่มคุณภาพของผลลัพธ์ +- _ปรับแต่ง_ คำสั่งอย่างต่อเนื่องเพื่อปรับปรุงคุณภาพของผลลัพธ์ -นี่เป็นกระบวนการที่ต้องใช้การลองผิดลองถูก ซึ่งต้องการสัญชาตญาณและความพยายามจากผู้ใช้เพื่อให้ได้ผลลัพธ์ที่ดีที่สุด แล้วทำไมมันถึงสำคัญ? เพื่อที่จะตอบคำถามนั้น เราต้องเข้าใจแนวคิดสามประการ: +นี่เป็นกระบวนการลองผิดลองถูกที่จำเป็นซึ่งต้องใช้สัญชาตญาณและความพยายามของผู้ใช้เพื่อให้ได้ผลลัพธ์ที่ดีที่สุด แล้วทำไมมันถึงสำคัญ? เพื่อที่จะตอบคำถามนั้น เราต้องเข้าใจแนวคิดสามประการก่อน: -- _Tokenization_ = วิธีที่โมเดล "มองเห็น" คำสั่ง +- _การแปลงข้อความเป็นโทเค็น_ = วิธีที่โมเดล "มองเห็น" คำสั่ง - _Base LLMs_ = วิธีที่โมเดลพื้นฐาน "ประมวลผล" คำสั่ง - _Instruction-Tuned LLMs_ = วิธีที่โมเดลสามารถมองเห็น "งาน" -### Tokenization +### การแปลงข้อความเป็นโทเค็น LLM มองคำสั่งเป็น _ลำดับของโทเค็น_ ซึ่งโมเดลต่างๆ (หรือเวอร์ชันของโมเดล) อาจแปลงคำสั่งเดียวกันเป็นโทเค็นในรูปแบบที่แตกต่างกัน เนื่องจาก LLMs ได้รับการฝึกฝนด้วยโทเค็น (ไม่ใช่ข้อความดิบ) วิธีที่คำสั่งถูกแปลงเป็นโทเค็นมีผลโดยตรงต่อคุณภาพของผลลัพธ์ที่สร้างขึ้น -เพื่อให้เข้าใจว่า Tokenization ทำงานอย่างไร ลองใช้เครื่องมืออย่าง [OpenAI Tokenizer](https://platform.openai.com/tokenizer?WT.mc_id=academic-105485-koreyst) ที่แสดงด้านล่าง คัดลอกคำสั่งของคุณลงไป - และดูว่ามันถูกแปลงเป็นโทเค็นอย่างไร โดยสังเกตว่าตัวอักษรเว้นวรรคและเครื่องหมายวรรคตอนถูกจัดการอย่างไร โปรดทราบว่าตัวอย่างนี้แสดงโมเดล LLM รุ่นเก่า (GPT-3) - ดังนั้นการลองใช้กับโมเดลใหม่อาจให้ผลลัพธ์ที่แตกต่างกัน +เพื่อให้เข้าใจถึงวิธีการทำงานของการแปลงข้อความเป็นโทเค็น ลองใช้เครื่องมือเช่น [OpenAI Tokenizer](https://platform.openai.com/tokenizer?WT.mc_id=academic-105485-koreyst) ที่แสดงด้านล่าง คัดลอกคำสั่งของคุณลงไป - และดูว่ามันถูกแปลงเป็นโทเค็นอย่างไร โดยสังเกตว่าตัวอักษรเว้นวรรคและเครื่องหมายวรรคตอนถูกจัดการอย่างไร โปรดทราบว่าตัวอย่างนี้แสดง LLM รุ่นเก่า (GPT-3) - ดังนั้นการลองใช้กับโมเดลใหม่กว่าอาจให้ผลลัพธ์ที่แตกต่างออกไป -![Tokenization](../../../translated_images/04-tokenizer-example.e71f0a0f70356c5c7d80b21e8753a28c18a7f6d4aaa1c4b08e65d17625e85642.th.png) +![การแปลงข้อความเป็นโทเค็น](../../../translated_images/04-tokenizer-example.e71f0a0f70356c5c7d80b21e8753a28c18a7f6d4aaa1c4b08e65d17625e85642.th.png) ### แนวคิด: โมเดลพื้นฐาน -เมื่อคำสั่งถูกแปลงเป็นโทเค็น ฟังก์ชันหลักของ ["Base LLM"](https://blog.gopenai.com/an-introduction-to-base-and-instruction-tuned-large-language-models-8de102c785a6?WT.mc_id=academic-105485-koreyst) (หรือโมเดลพื้นฐาน) คือการทำนายโทเค็นในลำดับนั้น เนื่องจาก LLMs ได้รับการฝึกฝนด้วยชุดข้อมูลข้อความขนาดใหญ่ พวกเขามีความเข้าใจที่ดีเกี่ยวกับความสัมพันธ์ทางสถิติระหว่างโทเค็นและสามารถทำนายได้ด้วยความมั่นใจในระดับหนึ่ง โปรดทราบว่าพวกเขาไม่ได้เข้าใจ _ความหมาย_ ของคำในคำสั่งหรือโทเค็น; พวกเขาเพียงแค่เห็นรูปแบบที่สามารถ "เติมเต็ม" ด้วยการทำนายครั้งต่อไป พวกเขาสามารถทำนายลำดับต่อไปได้จนกว่าจะถูกยุติโดยการแทรกแซงของผู้ใช้หรือเงื่อนไขที่กำหนดไว้ล่วงหน้า +เมื่อคำสั่งถูกแปลงเป็นโทเค็น ฟังก์ชันหลักของ ["Base LLM"](https://blog.gopenai.com/an-introduction-to-base-and-instruction-tuned-large-language-models-8de102c785a6?WT.mc_id=academic-105485-koreyst) (หรือโมเดลพื้นฐาน) คือการทำนายโทเค็นในลำดับนั้น เนื่องจาก LLMs ได้รับการฝึกฝนด้วยชุดข้อมูลข้อความขนาดใหญ่ พวกเขามีความเข้าใจที่ดีเกี่ยวกับความสัมพันธ์ทางสถิติระหว่างโทเค็นและสามารถทำนายได้ด้วยความมั่นใจบางประการ โปรดทราบว่าพวกเขาไม่ได้เข้าใจ _ความหมาย_ ของคำในคำสั่งหรือโทเค็น; พวกเขาเพียงแค่เห็นรูปแบบที่พวกเขาสามารถ "เติมเต็ม" ด้วยการทำนายครั้งต่อไป พวกเขาสามารถทำนายลำดับต่อไปได้จนกว่าจะถูกยุติโดยการแทรกแซงของผู้ใช้หรือเงื่อนไขที่กำหนดไว้ล่วงหน้า -ต้องการเห็นว่าการเติมเต็มคำสั่งทำงานอย่างไร? ใส่คำสั่งด้านบนลงใน [_Chat Playground_](https://oai.azure.com/playground?WT.mc_id=academic-105485-koreyst) ของ Azure OpenAI Studio ด้วยการตั้งค่าเริ่มต้น ระบบถูกกำหนดค่าให้ปฏิบัติต่อคำสั่งเป็นคำขอข้อมูล - ดังนั้นคุณควรเห็นผลลัพธ์ที่ตอบสนองบริบทนี้ +ต้องการเห็นวิธีการทำงานของการเติมเต็มคำสั่งใช่ไหม? ป้อนคำสั่งด้านบนลงใน Azure OpenAI Studio [_Chat Playground_](https://oai.azure.com/playground?WT.mc_id=academic-105485-koreyst) ด้วยการตั้งค่าเริ่มต้น ระบบถูกกำหนดค่าให้ปฏิบัติต่อคำสั่งเป็นคำขอข้อมูล - ดังนั้นคุณควรเห็นผลลัพธ์ที่ตอบสนองบริบทนี้ แต่ถ้าผู้ใช้ต้องการเห็นบางสิ่งที่เฉพาะเจาะจงซึ่งตรงกับเกณฑ์หรือเป้าหมายของงานล่ะ? นี่คือจุดที่ _Instruction-Tuned LLMs_ เข้ามามีบทบาท @@ -108,37 +98,37 @@ LLM มองคำสั่งเป็น _ลำดับของโทเ ### แนวคิด: Instruction-Tuned LLMs -[Instruction-Tuned LLM](https://blog.gopenai.com/an-introduction-to-base-and-instruction-tuned-large-language-models-8de102c785a6?WT.mc_id=academic-105485-koreyst) เริ่มต้นด้วยโมเดลพื้นฐานและปรับแต่งด้วยตัวอย่างหรือคู่ input/output (เช่น "ข้อความ" แบบหลายรอบ) ที่สามารถมีคำสั่งที่ชัดเจน - และการตอบสนองจาก AI พยายามปฏิบัติตามคำสั่งนั้น +[Instruction-Tuned LLM](https://blog.gopenai.com/an-introduction-to-base-and-instruction-tuned-large-language-models-8de102c785a6?WT.mc_id=academic-105485-koreyst) เริ่มต้นด้วยโมเดลพื้นฐานและปรับแต่งด้วยตัวอย่างหรือคู่ข้อมูลอินพุต/เอาต์พุต (เช่น "ข้อความ" หลายรอบ) ที่สามารถมีคำสั่งที่ชัดเจน - และการตอบสนองจาก AI พยายามปฏิบัติตามคำสั่งนั้น -สิ่งนี้ใช้เทคนิคอย่าง Reinforcement Learning with Human Feedback (RLHF) ที่สามารถฝึกโมเดลให้ _ปฏิบัติตามคำสั่ง_ และ _เรียนรู้จากข้อเสนอแนะ_ เพื่อให้สร้างผลลัพธ์ที่เหมาะสมกับการใช้งานจริงและเกี่ยวข้องกับเป้าหมายของผู้ใช้มากขึ้น +สิ่งนี้ใช้เทคนิคเช่น Reinforcement Learning with Human Feedback (RLHF) ที่สามารถฝึกโมเดลให้ _ปฏิบัติตามคำสั่ง_ และ _เรียนรู้จากข้อเสนอแนะ_ เพื่อให้ได้ผลลัพธ์ที่เหมาะสมกับการใช้งานจริงและเกี่ยวข้องกับเป้าหมายของผู้ใช้มากขึ้น ลองดู - กลับไปที่คำสั่งด้านบน แต่ตอนนี้เปลี่ยน _ข้อความระบบ_ เพื่อให้คำสั่งต่อไปนี้เป็นบริบท: -> _สรุปเนื้อหาที่คุณได้รับสำหรับนักเรียนชั้นประถมศึกษาปีที่ 2 โดยให้ผลลัพธ์เป็นหนึ่งย่อหน้าที่มี 3-5 หัวข้อย่อย_ +> _สรุปเนื้อหาที่คุณได้รับสำหรับนักเรียนชั้นประถมศึกษาปีที่ 2 ให้ผลลัพธ์เป็นหนึ่งย่อหน้าพร้อมหัวข้อย่อย 3-5 ข้อ_ -ดูว่าผลลัพธ์ตอนนี้ถูกปรับให้สะท้อนเป้าหมายและรูปแบบที่ต้องการหรือไม่? ครูผู้สอนสามารถใช้ผลลัพธ์นี้ในสไลด์สำหรับชั้นเรียนได้โดยตรง +ดูว่าผลลัพธ์ตอนนี้ถูกปรับให้สะท้อนเป้าหมายและรูปแบบที่ต้องการหรือไม่? ครูสามารถใช้ผลลัพธ์นี้ในสไลด์สำหรับชั้นเรียนได้โดยตรง ![Instruction Tuned LLM Chat Completion](../../../translated_images/04-playground-chat-instructions.b30bbfbdf92f2d051639c9bc23f74a0e2482f8dc7f0dafc6cc6fda81b2b00534.th.png) -## ทำไมเราต้องการ Prompt Engineering? +## ทำไมเราถึงต้องการการออกแบบคำสั่ง? -ตอนนี้เรารู้แล้วว่าคำสั่งถูกประมวลผลโดย LLMs อย่างไร มาพูดถึง _ทำไม_ เราต้องการ Prompt Engineering คำตอบอยู่ในความจริงที่ว่า LLMs ในปัจจุบันมีความท้าทายหลายประการที่ทำให้ _การเติมเต็มที่เชื่อถือได้และสม่ำเสมอ_ ยากขึ้นหากไม่มีการใส่ความพยายามในการสร้างและปรับปรุงคำสั่ง ตัวอย่างเช่น: +ตอนนี้เรารู้แล้วว่าคำสั่งถูกประมวลผลโดย LLMs อย่างไร มาพูดถึง _ทำไม_ เราถึงต้องการการออกแบบคำสั่ง คำตอบอยู่ในข้อเท็จจริงที่ว่า LLMs ในปัจจุบันมีความท้าทายหลายประการที่ทำให้ _การเติมเต็มที่เชื่อถือได้และสม่ำเสมอ_ ยากขึ้นที่จะบรรลุผลโดยไม่ต้องใช้ความพยายามในการสร้างและปรับแต่งคำสั่ง ตัวอย่างเช่น: -1. **การตอบสนองของโมเดลเป็นแบบสุ่ม** คำสั่ง _เดียวกัน_ อาจให้ผลลัพธ์ที่แตกต่างกันกับโมเดลหรือเวอร์ชันของโมเดลที่แตกต่างกัน และอาจให้ผลลัพธ์ที่แตกต่างกันแม้ใช้ _โมเดลเดียวกัน_ ในเวลาที่ต่างกัน _เทคนิคการออกแบบคำสั่งสามารถช่วยลดความแปรปรวนเหล่านี้โดยการให้กรอบการทำงานที่ดีขึ้น_ +1. **การตอบสนองของโมเดลเป็นแบบสุ่ม** คำสั่ง _เดียวกัน_ อาจให้ผลลัพธ์ที่แตกต่างกันกับโมเดลหรือเวอร์ชันโมเดลที่แตกต่างกัน และอาจให้ผลลัพธ์ที่แตกต่างกันแม้กับ _โมเดลเดียวกัน_ ในเวลาที่ต่างกัน _เทคนิคการออกแบบคำสั่งสามารถช่วยลดความแปรปรวนเหล่านี้โดยการให้กรอบการทำงานที่ดีขึ้น_ -2. **โมเดลสามารถสร้างข้อมูลที่ไม่ถูกต้อง** โมเดลได้รับการฝึกฝนด้วยชุดข้อมูล _ขนาดใหญ่แต่มีขอบเขตจำกัด_ ซึ่งหมายความว่าพวกเขาขาดความรู้เกี่ยวกับแนวคิดที่อยู่นอกเหนือขอบเขตการฝึกฝน ดังนั้นพวกเขาอาจสร้างผลลัพธ์ที่ไม่ถูกต้อง จินตนาการ หรือขัดแย้งกับข้อเท็จจริงที่ทราบ _เทคนิคการออกแบบคำสั่งช่วยให้ผู้ใช้ระบุและลดการสร้างข้อมูลที่ไม่ถูกต้อง เช่น โดยการขอให้ AI อ้างอิงหรือให้เหตุผล_ +1. **โมเดลสามารถสร้างข้อมูลที่ผิดพลาด** โมเดลได้รับการฝึกฝนด้วยชุดข้อมูล _ขนาดใหญ่แต่มีขอบเขตจำกัด_ ซึ่งหมายความว่าพวกเขาขาดความรู้เกี่ยวกับแนวคิดที่อยู่นอกเหนือขอบเขตการฝึกฝนนั้น ส่งผลให้พวกเขาสามารถสร้างผลลัพธ์ที่ไม่ถูกต้อง จินตนาการ หรือขัดแย้งกับข้อเท็จจริงที่ทราบ _เทคนิคการออกแบบคำสั่งช่วยให้ผู้ใช้ระบุและลดการสร้างข้อมูลที่ผิดพลาด เช่น โดยการขอการอ้างอิงหรือเหตุผลจาก AI_ -3. **ความสามารถของโมเดลจะแตกต่างกัน** โมเดลใหม่หรือรุ่นใหม่จะมีความสามารถที่หลากหลายมากขึ้น แต่ก็นำมาซึ่งลักษณะเฉพาะและข้อแลกเปลี่ยนในด้านต้นทุนและความซับซ้อน _การออกแบบคำสั่งสามารถช่วยพัฒนาแนวปฏิบัติและกระบวนการทำงานที่ลดความแตกต่างและปรับให้เข้ากับข้อกำหนดเฉพาะของโมเดลในวิธีที่ปรับขนาดได้และราบรื่น_ +1. **ความสามารถของโมเดลจะแตกต่างกัน** โมเดลใหม่หรือรุ่นใหม่จะมีความสามารถที่หลากหลายมากขึ้น แต่ก็มีลักษณะเฉพาะและข้อแลกเปลี่ยนในด้านต้นทุนและความซับซ้อน _การออกแบบคำสั่งสามารถช่วยพัฒนาแนวปฏิบัติและกระบวนการทำงานที่ดีที่สุดที่ลดความแตกต่างและปรับให้เข้ากับข้อกำหนดเฉพาะของโมเดลในวิธีที่ปรับขนาดได้และราบรื่น_ ลองดูตัวอย่างนี้ใน OpenAI หรือ Azure OpenAI Playground: -- ใช้คำสั่งเดียวกันกับการปรับใช้ LLM ที่แตกต่างกัน (เช่น OpenAI, Azure OpenAI, Hugging Face) - คุณเห็นความแตกต่างหรือไม่? +- ใช้คำสั่งเดียวกันกับการปรับใช้ LLM ต่างๆ (เช่น OpenAI, Azure OpenAI, Hugging Face) - คุณเห็นความแตกต่างหรือไม่? - ใช้คำสั่งเดียวกันซ้ำๆ กับการปรับใช้ LLM _เดียวกัน_ (เช่น Azure OpenAI Playground) - ความแตกต่างเหล่านี้แตกต่างกันอย่างไร? -### ตัวอย่างการสร้างข้อมูลที่ไม่ถูกต้อง +### ตัวอย่างการสร้างข้อมูลที่ผิดพลาด -ในหลักสูตรนี้ เราใช้คำว่า **"การสร้างข้อมูลที่ไม่ถูกต้อง"** เพื่ออ้างถึงปรากฏการณ์ที่ LLMs บางครั้งสร้างข้อมูลที่ไม่ถูกต้องเนื่องจากข้อจำกัดในการฝึกฝนหรือข้อจำกัดอื่นๆ คุณอาจเคยได้ยินคำนี้ในชื่อ _"hallucinations"_ ในบทความหรือเอกสารวิจัย อย่างไรก็ตาม เราขอแนะนำให้ใช้คำว่า _"การสร้างข้อมูลที่ไม่ถูกต้อง"_ เพื่อหลีกเลี่ยงการทำให้พฤติกรรมดูเหมือนมนุษย์โดยการให้ลักษณะของมนุษย์กับ -การค้นหาในเว็บแสดงให้เห็นว่ามีเรื่องราวสมมติ (เช่น ซีรีส์โทรทัศน์หรือหนังสือ) เกี่ยวกับสงครามบนดาวอังคาร - แต่ไม่มีเหตุการณ์ใดในปี 2076 สามัญสำนึกบอกเราว่า ปี 2076 เป็น _อนาคต_ และดังนั้นจึงไม่สามารถเชื่อมโยงกับเหตุการณ์จริงได้ +ในหลักสูตรนี้ เราใช้คำว่า **"การสร้างข้อมูลที่ผิดพลาด"** เพื่ออ้างถึงปรากฏการณ์ที่ LLMs บางครั้งสร้างข้อมูลที่ไม่ถูกต้องเนื่องจาก +การค้นหาเว็บแสดงให้เห็นว่ามีเรื่องราวสมมติ (เช่น ซีรีส์โทรทัศน์หรือหนังสือ) เกี่ยวกับสงครามบนดาวอังคาร - แต่ไม่มีในปี 2076 สามัญสำนึกยังบอกเราว่าปี 2076 เป็น _อนาคต_ ดังนั้นจึงไม่สามารถเชื่อมโยงกับเหตุการณ์จริงได้ แล้วจะเกิดอะไรขึ้นเมื่อเราทดลองใช้คำสั่งนี้กับผู้ให้บริการ LLM ต่างๆ? @@ -154,36 +144,36 @@ LLM มองคำสั่งเป็น _ลำดับของโทเ ![คำตอบที่ 3](../../../translated_images/04-fabrication-huggingchat.faf82a0a512789565e410568bce1ac911075b943dec59b1ef4080b61723b5bf4.th.png) -ตามที่คาดไว้ แต่ละโมเดล (หรือเวอร์ชันของโมเดล) สร้างคำตอบที่แตกต่างกันเล็กน้อยเนื่องจากพฤติกรรมแบบสุ่มและความสามารถของโมเดลที่แตกต่างกัน ตัวอย่างเช่น โมเดลหนึ่งมุ่งเป้าไปที่ผู้เรียนระดับมัธยมต้น ในขณะที่อีกโมเดลหนึ่งสมมติว่าผู้ใช้เป็นนักเรียนมัธยมปลาย แต่ทั้งสามโมเดลสร้างคำตอบที่สามารถโน้มน้าวผู้ใช้ที่ไม่มีข้อมูลว่าเหตุการณ์นั้นเป็นเรื่องจริง +ตามที่คาดไว้ แต่ละโมเดล (หรือเวอร์ชันของโมเดล) สร้างคำตอบที่แตกต่างกันเล็กน้อยเนื่องจากพฤติกรรมสุ่มและความสามารถของโมเดลที่แตกต่างกัน ตัวอย่างเช่น โมเดลหนึ่งมุ่งเป้าไปที่ผู้เรียนระดับมัธยมต้น ในขณะที่อีกโมเดลหนึ่งสมมติว่าผู้ใช้เป็นนักเรียนมัธยมปลาย แต่ทั้งสามโมเดลก็สร้างคำตอบที่สามารถโน้มน้าวผู้ใช้ที่ไม่มีข้อมูลว่าเหตุการณ์นั้นเป็นเรื่องจริงได้ -เทคนิคการออกแบบคำสั่ง เช่น _metaprompting_ และ _temperature configuration_ อาจลดการสร้างข้อมูลเท็จของโมเดลได้ในระดับหนึ่ง สถาปัตยกรรมใหม่ของการออกแบบคำสั่งยังรวมเครื่องมือและเทคนิคใหม่ๆ เข้ากับกระบวนการคำสั่งอย่างไร้รอยต่อ เพื่อลดหรือบรรเทาผลกระทบบางประการ +เทคนิคการออกแบบคำสั่ง เช่น _metaprompting_ และ _temperature configuration_ อาจช่วยลดการสร้างข้อมูลเท็จของโมเดลได้ในระดับหนึ่ง สถาปัตยกรรมการออกแบบคำสั่งใหม่ยังรวมเครื่องมือและเทคนิคใหม่ๆ เข้ากับกระบวนการคำสั่งอย่างไร้รอยต่อ เพื่อบรรเทาหรือลดผลกระทบบางประการเหล่านี้ ## กรณีศึกษา: GitHub Copilot -เรามาปิดท้ายส่วนนี้ด้วยการทำความเข้าใจว่าเทคนิคการออกแบบคำสั่งถูกนำไปใช้ในโซลูชันจริงอย่างไร โดยดูจากกรณีศึกษา: [GitHub Copilot](https://github.com/features/copilot?WT.mc_id=academic-105485-koreyst) +เรามาสรุปส่วนนี้ด้วยการทำความเข้าใจว่าเทคนิคการออกแบบคำสั่งถูกนำไปใช้ในโซลูชันจริงอย่างไร โดยดูจากกรณีศึกษา: [GitHub Copilot](https://github.com/features/copilot?WT.mc_id=academic-105485-koreyst) -GitHub Copilot คือ "AI คู่หูโปรแกรมเมอร์" ของคุณ - มันแปลงคำสั่งข้อความเป็นการเติมโค้ด และถูกรวมเข้ากับสภาพแวดล้อมการพัฒนาของคุณ (เช่น Visual Studio Code) เพื่อประสบการณ์การใช้งานที่ไร้รอยต่อ ตามที่ได้บันทึกไว้ในชุดบล็อกด้านล่าง เวอร์ชันแรกสุดนั้นอิงจากโมเดล OpenAI Codex - โดยวิศวกรได้ตระหนักถึงความจำเป็นในการปรับแต่งโมเดลและพัฒนาเทคนิคการออกแบบคำสั่งที่ดียิ่งขึ้น เพื่อปรับปรุงคุณภาพของโค้ด ในเดือนกรกฎาคม พวกเขา [เปิดตัวโมเดล AI ที่ปรับปรุงใหม่ซึ่งก้าวข้าม Codex](https://github.blog/2023-07-28-smarter-more-efficient-coding-github-copilot-goes-beyond-codex-with-improved-ai-model/?WT.mc_id=academic-105485-koreyst) เพื่อการแนะนำที่รวดเร็วยิ่งขึ้น +GitHub Copilot คือ "AI คู่หูโปรแกรมเมอร์" ของคุณ - มันแปลงคำสั่งข้อความเป็นการเติมโค้ด และถูกรวมเข้ากับสภาพแวดล้อมการพัฒนาของคุณ (เช่น Visual Studio Code) เพื่อประสบการณ์การใช้งานที่ไร้รอยต่อ ตามที่ได้บันทึกไว้ในชุดบล็อกด้านล่าง เวอร์ชันแรกสุดนั้นอิงจากโมเดล OpenAI Codex - โดยวิศวกรได้ตระหนักถึงความจำเป็นในการปรับแต่งโมเดลและพัฒนาเทคนิคการออกแบบคำสั่งที่ดียิ่งขึ้น เพื่อปรับปรุงคุณภาพของโค้ด ในเดือนกรกฎาคม พวกเขา [เปิดตัวโมเดล AI ที่ปรับปรุงใหม่ซึ่งเหนือกว่า Codex](https://github.blog/2023-07-28-smarter-more-efficient-coding-github-copilot-goes-beyond-codex-with-improved-ai-model/?WT.mc_id=academic-105485-koreyst) เพื่อการแนะนำที่รวดเร็วยิ่งขึ้น อ่านโพสต์ตามลำดับเพื่อติดตามเส้นทางการเรียนรู้ของพวกเขา -- **พฤษภาคม 2023** | [GitHub Copilot กำลังเข้าใจโค้ดของคุณได้ดีขึ้น](https://github.blog/2023-05-17-how-github-copilot-is-getting-better-at-understanding-your-code/?WT.mc_id=academic-105485-koreyst) -- **พฤษภาคม 2023** | [ภายใน GitHub: การทำงานกับ LLMs ที่อยู่เบื้องหลัง GitHub Copilot](https://github.blog/2023-05-17-inside-github-working-with-the-llms-behind-github-copilot/?WT.mc_id=academic-105485-koreyst) -- **มิถุนายน 2023** | [วิธีเขียนคำสั่งที่ดีกว่าสำหรับ GitHub Copilot](https://github.blog/2023-06-20-how-to-write-better-prompts-for-github-copilot/?WT.mc_id=academic-105485-koreyst) -- **กรกฎาคม 2023** | [GitHub Copilot ก้าวข้าม Codex ด้วยโมเดล AI ที่ปรับปรุงใหม่](https://github.blog/2023-07-28-smarter-more-efficient-coding-github-copilot-goes-beyond-codex-with-improved-ai-model/?WT.mc_id=academic-105485-koreyst) +- **พฤษภาคม 2023** | [GitHub Copilot กำลังพัฒนาความสามารถในการเข้าใจโค้ดของคุณ](https://github.blog/2023-05-17-how-github-copilot-is-getting-better-at-understanding-your-code/?WT.mc_id=academic-105485-koreyst) +- **พฤษภาคม 2023** | [ภายใน GitHub: การทำงานกับ LLMs ที่อยู่เบื้องหลัง GitHub Copilot](https://github.blog/2023-05-17-inside-github-working-with-the-llms-behind-github-copilot/?WT.mc_id=academic-105485-koreyst). +- **มิถุนายน 2023** | [วิธีเขียนคำสั่งที่ดีกว่าสำหรับ GitHub Copilot](https://github.blog/2023-06-20-how-to-write-better-prompts-for-github-copilot/?WT.mc_id=academic-105485-koreyst). +- **กรกฎาคม 2023** | [.. GitHub Copilot ก้าวข้าม Codex ด้วยโมเดล AI ที่ปรับปรุงใหม่](https://github.blog/2023-07-28-smarter-more-efficient-coding-github-copilot-goes-beyond-codex-with-improved-ai-model/?WT.mc_id=academic-105485-koreyst) - **กรกฎาคม 2023** | [คู่มือสำหรับนักพัฒนาเกี่ยวกับการออกแบบคำสั่งและ LLMs](https://github.blog/2023-07-17-prompt-engineering-guide-generative-ai-llms/?WT.mc_id=academic-105485-koreyst) - **กันยายน 2023** | [วิธีสร้างแอป LLM สำหรับองค์กร: บทเรียนจาก GitHub Copilot](https://github.blog/2023-09-06-how-to-build-an-enterprise-llm-application-lessons-from-github-copilot/?WT.mc_id=academic-105485-koreyst) -คุณยังสามารถเรียกดู [บล็อกด้านวิศวกรรม](https://github.blog/category/engineering/?WT.mc_id=academic-105485-koreyst) ของพวกเขาสำหรับโพสต์เพิ่มเติม เช่น [โพสต์นี้](https://github.blog/2023-09-27-how-i-used-github-copilot-chat-to-build-a-reactjs-gallery-prototype/?WT.mc_id=academic-105485-koreyst) ที่แสดงให้เห็นว่าโมเดลและเทคนิคเหล่านี้ถูก _นำไปใช้_ เพื่อขับเคลื่อนแอปพลิเคชันในโลกจริงอย่างไร +คุณยังสามารถเรียกดู [บล็อกด้านวิศวกรรม](https://github.blog/category/engineering/?WT.mc_id=academic-105485-koreyst) ของพวกเขาเพื่อดูโพสต์เพิ่มเติม เช่น [โพสต์นี้](https://github.blog/2023-09-27-how-i-used-github-copilot-chat-to-build-a-reactjs-gallery-prototype/?WT.mc_id=academic-105485-koreyst) ที่แสดงให้เห็นว่าโมเดลและเทคนิคเหล่านี้ถูก _นำไปใช้_ เพื่อขับเคลื่อนแอปพลิเคชันในโลกจริงอย่างไร --- ## การสร้างคำสั่ง -เราได้เห็นแล้วว่าทำไมการออกแบบคำสั่งถึงมีความสำคัญ - ตอนนี้เรามาทำความเข้าใจว่าคำสั่งถูก _สร้างขึ้น_ อย่างไร เพื่อที่เราจะสามารถประเมินเทคนิคต่างๆ สำหรับการออกแบบคำสั่งที่มีประสิทธิภาพมากขึ้น +เราได้เห็นแล้วว่าทำไมการออกแบบคำสั่งจึงสำคัญ - ตอนนี้เรามาทำความเข้าใจว่าคำสั่งถูก _สร้างขึ้น_ อย่างไร เพื่อที่เราจะสามารถประเมินเทคนิคต่างๆ สำหรับการออกแบบคำสั่งที่มีประสิทธิภาพมากขึ้น ### คำสั่งพื้นฐาน -เริ่มต้นด้วยคำสั่งพื้นฐาน: ข้อความที่ส่งไปยังโมเดลโดยไม่มีบริบทอื่นใด นี่คือตัวอย่าง - เมื่อเราส่งคำแรกของเพลงชาติสหรัฐอเมริกาไปยัง [Completion API](https://platform.openai.com/docs/api-reference/completions?WT.mc_id=academic-105485-koreyst) ของ OpenAI มันจะ _เติมเต็ม_ คำตอบทันทีด้วยคำถัดไป แสดงให้เห็นถึงพฤติกรรมการคาดการณ์พื้นฐาน +เริ่มต้นด้วยคำสั่งพื้นฐาน: ข้อความที่ส่งไปยังโมเดลโดยไม่มีบริบทอื่นใด นี่คือตัวอย่าง - เมื่อเราส่งคำแรกของเพลงชาติสหรัฐอเมริกาไปยัง OpenAI [Completion API](https://platform.openai.com/docs/api-reference/completions?WT.mc_id=academic-105485-koreyst) มันจะ _เติมเต็ม_ คำตอบทันทีด้วยคำถัดไป แสดงให้เห็นถึงพฤติกรรมการคาดการณ์พื้นฐาน | คำสั่ง (Input) | การเติมเต็ม (Output) | | :----------------- | :----------------------------------------------------------------------------------------------------------------------------------------- | @@ -191,12 +181,12 @@ GitHub Copilot คือ "AI คู่หูโปรแกรมเมอร์ ### คำสั่งที่ซับซ้อน -ตอนนี้เรามาเพิ่มบริบทและคำแนะนำลงในคำสั่งพื้นฐานนั้น [Chat Completion API](https://learn.microsoft.com/azure/ai-services/openai/how-to/chatgpt?WT.mc_id=academic-105485-koreyst) ช่วยให้เราสร้างคำสั่งที่ซับซ้อนในรูปแบบของ _ข้อความ_ ซึ่งประกอบด้วย: +ตอนนี้เรามาเพิ่มบริบทและคำแนะนำลงในคำสั่งพื้นฐานนั้น [Chat Completion API](https://learn.microsoft.com/azure/ai-services/openai/how-to/chatgpt?WT.mc_id=academic-105485-koreyst) ช่วยให้เราสร้างคำสั่งที่ซับซ้อนเป็นชุดของ _ข้อความ_ โดยมี: -- คู่ข้อความสะท้อนถึง _ข้อความผู้ใช้_ และ _คำตอบของผู้ช่วย_ +- คู่ข้อความสะท้อนถึง _การป้อนข้อมูลของผู้ใช้_ และ _การตอบสนองของผู้ช่วย_ - ข้อความระบบที่ตั้งค่าบริบทสำหรับพฤติกรรมหรือบุคลิกภาพของผู้ช่วย -คำขอจะอยู่ในรูปแบบด้านล่าง ซึ่ง _tokenization_ จะจับข้อมูลที่เกี่ยวข้องจากบริบทและการสนทนาได้อย่างมีประสิทธิภาพ การเปลี่ยนบริบทของระบบสามารถส่งผลกระทบต่อคุณภาพของการเติมเต็มได้มากพอๆ กับข้อมูลที่ผู้ใช้ให้มา +คำขอจะอยู่ในรูปแบบด้านล่าง ซึ่ง _การแปลงเป็นโทเค็น_ จะจับข้อมูลที่เกี่ยวข้องจากบริบทและการสนทนาได้อย่างมีประสิทธิภาพ การเปลี่ยนบริบทของระบบสามารถส่งผลกระทบต่อคุณภาพของการเติมเต็มได้มากพอๆ กับข้อมูลที่ผู้ใช้ให้มา ```python response = openai.chat.completions.create( @@ -212,84 +202,84 @@ response = openai.chat.completions.create( ### คำสั่งแบบมีคำแนะนำ -ในตัวอย่างด้านบน คำสั่งของผู้ใช้เป็นข้อความสอบถามง่ายๆ ที่สามารถตีความได้ว่าเป็นคำขอข้อมูล ด้วยคำสั่งแบบมีคำแนะนำ เราสามารถใช้ข้อความนั้นเพื่อระบุงานในรายละเอียดเพิ่มเติม โดยให้คำแนะนำที่ดีกับ AI นี่คือตัวอย่าง: +ในตัวอย่างด้านบน คำสั่งของผู้ใช้ยังคงเป็นข้อความสอบถามง่ายๆ ที่สามารถตีความได้ว่าเป็นคำขอข้อมูล ด้วยคำสั่งแบบมีคำแนะนำ เราสามารถใช้ข้อความนั้นเพื่อระบุงานในรายละเอียดเพิ่มเติม โดยให้คำแนะนำที่ดีกับ AI นี่คือตัวอย่าง: -| คำสั่ง (Input) | การเติมเต็ม (Output) | ประเภทคำแนะนำ | +| คำสั่ง (Input) | การเติมเต็ม (Output) | ประเภทคำสั่ง | | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------- | :------------------ | | เขียนคำอธิบายเกี่ยวกับสงครามกลางเมือง | _ส่งคืนย่อหน้าเรียบง่าย_ | เรียบง่าย | | เขียนคำอธิบายเกี่ยวกับสงครามกลางเมือง ระบุวันที่และเหตุการณ์สำคัญและอธิบายความสำคัญของมัน | _ส่งคืนย่อหน้าตามด้วยรายการวันที่เหตุการณ์สำคัญพร้อมคำอธิบาย_ | ซับซ้อน | -| เขียนคำอธิบายเกี่ยวกับสงครามกลางเมืองใน 1 ย่อหน้า ระบุ 3 จุดสำคัญพร้อมวันที่และความสำคัญของมัน ระบุอีก 3 จุดสำคัญเกี่ยวกับบุคคลสำคัญทางประวัติศาสตร์และผลงานของพวกเขา ส่งคืนผลลัพธ์ในรูปแบบไฟล์ JSON | _ส่งคืนรายละเอียดเพิ่มเติมในกล่องข้อความที่จัดรูปแบบเป็น JSON ซึ่งคุณสามารถคัดลอก-วางลงในไฟล์และตรวจสอบได้ตามต้องการ_ | ซับซ้อน. มีรูปแบบ. | +| เขียนคำอธิบายเกี่ยวกับสงครามกลางเมืองใน 1 ย่อหน้า ระบุ 3 จุดสำคัญพร้อมวันที่และความสำคัญของมัน ระบุอีก 3 จุดสำคัญเกี่ยวกับบุคคลสำคัญทางประวัติศาสตร์และการมีส่วนร่วมของพวกเขา ส่งคืนผลลัพธ์ในรูปแบบไฟล์ JSON | _ส่งคืนรายละเอียดเพิ่มเติมในกล่องข้อความที่จัดรูปแบบเป็น JSON ซึ่งคุณสามารถคัดลอก-วางลงในไฟล์และตรวจสอบได้ตามต้องการ_ | ซับซ้อน. มีรูปแบบ. | ## เนื้อหาหลัก -ในตัวอย่างด้านบน คำสั่งยังคงเปิดกว้างมาก โดยปล่อยให้ LLM ตัดสินใจว่าข้อมูลส่วนใดในชุดข้อมูลที่ได้รับการฝึกอบรมมีความเกี่ยวข้อง ด้วยรูปแบบการออกแบบ _เนื้อหาหลัก_ ข้อความที่ป้อนจะถูกแบ่งออกเป็นสองส่วน: +ในตัวอย่างด้านบน คำสั่งยังคงเปิดกว้างมาก โดยให้ LLM ตัดสินใจว่าข้อมูลส่วนใดในชุดข้อมูลที่ได้รับการฝึกอบรมมีความเกี่ยวข้อง ด้วยรูปแบบการออกแบบเนื้อหาหลัก ข้อความที่ป้อนจะถูกแบ่งออกเป็นสองส่วน: - คำแนะนำ (การกระทำ) -- เนื้อหาที่เกี่ยวข้อง (ที่มีผลต่อการกระทำ) +- เนื้อหาที่เกี่ยวข้อง (ที่มีอิทธิพลต่อการกระทำ) นี่คือตัวอย่างที่คำแนะนำคือ "สรุปสิ่งนี้ใน 2 ประโยค" | คำสั่ง (Input) | การเติมเต็ม (Output) | | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| ดาวพฤหัสบดีเป็นดาวเคราะห์ดวงที่ห้าจากดวงอาทิตย์และเป็นดาวเคราะห์ที่ใหญ่ที่สุดในระบบสุริยะ มันเป็นดาวแก๊สยักษ์ที่มีมวลหนึ่งในพันของดวงอาทิตย์ แต่มีมวลมากกว่าดาวเคราะห์อื่นๆ ในระบบสุริยะรวมกันสองเท่าครึ่ง ดาวพฤหัสบดีเป็นหนึ่งในวัตถุที่สว่างที่สุดที่มองเห็นได้ด้วยตาเปล่าในท้องฟ้ายามค่ำคืน และเป็นที่รู้จักของอารยธรรมโบราณตั้งแต่ก่อนประวัติศาสตร์ มันถูกตั้งชื่อตามเทพเจ้าจูปิเตอร์ของโรมัน [19] เมื่อมองจากโลก ดาวพฤหัสบดีสามารถสว่างพอที่จะสะท้อนแสงจนเกิดเงาที่มองเห็นได้ [20] และโดยเฉลี่ยเป็นวัตถุธรรมชาติที่สว่างที่สุดอันดับสามในท้องฟ้ายามค่ำคืนรองจากดวงจันทร์และดาวศุกร์
**สรุปสิ่งนี้ใน 2 ประโยคสั้นๆ** | ดาวพฤหัสบดีเป็นดาวเคราะห์ดวงที่ห้าจากดวงอาทิตย์และเป็นดาวเคราะห์ที่ใหญ่ที่สุดในระบบสุริยะ มันเป็นดาวแก๊สยักษ์ที่มีมวลมากกว่าดาวเคราะห์อื่นๆ รวมกันสองเท่าครึ่ง และเป็นหนึ่งในวัตถุที่สว่างที่สุดในท้องฟ้ายามค่ำคืนที่มองเห็นได้ด้วยตาเปล่า | +| ดาวพฤหัสบดีเป็นดาวเคราะห์ดวงที่ห้าจากดวงอาทิตย์และเป็นดาวเคราะห์ที่ใหญ่ที่สุดในระบบสุริยะ มันเป็นดาวแก๊สยักษ์ที่มีมวลหนึ่งในพันของดวงอาทิตย์ แต่มีมวลมากกว่าดาวเคราะห์อื่นๆ ในระบบสุริยะรวมกันสองเท่าครึ่ง ดาวพฤหัสบดีเป็นหนึ่งในวัตถุที่สว่างที่สุดที่มองเห็นได้ด้วยตาเปล่าในท้องฟ้ายามค่ำคืน และเป็นที่รู้จักในอารยธรรมโบราณตั้งแต่ก่อนประวัติศาสตร์ มันถูกตั้งชื่อตามเทพเจ้าดาวพฤหัสบดีของโรมัน [19] เมื่อมองจากโลก ดาวพฤหัสบดีสามารถสว่างพอที่จะสะท้อนแสงจนเกิดเงาที่มองเห็นได้ [20] และโดยเฉลี่ยเป็นวัตถุธรรมชาติที่สว่างที่สุดอันดับสามในท้องฟ้ายามค่ำคืนรองจากดวงจันทร์และดาวศุกร์
**สรุปสิ่งนี้ใน 2 ประโยคสั้นๆ** | ดาวพฤหัสบดีเป็นดาวเคราะห์ดวงที่ห้าจากดวงอาทิตย์และเป็นดาวเคราะห์ที่ใหญ่ที่สุดในระบบสุริยะ และเป็นหนึ่งในวัตถุที่สว่างที่สุดในท้องฟ้ายามค่ำคืน มันถูกตั้งชื่อตามเทพเจ้าดาวพฤหัสบดีของโรมัน และเป็นดาวแก๊สยักษ์ที่มีมวลมากกว่าดาวเคราะห์อื่นๆ รวมกันสองเท่าครึ่ง | ส่วนเนื้อหาหลักสามารถใช้ในรูปแบบต่างๆ เพื่อขับเคลื่อนคำแนะนำที่มีประสิทธิภาพมากขึ้น: -- **ตัวอย่าง** - แทนที่จะบอกโมเดลว่าต้องทำอะไรด้วยคำแนะนำที่ชัดเจน ให้ตัวอย่างสิ่งที่ต้องทำและปล่อยให้มันอนุมานรูปแบบ -- **คำใบ้** - ตามคำแนะนำด้วย "คำใบ้" ที่ช่วยเริ่มต้นการเติมเต็ม นำทางโมเดลไปสู่คำตอบที่เกี่ยวข้องมากขึ้น -- **แม่แบบ** - สูตรคำสั่งที่สามารถปรับแต่งได้ด้วยข้อมูลสำหรับกรณีการใช้งานเฉพาะ +- **ตัวอย่าง** - แทนที่จะบอกโมเดลว่าต้องทำอะไรด้วยคำแนะนำที่ชัดเจน ให้ตัวอย่างสิ่งที่ต้องทำและให้มันอนุมานรูปแบบ +- **คำใบ้** - ตามคำแนะนำด้วย "คำใบ้" ที่กระตุ้นการเติมเต็ม นำทางโมเดลไปสู่คำตอบที่เกี่ยวข้องมากขึ้น +- **แม่แบบ** - นี่คือ 'สูตร' สำหรับคำสั่งที่สามารถปรับแต่งด้วยข้อมูลสำหรับกรณีการใช้งานเฉพาะ เรามาสำรวจสิ่งเหล่านี้ในทางปฏิบัติ ### การใช้ตัวอย่าง -นี่คือวิธีที่คุณใช้เนื้อหาหลักเพื่อ "ป้อนโมเดล" ตัวอย่างของผลลัพธ์ที่ต้องการสำหรับคำแนะนำที่กำหนด และปล่อยให้มันอนุมานรูปแบบสำหรับผลลัพธ์ที่ต้องการ ตามจำนวนตัวอย่างที่ให้มา เราสามารถมีการออกแบบคำสั่งแบบ zero-shot, one-shot, few-shot เป็นต้น +นี่คือวิธีที่คุณใช้เนื้อหาหลักเพื่อ "ป้อนโมเดล" ตัวอย่างของผลลัพธ์ที่ต้องการสำหรับคำแนะนำที่กำหนด และให้มันอนุมานรูปแบบสำหรับผลลัพธ์ที่ต้องการ ตามจำนวนตัวอย่างที่ให้มา เราสามารถมีการออกแบบคำสั่งแบบ zero-shot, one-shot, few-shot เป็นต้น คำสั่งตอนนี้ประกอบด้วยสามส่วน: - คำอธิบายงาน -- ตัวอย่างผลลัพธ์ที่ต้องการ +- ตัวอย่างผลลัพธ์ที่ต้องการบางส่วน - จุดเริ่มต้นของตัวอย่างใหม่ (ซึ่งกลายเป็นคำอธิบายงานโดยปริยาย) | ประเภทการเรียนรู้ | คำสั่ง (Input) | การเติมเต็ม (Output) | | :------------ | :---------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------- | | Zero-shot | "The Sun is Shining". แปลเป็นภาษาสเปน | "El Sol está brillando". | | One-shot | "The Sun is Shining" => ""El Sol está brillando".
"It's a Cold and Windy Day" => | "Es un día frío y ventoso". | -| Few-shot | The player ran the bases => Baseball
The player hit an ace => Tennis
The player hit a six => Cricket
The player made a slam-dunk => | Basketball | +| Few-shot | ผู้เล่นวิ่งรอบฐาน => เบสบอล
ผู้เล่นตีเอซ => เทนนิส
ผู้เล่นตีหก => คริกเก็ต
ผู้เล่นทำสแลมดังก์ => | บาสเกตบอล | | | | | -สังเกตว่าเราต้องให้คำแนะนำที่ชัดเจน ("แปลเป็นภาษาสเปน") ในการออกแบบคำสั่งแบบ zero-shot แต่คำแนะนำจะถูกอนุมานในตัวอย่าง one-shot ตัวอย่าง few-shot แสดงให้เห็นว่าการเพิ่มตัวอย่างมากขึ้นช่วยให้โมเดลทำการอนุมานได้แม่นยำขึ้นโดยไม่ต้องเพิ่มคำแนะนำ +สังเกตว่าเราต้องให้คำแนะนำที่ชัดเจน ("แปลเป็นภาษาสเปน") ในการออกแบบคำสั่งแบบ zero-shot แต่คำแนะนำจะถูกอนุมานในตัวอย่างการออกแบบคำสั่งแบบ one-shot ตัวอย่าง few-shot แสดงให้เห็นว่าการเพิ่มตัวอย่างมากขึ้นช่วยให้โมเดลทำการอนุมานได้แม่นยำขึ้นโดยไม่ต้องเพิ่มคำแนะนำ ### คำใบ้ในคำสั่ง -อีกเทคนิคหนึ่งสำหรับการใช้เนื้อหาหลักคือการให้ _คำใบ้_ แทนตัวอย่าง ในกรณีนี้ เราให้โมเดลเริ่มต้นด้วยข้อความที่สะท้อนรูปแบบคำตอบที่ต้องการ โมเดลจะ "รับคำใบ้" และดำเนินการต่อในแนวทางนั้น +อีกเทคนิคหนึ่งสำหรับการใช้เนื้อหาหลักคือการให้ _คำใบ้_ แทนตัวอย่าง ในกรณีนี้ เรากำลังให้โมเดลเริ่มต้นด้วย _ส่วนหนึ่ง_ ที่สะท้อนรูปแบบผลลัพธ์ที่ต้องการ โมเดลจะ "รับคำใบ้" และดำเนินการต่อในรูปแบบนั้น | จำนวนคำใบ้ | คำสั่ง (Input) | การเติมเต็ม (Output) | | :------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| 0 | ดาวพฤหัสบดีเป็นดาวเคราะห์ดวงที่ห้าจากดวงอาทิตย์และเป็นดาวเคราะห์ที่ใหญ่ที่สุดในระบบสุริยะ มันเป็นดาวแก๊สยักษ์ที่มีมวลหนึ่งในพันของดวงอาทิตย์ แต่มีมวลมากกว่าดาวเคราะห์อื่นๆ ในระบบสุริยะรวมกันสองเท่าครึ่ง ดาวพฤหัสบดีเป็นหนึ่งในวัตถุที่สว่างที่สุดที่มองเห็นได้ด้วยตาเปล่าในท้องฟ้ายามค่ำคืน และเป็นที่รู้จักของอารยธรรมโบราณตั้งแต่ก่อนประวัติศาสตร์
**สรุปสิ่งนี้** | ดาวพฤหัสบดีเป็นดาวเคราะห์ที่ใหญ่ที่สุดในระบบสุริยะและเป็นดาวเคราะห์ดวงที่ห้าจากดวงอาทิตย์ มันเป็นดาวแก๊สยักษ์ที่มีมวลมากกว่าดาวเคราะห์อื่นๆ รวมกันสองเท่าครึ่ง และเป็นหนึ่งในวัตถุที่สว่างที่สุดในท้องฟ้ายามค่ำคืนที่มองเห็นได้ด้วยตาเปล่า.. | -| 1 | ดาวพฤหัสบดีเป็นดาวเคราะห์ลำดับที่ห้าจากดวงอาทิตย์และเป็นดาวเคราะห์ที่ใหญ่ที่สุดในระบบสุริยะ เป็นดาวเคราะห์แก๊สยักษ์ที่มีมวลเพียงหนึ่งในพันของดวงอาทิตย์ แต่มีมวลมากกว่าดาวเคราะห์อื่นๆ ในระบบสุริยะรวมกันถึงสองเท่าครึ่ง ดาวพฤหัสบดีเป็นหนึ่งในวัตถุที่สว่างที่สุดที่สามารถมองเห็นได้ด้วยตาเปล่าในท้องฟ้ายามค่ำคืน และเป็นที่รู้จักของอารยธรรมโบราณตั้งแต่ก่อนมีการบันทึกประวัติศาสตร์
**สรุปเรื่องนี้**
สิ่งที่เราเรียนรู้คือ ดาวพฤหัสบดี | เป็นดาวเคราะห์ลำดับที่ห้าจากดวงอาทิตย์และเป็นดาวเคราะห์ที่ใหญ่ที่สุดในระบบสุริยะ เป็นดาวเคราะห์แก๊สยักษ์ที่มีมวลเพียงหนึ่งในพันของดวงอาทิตย์ แต่มีมวลมากกว่าดาวเคราะห์อื่นๆ รวมกันถึงสองเท่าครึ่ง สามารถมองเห็นได้ด้วยตาเปล่าและเป็นที่รู้จักมาตั้งแต่สมัยโบราณ | -| 2 | ดาวพฤหัสบดีเป็นดาวเคราะห์ลำดับที่ห้าจากดวงอาทิตย์และเป็นดาวเคราะห์ที่ใหญ่ที่สุดในระบบสุริยะ เป็นดาวเคราะห์แก๊สยักษ์ที่มีมวลเพียงหนึ่งในพันของดวงอาทิตย์ แต่มีมวลมากกว่าดาวเคราะห์อื่นๆ ในระบบสุริยะรวมกันถึงสองเท่าครึ่ง ดาวพฤหัสบดีเป็นหนึ่งในวัตถุที่สว่างที่สุดที่สามารถมองเห็นได้ด้วยตาเปล่าในท้องฟ้ายามค่ำคืน และเป็นที่รู้จักของอารยธรรมโบราณตั้งแต่ก่อนมีการบันทึกประวัติศาสตร์
**สรุปเรื่องนี้**
3 ข้อเท็จจริงที่เราเรียนรู้: | 1. ดาวพฤหัสบดีเป็นดาวเคราะห์ลำดับที่ห้าจากดวงอาทิตย์และเป็นดาวเคราะห์ที่ใหญ่ที่สุดในระบบสุริยะ
2. เป็นดาวเคราะห์แก๊สยักษ์ที่มีมวลเพียงหนึ่งในพันของดวงอาทิตย์...
3. ดาวพฤหัสบดีสามารถมองเห็นได้ด้วยตาเปล่าตั้งแต่สมัยโบราณ ... | +| 0 | ดาวพฤหัสบดีเป็นดาวเคราะห์ดวงที่ห้าจากดวงอาทิตย์และเป็นดาวเคราะห์ที่ใหญ่ที่สุดในระบบสุริยะ มันเป็นดาวแก๊สยักษ์ที่มีมวลหนึ่งในพันของดวงอาทิตย์ แต่มีมวลมากกว่าดาวเคราะห์อื่นๆ ในระบบสุริยะรวมกันสองเท่าครึ่ง ดาวพฤหัสบดีเป็นหนึ่งในวัตถุที่สว่างที่สุดที่มองเห็นได้ด้วยตาเปล่าในท้องฟ้ายามค่ำคืน และเป็นที่รู้จักในอารยธรรมโบราณตั้งแต่ก่อนประวัติศาสตร์
**สรุปสิ่งนี้** | ดาวพฤหัสบดีเป็นดาวเคราะห์ที่ใหญ่ที่สุดในระบบสุริยะและเป็นดาวเคราะห์ดวงที่ห้าจากดวงอาทิตย์ มันเป็นดาวแก๊สยักษ์ที่มีมวล 1/1000 ของดวงอาทิตย์ แต่มีมวลมากกว่าดาวเคราะห์อื่นๆ รวมกันสองเท่าครึ่ง อารยธรรมโบราณรู้จักดาวพฤหัสบดีมานาน และมันสามารถมองเห็นได้ง่ายในท้องฟ้ายามค่ำคืน.. | +| 1 | ดาวพฤหัสบดีเป็นดาวเคราะห์ลำดับที่ห้าจากดวงอาทิตย์และเป็นดาวเคราะห์ที่ใหญ่ที่สุดในระบบสุริยะ เป็นดาวเคราะห์แก๊สยักษ์ที่มีมวลเพียงหนึ่งในพันของดวงอาทิตย์ แต่มีมวลมากกว่าดาวเคราะห์อื่นๆ ในระบบสุริยะรวมกันถึงสองเท่าครึ่ง ดาวพฤหัสบดีเป็นหนึ่งในวัตถุที่สว่างที่สุดที่สามารถมองเห็นได้ด้วยตาเปล่าในท้องฟ้ายามค่ำคืน และเป็นที่รู้จักในอารยธรรมโบราณตั้งแต่ก่อนมีการบันทึกประวัติศาสตร์
**สรุป**
สิ่งที่เราเรียนรู้คือ ดาวพฤหัสบดี | เป็นดาวเคราะห์ลำดับที่ห้าจากดวงอาทิตย์และเป็นดาวเคราะห์ที่ใหญ่ที่สุดในระบบสุริยะ เป็นดาวเคราะห์แก๊สยักษ์ที่มีมวลเพียงหนึ่งในพันของดวงอาทิตย์ แต่มีมวลมากกว่าดาวเคราะห์อื่นๆ รวมกันถึงสองเท่าครึ่ง สามารถมองเห็นได้ง่ายด้วยตาเปล่าและเป็นที่รู้จักมาตั้งแต่สมัยโบราณ | +| 2 | ดาวพฤหัสบดีเป็นดาวเคราะห์ลำดับที่ห้าจากดวงอาทิตย์และเป็นดาวเคราะห์ที่ใหญ่ที่สุดในระบบสุริยะ เป็นดาวเคราะห์แก๊สยักษ์ที่มีมวลเพียงหนึ่งในพันของดวงอาทิตย์ แต่มีมวลมากกว่าดาวเคราะห์อื่นๆ ในระบบสุริยะรวมกันถึงสองเท่าครึ่ง ดาวพฤหัสบดีเป็นหนึ่งในวัตถุที่สว่างที่สุดที่สามารถมองเห็นได้ด้วยตาเปล่าในท้องฟ้ายามค่ำคืน และเป็นที่รู้จักในอารยธรรมโบราณตั้งแต่ก่อนมีการบันทึกประวัติศาสตร์
**สรุป**
3 ข้อที่เราเรียนรู้: | 1. ดาวพฤหัสบดีเป็นดาวเคราะห์ลำดับที่ห้าจากดวงอาทิตย์และเป็นดาวเคราะห์ที่ใหญ่ที่สุดในระบบสุริยะ
2. เป็นดาวเคราะห์แก๊สยักษ์ที่มีมวลเพียงหนึ่งในพันของดวงอาทิตย์...
3. ดาวพฤหัสบดีสามารถมองเห็นได้ด้วยตาเปล่าตั้งแต่สมัยโบราณ ... | | | | | -### แม่แบบคำสั่ง (Prompt Templates) +### แม่แบบคำสั่ง -แม่แบบคำสั่งคือ _สูตรที่กำหนดไว้ล่วงหน้าสำหรับคำสั่ง_ ที่สามารถจัดเก็บและนำกลับมาใช้ใหม่ได้ตามต้องการ เพื่อสร้างประสบการณ์ผู้ใช้ที่สม่ำเสมอในระดับใหญ่ ในรูปแบบที่ง่ายที่สุด มันคือการรวบรวมตัวอย่างคำสั่ง เช่น [ตัวอย่างนี้จาก OpenAI](https://platform.openai.com/examples?WT.mc_id=academic-105485-koreyst) ที่ให้ทั้งส่วนประกอบคำสั่งแบบโต้ตอบ (ข้อความผู้ใช้และข้อความระบบ) และรูปแบบคำขอที่ขับเคลื่อนด้วย API - เพื่อรองรับการใช้งานซ้ำ +แม่แบบคำสั่งคือ _สูตรที่กำหนดไว้ล่วงหน้าสำหรับคำสั่ง_ ซึ่งสามารถจัดเก็บและนำกลับมาใช้ใหม่ได้ตามต้องการ เพื่อสร้างประสบการณ์ผู้ใช้ที่สม่ำเสมอในระดับใหญ่ ในรูปแบบที่ง่ายที่สุด มันเป็นเพียงการรวบรวมตัวอย่างคำสั่ง เช่น [ตัวอย่างนี้จาก OpenAI](https://platform.openai.com/examples?WT.mc_id=academic-105485-koreyst) ที่ให้ทั้งส่วนประกอบคำสั่งแบบโต้ตอบ (ข้อความผู้ใช้และข้อความระบบ) และรูปแบบคำขอที่ขับเคลื่อนด้วย API - เพื่อสนับสนุนการนำกลับมาใช้ใหม่ -ในรูปแบบที่ซับซ้อนยิ่งขึ้น เช่น [ตัวอย่างนี้จาก LangChain](https://python.langchain.com/docs/concepts/prompt_templates/?WT.mc_id=academic-105485-koreyst) มันมี _ตัวแทน_ ที่สามารถแทนที่ด้วยข้อมูลจากแหล่งต่างๆ (ข้อมูลผู้ใช้ บริบทระบบ แหล่งข้อมูลภายนอก ฯลฯ) เพื่อสร้างคำสั่งแบบไดนามิก สิ่งนี้ช่วยให้เราสร้างคลังคำสั่งที่สามารถนำมาใช้เพื่อสร้างประสบการณ์ผู้ใช้ที่สม่ำเสมอ **ในเชิงโปรแกรม** ในระดับใหญ่ +ในรูปแบบที่ซับซ้อนมากขึ้น เช่น [ตัวอย่างนี้จาก LangChain](https://python.langchain.com/docs/concepts/prompt_templates/?WT.mc_id=academic-105485-koreyst) มันมี _ตัวแปรที่สามารถแทนที่ด้วยข้อมูลจากแหล่งต่างๆ_ (ข้อมูลผู้ใช้ บริบทระบบ แหล่งข้อมูลภายนอก ฯลฯ) เพื่อสร้างคำสั่งแบบไดนามิก สิ่งนี้ช่วยให้เราสร้างห้องสมุดของคำสั่งที่สามารถนำมาใช้เพื่อสร้างประสบการณ์ผู้ใช้ที่สม่ำเสมอ **ในระดับโปรแกรม** ได้ -สุดท้าย คุณค่าที่แท้จริงของแม่แบบอยู่ที่ความสามารถในการสร้างและเผยแพร่ _คลังคำสั่ง_ สำหรับโดเมนแอปพลิเคชันเฉพาะ - โดยที่แม่แบบคำสั่งได้รับการ _ปรับแต่ง_ เพื่อสะท้อนบริบทหรือตัวอย่างเฉพาะของแอปพลิเคชันที่ทำให้การตอบสนองมีความเกี่ยวข้องและแม่นยำมากขึ้นสำหรับกลุ่มผู้ใช้เป้าหมาย [Prompts For Edu](https://github.com/microsoft/prompts-for-edu?WT.mc_id=academic-105485-koreyst) เป็นตัวอย่างที่ดีของแนวทางนี้ โดยรวบรวมคลังคำสั่งสำหรับโดเมนการศึกษาโดยเน้นวัตถุประสงค์สำคัญ เช่น การวางแผนบทเรียน การออกแบบหลักสูตร การติวสำหรับนักเรียน ฯลฯ +สุดท้าย คุณค่าที่แท้จริงของแม่แบบอยู่ที่ความสามารถในการสร้างและเผยแพร่ _ห้องสมุดคำสั่ง_ สำหรับโดเมนแอปพลิเคชันเฉพาะ - ซึ่งแม่แบบคำสั่งได้รับการ _ปรับแต่ง_ เพื่อสะท้อนบริบทหรือตัวอย่างเฉพาะของแอปพลิเคชันที่ทำให้การตอบสนองมีความเกี่ยวข้องและแม่นยำมากขึ้นสำหรับกลุ่มเป้าหมายผู้ใช้ ตัวอย่างที่ดีของวิธีการนี้คือ [Prompts For Edu](https://github.com/microsoft/prompts-for-edu?WT.mc_id=academic-105485-koreyst) ซึ่งเป็นที่เก็บรวบรวมคำสั่งสำหรับโดเมนการศึกษา โดยเน้นวัตถุประสงค์สำคัญ เช่น การวางแผนบทเรียน การออกแบบหลักสูตร การสอนนักเรียน ฯลฯ ## เนื้อหาสนับสนุน -หากเราคิดว่าการสร้างคำสั่งมีคำแนะนำ (งาน) และเป้าหมาย (เนื้อหาหลัก) _เนื้อหาสนับสนุน_ ก็เหมือนบริบทเพิ่มเติมที่เรามอบให้เพื่อ **มีอิทธิพลต่อผลลัพธ์ในบางวิธี** มันอาจเป็นพารามิเตอร์การปรับแต่ง คำแนะนำการจัดรูปแบบ การจัดหมวดหมู่หัวข้อ ฯลฯ ที่สามารถช่วยให้โมเดล _ปรับแต่ง_ การตอบสนองให้เหมาะสมกับวัตถุประสงค์หรือความคาดหวังของผู้ใช้ที่ต้องการ +หากเราคิดว่าการสร้างคำสั่งมีคำแนะนำ (งาน) และเป้าหมาย (เนื้อหาหลัก) _เนื้อหารอง_ ก็เหมือนบริบทเพิ่มเติมที่เรามอบให้เพื่อ **มีอิทธิพลต่อผลลัพธ์ในบางวิธี** มันอาจเป็นพารามิเตอร์การปรับแต่ง คำแนะนำการจัดรูปแบบ การจัดหมวดหมู่หัวข้อ ฯลฯ ที่สามารถช่วยให้โมเดล _ปรับแต่ง_ การตอบสนองให้เหมาะสมกับวัตถุประสงค์หรือความคาดหวังของผู้ใช้ที่ต้องการ ตัวอย่างเช่น: เมื่อมีแคตตาล็อกหลักสูตรที่มีเมตาดาต้าขนาดใหญ่ (ชื่อ คำอธิบาย ระดับ แท็กเมตาดาต้า ผู้สอน ฯลฯ) เกี่ยวกับหลักสูตรทั้งหมดในหลักสูตร: - เราสามารถกำหนดคำแนะนำเพื่อ "สรุปแคตตาล็อกหลักสูตรสำหรับฤดูใบไม้ร่วง 2023" - เราสามารถใช้เนื้อหาหลักเพื่อให้ตัวอย่างบางส่วนของผลลัพธ์ที่ต้องการ -- เราสามารถใช้เนื้อหาสนับสนุนเพื่อระบุ "แท็ก" 5 อันดับแรกที่น่าสนใจ +- เราสามารถใช้เนื้อหารองเพื่อระบุแท็ก "5 อันดับแรก" ที่น่าสนใจ -ตอนนี้ โมเดลสามารถให้สรุปในรูปแบบที่แสดงโดยตัวอย่างบางส่วน - แต่ถ้าผลลัพธ์มีหลายแท็ก มันสามารถจัดลำดับความสำคัญของ 5 แท็กที่ระบุในเนื้อหาสนับสนุนได้ +ตอนนี้ โมเดลสามารถให้สรุปในรูปแบบที่แสดงโดยตัวอย่างบางส่วน - แต่ถ้าผลลัพธ์มีหลายแท็ก มันสามารถจัดลำดับความสำคัญของ 5 แท็กที่ระบุในเนื้อหารองได้ --- @@ -300,74 +290,74 @@ response = openai.chat.completions.create( แนวคิด #3: เทคนิคการออกแบบคำสั่ง -เทคนิคพื้นฐานสำหรับการออกแบบคำสั่งมีอะไรบ้าง? -แสดงให้เห็นด้วยแบบฝึกหัด +เทคนิคพื้นฐานบางอย่างสำหรับการออกแบบคำสั่งคืออะไร? +แสดงให้เห็นด้วยแบบฝึกหัดบางอย่าง --> ## แนวทางปฏิบัติที่ดีที่สุดในการออกแบบคำสั่ง -เมื่อเรารู้แล้วว่าคำสั่งสามารถ _สร้างขึ้น_ ได้ เราสามารถเริ่มคิดเกี่ยวกับวิธีการ _ออกแบบ_ คำสั่งให้สะท้อนแนวทางปฏิบัติที่ดีที่สุด เราสามารถแบ่งออกเป็นสองส่วน - การมี _ทัศนคติ_ ที่ถูกต้องและการใช้ _เทคนิค_ ที่เหมาะสม +ตอนนี้เรารู้แล้วว่าคำสั่งสามารถ _สร้างขึ้น_ ได้อย่างไร เราสามารถเริ่มคิดเกี่ยวกับวิธีการ _ออกแบบ_ ให้สะท้อนถึงแนวทางปฏิบัติที่ดีที่สุด เราสามารถแบ่งออกเป็นสองส่วน - การมี _ทัศนคติ_ ที่ถูกต้องและการใช้ _เทคนิค_ ที่เหมาะสม ### ทัศนคติในการออกแบบคำสั่ง -การออกแบบคำสั่งเป็นกระบวนการทดลองและปรับปรุง ดังนั้นควรคำนึงถึงปัจจัยสำคัญสามประการ: +การออกแบบคำสั่งเป็นกระบวนการลองผิดลองถูก ดังนั้นควรคำนึงถึงปัจจัยสำคัญสามประการ: -1. **ความเข้าใจในโดเมนมีความสำคัญ** ความแม่นยำและความเกี่ยวข้องของการตอบสนองเป็นผลมาจาก _โดเมน_ ที่แอปพลิเคชันหรือผู้ใช้ดำเนินการ ใช้สัญชาตญาณและความเชี่ยวชาญในโดเมนของคุณเพื่อ **ปรับแต่งเทคนิค** ให้เหมาะสม เช่น กำหนด _บุคลิกเฉพาะโดเมน_ ในคำสั่งระบบของคุณ หรือใช้ _แม่แบบเฉพาะโดเมน_ ในคำสั่งผู้ใช้ ให้เนื้อหาสนับสนุนที่สะท้อนบริบทเฉพาะโดเมน หรือใช้ _ตัวชี้นำและตัวอย่างเฉพาะโดเมน_ เพื่อแนะนำโมเดลไปสู่รูปแบบการใช้งานที่คุ้นเคย +1. **ความเข้าใจในโดเมนมีความสำคัญ** ความแม่นยำและความเกี่ยวข้องของการตอบสนองเป็นผลมาจาก _โดเมน_ ที่แอปพลิเคชันหรือผู้ใช้ดำเนินการ ใช้สัญชาตญาณและความเชี่ยวชาญในโดเมนของคุณเพื่อ **ปรับแต่งเทคนิค** ให้เหมาะสมยิ่งขึ้น ตัวอย่างเช่น กำหนด _บุคลิกเฉพาะโดเมน_ ในคำสั่งระบบของคุณ หรือใช้ _แม่แบบเฉพาะโดเมน_ ในคำสั่งผู้ใช้ ให้เนื้อหารองที่สะท้อนบริบทเฉพาะโดเมน หรือใช้ _ตัวชี้นำและตัวอย่างเฉพาะโดเมน_ เพื่อแนะนำโมเดลไปสู่รูปแบบการใช้งานที่คุ้นเคย -2. **ความเข้าใจในโมเดลมีความสำคัญ** เรารู้ว่าโมเดลมีลักษณะสุ่มโดยธรรมชาติ แต่การใช้งานโมเดลอาจแตกต่างกันในแง่ของชุดข้อมูลการฝึกอบรมที่ใช้ (ความรู้ที่ฝึกไว้ล่วงหน้า) ความสามารถที่มีให้ (เช่น ผ่าน API หรือ SDK) และประเภทของเนื้อหาที่ได้รับการปรับแต่ง (เช่น โค้ด รูปภาพ หรือข้อความ) เข้าใจจุดแข็งและข้อจำกัดของโมเดลที่คุณใช้ และใช้ความรู้นั้นเพื่อ _จัดลำดับความสำคัญของงาน_ หรือสร้าง _แม่แบบที่ปรับแต่ง_ ซึ่งได้รับการปรับแต่งให้เหมาะสมกับความสามารถของโมเดล +2. **ความเข้าใจในโมเดลมีความสำคัญ** เรารู้ว่าโมเดลมีลักษณะสุ่มโดยธรรมชาติ แต่การใช้งานโมเดลอาจแตกต่างกันไปในแง่ของชุดข้อมูลการฝึกอบรมที่ใช้ (ความรู้ที่ผ่านการฝึกอบรม) ความสามารถที่มีให้ (เช่น ผ่าน API หรือ SDK) และประเภทของเนื้อหาที่ได้รับการปรับแต่ง (เช่น โค้ด รูปภาพ หรือข้อความ) เข้าใจจุดแข็งและข้อจำกัดของโมเดลที่คุณใช้ และใช้ความรู้นั้นเพื่อ _จัดลำดับความสำคัญของงาน_ หรือสร้าง _แม่แบบที่ปรับแต่ง_ ซึ่งได้รับการปรับแต่งให้เหมาะสมกับความสามารถของโมเดล -3. **การทำซ้ำและการตรวจสอบมีความสำคัญ** โมเดลกำลังพัฒนาอย่างรวดเร็ว เช่นเดียวกับเทคนิคสำหรับการออกแบบคำสั่ง ในฐานะผู้เชี่ยวชาญในโดเมน คุณอาจมีบริบทหรือเกณฑ์อื่นๆ ที่ _แอปพลิเคชัน_ เฉพาะของคุณอาจต้องการ ซึ่งอาจไม่ใช้กับชุมชนในวงกว้าง ใช้เครื่องมือและเทคนิคการออกแบบคำสั่งเพื่อ "เริ่มต้น" การสร้างคำสั่ง จากนั้นทำซ้ำและตรวจสอบผลลัพธ์โดยใช้สัญชาตญาณและความเชี่ยวชาญในโดเมนของคุณ บันทึกข้อมูลเชิงลึกของคุณและสร้าง **ฐานความรู้** (เช่น คลังคำสั่ง) ที่สามารถใช้เป็นพื้นฐานใหม่โดยผู้อื่น เพื่อการทำซ้ำที่รวดเร็วขึ้นในอนาคต +3. **การทำซ้ำและการตรวจสอบมีความสำคัญ** โมเดลกำลังพัฒนาอย่างรวดเร็ว และเทคนิคการออกแบบคำสั่งก็เช่นกัน ในฐานะผู้เชี่ยวชาญในโดเมน คุณอาจมีบริบทหรือเกณฑ์อื่นๆ ที่ _แอปพลิเคชันของคุณ_ โดยเฉพาะ ซึ่งอาจไม่สามารถใช้ได้กับชุมชนในวงกว้าง ใช้เครื่องมือและเทคนิคการออกแบบคำสั่งเพื่อ "เริ่มต้น" การสร้างคำสั่ง จากนั้นทำซ้ำและตรวจสอบผลลัพธ์โดยใช้สัญชาตญาณและความเชี่ยวชาญในโดเมนของคุณ บันทึกข้อมูลเชิงลึกของคุณและสร้าง **ฐานความรู้** (เช่น ห้องสมุดคำสั่ง) ที่สามารถใช้เป็นพื้นฐานใหม่โดยผู้อื่น เพื่อการทำซ้ำที่รวดเร็วขึ้นในอนาคต ## แนวทางปฏิบัติที่ดีที่สุด -ตอนนี้เรามาดูแนวทางปฏิบัติที่ดีที่สุดที่แนะนำโดย [OpenAI](https://help.openai.com/en/articles/6654000-best-practices-for-prompt-engineering-with-openai-api?WT.mc_id=academic-105485-koreyst) และผู้ปฏิบัติงาน [Azure OpenAI](https://learn.microsoft.com/azure/ai-services/openai/concepts/prompt-engineering#best-practices?WT.mc_id=academic-105485-koreyst) +ตอนนี้มาดูแนวทางปฏิบัติที่ดีที่สุดที่แนะนำโดย [OpenAI](https://help.openai.com/en/articles/6654000-best-practices-for-prompt-engineering-with-openai-api?WT.mc_id=academic-105485-koreyst) และผู้เชี่ยวชาญจาก [Azure OpenAI](https://learn.microsoft.com/azure/ai-services/openai/concepts/prompt-engineering#best-practices?WT.mc_id=academic-105485-koreyst) | สิ่งที่ควรทำ | เหตุผล | | :-------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| ประเมินโมเดลล่าสุด | รุ่นใหม่ของโมเดลมีแนวโน้มที่จะมีคุณสมบัติและคุณภาพที่ดีขึ้น - แต่ก็อาจมีค่าใช้จ่ายสูงขึ้นด้วย ประเมินผลกระทบแล้วตัดสินใจว่าจะย้ายไปใช้หรือไม่ | -| แยกคำแนะนำและบริบท | ตรวจสอบว่าโมเดล/ผู้ให้บริการของคุณกำหนด _ตัวแบ่ง_ เพื่อแยกคำแนะนำ เนื้อหาหลัก และเนื้อหาสนับสนุนได้ชัดเจนขึ้นหรือไม่ สิ่งนี้สามารถช่วยให้โมเดลกำหนดน้ำหนักให้กับโทเค็นได้แม่นยำขึ้น | -| ระบุให้ชัดเจนและเจาะจง | ให้รายละเอียดเพิ่มเติมเกี่ยวกับบริบทที่ต้องการ ผลลัพธ์ ความยาว รูปแบบ สไตล์ ฯลฯ สิ่งนี้จะช่วยปรับปรุงทั้งคุณภาพและความสม่ำเสมอของการตอบสนอง บันทึกสูตรในแม่แบบที่นำกลับมาใช้ได้ | -| อธิบายและใช้ตัวอย่าง | โมเดลอาจตอบสนองได้ดีกับวิธี "แสดงและบอก" เริ่มต้นด้วยวิธี `zero-shot` ที่คุณให้คำแนะนำ (แต่ไม่มีตัวอย่าง) จากนั้นลองใช้ `few-shot` เป็นการปรับปรุง โดยให้ตัวอย่างบางส่วนของผลลัพธ์ที่ต้องการ ใช้การเปรียบเทียบเพื่อช่วยอธิบาย | +| ประเมินโมเดลล่าสุด | รุ่นใหม่ของโมเดลมีแนวโน้มที่จะมีคุณสมบัติและคุณภาพที่ดีขึ้น - แต่ก็อาจมีค่าใช้จ่ายสูงขึ้นด้วย ประเมินผลกระทบ แล้วตัดสินใจว่าจะย้ายไปใช้หรือไม่ | +| แยกคำแนะนำและบริบท | ตรวจสอบว่าโมเดล/ผู้ให้บริการของคุณกำหนด _ตัวแบ่ง_ เพื่อแยกคำแนะนำ เนื้อหาหลัก และเนื้อหารองได้ชัดเจนขึ้นหรือไม่ สิ่งนี้สามารถช่วยให้โมเดลกำหนดน้ำหนักให้กับโทเค็นได้แม่นยำขึ้น | +| ระบุให้ชัดเจนและเจาะจง | ให้รายละเอียดเพิ่มเติมเกี่ยวกับบริบท ผลลัพธ์ ความยาว รูปแบบ สไตล์ ฯลฯ ที่ต้องการ สิ่งนี้จะช่วยปรับปรุงทั้งคุณภาพและความสม่ำเสมอของการตอบสนอง บันทึกสูตรในแม่แบบที่นำกลับมาใช้ได้ | +| อธิบายและใช้ตัวอย่าง | โมเดลอาจตอบสนองได้ดีขึ้นกับวิธี "แสดงและบอก" เริ่มต้นด้วยวิธี `zero-shot` ที่คุณให้คำแนะนำ (แต่ไม่มีตัวอย่าง) แล้วลอง `few-shot` เป็นการปรับปรุง โดยให้ตัวอย่างบางส่วนของผลลัพธ์ที่ต้องการ ใช้การเปรียบเทียบ | | ใช้ตัวชี้นำเพื่อเริ่มต้นการตอบสนอง | ชี้นำไปยังผลลัพธ์ที่ต้องการโดยให้คำหรือวลีเริ่มต้นที่สามารถใช้เป็นจุดเริ่มต้นสำหรับการตอบสนอง | | ย้ำคำแนะนำ | บางครั้งคุณอาจต้องย้ำคำแนะนำกับโมเดล ให้คำแนะนำก่อนและหลังเนื้อหาหลัก ใช้คำแนะนำและตัวชี้นำ ฯลฯ ทำซ้ำและตรวจสอบเพื่อดูว่าอะไรได้ผล | | ลำดับมีความสำคัญ | ลำดับที่คุณนำเสนอข้อมูลต่อโมเดลอาจส่งผลต่อผลลัพธ์ แม้กระทั่งในตัวอย่างการเรียนรู้ เนื่องจากอคติจากความใหม่ ลองตัวเลือกต่างๆ เพื่อดูว่าอะไรได้ผลดีที่สุด | | ให้โมเดลมีทางเลือก | ให้โมเดลมีคำตอบสำรองที่สามารถให้ได้หากไม่สามารถทำงานให้เสร็จได้ด้วยเหตุผลใดก็ตาม สิ่งนี้สามารถลดโอกาสที่โมเดลจะสร้างคำตอบที่ผิดหรือแต่งขึ้นมาได้ | | | | -เช่นเดียวกับแนวทางปฏิบัติที่ดีที่สุดใดๆ โปรดจำไว้ว่า _ผลลัพธ์ของคุณอาจแตกต่างกัน_ ขึ้นอยู่กับโมเดล งาน และโดเมน ใช้สิ่งเหล่านี้เป็นจุดเริ่มต้น และทำซ้ำเพื่อค้นหาสิ่งที่เหมาะสมที่สุดสำหรับคุณ ประเมินกระบวนการออกแบบคำสั่งของคุณอย่างต่อเนื่องเมื่อมีโมเดลและเครื่องมือใหม่ๆ โดยมุ่งเน้นที่ความสามารถในการปรับขนาดกระบวนการและคุณภาพของการตอบสนอง +เช่นเดียวกับแนวทางปฏิบัติที่ดีที่สุดใดๆ จำไว้ว่า _ผลลัพธ์ของคุณอาจแตกต่างกัน_ ขึ้นอยู่กับโมเดล งาน และโดเมน ใช้สิ่งเหล่านี้เป็นจุดเริ่มต้น และทำซ้ำเพื่อค้นหาสิ่งที่เหมาะสมที่สุดสำหรับคุณ ประเมินกระบวนการออกแบบคำสั่งของคุณอย่างต่อเนื่องเมื่อมีโมเดลและเครื่องมือใหม่ๆ พร้อมใช้งาน โดยมุ่งเน้นที่ความสามารถในการปรับขนาดของกระบวนการและคุณภาพของการตอบสนอง -## งานที่มอบหมาย +## งานที่ได้รับมอบหมาย -ยินดีด้วย! คุณมาถึงตอนท้ายของบทเรียนแล้ว! ถึงเวลาทดสอบแนวคิดและเทคนิคเหล่านั้นกับตัวอย่างจริง! +ยินดีด้วย! คุณมาถึงจุดสิ้นสุดของบทเรียนแล้ว! ถึงเวลาทดสอบแนวคิดและเทคนิคเหล่านั้นกับตัวอย่างจริง! -สำหรับงานที่มอบหมาย เราจะใช้ Jupyter Notebook ที่มีแบบฝึกหัดที่คุณสามารถทำได้แบบโต้ตอบ คุณยังสามารถขยาย Notebook ด้วยเซลล์ Markdown และ Code ของคุณเองเพื่อสำรวจแนวคิดและเทคนิคด้วยตัวคุณเอง +สำหรับงานที่ได้รับมอบหมาย เราจะใช้ Jupyter Notebook พร้อมแบบฝึกหัดที่คุณสามารถทำได้แบบโต้ตอบ คุณยังสามารถขยาย Notebook ด้วยเซลล์ Markdown และโค้ดของคุณเองเพื่อสำรวจแนวคิดและเทคนิคด้วยตัวเอง -### เริ่มต้นด้วยการ fork repo แล้ว +### เพื่อเริ่มต้น ให้ fork repo แล้ว - (แนะนำ) เปิด GitHub Codespaces - (ทางเลือก) Clone repo ไปยังอุปกรณ์ของคุณและใช้กับ Docker Desktop -- (ทางเลือก) เปิด Notebook ด้วยสภาพแวดล้อมการรัน Notebook ที่คุณชื่นชอบ +- (ทางเลือก) เปิด Notebook ด้วยสภาพแวดล้อมการรัน Notebook ที่คุณต้องการ ### จากนั้น ตั้งค่าตัวแปรสภาพแวดล้อมของคุณ -- คัดลอกไฟล์ `.env.copy` ใน root ของ repo ไปยัง `.env` และเติมค่า `AZURE_OPENAI_API_KEY`, `AZURE_OPENAI_ENDPOINT` และ `AZURE_OPENAI_DEPLOYMENT` กลับมาที่ [ส่วน Learning Sandbox](../../../04-prompt-engineering-fundamentals/04-prompt-engineering-fundamentals) เพื่อเรียนรู้วิธีการ +- คัดลอกไฟล์ `.env.copy` ใน repo root ไปยัง `.env` และเติมค่า `AZURE_OPENAI_API_KEY`, `AZURE_OPENAI_ENDPOINT` และ `AZURE_OPENAI_DEPLOYMENT` กลับมาที่ [ส่วน Learning Sandbox](../../../04-prompt-engineering-fundamentals/04-prompt-engineering-fundamentals) เพื่อเรียนรู้วิธีการ -### จากนั้น เปิด Jupyter Notebook +### ต่อไป เปิด Jupyter Notebook -- เลือก kernel runtime หากใช้ตัวเลือก 1 หรือ 2 เพียงเลือก kernel Python 3.10.x เริ่มต้นที่ dev container ให้มา +- เลือก kernel ที่จะรัน หากใช้ตัวเลือกที่ 1 หรือ 2 เพียงเลือก kernel Python 3.10.x ที่เป็นค่าเริ่มต้นที่ dev container มีให้ -คุณพร้อมที่จะรันแบบฝึกหัดแล้ว โปรดทราบว่าไม่มี _คำตอบที่ถูกหรือผิด_ ในที่นี้ - เพียงแค่สำรวจตัวเลือกด้วยการทดลองและสร้างสัญชาตญาณสำหรับสิ่งที่เหมาะสมสำหรับโมเดลและโดเมนแอปพลิเคชันที่กำหนด +คุณพร้อมที่จะรันแบบฝึกหัดแล้ว โปรดทราบว่าไม่มีคำตอบที่ _ถูกหรือผิด_ ในที่นี้ - เพียงแค่สำรวจตัวเลือกด้วยการลองผิดลองถูกและสร้างสัญชาตญาณสำหรับสิ่งที่เหมาะสมกับโมเดลและโดเมนแอปพลิเคชันที่กำหนด _ด้วยเหตุนี้จึงไม่มีส่วน Code Solution ในบทเรียนนี้ แต่ Notebook จะมีเซลล์ Markdown ที่ชื่อว่า "My Solution:" ซึ่งแสดงตัวอย่างผลลัพธ์หนึ่งสำหรับการอ้างอิง_ @@ -381,14 +371,14 @@ _ด้วยเหตุนี้จึงไม่มีส่วน Code Solu คำสั่งใดต่อไปนี้เป็นคำสั่งที่ดีตามแนวทางปฏิบัติที่เหมาะสม? 1. แสดงภาพรถสีแดง -2. แสดงภาพรถสีแดงยี่ห้อ Volvo รุ่น XC90 จอดอยู่ริมหน้าผาโดยมีพระอาทิตย์ตกดิน +2. แสดงภาพรถสีแดงยี่ห้อ Volvo รุ่น XC90 จอดอยู่ริมหน้าผาในขณะที่พระอาทิตย์ตกดิน 3. แสดงภาพรถสีแดงยี่ห้อ Volvo รุ่น XC90 -คำตอบ: 2 เป็นคำสั่งที่ดีที่สุดเพราะให้รายละเอียดเกี่ยวกับ "อะไร" และลงลึกในรายละเอียด (ไม่ใช่แค่รถใดๆ แต่เป็นยี่ห้อและรุ่นเฉพาะ) และยังอธิบายถึงบรรยากาศโดยรวม 3 เป็นคำสั่งที่ดีรองลงมาเพราะมีคำอธิบายมากเช่นกัน +คำตอบ: 2 เป็นคำสั่งที่ดีที่สุดเนื่องจากให้รายละเอียดเกี่ยวกับ "อะไร" และลงลึกในรายละเอียด (ไม่ใช่แค่รถคันใดคันหนึ่ง แต่เป็นยี่ห้อและรุ่นเฉพาะ) และยังอธิบายถึงบรรยากาศโดยรวม 3 เป็นคำสั่งที่ดีรองลงมาเนื่องจากมีคำอธิบายมากเช่นกัน -## 🚀 การท้าทาย +## 🚀 ความท้าทาย -ลองใช้เทคนิค "ตัวชี้นำ" กับคำสั่ง: เติมประโยค "แสดงภาพรถสีแดงยี่ห้อ Volvo และ " ดูว่ามันตอบสนองอย่างไร และคุณจะปรับปรุงคำสั่งนั้นอย่างไร? +ลองใช้เทคนิค "ตัวชี้นำ" กับคำสั่ง: เติมประโยค "แสดงภาพรถสีแดงยี่ห้อ Volvo และ " โมเดลตอบสนองอย่างไร และคุณจะปรับปรุงมันอย่างไร? ## ทำได้ดีมาก! เรียนรู้ต่อไป @@ -399,4 +389,4 @@ _ด้วยเหตุนี้จึงไม่มีส่วน Code Solu --- **ข้อจำกัดความรับผิดชอบ**: -เอกสารนี้ได้รับการแปลโดยใช้บริการแปลภาษา AI [Co-op Translator](https://github.com/Azure/co-op-translator) แม้ว่าเราจะพยายามให้การแปลมีความถูกต้อง แต่โปรดทราบว่าการแปลอัตโนมัติอาจมีข้อผิดพลาดหรือความไม่ถูกต้อง เอกสารต้นฉบับในภาษาดั้งเดิมควรถือเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลที่สำคัญ ขอแนะนำให้ใช้บริการแปลภาษามนุษย์ที่มีความเชี่ยวชาญ เราไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความผิดที่เกิดจากการใช้การแปลนี้ \ No newline at end of file +เอกสารนี้ได้รับการแปลโดยใช้บริการแปลภาษา AI [Co-op Translator](https://github.com/Azure/co-op-translator) แม้ว่าเราจะพยายามให้การแปลมีความถูกต้อง แต่โปรดทราบว่าการแปลอัตโนมัติอาจมีข้อผิดพลาดหรือความไม่ถูกต้อง เอกสารต้นฉบับในภาษาดั้งเดิมควรถือเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลที่สำคัญ ขอแนะนำให้ใช้บริการแปลภาษามืออาชีพ เราจะไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความผิดที่เกิดจากการใช้การแปลนี้ \ No newline at end of file diff --git a/translations/th/05-advanced-prompts/README.md b/translations/th/05-advanced-prompts/README.md index 0cf0f5f2b3..4f00c5219b 100644 --- a/translations/th/05-advanced-prompts/README.md +++ b/translations/th/05-advanced-prompts/README.md @@ -1,212 +1,162 @@ - - -> "สร้างโค้ดสำหรับ Python Web API" -```python -#import necessary libraries -import flask -from flask import request, jsonify - -#create an instance of the Flask class -app = flask.Flask(__name__) - -#create an endpoint for the API -@app.route('/api/v1/endpoint', methods=['GET']) -def api_endpoint(): - #get the request data - data = request.get_json() - - #process the data - result = process_data(data) - - #return the result - return jsonify(result) - -#function to process the data -def process_data(data): - #process the data - result = {'result': 'success'} - - #return the result - return result - -#run the Flask app -if __name__ == '__main__': - app.run() - -``` - -การรัน prompt อีกครั้งให้ผลลัพธ์ดังนี้: - -```python -#import necessary libraries -import flask -from flask import request, jsonify - -#create a Flask app -app = flask.Flask(__name__) - -#create a route for the API -@app.route('/api', methods=['GET']) -def api_call(): - #get the data from the request - data = request.get_json() - - #process the data - result = process_data(data) - - #return the result - return jsonify(result) - -#define the process_data function -def process_data(data): - #do something with the data - result = data + 1 - - #return the result - return result - -#run the app -if __name__ == '__main__': - app.run() - -``` - -ผลลัพธ์ทั้งสองนี้มีความแตกต่างกันเพียงเล็กน้อย คราวนี้ลองทำในทางตรงกันข้าม โดยตั้งค่า temperature เป็น 0.9: - -```python -# Import necessary libraries -import flask -from flask import request, jsonify - -# Create a Flask app -app = flask.Flask(__name__) - -# Create a route for the API -@app.route('/api', methods=['GET']) -def api_call(): - # Get the data from the request - data = request.args - - # Process the data - result = process_data(data) - - # Return the result - return jsonify(result) - -# Function to process the data -def process_data(data): - # Do something with the data - result = data + 1 - - # Return the result - return result - -# Run the app -if __name__ == '__main__': - app.run() - -``` - -และการลองครั้งที่สองโดยใช้ค่า temperature 0.9: - -```python -import flask -from flask import request, jsonify - -# create the Flask app -app = flask.Flask(__name__) -app.config['DEBUG'] = True - -# create some test data -books = [ - {'id': 0, 'title': 'A Fire Upon The Deep', 'author': 'Vernor Vinge', 'first_sentence': 'The coldsleep itself was dreamless.', 'year_published': '1992'}, - {'id': 1, 'title': 'The Ones Who Walk Away From Omelas', 'author': 'Ursula K. Le Guin', 'first_sentence': 'With a clamor of bells that set the swallows soaring, the Festival of Summer came to the city Omelas, bright-towered by the sea.', 'published': '1973'}, - {'id': 2, 'title': 'Dhalgren', 'author': 'Samuel R. Delany', 'first_sentence': 'to wound the autumnal city.', 'published': '1975'} -] - -# create an endpoint -@app.route('/', methods=['GET']) -def home(): - return '''

Welcome to our book API!

''' - -@app.route('/api/v1/resources/books - -``` - -อย่างที่เห็น ผลลัพธ์มีความหลากหลายอย่างมาก - -> Note, that there are more parameters you can change to vary the output, like top-k, top-p, repetition penalty, length penalty and diversity penalty but these are outside the scope of this curriculum. - -## แนวปฏิบัติที่ดี - -มีแนวทางมากมายที่คุณสามารถใช้เพื่อพยายามให้ได้ผลลัพธ์ตามที่ต้องการ คุณจะค้นพบสไตล์ของตัวเองเมื่อใช้ prompting บ่อยขึ้นเรื่อยๆ - -นอกจากเทคนิคที่เราได้กล่าวถึงแล้ว ยังมีแนวปฏิบัติที่ดีบางอย่างที่ควรพิจารณาเมื่อทำ prompting กับ LLM - -นี่คือแนวปฏิบัติที่ดีที่ควรพิจารณา: - -- **ระบุบริบท** บริบทมีความสำคัญ ยิ่งคุณระบุได้มาก เช่น ด้านความรู้ หัวข้อ ฯลฯ ยิ่งดี -- จำกัดผลลัพธ์ หากคุณต้องการจำนวนรายการหรือความยาวที่เจาะจง ให้ระบุไว้ -- **ระบุทั้งสิ่งที่ต้องการและวิธีการ** จำไว้ว่าต้องบอกทั้งสิ่งที่ต้องการและวิธีการ เช่น "สร้าง Python Web API ที่มี routes สำหรับ products และ customers แบ่งเป็น 3 ไฟล์" -- **ใช้เทมเพลต** บ่อยครั้งคุณจะต้องเสริม prompt ด้วยข้อมูลจากบริษัทของคุณ ใช้เทมเพลตเพื่อทำสิ่งนี้ เทมเพลตสามารถมีตัวแปรที่คุณแทนที่ด้วยข้อมูลจริง -- **สะกดให้ถูกต้อง** LLM อาจให้คำตอบที่ถูกต้อง แต่ถ้าคุณสะกดถูกต้อง คุณจะได้คำตอบที่ดียิ่งขึ้น - -## การบ้าน - -นี่คือโค้ด Python ที่แสดงวิธีสร้าง API ง่ายๆ โดยใช้ Flask: - -```python -from flask import Flask, request - -app = Flask(__name__) - -@app.route('/') -def hello(): - name = request.args.get('name', 'World') - return f'Hello, {name}!' - -if __name__ == '__main__': - app.run() -``` - -ใช้ผู้ช่วย AI เช่น GitHub Copilot หรือ ChatGPT และใช้เทคนิค "self-refine" เพื่อปรับปรุงโค้ดนี้ - -## ตัวอย่างคำตอบ - -โปรดลองแก้โจทย์โดยเพิ่ม prompt ที่เหมาะสมลงในโค้ด - -> [!TIP] -> ตั้งคำถามเพื่อขอให้ปรับปรุงโค้ด ควรจำกัดจำนวนการปรับปรุงที่ต้องการ คุณยังสามารถขอให้ปรับปรุงในด้านใดด้านหนึ่ง เช่น สถาปัตยกรรม ประสิทธิภาพ ความปลอดภัย ฯลฯ - -[Solution](../../../05-advanced-prompts/python/aoai-solution.py) - -## ตรวจสอบความเข้าใจ - -ทำไมจึงควรใช้ chain-of-thought prompting? ยกตัวอย่างคำตอบที่ถูกต้อง 1 ข้อ และคำตอบที่ผิด 2 ข้อ - -1. เพื่อสอน LLM วิธีแก้ปัญหา -1. B, เพื่อสอน LLM ให้หาข้อผิดพลาดในโค้ด -1. C, เพื่อสั่งให้ LLM คิดหาวิธีแก้ปัญหาหลายๆ แบบ - -คำตอบ: 1 เพราะ chain-of-thought คือการแสดงให้ LLM เห็นวิธีแก้ปัญหาโดยให้ขั้นตอนต่างๆ และปัญหาที่คล้ายกันพร้อมวิธีแก้ - -## 🚀 ความท้าทาย - -คุณเพิ่งใช้เทคนิค self-refine ในการบ้าน ลองนำโปรแกรมที่คุณเขียนขึ้นมาสักโปรแกรมหนึ่ง แล้วพิจารณาว่าคุณอยากปรับปรุงอะไรบ้าง จากนั้นใช้เทคนิค self-refine เพื่อปรับเปลี่ยนตามที่เสนอ ผลลัพธ์เป็นอย่างไร ดีขึ้นหรือแย่ลง? - -## ทำได้ดีมาก! เรียนรู้ต่อไป - -หลังจากจบบทเรียนนี้แล้ว ลองดู [คอลเลกชันการเรียนรู้ Generative AI](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) เพื่อพัฒนาความรู้ด้าน Generative AI ของคุณต่อไป! - -ไปที่บทเรียนที่ 6 ซึ่งเราจะนำความรู้เรื่อง Prompt Engineering ไปใช้โดยการ [สร้างแอปพลิเคชันสร้างข้อความ](../06-text-generation-apps/README.md?WT.mc_id=academic-105485-koreyst) - -**ข้อจำกัดความรับผิดชอบ**: -เอกสารนี้ได้รับการแปลโดยใช้บริการแปลภาษาอัตโนมัติ [Co-op Translator](https://github.com/Azure/co-op-translator) แม้เราจะพยายามให้ความถูกต้องสูงสุด แต่โปรดทราบว่าการแปลอัตโนมัติอาจมีข้อผิดพลาดหรือความไม่ถูกต้อง เอกสารต้นฉบับในภาษาต้นทางถือเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลที่สำคัญ ขอแนะนำให้ใช้บริการแปลโดยผู้เชี่ยวชาญมนุษย์ เราไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความผิดใด ๆ ที่เกิดจากการใช้การแปลนี้ \ No newline at end of file + +# การสร้างคำสั่งขั้นสูง + +[![การสร้างคำสั่งขั้นสูง](../../../translated_images/05-lesson-banner.522610fd4a2cd82dbed66bb7e6fe104ed6da172e085dbb4d9100b28dc73ed435.th.png)](https://youtu.be/BAjzkaCdRok?si=NmUIyRf7-cDgbjtt) + +มาทบทวนสิ่งที่เราเรียนรู้จากบทก่อนหน้านี้: + +> การ _ออกแบบคำสั่ง_ คือกระบวนการที่เรา **นำทางโมเดลไปสู่การตอบสนองที่เกี่ยวข้องมากขึ้น** โดยการให้คำแนะนำหรือบริบทที่มีประโยชน์มากขึ้น + +การเขียนคำสั่งมีสองขั้นตอน: การสร้างคำสั่งโดยการให้บริบทที่เกี่ยวข้อง และ _การปรับปรุง_ ซึ่งเป็นการปรับคำสั่งให้ดีขึ้นเรื่อยๆ + +ณ จุดนี้ เรามีความเข้าใจพื้นฐานเกี่ยวกับการเขียนคำสั่ง แต่เราต้องเจาะลึกลงไปอีก ในบทนี้ คุณจะได้เรียนรู้วิธีการสร้างคำสั่งโดยใช้เทคนิคพื้นฐานที่สามารถนำไปใช้กับ LLM ใดๆ ได้ + +## บทนำ + +ในบทนี้ เราจะครอบคลุมหัวข้อดังต่อไปนี้: + +- ขยายความรู้เกี่ยวกับการออกแบบคำสั่งโดยการใช้เทคนิคต่างๆ กับคำสั่งของคุณ +- การปรับแต่งคำสั่งเพื่อให้ผลลัพธ์แตกต่างกัน + +## เป้าหมายการเรียนรู้ + +หลังจากจบบทเรียนนี้ คุณจะสามารถ: + +- ใช้เทคนิคการออกแบบคำสั่งที่ช่วยปรับปรุงผลลัพธ์ของคำสั่ง +- ดำเนินการเขียนคำสั่งที่มีความหลากหลายหรือมีความแน่นอน + +## การออกแบบคำสั่ง + +การออกแบบคำสั่งคือกระบวนการสร้างคำสั่งที่ให้ผลลัพธ์ตามที่ต้องการ การออกแบบคำสั่งไม่ได้เป็นเพียงการเขียนข้อความคำสั่งเท่านั้น แต่เป็นชุดของเทคนิคที่คุณสามารถนำไปใช้เพื่อให้ได้ผลลัพธ์ตามที่ต้องการ + +### ตัวอย่างของคำสั่ง + +ลองดูตัวอย่างคำสั่งพื้นฐานนี้: + +> สร้างคำถามเกี่ยวกับภูมิศาสตร์ 10 ข้อ + +ในคำสั่งนี้ คุณกำลังใช้ชุดเทคนิคการออกแบบคำสั่งที่แตกต่างกัน + +มาดูรายละเอียดกัน: + +- **บริบท** คุณระบุว่าควรเกี่ยวกับ "ภูมิศาสตร์" +- **จำกัดผลลัพธ์** คุณต้องการคำถามไม่เกิน 10 ข้อ + +### ข้อจำกัดของการเขียนคำสั่งแบบง่าย + +คุณอาจจะได้ผลลัพธ์ที่ต้องการหรือไม่ก็ได้ คุณอาจได้คำถามที่สร้างขึ้นมา แต่เนื่องจากภูมิศาสตร์เป็นหัวข้อที่กว้าง คุณอาจไม่ได้สิ่งที่คุณต้องการเนื่องจากเหตุผลดังต่อไปนี้: + +- **หัวข้อกว้าง** คุณไม่รู้ว่ามันจะเกี่ยวกับประเทศ เมืองหลวง แม่น้ำ หรืออื่นๆ +- **รูปแบบ** ถ้าคุณต้องการให้คำถามมีรูปแบบเฉพาะล่ะ? + +ดังที่คุณเห็น มีหลายสิ่งที่ต้องพิจารณาเมื่อสร้างคำสั่ง + +จนถึงตอนนี้ เราได้เห็นตัวอย่างคำสั่งง่ายๆ แต่ AI เชิงสร้างสรรค์สามารถทำอะไรได้มากกว่านั้นเพื่อช่วยเหลือผู้คนในหลากหลายบทบาทและอุตสาหกรรม ลองสำรวจเทคนิคพื้นฐานบางอย่างต่อไป + +### เทคนิคการเขียนคำสั่ง + +ก่อนอื่น เราต้องเข้าใจว่าการเขียนคำสั่งเป็นคุณสมบัติ _ที่เกิดขึ้นเอง_ ของ LLM หมายความว่านี่ไม่ใช่ฟีเจอร์ที่ถูกสร้างขึ้นในโมเดล แต่เป็นสิ่งที่เราค้นพบเมื่อเราใช้โมเดล + +มีเทคนิคพื้นฐานบางอย่างที่เราสามารถใช้เพื่อเขียนคำสั่งใน LLM ลองสำรวจกัน: + +- **Zero-shot prompting** นี่คือรูปแบบการเขียนคำสั่งที่ง่ายที่สุด เป็นคำสั่งเดียวที่ขอการตอบสนองจาก LLM โดยอิงจากข้อมูลการฝึกอบรมเท่านั้น +- **Few-shot prompting** การเขียนคำสั่งประเภทนี้ช่วยนำทาง LLM โดยการให้ตัวอย่าง 1 หรือมากกว่าที่สามารถใช้เป็นแนวทางในการสร้างคำตอบ +- **Chain-of-thought** การเขียนคำสั่งประเภทนี้บอก LLM ว่าจะแบ่งปัญหาออกเป็นขั้นตอนอย่างไร +- **Generated knowledge** เพื่อปรับปรุงการตอบสนองของคำสั่ง คุณสามารถให้ข้อเท็จจริงหรือความรู้เพิ่มเติมในคำสั่งของคุณ +- **Least to most** คล้ายกับ chain-of-thought เทคนิคนี้เกี่ยวกับการแบ่งปัญหาออกเป็นชุดของขั้นตอนและขอให้ดำเนินการตามลำดับ +- **Self-refine** เทคนิคนี้เกี่ยวกับการวิจารณ์ผลลัพธ์ของ LLM และขอให้ปรับปรุง +- **Maieutic prompting** สิ่งที่คุณต้องการคือการทำให้แน่ใจว่าคำตอบของ LLM ถูกต้อง และคุณขอให้มันอธิบายส่วนต่างๆ ของคำตอบ นี่เป็นรูปแบบหนึ่งของ self-refine + +### Zero-shot prompting + +รูปแบบการเขียนคำสั่งนี้ง่ายมาก ประกอบด้วยคำสั่งเดียว เทคนิคนี้อาจเป็นสิ่งที่คุณใช้เมื่อเริ่มเรียนรู้เกี่ยวกับ LLM นี่คือตัวอย่าง: + +- คำสั่ง: "Algebra คืออะไร?" +- คำตอบ: "Algebra เป็นสาขาของคณิตศาสตร์ที่ศึกษาสัญลักษณ์ทางคณิตศาสตร์และกฎสำหรับการจัดการสัญลักษณ์เหล่านี้" + +### Few-shot prompting + +รูปแบบการเขียนคำสั่งนี้ช่วยโมเดลโดยการให้ตัวอย่างบางส่วนพร้อมกับคำขอ ประกอบด้วยคำสั่งเดียวพร้อมข้อมูลเฉพาะงานเพิ่มเติม นี่คือตัวอย่าง: + +- คำสั่ง: "เขียนบทกวีในสไตล์ของ Shakespeare นี่คือตัวอย่างของ sonnet ของ Shakespeare: + Sonnet 18: 'Shall I compare thee to a summer's day? Thou art more lovely and more temperate...' + Sonnet 116: 'Let me not to the marriage of true minds Admit +ตามที่เห็น ผลลัพธ์มีความหลากหลายอย่างมาก + +> โปรดทราบว่ายังมีพารามิเตอร์อื่นๆ ที่คุณสามารถปรับเปลี่ยนเพื่อให้ผลลัพธ์แตกต่างกัน เช่น top-k, top-p, repetition penalty, length penalty และ diversity penalty แต่สิ่งเหล่านี้อยู่นอกเหนือขอบเขตของหลักสูตรนี้ + +## แนวทางปฏิบัติที่ดี + +มีหลายวิธีที่คุณสามารถนำไปใช้เพื่อให้ได้ผลลัพธ์ตามที่ต้องการ คุณจะค้นพบสไตล์ของตัวเองเมื่อคุณใช้การตั้งคำถามมากขึ้นเรื่อยๆ + +นอกเหนือจากเทคนิคที่เราได้กล่าวถึงแล้ว ยังมีแนวทางปฏิบัติที่ดีบางประการที่ควรพิจารณาเมื่อใช้การตั้งคำถามกับ LLM + +นี่คือแนวทางปฏิบัติที่ดีที่ควรพิจารณา: + +- **ระบุบริบท** บริบทมีความสำคัญ ยิ่งคุณสามารถระบุได้มาก เช่น โดเมน หัวข้อ ฯลฯ ก็จะยิ่งดีขึ้น +- จำกัดผลลัพธ์ หากคุณต้องการจำนวนรายการที่เฉพาะเจาะจงหรือความยาวที่เฉพาะเจาะจง ให้ระบุไว้ +- **ระบุทั้งสิ่งที่ต้องการและวิธีการ** อย่าลืมระบุทั้งสิ่งที่คุณต้องการและวิธีการที่คุณต้องการ เช่น "สร้าง Python Web API ที่มี routes สำหรับ products และ customers แบ่งออกเป็น 3 ไฟล์" +- **ใช้เทมเพลต** บ่อยครั้ง คุณอาจต้องการเพิ่มข้อมูลจากบริษัทของคุณลงในคำถาม ใช้เทมเพลตเพื่อทำสิ่งนี้ เทมเพลตสามารถมีตัวแปรที่คุณแทนที่ด้วยข้อมูลจริง +- **สะกดคำให้ถูกต้อง** LLM อาจให้คำตอบที่ถูกต้องแก่คุณ แต่ถ้าคุณสะกดคำถูกต้อง คุณจะได้รับคำตอบที่ดียิ่งขึ้น + +## งานที่ได้รับมอบหมาย + +นี่คือโค้ดใน Python ที่แสดงวิธีสร้าง API แบบง่ายๆ โดยใช้ Flask: + +```python +from flask import Flask, request + +app = Flask(__name__) + +@app.route('/') +def hello(): + name = request.args.get('name', 'World') + return f'Hello, {name}!' + +if __name__ == '__main__': + app.run() +``` + +ใช้ผู้ช่วย AI เช่น GitHub Copilot หรือ ChatGPT และใช้เทคนิค "self-refine" เพื่อปรับปรุงโค้ด + +## วิธีแก้ไข + +โปรดลองแก้ไขงานโดยเพิ่มคำถามที่เหมาะสมลงในโค้ด + +> [!TIP] +> ตั้งคำถามเพื่อขอให้ปรับปรุง เป็นความคิดที่ดีที่จะจำกัดจำนวนการปรับปรุง คุณยังสามารถขอให้ปรับปรุงในลักษณะเฉพาะ เช่น สถาปัตยกรรม ประสิทธิภาพ ความปลอดภัย ฯลฯ + +[วิธีแก้ไข](../../../05-advanced-prompts/python/aoai-solution.py) + +## การตรวจสอบความรู้ + +ทำไมฉันถึงใช้ chain-of-thought prompting? แสดงคำตอบที่ถูกต้อง 1 ข้อ และคำตอบที่ไม่ถูกต้อง 2 ข้อ + +1. เพื่อสอน LLM วิธีแก้ปัญหา +1. B, เพื่อสอน LLM ให้ค้นหาข้อผิดพลาดในโค้ด +1. C, เพื่อสั่งให้ LLM คิดวิธีแก้ปัญหาที่แตกต่างกัน + +A: 1, เพราะ chain-of-thought เกี่ยวกับการแสดงให้ LLM เห็นวิธีแก้ปัญหาโดยการให้ขั้นตอนต่างๆ และปัญหาที่คล้ายกันพร้อมวิธีแก้ไข + +## 🚀 ความท้าทาย + +คุณเพิ่งใช้เทคนิค self-refine ในงานที่ได้รับมอบหมาย ลองนำโปรแกรมใดๆ ที่คุณสร้างขึ้นมาพิจารณาว่าคุณต้องการปรับปรุงอะไรบ้าง จากนั้นใช้เทคนิค self-refine เพื่อปรับปรุงตามที่เสนอ คุณคิดว่าผลลัพธ์ดีขึ้นหรือแย่ลง? + +## ทำได้ดีมาก! เรียนรู้ต่อไป + +หลังจากจบบทเรียนนี้ ลองดู [Generative AI Learning collection](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) เพื่อเพิ่มพูนความรู้เกี่ยวกับ Generative AI ของคุณ! + +ไปที่บทเรียนที่ 6 ซึ่งเราจะนำความรู้เกี่ยวกับ Prompt Engineering ไปใช้โดย [สร้างแอปพลิเคชันการสร้างข้อความ](../06-text-generation-apps/README.md?WT.mc_id=academic-105485-koreyst) + +--- + +**ข้อจำกัดความรับผิดชอบ**: +เอกสารนี้ได้รับการแปลโดยใช้บริการแปลภาษา AI [Co-op Translator](https://github.com/Azure/co-op-translator) แม้ว่าเราจะพยายามให้การแปลมีความถูกต้อง แต่โปรดทราบว่าการแปลอัตโนมัติอาจมีข้อผิดพลาดหรือความไม่ถูกต้อง เอกสารต้นฉบับในภาษาดั้งเดิมควรถือเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลที่สำคัญ ขอแนะนำให้ใช้บริการแปลภาษามืออาชีพ เราไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความผิดที่เกิดจากการใช้การแปลนี้ \ No newline at end of file diff --git a/translations/th/06-text-generation-apps/README.md b/translations/th/06-text-generation-apps/README.md index 484273ce6a..f1cf539f42 100644 --- a/translations/th/06-text-generation-apps/README.md +++ b/translations/th/06-text-generation-apps/README.md @@ -1,667 +1,668 @@ - -# การสร้างแอปพลิเคชันสร้างข้อความ - -[![Building Text Generation Applications](../../../translated_images/06-lesson-banner.a5c629f990a636c852353c5533f1a6a218ece579005e91f96339d508d9cf8f47.th.png)](https://aka.ms/gen-ai-lesson6-gh?WT.mc_id=academic-105485-koreyst) - -> _(คลิกที่ภาพด้านบนเพื่อดูวิดีโอของบทเรียนนี้)_ - -จนถึงตอนนี้คุณได้เห็นผ่านหลักสูตรนี้ว่ามีแนวคิดหลักอย่าง prompts และแม้แต่สาขาวิชาหนึ่งที่เรียกว่า "prompt engineering" เครื่องมือต่างๆ ที่คุณสามารถโต้ตอบด้วย เช่น ChatGPT, Office 365, Microsoft Power Platform และอื่นๆ รองรับการใช้ prompts เพื่อทำสิ่งต่างๆ ให้สำเร็จ - -ถ้าคุณต้องการเพิ่มประสบการณ์แบบนี้ลงในแอป คุณจำเป็นต้องเข้าใจแนวคิดอย่าง prompts, completions และเลือกไลบรารีที่จะใช้ นั่นคือสิ่งที่คุณจะได้เรียนรู้ในบทนี้ - -## บทนำ - -ในบทนี้ คุณจะได้: - -- เรียนรู้เกี่ยวกับไลบรารี openai และแนวคิดหลักของมัน -- สร้างแอปพลิเคชันสร้างข้อความโดยใช้ openai -- เข้าใจวิธีใช้แนวคิดอย่าง prompt, temperature และ tokens เพื่อสร้างแอปพลิเคชันสร้างข้อความ - -## เป้าหมายการเรียนรู้ - -เมื่อจบบทเรียนนี้ คุณจะสามารถ: - -- อธิบายว่าแอปพลิเคชันสร้างข้อความคืออะไร -- สร้างแอปพลิเคชันสร้างข้อความโดยใช้ openai -- กำหนดค่าแอปของคุณให้ใช้ tokens มากหรือน้อยลง และเปลี่ยนค่า temperature เพื่อให้ได้ผลลัพธ์ที่หลากหลาย - -## แอปพลิเคชันสร้างข้อความคืออะไร? - -โดยปกติเมื่อคุณสร้างแอป มันจะมีอินเทอร์เฟซบางอย่าง เช่น: - -- แบบคำสั่ง (Command-based) แอปคอนโซลเป็นแอปทั่วไปที่คุณพิมพ์คำสั่งแล้วมันจะทำงานตามคำสั่งนั้น เช่น `git` เป็นแอปแบบคำสั่ง -- อินเทอร์เฟซผู้ใช้ (UI) บางแอปมีอินเทอร์เฟซแบบกราฟิก (GUI) ที่คุณคลิกปุ่ม, ป้อนข้อความ, เลือกตัวเลือก และอื่นๆ - -### แอปคอนโซลและ UI มีข้อจำกัด - -เปรียบเทียบกับแอปแบบคำสั่งที่คุณพิมพ์คำสั่ง: - -- **มีข้อจำกัด** คุณไม่สามารถพิมพ์คำสั่งอะไรก็ได้ มีแค่คำสั่งที่แอปรองรับเท่านั้น -- **จำกัดภาษา** บางแอปรองรับหลายภาษา แต่โดยปกติแอปจะถูกสร้างมาเพื่อภาษาหนึ่งโดยเฉพาะ แม้ว่าคุณจะเพิ่มการรองรับภาษาอื่นได้ - -### ข้อดีของแอปพลิเคชันสร้างข้อความ - -แล้วแอปสร้างข้อความแตกต่างอย่างไร? - -ในแอปสร้างข้อความ คุณมีความยืดหยุ่นมากขึ้น ไม่จำกัดแค่ชุดคำสั่งหรือภาษาป้อนข้อมูลเฉพาะ คุณสามารถใช้ภาษาธรรมชาติเพื่อโต้ตอบกับแอป อีกข้อดีคือคุณกำลังโต้ตอบกับแหล่งข้อมูลที่ได้รับการฝึกฝนจากข้อมูลจำนวนมาก ในขณะที่แอปแบบดั้งเดิมอาจจำกัดแค่ข้อมูลในฐานข้อมูล - -### ฉันสามารถสร้างอะไรได้บ้างกับแอปสร้างข้อความ? - -มีหลายอย่างที่คุณสามารถสร้างได้ เช่น: - -- **แชทบอท** แชทบอทที่ตอบคำถามเกี่ยวกับหัวข้อต่างๆ เช่น บริษัทของคุณและผลิตภัณฑ์ อาจเป็นตัวเลือกที่ดี -- **ผู้ช่วย** LLMs เก่งในการสรุปข้อความ, ดึงข้อมูลเชิงลึกจากข้อความ, สร้างข้อความเช่นเรซูเม่ และอื่นๆ -- **ผู้ช่วยเขียนโค้ด** ขึ้นอยู่กับโมเดลภาษาที่คุณใช้ คุณสามารถสร้างผู้ช่วยเขียนโค้ดที่ช่วยเขียนโค้ดได้ เช่น ใช้ GitHub Copilot หรือ ChatGPT เพื่อช่วยเขียนโค้ด - -## ฉันจะเริ่มต้นอย่างไร? - -คุณต้องหาวิธีเชื่อมต่อกับ LLM ซึ่งโดยทั่วไปมีสองวิธีดังนี้: - -- ใช้ API คุณจะสร้างคำขอเว็บด้วย prompt ของคุณและรับข้อความที่สร้างกลับมา -- ใช้ไลบรารี ไลบรารีช่วยห่อหุ้มการเรียก API และทำให้ง่ายต่อการใช้งาน - -## ไลบรารี/SDKs - -มีไลบรารีที่รู้จักกันดีสำหรับทำงานกับ LLMs เช่น: - -- **openai** ไลบรารีนี้ช่วยให้เชื่อมต่อกับโมเดลของคุณและส่ง prompt ได้ง่าย - -นอกจากนี้ยังมีไลบรารีที่ทำงานในระดับสูงกว่า เช่น: - -- **Langchain** Langchain เป็นที่รู้จักและรองรับ Python -- **Semantic Kernel** Semantic Kernel เป็นไลบรารีของ Microsoft ที่รองรับภาษา C#, Python และ Java - -## แอปแรกโดยใช้ openai - -มาดูกันว่าเราจะสร้างแอปแรกอย่างไร ไลบรารีที่ต้องใช้มีอะไรบ้าง และต้องเตรียมอะไรบ้าง - -### ติดตั้ง openai - -มีไลบรารีมากมายสำหรับโต้ตอบกับ OpenAI หรือ Azure OpenAI คุณสามารถใช้หลายภาษาโปรแกรม เช่น C#, Python, JavaScript, Java และอื่นๆ เราเลือกใช้ไลบรารี `openai` ของ Python ดังนั้นเราจะใช้ `pip` ในการติดตั้ง - -```bash -pip install openai -``` - -### สร้าง resource - -คุณต้องทำตามขั้นตอนดังนี้: - -- สร้างบัญชีบน Azure [https://azure.microsoft.com/free/](https://azure.microsoft.com/free/?WT.mc_id=academic-105485-koreyst) -- ขอสิทธิ์เข้าถึง Azure OpenAI ไปที่ [https://learn.microsoft.com/azure/ai-services/openai/overview#how-do-i-get-access-to-azure-openai](https://learn.microsoft.com/azure/ai-services/openai/overview#how-do-i-get-access-to-azure-openai?WT.mc_id=academic-105485-koreyst) และขอสิทธิ์เข้าถึง - - > [!NOTE] - > ณ เวลาที่เขียน คุณต้องสมัครขอสิทธิ์เข้าถึง Azure OpenAI - -- ติดตั้ง Python -- สร้าง Azure OpenAI Service resource ดูคำแนะนำวิธี [สร้าง resource](https://learn.microsoft.com/azure/ai-services/openai/how-to/create-resource?pivots=web-portal?WT.mc_id=academic-105485-koreyst) - -### หาคีย์ API และ endpoint - -ตอนนี้คุณต้องบอกไลบรารี `openai` ว่าจะใช้คีย์ API อะไร ในการหาคีย์ API ให้ไปที่ส่วน "Keys and Endpoint" ของ Azure OpenAI resource ของคุณและคัดลอกค่าของ "Key 1" - -![Keys and Endpoint resource blade in Azure Portal](https://learn.microsoft.com/azure/ai-services/openai/media/quickstarts/endpoint.png?WT.mc_id=academic-105485-koreyst) - -เมื่อคุณคัดลอกข้อมูลนี้แล้ว ให้สั่งไลบรารีใช้ข้อมูลนี้ - -> [!NOTE] -> ควรแยกคีย์ API ออกจากโค้ดของคุณ คุณสามารถทำได้โดยใช้ environment variables -> -> - ตั้ง environment variable `OPENAI_API_KEY` เป็นคีย์ API ของคุณ -> `export OPENAI_API_KEY='sk-...'` - -### ตั้งค่าการกำหนดค่า Azure - -ถ้าคุณใช้ Azure OpenAI นี่คือวิธีตั้งค่าการกำหนดค่า: - -```python -openai.api_type = 'azure' -openai.api_key = os.environ["OPENAI_API_KEY"] -openai.api_version = '2023-05-15' -openai.api_base = os.getenv("API_BASE") -``` - -ข้างบนนี้เรากำหนดค่า: - -- `api_type` เป็น `azure` บอกไลบรารีให้ใช้ Azure OpenAI ไม่ใช่ OpenAI ปกติ -- `api_key` คือคีย์ API ที่คุณหาได้จาก Azure Portal -- `api_version` คือเวอร์ชันของ API ที่คุณต้องการใช้ ณ เวลาที่เขียน เวอร์ชันล่าสุดคือ `2023-05-15` -- `api_base` คือ endpoint ของ API คุณสามารถหาได้จาก Azure Portal ข้างๆ คีย์ API ของคุณ - -> [!NOTE] > `os.getenv` เป็นฟังก์ชันที่อ่าน environment variables คุณสามารถใช้มันเพื่ออ่าน environment variables เช่น `OPENAI_API_KEY` และ `API_BASE` ตั้ง environment variables เหล่านี้ในเทอร์มินัลของคุณหรือใช้ไลบรารีอย่าง `dotenv` - -## การสร้างข้อความ - -วิธีสร้างข้อความคือใช้คลาส `Completion` ตัวอย่างเช่น: - -```python -prompt = "Complete the following: Once upon a time there was a" - -completion = openai.Completion.create(model="davinci-002", prompt=prompt) -print(completion.choices[0].text) -``` - -ในโค้ดข้างบน เราสร้างอ็อบเจ็กต์ completion และส่งโมเดลที่ต้องการใช้กับ prompt จากนั้นพิมพ์ข้อความที่สร้างขึ้น - -### การสร้างข้อความแบบแชท - -จนถึงตอนนี้ คุณเห็นว่าเราใช้ `Completion` เพื่อสร้างข้อความ แต่ยังมีคลาสอีกตัวชื่อ `ChatCompletion` ที่เหมาะกับแชทบอทมากกว่า ตัวอย่างการใช้งาน: - -```python -import openai - -openai.api_key = "sk-..." - -completion = openai.ChatCompletion.create(model="gpt-3.5-turbo", messages=[{"role": "user", "content": "Hello world"}]) -print(completion.choices[0].message.content) -``` - -จะมีรายละเอียดเพิ่มเติมในบทถัดไป - -## แบบฝึกหัด - แอปสร้างข้อความแรกของคุณ - -ตอนนี้ที่เราเรียนรู้วิธีตั้งค่าและกำหนดค่า openai แล้ว ถึงเวลาสร้างแอปสร้างข้อความแรกของคุณ ทำตามขั้นตอนนี้: - -1. สร้าง virtual environment และติดตั้ง openai: - - ```bash - python -m venv venv - source venv/bin/activate - pip install openai - ``` - - > [!NOTE] - > ถ้าคุณใช้ Windows ให้พิมพ์ `venv\Scripts\activate` แทน `source venv/bin/activate` - - > [!NOTE] - > หาคีย์ Azure OpenAI ของคุณโดยไปที่ [https://portal.azure.com/](https://portal.azure.com/?WT.mc_id=academic-105485-koreyst) ค้นหา `Open AI` เลือก `Open AI resource` แล้วเลือก `Keys and Endpoint` คัดลอกค่าของ `Key 1` - -1. สร้างไฟล์ _app.py_ และใส่โค้ดดังนี้: - - ```python - import openai - - openai.api_key = "" - - openai.api_type = 'azure' - openai.api_version = '2023-05-15' - openai.api_base = "" - deployment_name = "" - - # add your completion code - prompt = "Complete the following: Once upon a time there was a" - messages = [{"role": "user", "content": prompt}] - - # make completion - completion = openai.chat.completions.create(model=deployment_name, messages=messages) - - # print response - print(completion.choices[0].message.content) - ``` - - > [!NOTE] - > ถ้าคุณใช้ Azure OpenAI ต้องตั้งค่า `api_type` เป็น `azure` และตั้ง `api_key` เป็นคีย์ Azure OpenAI ของคุณ - - คุณควรเห็นผลลัพธ์ประมาณนี้: - - ```output - very unhappy _____. - - Once upon a time there was a very unhappy mermaid. - ``` - -## ประเภทของ prompt ที่แตกต่างกัน สำหรับงานที่แตกต่างกัน - -ตอนนี้คุณเห็นวิธีสร้างข้อความโดยใช้ prompt แล้ว คุณมีโปรแกรมที่ทำงานได้และสามารถแก้ไขเพื่อสร้างข้อความประเภทต่างๆ ได้ - -prompt สามารถใช้กับงานหลากหลาย เช่น: - -- **สร้างข้อความประเภทหนึ่ง** เช่น สร้างบทกวี, คำถามสำหรับแบบทดสอบ ฯลฯ -- **ค้นหาข้อมูล** คุณสามารถใช้ prompt เพื่อค้นหาข้อมูล เช่น ตัวอย่าง 'CORS หมายถึงอะไรในการพัฒนาเว็บ?' -- **สร้างโค้ด** คุณสามารถใช้ prompt เพื่อสร้างโค้ด เช่น สร้าง regular expression สำหรับตรวจสอบอีเมล หรือแม้แต่สร้างโปรแกรมทั้งโปรแกรม เช่น เว็บแอป - -## กรณีใช้งานที่เป็นประโยชน์มากขึ้น: ตัวสร้างสูตรอาหาร - -ลองนึกภาพว่าคุณมีวัตถุดิบที่บ้านและต้องการทำอาหาร สำหรับนั้นคุณต้องการสูตรอาหาร วิธีหนึ่งในการหาสูตรคือใช้เครื่องมือค้นหา หรือคุณอาจใช้ LLM เพื่อช่วย - -คุณอาจเขียน prompt แบบนี้: - -> "แสดงสูตรอาหาร 5 สูตรที่ใช้วัตถุดิบดังนี้: ไก่, มันฝรั่ง และแครอท ในแต่ละสูตรให้ระบุวัตถุดิบทั้งหมดที่ใช้" - -จาก prompt ข้างต้น คุณอาจได้รับคำตอบประมาณนี้: - -```output -1. Roasted Chicken and Vegetables: -Ingredients: -- 4 chicken thighs -- 2 potatoes, cut into cubes -- 2 carrots, cut into cubes -- 2 tablespoons olive oil -- 2 cloves garlic, minced -- 1 teaspoon dried thyme -- 1 teaspoon dried oregano -- Salt and pepper, to taste - -2. Chicken and Potato Stew: -Ingredients: -- 2 tablespoons olive oil -- 1 onion, diced -- 2 cloves garlic, minced -- 2 chicken breasts, cut into cubes -- 2 potatoes, cut into cubes -- 2 carrots, cut into cubes -- 1 teaspoon dried oregano -- 1 teaspoon dried thyme -- 1 cup chicken broth -- Salt and pepper, to taste - -3. Chicken and Potato Bake: -Ingredients: -- 2 tablespoons olive oil -- 2 chicken breasts, cut into cubes -- 2 potatoes, cut into cubes -- 2 carrots, cut into cubes -- 1 onion, diced -- 2 cloves garlic, minced -- 1 teaspoon dried oregano -- 1 teaspoon dried thyme -- 1 cup chicken broth -- Salt and pepper, to taste - -4. Chicken and Potato Soup: -Ingredients: -- 2 tablespoons olive oil -- 1 onion, diced -- 2 cloves garlic, minced -- 2 chicken breasts, cut into cubes -- 2 potatoes, cut into cubes -- 2 carrots, cut into cubes -- 1 teaspoon dried oregano -- 1 teaspoon dried thyme -- 4 cups chicken broth -- Salt and pepper, to taste - -5. Chicken and Potato Hash: -Ingredients: -- 2 tablespoons olive oil -- 2 chicken breasts, cut into cubes -- 2 potatoes, cut into cubes -- 2 carrots, cut into cubes -- 1 onion, diced -- 2 cloves garlic, minced -- 1 teaspoon dried oregano -``` - -ผลลัพธ์นี้ดีมาก ฉันรู้ว่าจะทำอะไร ตอนนี้สิ่งที่อาจช่วยได้คือ: - -- กรองวัตถุดิบที่ฉันไม่ชอบหรือแพ้ -- สร้างรายการซื้อของ เผื่อฉันไม่มีวัตถุดิบครบที่บ้าน - -สำหรับกรณีข้างต้น ให้เพิ่ม prompt อีกอัน: - -> "กรุณาลบสูตรที่มีส่วนผสมของกระเทียมเพราะฉันแพ้ และแทนที่ด้วยอย่างอื่นด้วย นอกจากนี้กรุณาสร้างรายการซื้อของสำหรับสูตรอาหาร โดยพิจารณาว่าฉันมีไก่, มันฝรั่ง และแครอทอยู่แล้วที่บ้าน" - -ตอนนี้คุณจะได้ผลลัพธ์ใหม่ คือ: - -```output -1. Roasted Chicken and Vegetables: -Ingredients: -- 4 chicken thighs -- 2 potatoes, cut into cubes -- 2 carrots, cut into cubes -- 2 tablespoons olive oil -- 1 teaspoon dried thyme -- 1 teaspoon dried oregano -- Salt and pepper, to taste - -2. Chicken and Potato Stew: -Ingredients: -- 2 tablespoons olive oil -- 1 onion, diced -- 2 chicken breasts, cut into cubes -- 2 potatoes, cut into cubes -- 2 carrots, cut into cubes -- 1 teaspoon dried oregano -- 1 teaspoon dried thyme -- 1 cup chicken broth -- Salt and pepper, to taste - -3. Chicken and Potato Bake: -Ingredients: -- 2 tablespoons olive oil -- 2 chicken breasts, cut into cubes -- 2 potatoes, cut into cubes -- 2 carrots, cut into cubes -- 1 onion, diced -- 1 teaspoon dried oregano -- 1 teaspoon dried thyme -- 1 cup chicken broth -- Salt and pepper, to taste - -4. Chicken and Potato Soup: -Ingredients: -- 2 tablespoons olive oil -- 1 onion, diced -- 2 chicken breasts, cut into cubes -- 2 potatoes, cut into cubes -- 2 carrots, cut into cubes -- 1 teaspoon dried oregano -- 1 teaspoon dried thyme -- 4 cups chicken broth -- Salt and pepper, to taste - -5. Chicken and Potato Hash: -Ingredients: -- 2 tablespoons olive oil -- 2 chicken breasts, cut into cubes -- 2 potatoes, cut into cubes -- 2 carrots, cut into cubes -- 1 onion, diced -- 1 teaspoon dried oregano - -Shopping List: -- Olive oil -- Onion -- Thyme -- Oregano -- Salt -- Pepper -``` - -นี่คือสูตรอาหาร 5 สูตรที่ไม่มีการกล่าวถึงกระเทียม และคุณยังได้รายการซื้อของโดยพิจารณาจากวัตถุดิบที่มีอยู่ที่บ้านแล้ว - -## แบบฝึกหัด - สร้างตัวสร้างสูตรอาหาร - -ตอนนี้ที่เราได้ลองสถานการณ์แล้ว มาลองเขียนโค้ดให้ตรงกับสถานการณ์ที่แสดงไว้ ทำตามขั้นตอนนี้: - -1. ใช้ไฟล์ _app.py_ ที่มีอยู่เป็นจุดเริ่มต้น -1. หา `prompt` ตัวแปรและเปลี่ยนโค้ดเป็นดังนี้: - - ```python - prompt = "Show me 5 recipes for a dish with the following ingredients: chicken, potatoes, and carrots. Per recipe, list all the ingredients used" - ``` - - ถ้าคุณรันโค้ดตอนนี้ คุณควรเห็นผลลัพธ์ประมาณนี้: - - ```output - -Chicken Stew with Potatoes and Carrots: 3 tablespoons oil, 1 onion, chopped, 2 cloves garlic, minced, 1 carrot, peeled and chopped, 1 potato, peeled and chopped, 1 bay leaf, 1 thyme sprig, 1/2 teaspoon salt, 1/4 teaspoon black pepper, 1 1/2 cups chicken broth, 1/2 cup dry white wine, 2 tablespoons chopped fresh parsley, 2 tablespoons unsalted butter, 1 1/2 pounds boneless, skinless chicken thighs, cut into 1-inch pieces - -Oven-Roasted Chicken with Potatoes and Carrots: 3 tablespoons extra-virgin olive oil, 1 tablespoon Dijon mustard, 1 tablespoon chopped fresh rosemary, 1 tablespoon chopped fresh thyme, 4 cloves garlic, minced, 1 1/2 pounds small red potatoes, quartered, 1 1/2 pounds carrots, quartered lengthwise, 1/2 teaspoon salt, 1/4 teaspoon black pepper, 1 (4-pound) whole chicken - -Chicken, Potato, and Carrot Casserole: cooking spray, 1 large onion, chopped, 2 cloves garlic, minced, 1 carrot, peeled and shredded, 1 potato, peeled and shredded, 1/2 teaspoon dried thyme leaves, 1/4 teaspoon salt, 1/4 teaspoon black pepper, 2 cups fat-free, low-sodium chicken broth, 1 cup frozen peas, 1/4 cup all-purpose flour, 1 cup 2% reduced-fat milk, 1/4 cup grated Parmesan cheese - - -One Pot Chicken and Potato Dinner: 2 tablespoons olive oil, 1 pound boneless, skinless chicken thighs, cut into 1-inch pieces, 1 large onion, chopped, 3 cloves garlic, minced, 1 carrot, peeled and chopped, 1 potato, peeled and chopped, 1 bay leaf, 1 thyme sprig, 1/2 teaspoon salt, 1/4 teaspoon black pepper, 2 cups chicken broth, 1/2 cup dry white wine - - -Chicken, Potato, and Carrot Curry: 1 tablespoon vegetable oil, 1 large onion, chopped, 2 cloves garlic, minced, 1 carrot, peeled and chopped, 1 potato, peeled and chopped, 1 teaspoon ground coriander, 1 teaspoon ground cumin, 1/2 teaspoon ground turmeric, 1/2 teaspoon ground ginger, 1/4 teaspoon cayenne pepper, 2 cups chicken broth, 1/2 cup dry white wine, 1 (15-ounce) can chickpeas, drained and rinsed, 1/2 cup raisins, 1/2 cup chopped fresh cilantro - ``` - - > NOTE, LLM ของคุณไม่ใช่แบบกำหนดผลลัพธ์ตายตัว ดังนั้นคุณอาจได้ผลลัพธ์ที่แตกต่างกันทุกครั้งที่รันโปรแกรม - -ดีมาก มาดูกันว่าจะปรับปรุงอย่างไร เพื่อให้โค้ดยืดหยุ่นขึ้น เพื่อให้จำนวนสูตรอาหารและวัตถุดิบสามารถปรับเปลี่ยนได้ - -1. เปลี่ยนโค้ดดังนี้: - - ```python - no_recipes = input("No of recipes (for example, 5): ") - - ingredients = input("List of ingredients (for example, chicken, potatoes, and carrots): ") - - # interpolate the number of recipes into the prompt an ingredients - prompt = f"Show me {no_recipes} recipes for a dish with the following ingredients: {ingredients}. Per recipe, list all the ingredients used" - ``` - - ตัวอย่างการทดสอบโค้ดอาจเป็นแบบนี้: - - ```output - No of recipes (for example, 5): 3 - List of ingredients (for example, chicken, potatoes, and carrots): milk,strawberries - - -Strawberry milk shake: milk, strawberries, sugar, vanilla extract, ice cubes - -Strawberry shortcake: milk, flour, baking powder, sugar, salt, unsalted butter, strawberries, whipped cream - -Strawberry milk: milk, strawberries, sugar, vanilla extract - ``` - -### ปรับปรุงโดยเพิ่มการกรองและรายการซื้อของ - -ตอนนี้เรามีแอปที่ทำงานได้ สามารถสร้างสูตรอาหาร และยืดหยุ่นเพราะรับข้อมูลจากผู้ใช้ ทั้งจำนวนสูตรและวัตถุดิบที่ใช้ - -เพื่อปรับปรุงเพิ่มเติม เราต้องการเพิ่มสิ่งต่อไปนี้: - -- **กรองวัตถุดิบ** เราต้องการกรองวัตถุดิบที่เราไม่ชอบหรือแพ้ เพื่อทำสิ่งนี้ เราสามารถแก้ไข prompt เดิมและเพิ่มเงื่อนไขการกรองไว้ท้าย prompt ดังนี้: - - ```python - filter = input("Filter (for example, vegetarian, vegan, or gluten-free): ") - - prompt = f"Show me {no_recipes} recipes for a dish with the following ingredients: {ingredients}. Per recipe, list all the ingredients used, no {filter}" - ``` - - ข้างบนนี้ เราเพิ่ม `{filter}` ไว้ท้าย prompt และรับค่าการกรองจากผู้ใช้ด้วย - - ตัวอย่างการป้อนข้อมูลตอนรันโปรแกรมอาจเป็นแบบนี้: - - ```output - No of recipes (for example, 5): 3 - List of ingredients (for example, chicken, potatoes, and carrots): onion,milk - Filter (for example, vegetarian, vegan, or gluten-free): no milk - - 1. French Onion Soup - - Ingredients: - - -1 large onion, sliced - -3 cups beef broth - -1 cup milk - -6 slices french bread - -1/4 cup shredded Parmesan cheese - -1 tablespoon butter - -1 teaspoon dried thyme - -1/4 teaspoon salt - -1/4 teaspoon black pepper - - Instructions: - - 1. In a large pot, sauté onions in butter until golden brown. - 2. Add beef broth, milk, thyme, salt, and pepper. Bring to a boil. - 3. Reduce heat and simmer for 10 minutes. - 4. Place french bread slices on soup bowls. - 5. Ladle soup over bread. - 6. Sprinkle with Parmesan cheese. - - 2. Onion and Potato Soup - - Ingredients: - - -1 large onion, chopped - -2 cups potatoes, diced - -3 cups vegetable broth - -1 cup milk - -1/4 teaspoon black pepper - - Instructions: - - 1. In a large pot, sauté onions in butter until golden brown. - 2. Add potatoes, vegetable broth, milk, and pepper. Bring to a boil. - 3. Reduce heat and simmer for 10 minutes. - 4. Serve hot. - - 3. Creamy Onion Soup - - Ingredients: - - -1 large onion, chopped - -3 cups vegetable broth - -1 cup milk - -1/4 teaspoon black pepper - -1/4 cup all-purpose flour - -1/2 cup shredded Parmesan cheese - - Instructions: - - 1. In a large pot, sauté onions in butter until golden brown. - 2. Add vegetable broth, milk, and pepper. Bring to a boil. - 3. Reduce heat and simmer for 10 minutes. - 4. In a small bowl, whisk together flour and Parmesan cheese until smooth. - 5. Add to soup and simmer for an additional 5 minutes, or until soup has thickened. - ``` - - อย่างที่เห็น สูตรอาหารที่มีนมถูกกรองออกไป แต่ถ้าคุณแพ้แลคโตส คุณอาจต้องการกรองสูตรที่มีชีสด้วย ดังนั้นต้องระบุให้ชัดเจน - -- **สร้างรายการซื้อของ** เราต้องการสร้างรายการซื้อของโดยพิจารณาว่าเรามีวัตถุดิบอะไรอยู่แล้วที่บ้าน - - สำหรับฟังก์ชันนี้ เราอาจแก้ไขทุกอย่างใน prompt เดียว หรือแยกเป็นสอง prompt ก็ได้ ลองใช้วิธีหลัง โดยเพิ่ม prompt อีกอัน แต่เพื่อให้ทำงานได้ เราต้องเพิ่มผลลัพธ์จาก prompt แรกเป็นบริบทของ prompt ที่สอง - - หาโค้ดส่วนที่พิมพ์ผลลัพธ์จาก prompt แรก แล้วเพิ่มโค้ดนี้ลงไปข้างล่าง: - - ```python - old_prompt_result = completion.choices[0].message.content - prompt = "Produce a shopping list for the generated recipes and please don't include ingredients that I already have." - - new_prompt = f"{old_prompt_result} {prompt}" - messages = [{"role": "user", "content": new_prompt}] - completion = openai.Completion.create(engine=deployment_name, messages=messages, max_tokens=1200) - - # print response - print("Shopping list:") - print(completion.choices[0].message.content) - ``` - - สังเกตดังนี้: - - 1. เราสร้าง prompt ใหม่โดยเพิ่มผลลัพธ์จาก prompt แรกเข้าไปใน prompt ใหม่: - - ```python - new_prompt = f"{old_prompt_result} {prompt}" - ``` - 1. เราสร้างคำขอใหม่ แต่ก็ยังคำนึงถึงจำนวนโทเค็นที่เราขอในคำสั่งแรกด้วย ดังนั้นครั้งนี้เรากำหนด `max_tokens` เป็น 1200 - - ```python - completion = openai.Completion.create(engine=deployment_name, prompt=new_prompt, max_tokens=1200) - ``` - - เมื่อนำโค้ดนี้มาทดลอง เราจะได้ผลลัพธ์ดังนี้: - - ```output - No of recipes (for example, 5): 2 - List of ingredients (for example, chicken, potatoes, and carrots): apple,flour - Filter (for example, vegetarian, vegan, or gluten-free): sugar - - - -Apple and flour pancakes: 1 cup flour, 1/2 tsp baking powder, 1/2 tsp baking soda, 1/4 tsp salt, 1 tbsp sugar, 1 egg, 1 cup buttermilk or sour milk, 1/4 cup melted butter, 1 Granny Smith apple, peeled and grated - -Apple fritters: 1-1/2 cups flour, 1 tsp baking powder, 1/4 tsp salt, 1/4 tsp baking soda, 1/4 tsp nutmeg, 1/4 tsp cinnamon, 1/4 tsp allspice, 1/4 cup sugar, 1/4 cup vegetable shortening, 1/4 cup milk, 1 egg, 2 cups shredded, peeled apples - Shopping list: - -Flour, baking powder, baking soda, salt, sugar, egg, buttermilk, butter, apple, nutmeg, cinnamon, allspice - ``` - -## ปรับปรุงการตั้งค่าของคุณ - -สิ่งที่เรามีตอนนี้คือโค้ดที่ใช้งานได้ แต่ยังมีการปรับแต่งบางอย่างที่ควรทำเพื่อพัฒนาให้ดีขึ้น สิ่งที่ควรทำมีดังนี้: - -- **แยกความลับออกจากโค้ด** เช่น API key ความลับไม่ควรอยู่ในโค้ดและควรเก็บไว้ในที่ปลอดภัย เพื่อแยกความลับออกจากโค้ด เราสามารถใช้ environment variables และไลบรารีอย่าง `python-dotenv` เพื่อโหลดค่าจากไฟล์ ตัวอย่างโค้ดจะเป็นแบบนี้: - - 1. สร้างไฟล์ `.env` โดยมีเนื้อหาดังนี้: - - ```bash - OPENAI_API_KEY=sk-... - ``` - - -> หมายเหตุ สำหรับ Azure คุณต้องตั้ง environment variables ดังนี้: - - ```bash - OPENAI_API_TYPE=azure - OPENAI_API_VERSION=2023-05-15 - OPENAI_API_BASE= - ``` - - ในโค้ด คุณจะโหลด environment variables แบบนี้: - - ```python - from dotenv import load_dotenv - - load_dotenv() - - openai.api_key = os.environ["OPENAI_API_KEY"] - ``` - -- **เรื่องความยาวของโทเค็น** เราควรพิจารณาว่าต้องใช้โทเค็นกี่ตัวในการสร้างข้อความที่ต้องการ โทเค็นมีค่าใช้จ่าย ดังนั้นถ้าเป็นไปได้ควรใช้โทเค็นอย่างประหยัด เช่น เราสามารถปรับคำสั่งให้ใช้โทเค็นน้อยลงได้ไหม? - - หากต้องการเปลี่ยนจำนวนโทเค็นที่ใช้ สามารถใช้พารามิเตอร์ `max_tokens` เช่น ถ้าต้องการใช้ 100 โทเค็น ให้ทำแบบนี้: - - ```python - completion = client.chat.completions.create(model=deployment, messages=messages, max_tokens=100) - ``` - -- **ทดลองปรับ temperature** Temperature เป็นสิ่งที่ยังไม่ได้พูดถึงแต่มีความสำคัญต่อการทำงานของโปรแกรม ค่า temperature ที่สูงขึ้นจะทำให้ผลลัพธ์มีความสุ่มมากขึ้น ในขณะที่ค่าที่ต่ำกว่าจะทำให้ผลลัพธ์คาดเดาได้มากขึ้น คิดดูว่าคุณต้องการให้ผลลัพธ์มีความหลากหลายหรือไม่ - - หากต้องการเปลี่ยนค่า temperature ให้ใช้พารามิเตอร์ `temperature` เช่น ถ้าต้องการใช้ค่า 0.5 ให้ทำแบบนี้: - - ```python - completion = client.chat.completions.create(model=deployment, messages=messages, temperature=0.5) - ``` - - > หมายเหตุ ยิ่งใกล้ 1.0 ผลลัพธ์จะยิ่งหลากหลายมากขึ้น - -## การบ้าน - -สำหรับการบ้านนี้ คุณสามารถเลือกสร้างสิ่งที่ต้องการได้ - -นี่คือข้อเสนอแนะบางอย่าง: - -- ปรับปรุงแอปสร้างสูตรอาหารให้ดีขึ้น ทดลองปรับค่า temperature และคำสั่งเพื่อดูว่าคุณจะได้ผลลัพธ์แบบไหน -- สร้าง "study buddy" แอปนี้ควรตอบคำถามเกี่ยวกับหัวข้อใดหัวข้อหนึ่ง เช่น Python คุณอาจมีคำสั่งว่า "หัวข้อใดหัวข้อหนึ่งใน Python คืออะไร?" หรือคำสั่งให้แสดงโค้ดเกี่ยวกับหัวข้อนั้น ๆ -- สร้าง History bot ให้ประวัติศาสตร์มีชีวิตชีวา สั่งให้บอทเล่นบทบาทตัวละครประวัติศาสตร์และถามคำถามเกี่ยวกับชีวิตและยุคสมัยของตัวละครนั้น - -## ตัวอย่างคำตอบ - -### Study buddy - -ด้านล่างนี้เป็นคำสั่งเริ่มต้น ลองดูว่าคุณจะใช้และปรับแต่งอย่างไรให้เหมาะกับคุณ - -```text -- "You're an expert on the Python language - - Suggest a beginner lesson for Python in the following format: - - Format: - - concepts: - - brief explanation of the lesson: - - exercise in code with solutions" -``` - -### History bot - -นี่คือคำสั่งที่คุณอาจใช้ได้: - -```text -- "You are Abe Lincoln, tell me about yourself in 3 sentences, and respond using grammar and words like Abe would have used" -- "You are Abe Lincoln, respond using grammar and words like Abe would have used: - - Tell me about your greatest accomplishments, in 300 words" -``` - -## ตรวจสอบความเข้าใจ - -แนวคิดเรื่อง temperature คืออะไร? - -1. มันควบคุมความสุ่มของผลลัพธ์ -1. มันควบคุมขนาดของคำตอบ -1. มันควบคุมจำนวนโทเค็นที่ใช้ - -## 🚀 ความท้าทาย - -เมื่อทำการบ้าน ลองปรับค่า temperature ดู ตั้งเป็น 0, 0.5 และ 1 จำไว้ว่าค่า 0 คือความหลากหลายน้อยที่สุด และ 1 คือความหลากหลายมากที่สุด ค่าไหนเหมาะกับแอปของคุณที่สุด? - -## ทำได้ดีมาก! เรียนรู้ต่อไป - -หลังจากจบบทเรียนนี้แล้ว ลองดู [คอลเลกชันการเรียนรู้ Generative AI](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) เพื่อพัฒนาความรู้ด้าน Generative AI ของคุณให้ก้าวหน้าไปอีกขั้น! - -ไปที่บทเรียนที่ 7 ซึ่งเราจะเรียนรู้วิธี [สร้างแอปแชท](../07-building-chat-applications/README.md?WT.mc_id=academic-105485-koreyst)! - -**ข้อจำกัดความรับผิดชอบ**: -เอกสารนี้ได้รับการแปลโดยใช้บริการแปลภาษาอัตโนมัติ [Co-op Translator](https://github.com/Azure/co-op-translator) แม้เราจะพยายามให้ความถูกต้องสูงสุด แต่โปรดทราบว่าการแปลอัตโนมัติอาจมีข้อผิดพลาดหรือความไม่ถูกต้อง เอกสารต้นฉบับในภาษาต้นทางถือเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลที่สำคัญ ขอแนะนำให้ใช้บริการแปลโดยผู้เชี่ยวชาญมนุษย์ เราไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความผิดใด ๆ ที่เกิดจากการใช้การแปลนี้ \ No newline at end of file + +# การสร้างแอปพลิเคชันการสร้างข้อความ + +[![การสร้างแอปพลิเคชันการสร้างข้อความ](../../../translated_images/06-lesson-banner.a5c629f990a636c852353c5533f1a6a218ece579005e91f96339d508d9cf8f47.th.png)](https://youtu.be/0Y5Luf5sRQA?si=t_xVg0clnAI4oUFZ) + +> _(คลิกที่ภาพด้านบนเพื่อดูวิดีโอของบทเรียนนี้)_ + +จนถึงตอนนี้คุณได้เห็นแนวคิดหลัก เช่น prompt และแม้กระทั่งศาสตร์ที่เรียกว่า "การออกแบบ prompt" เครื่องมือหลายอย่างที่คุณสามารถใช้งานได้ เช่น ChatGPT, Office 365, Microsoft Power Platform และอื่นๆ สนับสนุนการใช้ prompt เพื่อทำสิ่งต่างๆ + +หากคุณต้องการเพิ่มประสบการณ์แบบนี้ลงในแอป คุณจำเป็นต้องเข้าใจแนวคิด เช่น prompt, completion และเลือกไลบรารีที่จะใช้งาน ซึ่งคุณจะได้เรียนรู้ในบทนี้ + +## บทนำ + +ในบทนี้ คุณจะได้: + +- เรียนรู้เกี่ยวกับไลบรารี openai และแนวคิดหลักของมัน +- สร้างแอปพลิเคชันการสร้างข้อความโดยใช้ openai +- เข้าใจวิธีการใช้แนวคิด เช่น prompt, temperature และ tokens เพื่อสร้างแอปพลิเคชันการสร้างข้อความ + +## เป้าหมายการเรียนรู้ + +เมื่อจบบทเรียนนี้ คุณจะสามารถ: + +- อธิบายว่าแอปพลิเคชันการสร้างข้อความคืออะไร +- สร้างแอปพลิเคชันการสร้างข้อความโดยใช้ openai +- ปรับแต่งแอปของคุณเพื่อใช้ tokens มากหรือน้อย และเปลี่ยน temperature เพื่อให้ได้ผลลัพธ์ที่หลากหลาย + +## แอปพลิเคชันการสร้างข้อความคืออะไร? + +โดยปกติเมื่อคุณสร้างแอป มันจะมีอินเทอร์เฟซบางอย่าง เช่น: + +- **แบบคำสั่ง** แอปคอนโซลเป็นแอปทั่วไปที่คุณพิมพ์คำสั่งและมันจะดำเนินการตามคำสั่ง เช่น `git` เป็นแอปแบบคำสั่ง +- **อินเทอร์เฟซผู้ใช้ (UI)** แอปบางตัวมีอินเทอร์เฟซผู้ใช้แบบกราฟิก (GUI) ที่คุณคลิกปุ่ม, ป้อนข้อความ, เลือกตัวเลือก และอื่นๆ + +### แอปแบบคอนโซลและ UI มีข้อจำกัด + +เปรียบเทียบกับแอปแบบคำสั่งที่คุณพิมพ์คำสั่ง: + +- **มีข้อจำกัด** คุณไม่สามารถพิมพ์คำสั่งใดๆ ได้ นอกจากคำสั่งที่แอปรองรับ +- **เฉพาะภาษา** แอปบางตัวรองรับหลายภาษา แต่โดยปกติแอปจะถูกสร้างขึ้นสำหรับภาษาเฉพาะ แม้ว่าคุณจะสามารถเพิ่มการรองรับภาษาอื่นได้ + +### ข้อดีของแอปพลิเคชันการสร้างข้อความ + +แล้วแอปพลิเคชันการสร้างข้อความแตกต่างกันอย่างไร? + +ในแอปพลิเคชันการสร้างข้อความ คุณมีความยืดหยุ่นมากขึ้น ไม่จำกัดเฉพาะชุดคำสั่งหรือภาษาป้อนข้อมูลเฉพาะ คุณสามารถใช้ภาษาธรรมชาติเพื่อโต้ตอบกับแอปได้ อีกทั้งคุณยังโต้ตอบกับแหล่งข้อมูลที่ได้รับการฝึกฝนจากข้อมูลจำนวนมาก ซึ่งแอปแบบดั้งเดิมอาจจำกัดเฉพาะข้อมูลในฐานข้อมูล + +### คุณสามารถสร้างอะไรด้วยแอปพลิเคชันการสร้างข้อความ? + +มีหลายสิ่งที่คุณสามารถสร้างได้ เช่น: + +- **แชทบอท** แชทบอทที่ตอบคำถามเกี่ยวกับหัวข้อต่างๆ เช่น บริษัทของคุณและผลิตภัณฑ์ของมัน +- **ผู้ช่วย** LLMs เหมาะสำหรับการสรุปข้อความ, การวิเคราะห์ข้อมูลจากข้อความ, การสร้างข้อความ เช่น เรซูเม่ และอื่นๆ +- **ผู้ช่วยเขียนโค้ด** ขึ้นอยู่กับโมเดลภาษาที่คุณใช้ คุณสามารถสร้างผู้ช่วยเขียนโค้ดที่ช่วยคุณเขียนโค้ด เช่น ใช้ผลิตภัณฑ์อย่าง GitHub Copilot หรือ ChatGPT เพื่อช่วยคุณเขียนโค้ด + +## ฉันจะเริ่มต้นได้อย่างไร? + +คุณต้องหาวิธีการเชื่อมต่อกับ LLM ซึ่งโดยปกติจะมีสองวิธี: + +- ใช้ API โดยการสร้างคำขอเว็บพร้อม prompt ของคุณและรับข้อความที่สร้างกลับมา +- ใช้ไลบรารี ไลบรารีช่วยให้การเรียก API ง่ายขึ้น + +## ไลบรารี/SDKs + +มีไลบรารีที่เป็นที่รู้จักสำหรับการทำงานกับ LLMs เช่น: + +- **openai** ไลบรารีนี้ทำให้การเชื่อมต่อกับโมเดลและการส่ง prompt ง่ายขึ้น + +นอกจากนี้ยังมีไลบรารีที่ทำงานในระดับสูงกว่า เช่น: + +- **Langchain** เป็นที่รู้จักกันดีและรองรับ Python +- **Semantic Kernel** เป็นไลบรารีของ Microsoft ที่รองรับภาษา C#, Python และ Java + +## แอปแรกโดยใช้ openai + +มาดูกันว่าเราจะสร้างแอปแรกได้อย่างไร ไลบรารีที่เราต้องการ และสิ่งที่จำเป็น + +### ติดตั้ง openai + +มีไลบรารีมากมายสำหรับการโต้ตอบกับ OpenAI หรือ Azure OpenAI คุณสามารถใช้ภาษาโปรแกรมต่างๆ เช่น C#, Python, JavaScript, Java และอื่นๆ เราเลือกใช้ไลบรารี Python `openai` ดังนั้นเราจะใช้ `pip` เพื่อติดตั้งมัน + +```bash +pip install openai +``` + +### สร้างทรัพยากร + +คุณต้องดำเนินการตามขั้นตอนต่อไปนี้: + +- สร้างบัญชีบน Azure [https://azure.microsoft.com/free/](https://azure.microsoft.com/free/?WT.mc_id=academic-105485-koreyst) +- เข้าถึง Azure OpenAI ไปที่ [https://learn.microsoft.com/azure/ai-services/openai/overview#how-do-i-get-access-to-azure-openai](https://learn.microsoft.com/azure/ai-services/openai/overview#how-do-i-get-access-to-azure-openai?WT.mc_id=academic-105485-koreyst) และขอการเข้าถึง + + > [!NOTE] + > ณ เวลาที่เขียน คุณต้องสมัครเพื่อเข้าถึง Azure OpenAI + +- ติดตั้ง Python +- สร้างทรัพยากร Azure OpenAI Service ดูคำแนะนำนี้สำหรับวิธีการ [สร้างทรัพยากร](https://learn.microsoft.com/azure/ai-services/openai/how-to/create-resource?pivots=web-portal?WT.mc_id=academic-105485-koreyst) + +### ค้นหา API key และ endpoint + +ในขั้นตอนนี้ คุณต้องบอกไลบรารี `openai` ว่าจะใช้ API key ใด ในการค้นหา API key ของคุณ ไปที่ส่วน "Keys and Endpoint" ของทรัพยากร Azure OpenAI และคัดลอกค่า "Key 1" + +![Keys and Endpoint resource blade in Azure Portal](https://learn.microsoft.com/azure/ai-services/openai/media/quickstarts/endpoint.png?WT.mc_id=academic-105485-koreyst) + +เมื่อคุณคัดลอกข้อมูลนี้แล้ว มาบอกไลบรารีให้ใช้งานมัน + +> [!NOTE] +> ควรแยก API key ของคุณออกจากโค้ด คุณสามารถทำได้โดยใช้ environment variables +> +> - ตั้งค่า environment variable `OPENAI_API_KEY` เป็น API key ของคุณ +> `export OPENAI_API_KEY='sk-...'` + +### ตั้งค่าการกำหนดค่า Azure + +หากคุณใช้ Azure OpenAI นี่คือวิธีการตั้งค่าการกำหนดค่า: + +```python +openai.api_type = 'azure' +openai.api_key = os.environ["OPENAI_API_KEY"] +openai.api_version = '2023-05-15' +openai.api_base = os.getenv("API_BASE") +``` + +ในโค้ดด้านบน เรากำลังตั้งค่าดังนี้: + +- `api_type` เป็น `azure` ซึ่งบอกไลบรารีให้ใช้ Azure OpenAI แทน OpenAI +- `api_key` คือ API key ของคุณที่พบใน Azure Portal +- `api_version` คือเวอร์ชันของ API ที่คุณต้องการใช้ ณ เวลาที่เขียน เวอร์ชันล่าสุดคือ `2023-05-15` +- `api_base` คือ endpoint ของ API คุณสามารถค้นหาได้ใน Azure Portal ถัดจาก API key ของคุณ + +> [!NOTE] > `os.getenv` เป็นฟังก์ชันที่อ่าน environment variables คุณสามารถใช้มันเพื่ออ่าน environment variables เช่น `OPENAI_API_KEY` และ `API_BASE` ตั้งค่า environment variables เหล่านี้ใน terminal ของคุณหรือโดยใช้ไลบรารี เช่น `dotenv` + +## สร้างข้อความ + +วิธีการสร้างข้อความคือการใช้คลาส `Completion` นี่คือตัวอย่าง: + +```python +prompt = "Complete the following: Once upon a time there was a" + +completion = openai.Completion.create(model="davinci-002", prompt=prompt) +print(completion.choices[0].text) +``` + +ในโค้ดด้านบน เราสร้าง completion object และส่งโมเดลที่เราต้องการใช้และ prompt จากนั้นเราพิมพ์ข้อความที่สร้างขึ้น + +### การสร้างข้อความแบบแชท + +จนถึงตอนนี้ คุณได้เห็นว่าเราใช้ `Completion` เพื่อสร้างข้อความ แต่ยังมีคลาสอีกตัวที่เรียกว่า `ChatCompletion` ซึ่งเหมาะสำหรับแชทบอทมากกว่า นี่คือตัวอย่างการใช้งาน: + +```python +import openai + +openai.api_key = "sk-..." + +completion = openai.ChatCompletion.create(model="gpt-3.5-turbo", messages=[{"role": "user", "content": "Hello world"}]) +print(completion.choices[0].message.content) +``` + +ฟังก์ชันนี้จะมีการอธิบายเพิ่มเติมในบทถัดไป + +## แบบฝึกหัด - แอปพลิเคชันการสร้างข้อความแรกของคุณ + +ตอนนี้เราได้เรียนรู้วิธีการตั้งค่าและกำหนดค่า openai แล้ว ถึงเวลาสร้างแอปพลิเคชันการสร้างข้อความแรกของคุณ ในการสร้างแอปของคุณ ให้ทำตามขั้นตอนต่อไปนี้: + +1. สร้าง virtual environment และติดตั้ง openai: + + ```bash + python -m venv venv + source venv/bin/activate + pip install openai + ``` + + > [!NOTE] + > หากคุณใช้ Windows ให้พิมพ์ `venv\Scripts\activate` แทน `source venv/bin/activate` + + > [!NOTE] + > ค้นหา Azure OpenAI key ของคุณโดยไปที่ [https://portal.azure.com/](https://portal.azure.com/?WT.mc_id=academic-105485-koreyst) และค้นหา `Open AI` จากนั้นเลือก `Open AI resource` และเลือก `Keys and Endpoint` และคัดลอกค่า `Key 1` + +1. สร้างไฟล์ _app.py_ และใส่โค้ดต่อไปนี้: + + ```python + import openai + + openai.api_key = "" + + openai.api_type = 'azure' + openai.api_version = '2023-05-15' + openai.api_base = "" + deployment_name = "" + + # add your completion code + prompt = "Complete the following: Once upon a time there was a" + messages = [{"role": "user", "content": prompt}] + + # make completion + completion = openai.chat.completions.create(model=deployment_name, messages=messages) + + # print response + print(completion.choices[0].message.content) + ``` + + > [!NOTE] + > หากคุณใช้ Azure OpenAI คุณต้องตั้งค่า `api_type` เป็น `azure` และตั้งค่า `api_key` เป็น Azure OpenAI key ของคุณ + + คุณควรเห็นผลลัพธ์ที่คล้ายกับ: + + ```output + very unhappy _____. + + Once upon a time there was a very unhappy mermaid. + ``` + +## ประเภทของ prompt สำหรับสิ่งต่างๆ + +ตอนนี้คุณได้เห็นวิธีการสร้างข้อความโดยใช้ prompt คุณมีโปรแกรมที่ทำงานได้ซึ่งคุณสามารถปรับเปลี่ยนและเปลี่ยนแปลงเพื่อสร้างข้อความประเภทต่างๆ + +Prompt สามารถใช้สำหรับงานต่างๆ ได้ เช่น: + +- **สร้างข้อความประเภทต่างๆ** เช่น คุณสามารถสร้างบทกวี คำถามสำหรับแบบทดสอบ เป็นต้น +- **ค้นหาข้อมูล** คุณสามารถใช้ prompt เพื่อค้นหาข้อมูล เช่น 'CORS หมายถึงอะไรในเว็บดีเวลลอปเมนต์?' +- **สร้างโค้ด** คุณสามารถใช้ prompt เพื่อสร้างโค้ด เช่น การพัฒนา regular expression ที่ใช้ตรวจสอบอีเมล หรือแม้กระทั่งสร้างโปรแกรมทั้งหมด เช่น เว็บแอปพลิเคชัน + +## กรณีการใช้งานที่เป็นประโยชน์มากขึ้น: ตัวสร้างสูตรอาหาร + +ลองจินตนาการว่าคุณมีวัตถุดิบอยู่ที่บ้านและต้องการทำอาหาร สำหรับสิ่งนั้นคุณต้องมีสูตรอาหาร วิธีหนึ่งในการหาสูตรอาหารคือการใช้เครื่องมือค้นหา หรือคุณสามารถใช้ LLM เพื่อทำเช่นนั้น + +คุณสามารถเขียน prompt เช่นนี้: + +> "แสดงสูตรอาหาร 5 สูตรสำหรับจานที่มีวัตถุดิบดังนี้: ไก่, มันฝรั่ง และแครอท ในแต่ละสูตรให้ระบุวัตถุดิบทั้งหมดที่ใช้" + +จาก prompt ด้านบน คุณอาจได้รับคำตอบที่คล้ายกับ: + +```output +1. Roasted Chicken and Vegetables: +Ingredients: +- 4 chicken thighs +- 2 potatoes, cut into cubes +- 2 carrots, cut into cubes +- 2 tablespoons olive oil +- 2 cloves garlic, minced +- 1 teaspoon dried thyme +- 1 teaspoon dried oregano +- Salt and pepper, to taste + +2. Chicken and Potato Stew: +Ingredients: +- 2 tablespoons olive oil +- 1 onion, diced +- 2 cloves garlic, minced +- 2 chicken breasts, cut into cubes +- 2 potatoes, cut into cubes +- 2 carrots, cut into cubes +- 1 teaspoon dried oregano +- 1 teaspoon dried thyme +- 1 cup chicken broth +- Salt and pepper, to taste + +3. Chicken and Potato Bake: +Ingredients: +- 2 tablespoons olive oil +- 2 chicken breasts, cut into cubes +- 2 potatoes, cut into cubes +- 2 carrots, cut into cubes +- 1 onion, diced +- 2 cloves garlic, minced +- 1 teaspoon dried oregano +- 1 teaspoon dried thyme +- 1 cup chicken broth +- Salt and pepper, to taste + +4. Chicken and Potato Soup: +Ingredients: +- 2 tablespoons olive oil +- 1 onion, diced +- 2 cloves garlic, minced +- 2 chicken breasts, cut into cubes +- 2 potatoes, cut into cubes +- 2 carrots, cut into cubes +- 1 teaspoon dried oregano +- 1 teaspoon dried thyme +- 4 cups chicken broth +- Salt and pepper, to taste + +5. Chicken and Potato Hash: +Ingredients: +- 2 tablespoons olive oil +- 2 chicken breasts, cut into cubes +- 2 potatoes, cut into cubes +- 2 carrots, cut into cubes +- 1 onion, diced +- 2 cloves garlic, minced +- 1 teaspoon dried oregano +``` + +ผลลัพธ์นี้ดีมาก ฉันรู้แล้วว่าจะทำอะไร ตอนนี้สิ่งที่อาจเป็นการปรับปรุงที่มีประโยชน์คือ: + +- กรองวัตถุดิบที่ฉันไม่ชอบหรือแพ้ +- สร้างรายการซื้อของในกรณีที่ฉันไม่มีวัตถุดิบทั้งหมดที่บ้าน + +สำหรับกรณีดังกล่าว มาลองเพิ่ม prompt เพิ่มเติม: + +> "กรุณาลบสูตรอาหารที่มีส่วนผสมของกระเทียมเพราะฉันแพ้ และเปลี่ยนเป็นอย่างอื่น นอกจากนี้กรุณาสร้างรายการซื้อของสำหรับสูตรอาหาร โดยพิจารณาว่าฉันมีไก่, มันฝรั่ง และแครอทอยู่ที่บ้านแล้ว" + +ตอนนี้คุณจะได้ผลลัพธ์ใหม่ ได้แก่: + +```output +1. Roasted Chicken and Vegetables: +Ingredients: +- 4 chicken thighs +- 2 potatoes, cut into cubes +- 2 carrots, cut into cubes +- 2 tablespoons olive oil +- 1 teaspoon dried thyme +- 1 teaspoon dried oregano +- Salt and pepper, to taste + +2. Chicken and Potato Stew: +Ingredients: +- 2 tablespoons olive oil +- 1 onion, diced +- 2 chicken breasts, cut into cubes +- 2 potatoes, cut into cubes +- 2 carrots, cut into cubes +- 1 teaspoon dried oregano +- 1 teaspoon dried thyme +- 1 cup chicken broth +- Salt and pepper, to taste + +3. Chicken and Potato Bake: +Ingredients: +- 2 tablespoons olive oil +- 2 chicken breasts, cut into cubes +- 2 potatoes, cut into cubes +- 2 carrots, cut into cubes +- 1 onion, diced +- 1 teaspoon dried oregano +- 1 teaspoon dried thyme +- 1 cup chicken broth +- Salt and pepper, to taste + +4. Chicken and Potato Soup: +Ingredients: +- 2 tablespoons olive oil +- 1 onion, diced +- 2 chicken breasts, cut into cubes +- 2 potatoes, cut into cubes +- 2 carrots, cut into cubes +- 1 teaspoon dried oregano +- 1 teaspoon dried thyme +- 4 cups chicken broth +- Salt and pepper, to taste + +5. Chicken and Potato Hash: +Ingredients: +- 2 tablespoons olive oil +- 2 chicken breasts, cut into cubes +- 2 potatoes, cut into cubes +- 2 carrots, cut into cubes +- 1 onion, diced +- 1 teaspoon dried oregano + +Shopping List: +- Olive oil +- Onion +- Thyme +- Oregano +- Salt +- Pepper +``` + +นี่คือสูตรอาหารทั้งห้าสูตรที่ไม่มีการกล่าวถึงกระเทียม และคุณยังมีรายการซื้อของที่พิจารณาว่าคุณมีวัตถุดิบที่บ้านแล้ว + +## แบบฝึกหัด - สร้างตัวสร้างสูตรอาหาร + +ตอนนี้เราได้ลองเล่นสถานการณ์แล้ว มาลองเขียนโค้ดให้ตรงกับสถานการณ์ที่แสดงไว้กันเถอะ ในการทำเช่นนั้น ให้ทำตามขั้นตอนต่อไปนี้: + +1. ใช้ไฟล์ _app.py_ ที่มีอยู่เป็นจุดเริ่มต้น +1. ค้นหา `prompt` variable และเปลี่ยนโค้ดเป็นดังนี้: + + ```python + prompt = "Show me 5 recipes for a dish with the following ingredients: chicken, potatoes, and carrots. Per recipe, list all the ingredients used" + ``` + + หากคุณรันโค้ดตอนนี้ คุณควรเห็นผลลัพธ์ที่คล้ายกับ: + + ```output + -Chicken Stew with Potatoes and Carrots: 3 tablespoons oil, 1 onion, chopped, 2 cloves garlic, minced, 1 carrot, peeled and chopped, 1 potato, peeled and chopped, 1 bay leaf, 1 thyme sprig, 1/2 teaspoon salt, 1/4 teaspoon black pepper, 1 1/2 cups chicken broth, 1/2 cup dry white wine, 2 tablespoons chopped fresh parsley, 2 tablespoons unsalted butter, 1 1/2 pounds boneless, skinless chicken thighs, cut into 1-inch pieces + -Oven-Roasted Chicken with Potatoes and Carrots: 3 tablespoons extra-virgin olive oil, 1 tablespoon Dijon mustard, 1 tablespoon chopped fresh rosemary, 1 tablespoon chopped fresh thyme, 4 cloves garlic, minced, 1 1/2 pounds small red potatoes, quartered, 1 1/2 pounds carrots, quartered lengthwise, 1/2 teaspoon salt, 1/4 teaspoon black pepper, 1 (4-pound) whole chicken + -Chicken, Potato, and Carrot Casserole: cooking spray, 1 large onion, chopped, 2 cloves garlic, minced, 1 carrot, peeled and shredded, 1 potato, peeled and shredded, 1/2 teaspoon dried thyme leaves, 1/4 teaspoon salt, 1/4 teaspoon black pepper, 2 cups fat-free, low-sodium chicken broth, 1 cup frozen peas, 1/4 cup all-purpose flour, 1 cup 2% reduced-fat milk, 1/4 cup grated Parmesan cheese + + -One Pot Chicken and Potato Dinner: 2 tablespoons olive oil, 1 pound boneless, skinless chicken thighs, cut into 1-inch pieces, 1 large onion, chopped, 3 cloves garlic, minced, 1 carrot, peeled and chopped, 1 potato, peeled and chopped, 1 bay leaf, 1 thyme sprig, 1/2 teaspoon salt, 1/4 teaspoon black pepper, 2 cups chicken broth, 1/2 cup dry white wine + + -Chicken, Potato, and Carrot Curry: 1 tablespoon vegetable oil, 1 large onion, chopped, 2 cloves garlic, minced, 1 carrot, peeled and chopped, 1 potato, peeled and chopped, 1 teaspoon ground coriander, 1 teaspoon ground cumin, 1/2 teaspoon ground turmeric, 1/2 teaspoon ground ginger, 1/4 teaspoon cayenne pepper, 2 cups chicken broth, 1/2 cup dry white wine, 1 (15-ounce) can chickpeas, drained and rinsed, 1/2 cup raisins, 1/2 cup chopped fresh cilantro + ``` + + > NOTE, LLM ของคุณมีความไม่แน่นอน ดังนั้นคุณอาจได้รับผลลัพธ์ที่แตกต่างกันทุกครั้งที่คุณรันโปรแกรม + + ดีมาก มาดูกันว่าเราสามารถปรับปรุงอะไรได้บ้าง เพื่อปรับปรุง เราต้องการให้แน่ใจว่าโค้ดมีความยืดหยุ่น ดังนั้นวัตถุดิบและจำนวนสูตรอาหารสามารถปรับปรุงและเปลี่ยนแปลงได้ + +1. มาปรับเปลี่ยนโค้ดในลักษณะดังนี้: + + ```python + no_recipes = input("No of recipes (for example, 5): ") + + ingredients = input("List of ingredients (for example, chicken, potatoes, and carrots): ") + + # interpolate the number of recipes into the prompt an ingredients + prompt = f"Show me {no_recipes} recipes for a dish with the following ingredients: {ingredients}. Per recipe, list all the ingredients used" + ``` + + การทดสอบโค้ดอาจมีลักษณะดังนี้: + + ```output + No of recipes (for example, 5): 3 + List of ingredients (for example, chicken, potatoes, and carrots): milk,strawberries + + -Strawberry milk shake: milk, strawberries, sugar, vanilla extract, ice cubes + -Strawberry shortcake: milk, flour, baking powder, sugar, salt, unsalted butter, strawberries, whipped cream + -Strawberry milk: milk, strawberries, sugar, vanilla extract + ``` + +### ปรับปรุงโดยการเพิ่มตัวกรองและรายการซื้อของ + +ตอนนี้เรามีแอปที่ทำงานได้ซึ่งสามารถสร้างสูตรอาหารและมีความยืดหยุ่นเนื่องจากอาศัยข้อมูลจากผู้ใช้ ทั้งจำนวนสูตรอาหารและวัตถุดิบที่ใช้ + +เพื่อปรับปรุงเพิ่มเติม เราต้องการเพิ่มสิ่งต่อไปนี้: + +- **กรองวัตถุดิบ** เราต้องการสามารถกรองวัตถุดิบที่เราไม่ชอบหรือแพ้ได้ เพื่อทำการเปลี่ยนแปลงนี้ เราสามารถแก้ไข prompt ที่มีอยู่และเพิ่มเงื่อนไขการกรองในตอนท้าย เช่น: + + ```python + filter = input("Filter (for example, vegetarian, vegan, or gluten-free): ") + + prompt = f"Show me {no_recipes} recipes for a dish with the following ingredients: {ingredients}. Per recipe, list all the ingredients used, no {filter}" + ``` + + ด้านบน เราเพิ่ม `{filter}` ไปที่ท้าย prompt และเรายังจับค่าตัวกรองจากผู้ใช้ + + ตัวอย่างการป้อนข้อมูลของการรันโปรแกรมตอนนี้อาจมีลักษณะดังนี้: + + ```output + No of recipes (for example, 5): 3 + List of ingredients (for example, chicken, potatoes, and carrots): onion,milk + Filter (for example, vegetarian, vegan, or gluten-free): no milk + + 1. French Onion Soup + + Ingredients: + + -1 large onion, sliced + -3 cups beef broth + -1 cup milk + -6 slices french bread + -1/4 cup shredded Parmesan cheese + -1 tablespoon butter + -1 teaspoon dried thyme + -1/4 teaspoon salt + -1/4 teaspoon black pepper + + Instructions: + + 1. In a large pot, sauté onions in butter until golden brown. + 2. Add beef broth, milk, thyme, salt, and pepper. Bring to a boil. + 3. Reduce heat and simmer for 10 minutes. + 4. Place french bread slices on soup bowls. + 5. Ladle soup over bread. + 6. Sprinkle with Parmesan cheese. + + 2. Onion and Potato Soup + + Ingredients: + + -1 large onion, chopped + -2 cups potatoes, diced + -3 cups vegetable broth + -1 cup milk + -1/4 teaspoon black pepper + + Instructions: + + 1. In a large pot, sauté onions in butter until golden brown. + 2. Add potatoes, vegetable broth, milk, and pepper. Bring to a boil. + 3. Reduce heat and simmer for 10 minutes. + 4. Serve hot. + + 3. Creamy Onion Soup + + Ingredients: + + -1 large onion, chopped + -3 cups vegetable broth + -1 cup milk + -1/4 teaspoon black pepper + -1/4 cup all-purpose flour + -1/2 cup shredded Parmesan cheese + + Instructions: + + 1. In a large pot, sauté onions in butter until golden brown. + 2. Add vegetable broth, milk, and pepper. Bring to a boil. + 3. Reduce heat and simmer for 10 minutes. + 4. In a small bowl, whisk together flour and Parmesan cheese until smooth. + 5. Add to soup and simmer for an additional 5 minutes, or until soup has thickened. + ``` + + ดังที่คุณเห็น สูตรอาหารที่มีนมถูกกรองออกไป แต่หากคุณแพ้แลคโตส คุณอาจต้องการกรองสูตรอาหารที่มีชีสด้วย ดังนั้นจึงจำเป็นต้องระบุให้ชัดเจน + +- **สร้างรายการซื้อของ** เราต้องการสร้างรายการซื้อของ โดยพิจารณาว่าสิ่งที่เรามีอยู่ที่บ้านแล้ว + + สำหรับฟังก์ชันนี้ เราสามารถลองแก้ปัญหาทั้งหมดใน prompt เดียว หรือเราสามารถแบ่งออกเป็นสอง prompt ลองใช้วิธีหลังกัน ในที่นี้เราแนะนำให้เพิ่ม prompt เพิ่มเติม แต่สำหรับการทำงานนั้น เราต้องเพิ่มผลลัพธ์ของ prompt ก่อนหน้าเป็นบริบทให้กับ prompt ถัดไป + + ค้นหาส่วนในโค้ดที่พิมพ์ผลลัพธ์จาก prompt แรกและเพิ่มโค้ดต่อไปนี้ด้านล่าง: + ```python + old_prompt_result = completion.choices[0].message.content + prompt = "Produce a shopping list for the generated recipes and please don't include ingredients that I already have." + + new_prompt = f"{old_prompt_result} {prompt}" + messages = [{"role": "user", "content": new_prompt}] + completion = openai.Completion.create(engine=deployment_name, messages=messages, max_tokens=1200) + + # print response + print("Shopping list:") + print(completion.choices[0].message.content) + ``` + + โปรดทราบสิ่งต่อไปนี้: + + 1. เรากำลังสร้าง prompt ใหม่โดยเพิ่มผลลัพธ์จาก prompt แรกเข้าไปใน prompt ใหม่: + + ```python + new_prompt = f"{old_prompt_result} {prompt}" + ``` + + 1. เราทำการร้องขอใหม่ แต่ยังคำนึงถึงจำนวน tokens ที่เราใช้ใน prompt แรก ดังนั้นครั้งนี้เราจึงตั้งค่า `max_tokens` เป็น 1200 + + ```python + completion = openai.Completion.create(engine=deployment_name, prompt=new_prompt, max_tokens=1200) + ``` + + เมื่อทดลองใช้โค้ดนี้ เราจะได้ผลลัพธ์ดังต่อไปนี้: + + ```output + No of recipes (for example, 5): 2 + List of ingredients (for example, chicken, potatoes, and carrots): apple,flour + Filter (for example, vegetarian, vegan, or gluten-free): sugar + + + -Apple and flour pancakes: 1 cup flour, 1/2 tsp baking powder, 1/2 tsp baking soda, 1/4 tsp salt, 1 tbsp sugar, 1 egg, 1 cup buttermilk or sour milk, 1/4 cup melted butter, 1 Granny Smith apple, peeled and grated + -Apple fritters: 1-1/2 cups flour, 1 tsp baking powder, 1/4 tsp salt, 1/4 tsp baking soda, 1/4 tsp nutmeg, 1/4 tsp cinnamon, 1/4 tsp allspice, 1/4 cup sugar, 1/4 cup vegetable shortening, 1/4 cup milk, 1 egg, 2 cups shredded, peeled apples + Shopping list: + -Flour, baking powder, baking soda, salt, sugar, egg, buttermilk, butter, apple, nutmeg, cinnamon, allspice + ``` + +## ปรับปรุงการตั้งค่าของคุณ + +สิ่งที่เรามีตอนนี้คือโค้ดที่ใช้งานได้ แต่ยังมีการปรับแต่งบางอย่างที่เราควรทำเพื่อปรับปรุงให้ดียิ่งขึ้น สิ่งที่เราควรทำได้แก่: + +- **แยกข้อมูลลับออกจากโค้ด** เช่น API key ข้อมูลลับไม่ควรอยู่ในโค้ดและควรเก็บไว้ในที่ปลอดภัย เพื่อแยกข้อมูลลับออกจากโค้ด เราสามารถใช้ environment variables และไลบรารีอย่าง `python-dotenv` เพื่อโหลดข้อมูลจากไฟล์ วิธีการในโค้ดจะเป็นดังนี้: + + 1. สร้างไฟล์ `.env` โดยมีเนื้อหาดังนี้: + + ```bash + OPENAI_API_KEY=sk-... + ``` + + > หมายเหตุ สำหรับ Azure คุณต้องตั้งค่า environment variables ดังนี้: + + ```bash + OPENAI_API_TYPE=azure + OPENAI_API_VERSION=2023-05-15 + OPENAI_API_BASE= + ``` + + ในโค้ด คุณจะโหลด environment variables ดังนี้: + + ```python + from dotenv import load_dotenv + + load_dotenv() + + openai.api_key = os.environ["OPENAI_API_KEY"] + ``` + +- **เรื่องของความยาว token** เราควรพิจารณาว่าเราต้องการ token จำนวนเท่าใดเพื่อสร้างข้อความที่เราต้องการ Token มีค่าใช้จ่าย ดังนั้นเราควรพยายามใช้ token อย่างประหยัดที่สุดเท่าที่จะทำได้ ตัวอย่างเช่น เราสามารถปรับ prompt เพื่อใช้ token น้อยลงได้หรือไม่? + + ในการเปลี่ยนจำนวน token ที่ใช้ คุณสามารถใช้พารามิเตอร์ `max_tokens` ตัวอย่างเช่น หากคุณต้องการใช้ 100 token คุณจะตั้งค่าได้ดังนี้: + + ```python + completion = client.chat.completions.create(model=deployment, messages=messages, max_tokens=100) + ``` + +- **ทดลองปรับค่า temperature** Temperature เป็นสิ่งที่เรายังไม่ได้พูดถึง แต่มีความสำคัญต่อการทำงานของโปรแกรมเรา ค่า temperature ที่สูงขึ้นจะทำให้ผลลัพธ์มีความสุ่มมากขึ้น ในทางกลับกัน ค่า temperature ที่ต่ำลงจะทำให้ผลลัพธ์มีความคาดเดาได้มากขึ้น ลองพิจารณาว่าคุณต้องการความหลากหลายในผลลัพธ์หรือไม่ + + ในการปรับค่า temperature คุณสามารถใช้พารามิเตอร์ `temperature` ตัวอย่างเช่น หากคุณต้องการใช้ค่า temperature เป็น 0.5 คุณจะตั้งค่าได้ดังนี้: + + ```python + completion = client.chat.completions.create(model=deployment, messages=messages, temperature=0.5) + ``` + + > หมายเหตุ ค่า temperature ที่ใกล้ 1.0 จะทำให้ผลลัพธ์มีความหลากหลายมากขึ้น + +## งานที่ได้รับมอบหมาย + +สำหรับงานนี้ คุณสามารถเลือกสิ่งที่ต้องการสร้างได้ + +นี่คือตัวอย่างบางส่วน: + +- ปรับปรุงแอปสร้างสูตรอาหารให้ดียิ่งขึ้น ลองปรับค่า temperature และ prompt เพื่อดูว่าคุณสามารถสร้างอะไรได้บ้าง +- สร้าง "เพื่อนช่วยเรียน" แอปนี้ควรสามารถตอบคำถามเกี่ยวกับหัวข้อ เช่น Python คุณสามารถมี prompt เช่น "หัวข้อหนึ่งใน Python คืออะไร?" หรือคุณสามารถมี prompt ที่บอกว่า แสดงโค้ดสำหรับหัวข้อหนึ่ง เป็นต้น +- บอทประวัติศาสตร์ ทำให้ประวัติศาสตร์มีชีวิตชีวา สั่งให้บอทเล่นเป็นตัวละครในประวัติศาสตร์และถามคำถามเกี่ยวกับชีวิตและยุคสมัยของตัวละครนั้น + +## วิธีแก้ปัญหา + +### เพื่อนช่วยเรียน + +ด้านล่างนี้คือ prompt เริ่มต้น ลองดูว่าคุณสามารถใช้และปรับแต่งให้เหมาะกับคุณได้อย่างไร + +```text +- "You're an expert on the Python language + + Suggest a beginner lesson for Python in the following format: + + Format: + - concepts: + - brief explanation of the lesson: + - exercise in code with solutions" +``` + +### บอทประวัติศาสตร์ + +นี่คือตัวอย่าง prompt ที่คุณสามารถใช้ได้: + +```text +- "You are Abe Lincoln, tell me about yourself in 3 sentences, and respond using grammar and words like Abe would have used" +- "You are Abe Lincoln, respond using grammar and words like Abe would have used: + + Tell me about your greatest accomplishments, in 300 words" +``` + +## ทดสอบความรู้ + +Temperature มีผลต่ออะไร? + +1. ควบคุมความสุ่มของผลลัพธ์ +1. ควบคุมขนาดของการตอบกลับ +1. ควบคุมจำนวน token ที่ใช้ + +## 🚀 ความท้าทาย + +เมื่อทำงานในงานที่ได้รับมอบหมาย ลองปรับค่า temperature โดยตั้งค่าเป็น 0, 0.5 และ 1 จำไว้ว่าค่า 0 มีความหลากหลายน้อยที่สุด และค่า 1 มีความหลากหลายมากที่สุด ค่าใดที่เหมาะสมที่สุดสำหรับแอปของคุณ? + +## ทำได้ดีมาก! เรียนรู้ต่อไป + +หลังจากจบบทเรียนนี้ ลองดู [Generative AI Learning collection](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) เพื่อเพิ่มพูนความรู้เกี่ยวกับ Generative AI ของคุณ! + +ไปที่บทเรียนที่ 7 ซึ่งเราจะเรียนรู้วิธี [สร้างแอปพลิเคชันแชท](../07-building-chat-applications/README.md?WT.mc_id=academic-105485-koreyst)! + +--- + +**ข้อจำกัดความรับผิดชอบ**: +เอกสารนี้ได้รับการแปลโดยใช้บริการแปลภาษา AI [Co-op Translator](https://github.com/Azure/co-op-translator) แม้ว่าเราจะพยายามให้การแปลมีความถูกต้อง แต่โปรดทราบว่าการแปลอัตโนมัติอาจมีข้อผิดพลาดหรือความไม่ถูกต้อง เอกสารต้นฉบับในภาษาดั้งเดิมควรถือเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลที่สำคัญ ขอแนะนำให้ใช้บริการแปลภาษามนุษย์ที่มีความเชี่ยวชาญ เราไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความผิดที่เกิดจากการใช้การแปลนี้ \ No newline at end of file diff --git a/translations/th/07-building-chat-applications/README.md b/translations/th/07-building-chat-applications/README.md index b8d7e72e09..cb1ee6a62b 100644 --- a/translations/th/07-building-chat-applications/README.md +++ b/translations/th/07-building-chat-applications/README.md @@ -1,187 +1,173 @@ - -# การสร้างแอปแชทที่ขับเคลื่อนด้วย Generative AI - -[![การสร้างแอปแชทที่ขับเคลื่อนด้วย Generative AI](../../../translated_images/07-lesson-banner.a279b937f2843833fe28b4597f51bdef92d0ad03efee7ba52d0f166dea7574e5.th.png)](https://aka.ms/gen-ai-lessons7-gh?WT.mc_id=academic-105485-koreyst) - -> _(คลิกที่ภาพด้านบนเพื่อดูวิดีโอของบทเรียนนี้)_ - -ตอนนี้ที่เราได้เห็นวิธีการสร้างแอปที่สร้างข้อความอัตโนมัติแล้ว มาดูแอปแชทกันบ้าง - -แอปแชทได้กลายเป็นส่วนหนึ่งในชีวิตประจำวันของเรา ไม่ใช่แค่ช่องทางสำหรับการสนทนาแบบไม่เป็นทางการเท่านั้น แต่ยังเป็นส่วนสำคัญของการบริการลูกค้า การสนับสนุนทางเทคนิค และแม้แต่ระบบให้คำปรึกษาที่ซับซ้อน คุณอาจเพิ่งได้รับความช่วยเหลือจากแอปแชทเมื่อไม่นานมานี้ เมื่อเรานำเทคโนโลยีขั้นสูงอย่าง generative AI เข้ามาใช้ในแพลตฟอร์มเหล่านี้ ความซับซ้อนและความท้าทายก็เพิ่มขึ้นตามไปด้วย - -คำถามบางอย่างที่เราต้องตอบคือ: - -- **การสร้างแอป** เราจะสร้างและผสานรวมแอปที่ขับเคลื่อนด้วย AI เหล่านี้ให้เหมาะสมกับกรณีการใช้งานเฉพาะได้อย่างไร? -- **การติดตามผล** เมื่อแอปถูกนำไปใช้งานแล้ว เราจะติดตามและรับประกันได้อย่างไรว่าแอปทำงานได้อย่างมีคุณภาพสูงสุด ทั้งในแง่ของฟังก์ชันและการปฏิบัติตาม [หลักการหกประการของ AI ที่รับผิดชอบ](https://www.microsoft.com/ai/responsible-ai?WT.mc_id=academic-105485-koreyst)? - -เมื่อเราก้าวเข้าสู่ยุคที่ถูกกำหนดด้วยระบบอัตโนมัติและการโต้ตอบระหว่างมนุษย์กับเครื่องจักรอย่างไร้รอยต่อ การเข้าใจว่า generative AI เปลี่ยนแปลงขอบเขต ความลึก และความยืดหยุ่นของแอปแชทอย่างไรจึงเป็นสิ่งจำเป็น บทเรียนนี้จะสำรวจองค์ประกอบของสถาปัตยกรรมที่สนับสนุนระบบซับซ้อนเหล่านี้ เจาะลึกวิธีการปรับแต่งให้เหมาะกับงานเฉพาะด้าน และประเมินตัวชี้วัดและข้อพิจารณาที่เกี่ยวข้องกับการนำ AI มาใช้ในทางที่รับผิดชอบ - -## บทนำ - -บทเรียนนี้ครอบคลุม: - -- เทคนิคการสร้างและผสานรวมแอปแชทอย่างมีประสิทธิภาพ -- วิธีการปรับแต่งและ fine-tuning แอปพลิเคชัน -- กลยุทธ์และข้อพิจารณาในการติดตามแอปแชทอย่างมีประสิทธิผล - -## เป้าหมายการเรียนรู้ - -เมื่อจบบทเรียนนี้ คุณจะสามารถ: - -- อธิบายข้อควรพิจารณาในการสร้างและผสานรวมแอปแชทเข้ากับระบบที่มีอยู่ -- ปรับแต่งแอปแชทให้เหมาะกับกรณีการใช้งานเฉพาะ -- ระบุตัวชี้วัดและข้อพิจารณาที่สำคัญเพื่อการติดตามและรักษาคุณภาพของแอปแชทที่ขับเคลื่อนด้วย AI อย่างมีประสิทธิภาพ -- รับประกันว่าแอปแชทใช้ AI อย่างรับผิดชอบ - -## การผสาน Generative AI เข้ากับแอปแชท - -การยกระดับแอปแชทด้วย generative AI ไม่ได้หมายถึงแค่ทำให้แอปฉลาดขึ้นเท่านั้น แต่ยังเกี่ยวข้องกับการปรับสถาปัตยกรรม ประสิทธิภาพ และส่วนติดต่อผู้ใช้เพื่อมอบประสบการณ์ที่มีคุณภาพ ซึ่งรวมถึงการสำรวจพื้นฐานสถาปัตยกรรม การผสานรวม API และข้อควรพิจารณาด้านส่วนติดต่อผู้ใช้ ส่วนนี้มีเป้าหมายเพื่อมอบแผนที่ทางที่ครอบคลุมสำหรับการนำทางในภูมิทัศน์ที่ซับซ้อนเหล่านี้ ไม่ว่าคุณจะเชื่อมต่อกับระบบที่มีอยู่หรือสร้างเป็นแพลตฟอร์มแยกต่างหาก - -เมื่อจบส่วนนี้ คุณจะมีความเชี่ยวชาญในการสร้างและผสานรวมแอปแชทได้อย่างมีประสิทธิภาพ - -### แชทบอทหรือแอปแชท? - -ก่อนที่เราจะเริ่มสร้างแอปแชท มาดูความแตกต่างระหว่าง 'แชทบอท' กับ 'แอปแชทที่ขับเคลื่อนด้วย AI' ซึ่งมีบทบาทและฟังก์ชันที่แตกต่างกัน แชทบอทมีจุดประสงค์หลักเพื่อทำงานสนทนาอัตโนมัติในงานเฉพาะ เช่น ตอบคำถามที่พบบ่อย หรือการติดตามพัสดุ โดยมักจะถูกควบคุมด้วยตรรกะตามกฎหรืออัลกอริทึม AI ที่ซับซ้อน ในทางกลับกัน แอปแชทที่ขับเคลื่อนด้วย AI เป็นสภาพแวดล้อมที่กว้างขวางกว่า ออกแบบมาเพื่อสนับสนุนการสื่อสารดิจิทัลหลายรูปแบบ เช่น แชทข้อความ เสียง และวิดีโอระหว่างผู้ใช้มนุษย์ จุดเด่นคือการผสานรวมโมเดล generative AI ที่จำลองการสนทนาแบบมนุษย์อย่างละเอียดอ่อน สร้างคำตอบจากข้อมูลป้อนเข้าและบริบทที่หลากหลาย แอปแชทที่ขับเคลื่อนด้วย generative AI สามารถสนทนาในหัวข้อทั่วไป ปรับตัวตามบริบทที่เปลี่ยนแปลง และแม้แต่สร้างบทสนทนาที่สร้างสรรค์หรือซับซ้อนได้ - -ตารางด้านล่างแสดงความแตกต่างและความเหมือนที่สำคัญเพื่อช่วยให้เราเข้าใจบทบาทเฉพาะของแต่ละประเภทในการสื่อสารดิจิทัล - -| แชทบอท | แอปแชทที่ขับเคลื่อนด้วย Generative AI | -| ----------------------------------- | ----------------------------------------------- | -| มุ่งเน้นงานเฉพาะและใช้กฎควบคุม | ตระหนักถึงบริบท | -| มักถูกรวมเข้ากับระบบขนาดใหญ่ | อาจรองรับแชทบอทหนึ่งหรือหลายตัว | -| จำกัดเฉพาะฟังก์ชันที่ตั้งโปรแกรมไว้ | ผสานรวมโมเดล generative AI | -| การโต้ตอบเฉพาะทางและมีโครงสร้าง | สามารถสนทนาในหัวข้อทั่วไปได้ | - -### ใช้ฟังก์ชันที่สร้างไว้ล่วงหน้าด้วย SDK และ API - -เมื่อสร้างแอปแชท ขั้นตอนแรกที่ดีคือประเมินสิ่งที่มีอยู่แล้ว การใช้ SDK และ API ในการสร้างแอปแชทเป็นกลยุทธ์ที่ได้เปรียบด้วยเหตุผลหลายประการ การผสานรวม SDK และ API ที่มีเอกสารครบถ้วนช่วยวางตำแหน่งแอปของคุณให้ประสบความสำเร็จในระยะยาว พร้อมรองรับการขยายตัวและการบำรุงรักษา - -- **เร่งกระบวนการพัฒนาและลดภาระงาน**: การใช้ฟังก์ชันที่สร้างไว้แล้วแทนการสร้างเองตั้งแต่ต้นช่วยให้คุณมุ่งเน้นไปที่ส่วนอื่นของแอปที่สำคัญกว่า เช่น ตรรกะทางธุรกิจ -- **ประสิทธิภาพที่ดีกว่า**: เมื่อสร้างฟังก์ชันเอง คุณอาจสงสัยว่า "ระบบจะรองรับผู้ใช้จำนวนมากได้อย่างไร?" SDK และ API ที่ดูแลอย่างดีมักมีวิธีแก้ปัญหาเหล่านี้ในตัว -- **การบำรุงรักษาง่ายขึ้น**: การอัปเดตและปรับปรุงทำได้ง่าย เพราะส่วนใหญ่แค่ต้องอัปเดตไลบรารีเมื่อมีเวอร์ชันใหม่ -- **เข้าถึงเทคโนโลยีล้ำสมัย**: การใช้โมเดลที่ผ่านการปรับแต่งและฝึกฝนด้วยชุดข้อมูลขนาดใหญ่ช่วยให้แอปของคุณมีความสามารถด้านภาษาธรรมชาติ - -การเข้าถึงฟังก์ชันของ SDK หรือ API มักต้องได้รับอนุญาตผ่านคีย์เฉพาะหรือโทเค็นยืนยันตัวตน เราจะใช้ OpenAI Python Library เพื่อดูตัวอย่าง คุณยังสามารถทดลองด้วยตัวเองใน [notebook สำหรับ OpenAI](python/oai-assignment.ipynb) หรือ [notebook สำหรับ Azure OpenAI Services](python/aoai-assignment.ipynb) สำหรับบทเรียนนี้ - -```python -import os -from openai import OpenAI - -API_KEY = os.getenv("OPENAI_API_KEY","") - -client = OpenAI( - api_key=API_KEY - ) - -chat_completion = client.chat.completions.create(model="gpt-3.5-turbo", messages=[{"role": "user", "content": "Suggest two titles for an instructional lesson on chat applications for generative AI."}]) -``` - -ตัวอย่างข้างต้นใช้โมเดล GPT-3.5 Turbo ในการตอบคำถาม แต่สังเกตว่าคีย์ API ต้องถูกตั้งค่าก่อน หากไม่ตั้งค่าคีย์จะเกิดข้อผิดพลาด - -## ประสบการณ์ผู้ใช้ (UX) - -หลักการ UX ทั่วไปใช้กับแอปแชทได้ แต่มีข้อควรพิจารณาเพิ่มเติมที่สำคัญเนื่องจากส่วนประกอบของ machine learning ที่เกี่ยวข้อง - -- **กลไกจัดการความกำกวม**: โมเดล generative AI บางครั้งสร้างคำตอบที่กำกวม ฟีเจอร์ที่ให้ผู้ใช้ขอคำชี้แจงจะช่วยได้เมื่อเจอปัญหานี้ -- **การเก็บบริบท**: โมเดล generative AI ขั้นสูงสามารถจดจำบริบทในบทสนทนาได้ ซึ่งเป็นประโยชน์ต่อประสบการณ์ผู้ใช้ การให้ผู้ใช้ควบคุมและจัดการบริบทช่วยเพิ่มประสบการณ์ แต่ก็มีความเสี่ยงในการเก็บข้อมูลส่วนตัว ควรพิจารณาระยะเวลาการเก็บข้อมูล เช่น การกำหนดนโยบายการเก็บรักษา เพื่อสร้างสมดุลระหว่างบริบทและความเป็นส่วนตัว -- **การปรับแต่งเฉพาะบุคคล**: ด้วยความสามารถในการเรียนรู้และปรับตัว โมเดล AI มอบประสบการณ์ที่เหมาะกับแต่ละบุคคล การปรับแต่งผ่านฟีเจอร์อย่างโปรไฟล์ผู้ใช้ไม่เพียงทำให้ผู้ใช้รู้สึกว่าเข้าใจ แต่ยังช่วยให้ค้นหาคำตอบได้รวดเร็วและมีประสิทธิภาพมากขึ้น - -ตัวอย่างหนึ่งของการปรับแต่งคือการตั้งค่า "Custom instructions" ใน ChatGPT ของ OpenAI ที่ให้คุณระบุข้อมูลเกี่ยวกับตัวเองซึ่งอาจเป็นบริบทสำคัญสำหรับคำถาม นี่คือตัวอย่างคำสั่งปรับแต่ง - -![การตั้งค่า Custom Instructions ใน ChatGPT](../../../translated_images/custom-instructions.b96f59aa69356fcfed456414221919e8996f93c90c20d0d58d1bc0221e3c909f.th.png) - -โปรไฟล์นี้กระตุ้นให้ ChatGPT สร้างแผนการสอนเกี่ยวกับ linked lists สังเกตว่า ChatGPT พิจารณาว่าผู้ใช้ต้องการแผนการสอนที่ลึกซึ้งขึ้นตามประสบการณ์ของเธอ - -![คำสั่งใน ChatGPT สำหรับแผนการสอนเกี่ยวกับ linked lists](../../../translated_images/lesson-plan-prompt.cc47c488cf1343df5d67aa796a1acabca32c380e5b782971e289f6ab8b21cf5a.th.png) - -### กรอบการทำงาน System Message ของ Microsoft สำหรับ Large Language Models - -[Microsoft ได้ให้คำแนะนำ](https://learn.microsoft.com/azure/ai-services/openai/concepts/system-message#define-the-models-output-format?WT.mc_id=academic-105485-koreyst) ในการเขียนข้อความระบบที่มีประสิทธิภาพสำหรับการสร้างคำตอบจาก LLMs โดยแบ่งออกเป็น 4 ด้าน: - -1. กำหนดว่าโมเดลนี้สำหรับใคร รวมถึงความสามารถและข้อจำกัด -2. กำหนดรูปแบบผลลัพธ์ของโมเดล -3. ให้ตัวอย่างเฉพาะที่แสดงพฤติกรรมที่ต้องการของโมเดล -4. ให้แนวทางควบคุมพฤติกรรมเพิ่มเติม - -### การเข้าถึง (Accessibility) - -ไม่ว่าผู้ใช้จะมีความบกพร่องทางสายตา การได้ยิน การเคลื่อนไหว หรือการรับรู้ แอปแชทที่ออกแบบมาอย่างดีควรใช้งานได้สำหรับทุกคน รายการต่อไปนี้แสดงฟีเจอร์เฉพาะที่ช่วยเพิ่มการเข้าถึงสำหรับความบกพร่องต่างๆ - -- **ฟีเจอร์สำหรับผู้บกพร่องทางสายตา**: ธีมความคมชัดสูงและข้อความปรับขนาดได้, รองรับโปรแกรมอ่านหน้าจอ -- **ฟีเจอร์สำหรับผู้บกพร่องทางการได้ยิน**: ฟังก์ชันแปลงข้อความเป็นเสียงและเสียงเป็นข้อความ, สัญญาณภาพสำหรับการแจ้งเตือนเสียง -- **ฟีเจอร์สำหรับผู้บกพร่องทางการเคลื่อนไหว**: รองรับการนำทางด้วยคีย์บอร์ด, คำสั่งเสียง -- **ฟีเจอร์สำหรับผู้บกพร่องทางการรับรู้**: ตัวเลือกภาษาที่เรียบง่าย - -## การปรับแต่งและ Fine-tuning สำหรับโมเดลภาษาเฉพาะโดเมน - -ลองนึกภาพแอปแชทที่เข้าใจศัพท์เฉพาะของบริษัทคุณและคาดเดาคำถามที่ผู้ใช้มักถามได้ มีวิธีการหลักๆ ที่ควรกล่าวถึง: - -- **ใช้โมเดล DSL** โมเดล DSL คือโมเดลภาษาที่เฉพาะเจาะจงกับโดเมน คุณสามารถใช้โมเดล DSL ที่ถูกฝึกฝนในโดเมนเฉพาะเพื่อเข้าใจแนวคิดและสถานการณ์นั้นๆ -- **ปรับแต่งด้วย fine-tuning** Fine-tuning คือกระบวนการฝึกโมเดลเพิ่มเติมด้วยข้อมูลเฉพาะ - -## การปรับแต่ง: การใช้ DSL - -การใช้โมเดลภาษาเฉพาะโดเมน (DSL Models) ช่วยเพิ่มการมีส่วนร่วมของผู้ใช้ด้วยการให้การโต้ตอบที่เฉพาะเจาะจงและเกี่ยวข้องกับบริบท โมเดลนี้ถูกฝึกหรือปรับแต่งให้เข้าใจและสร้างข้อความที่เกี่ยวข้องกับสาขา อุตสาหกรรม หรือหัวข้อเฉพาะ ตัวเลือกในการใช้โมเดล DSL มีตั้งแต่การฝึกใหม่ตั้งแต่ต้น ไปจนถึงการใช้โมเดลที่มีอยู่แล้วผ่าน SDK และ API อีกทางเลือกคือการ fine-tuning ซึ่งเป็นการนำโมเดลที่ผ่านการฝึกมาแล้วมาปรับให้เหมาะกับโดเมนเฉพาะ - -## การปรับแต่ง: การทำ fine-tuning - -การทำ fine-tuning มักถูกพิจารณาเมื่อโมเดลที่ผ่านการฝึกมาแล้วไม่เพียงพอในโดเมนเฉพาะหรือภารกิจเฉพาะ - -ตัวอย่างเช่น คำถามทางการแพทย์มีความซับซ้อนและต้องการบริบทมาก เมื่อแพทย์วินิจฉัยผู้ป่วย จะพิจารณาปัจจัยหลายอย่าง เช่น ไลฟ์สไตล์ หรือโรคประจำตัว และอาจอ้างอิงวารสารทางการแพทย์ล่าสุด ในสถานการณ์ละเอียดอ่อนเช่นนี้ แอปแชท AI ทั่วไปไม่สามารถเป็นแหล่งข้อมูลที่เชื่อถือได้ - -### กรณีศึกษา: แอปทางการแพทย์ - -ลองพิจารณาแอปแชทที่ออกแบบมาเพื่อช่วยแพทย์โดยให้ข้อมูลอ้างอิงอย่างรวดเร็วเกี่ยวกับแนวทางการรักษา ปฏิกิริยาระหว่างยา หรือผลการวิจัยล่าสุด - -โมเดลทั่วไปอาจเพียงพอสำหรับตอบคำถามทางการแพทย์พื้นฐานหรือให้คำแนะนำทั่วไป แต่จะมีปัญหากับ: - -- **กรณีที่เฉพาะเจาะจงหรือซับซ้อนมาก** เช่น แพทย์ระบบประสาทอาจถามว่า "แนวทางปัจจุบันที่ดีที่สุดในการจัดการโรคลมชักที่ดื้อต่อยาในเด็กคืออะไร?" -- **ขาดความก้าวหน้าล่าสุด** โมเดลทั่วไปอาจไม่สามารถให้คำตอบที่อัปเดตซึ่งรวมความก้าวหน้าล่าสุดในระบบประสาทวิทยาและเภสัชวิทยาได้ - -ในกรณีเช่นนี้ การทำ fine-tuning ด้วยชุดข้อมูลทางการแพทย์เฉพาะทางจะช่วยเพิ่มความแม่นยำและความน่าเชื่อถือในการตอบคำถามที่ซับซ้อนเหล่านี้อย่างมาก ซึ่งต้องการชุดข้อมูลขนาดใหญ่และเกี่ยวข้องที่สะท้อนความท้าทายและคำถามเฉพาะโดเมน - -## ข้อพิจารณาสำหรับประสบการณ์แชทที่ขับเคลื่อนด้วย AI คุณภาพสูง - -ส่วนนี้สรุปเกณฑ์สำหรับแอปแชท "คุณภาพสูง" ซึ่งรวมถึงการเก็บตัวชี้วัดที่นำไปใช้ได้จริงและการปฏิบัติตามกรอบการทำงานที่ใช้ AI อย่างรับผิดชอบ - -### ตัวชี้วัดสำคัญ - -เพื่อรักษาประสิทธิภาพที่มีคุณภาพสูงของแอป จำเป็นต้องติดตามตัวชี้วัดและข้อพิจารณาที่สำคัญ ตัวชี้วัดเหล่านี้ไม่เพียงแต่รับประกันการทำงานของแอป แต่ยังประเมินคุณภาพของโมเดล AI และประสบการณ์ผู้ใช้ด้วย ด้านล่างนี้เป็นรายการตัวชี้วัดพื้นฐาน AI และ UX ที่ควรพิจารณา - -| ตัวชี้วัด | คำจำกัดความ | ข้อพิจารณาสำหรับนักพัฒนาแชท | -| ----------------------------- | -------------------------------------------------------------------------------------------------------------------- -| **การตรวจจับความผิดปกติ** | เครื่องมือและเทคนิคสำหรับการระบุรูปแบบที่ผิดปกติซึ่งไม่สอดคล้องกับพฤติกรรมที่คาดหวัง | คุณจะตอบสนองต่อความผิดปกติอย่างไร? | - -### การนำแนวปฏิบัติ AI ที่รับผิดชอบมาใช้ในแอปแชท - -แนวทางของ Microsoft ในการพัฒนา AI ที่รับผิดชอบได้กำหนดหลักการหกประการที่ควรใช้เป็นแนวทางในการพัฒนาและใช้งาน AI ด้านล่างนี้คือหลักการ ความหมาย และสิ่งที่นักพัฒนาแชทควรพิจารณา รวมถึงเหตุผลที่ควรให้ความสำคัญกับเรื่องเหล่านี้ - -| หลักการ | คำจำกัดความของ Microsoft | สิ่งที่นักพัฒนาแชทควรพิจารณา | เหตุใดจึงสำคัญ | -| ---------------------- | ----------------------------------------------------- | ---------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -| ความเป็นธรรม | ระบบ AI ควรปฏิบัติต่อทุกคนอย่างเท่าเทียม | ตรวจสอบให้แน่ใจว่าแอปแชทไม่เลือกปฏิบัติตามข้อมูลผู้ใช้ | เพื่อสร้างความไว้วางใจและความครอบคลุมในกลุ่มผู้ใช้; ป้องกันปัญหาทางกฎหมาย | -| ความน่าเชื่อถือและความปลอดภัย | ระบบ AI ควรทำงานได้อย่างน่าเชื่อถือและปลอดภัย | ดำเนินการทดสอบและมาตรการป้องกันความผิดพลาดเพื่อลดความเสี่ยง | เพื่อให้ผู้ใช้พึงพอใจและป้องกันอันตรายที่อาจเกิดขึ้น | -| ความเป็นส่วนตัวและความปลอดภัย | ระบบ AI ควรมีความปลอดภัยและเคารพความเป็นส่วนตัว | ใช้มาตรการเข้ารหัสที่เข้มงวดและปกป้องข้อมูลอย่างเข้มงวด | เพื่อปกป้องข้อมูลที่ละเอียดอ่อนของผู้ใช้และปฏิบัติตามกฎหมายความเป็นส่วนตัว | -| ความครอบคลุม | ระบบ AI ควรเสริมพลังและมีส่วนร่วมกับทุกคน | ออกแบบ UI/UX ให้เข้าถึงง่ายและใช้งานสะดวกสำหรับกลุ่มผู้ใช้หลากหลาย | เพื่อให้ผู้คนจำนวนมากขึ้นสามารถใช้งานแอปได้อย่างมีประสิทธิภาพ | -| ความโปร่งใส | ระบบ AI ควรเข้าใจได้ง่าย | จัดทำเอกสารและอธิบายเหตุผลเบื้องหลังคำตอบของ AI อย่างชัดเจน | ผู้ใช้จะไว้วางใจระบบมากขึ้นหากเข้าใจวิธีการตัดสินใจของระบบ | -| ความรับผิดชอบ | ผู้คนควรรับผิดชอบต่อระบบ AI | กำหนดกระบวนการตรวจสอบและปรับปรุงการตัดสินใจของ AI อย่างชัดเจน | ช่วยให้สามารถปรับปรุงและแก้ไขข้อผิดพลาดได้อย่างต่อเนื่อง | - -## การบ้าน - -ดูที่ [assignment](../../../07-building-chat-applications/python) ซึ่งจะพาคุณผ่านชุดแบบฝึกหัดตั้งแต่การรันคำสั่งแชทแรกของคุณ ไปจนถึงการจัดหมวดหมู่และสรุปข้อความ รวมถึงอื่นๆ สังเกตว่าแบบฝึกหัดมีให้เลือกในหลายภาษาโปรแกรม! - -## ทำได้ดีมาก! เดินหน้าต่อไป - -หลังจากเรียนบทนี้เสร็จแล้ว ลองดูที่ [คอลเลกชันการเรียนรู้ Generative AI](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) เพื่อพัฒนาความรู้ด้าน Generative AI ของคุณให้ก้าวหน้าขึ้น! - -ไปที่บทเรียนที่ 8 เพื่อดูวิธีเริ่มต้น [สร้างแอปค้นหา](../08-building-search-applications/README.md?WT.mc_id=academic-105485-koreyst)! - -**ข้อจำกัดความรับผิดชอบ**: -เอกสารนี้ได้รับการแปลโดยใช้บริการแปลภาษาอัตโนมัติ [Co-op Translator](https://github.com/Azure/co-op-translator) แม้เราจะพยายามให้ความถูกต้องสูงสุด แต่โปรดทราบว่าการแปลอัตโนมัติอาจมีข้อผิดพลาดหรือความไม่ถูกต้อง เอกสารต้นฉบับในภาษาต้นทางถือเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลที่สำคัญ ขอแนะนำให้ใช้บริการแปลโดยผู้เชี่ยวชาญมนุษย์ เราไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความผิดใด ๆ ที่เกิดจากการใช้การแปลนี้ \ No newline at end of file + +# การสร้างแอปพลิเคชันแชทที่ขับเคลื่อนด้วย Generative AI + +[![การสร้างแอปพลิเคชันแชทที่ขับเคลื่อนด้วย Generative AI](../../../translated_images/07-lesson-banner.a279b937f2843833fe28b4597f51bdef92d0ad03efee7ba52d0f166dea7574e5.th.png)](https://youtu.be/R9V0ZY1BEQo?si=IHuU-fS9YWT8s4sA) + +> _(คลิกที่ภาพด้านบนเพื่อดูวิดีโอของบทเรียนนี้)_ + +หลังจากที่เราได้เห็นวิธีการสร้างแอปพลิเคชันที่สร้างข้อความแล้ว มาดูแอปพลิเคชันแชทกันบ้าง + +แอปพลิเคชันแชทได้กลายเป็นส่วนหนึ่งในชีวิตประจำวันของเรา ไม่เพียงแค่เป็นช่องทางสำหรับการสนทนาแบบสบาย ๆ เท่านั้น แต่ยังเป็นส่วนสำคัญของการบริการลูกค้า การสนับสนุนทางเทคนิค และแม้กระทั่งระบบให้คำปรึกษาที่ซับซ้อน เป็นไปได้ว่าคุณอาจเคยได้รับความช่วยเหลือจากแอปพลิเคชันแชทไม่นานมานี้ เมื่อเราเริ่มผสมผสานเทคโนโลยีขั้นสูงอย่าง Generative AI เข้ากับแพลตฟอร์มเหล่านี้ ความซับซ้อนก็เพิ่มขึ้น รวมถึงความท้าทายต่าง ๆ ด้วย + +คำถามบางข้อที่เราต้องตอบคือ: + +- **การสร้างแอปพลิเคชัน** เราจะสร้างและผสมผสานแอปพลิเคชันที่ขับเคลื่อนด้วย AI เหล่านี้ให้เหมาะสมกับกรณีการใช้งานเฉพาะได้อย่างไร? +- **การตรวจสอบ** เมื่อแอปพลิเคชันถูกใช้งานแล้ว เราจะตรวจสอบและรับรองว่าแอปพลิเคชันทำงานด้วยคุณภาพสูงสุด ทั้งในแง่ของการทำงานและการปฏิบัติตาม [หลักการ 6 ข้อของ AI ที่มีความรับผิดชอบ](https://www.microsoft.com/ai/responsible-ai?WT.mc_id=academic-105485-koreyst) ได้อย่างไร? + +เมื่อเราเข้าสู่ยุคที่ถูกกำหนดโดยระบบอัตโนมัติและการโต้ตอบระหว่างมนุษย์กับเครื่องจักรที่ไร้รอยต่อ การทำความเข้าใจว่า Generative AI เปลี่ยนแปลงขอบเขต ความลึก และความสามารถในการปรับตัวของแอปพลิเคชันแชทอย่างไรนั้นกลายเป็นสิ่งสำคัญ บทเรียนนี้จะสำรวจแง่มุมของสถาปัตยกรรมที่สนับสนุนระบบที่ซับซ้อนเหล่านี้ เจาะลึกวิธีการปรับแต่งให้เหมาะสมกับงานเฉพาะด้าน และประเมินตัวชี้วัดและข้อพิจารณาที่เกี่ยวข้องเพื่อรับรองการใช้งาน AI อย่างมีความรับผิดชอบ + +## บทนำ + +บทเรียนนี้ครอบคลุม: + +- เทคนิคในการสร้างและผสมผสานแอปพลิเคชันแชทอย่างมีประสิทธิภาพ +- วิธีการปรับแต่งและปรับปรุงแอปพลิเคชัน +- กลยุทธ์และข้อพิจารณาในการตรวจสอบแอปพลิเคชันแชทอย่างมีประสิทธิภาพ + +## เป้าหมายการเรียนรู้ + +เมื่อจบบทเรียนนี้ คุณจะสามารถ: + +- อธิบายข้อพิจารณาในการสร้างและผสมผสานแอปพลิเคชันแชทเข้ากับระบบที่มีอยู่ +- ปรับแต่งแอปพลิเคชันแชทให้เหมาะสมกับกรณีการใช้งานเฉพาะ +- ระบุตัวชี้วัดสำคัญและข้อพิจารณาในการตรวจสอบและรักษาคุณภาพของแอปพลิเคชันแชทที่ขับเคลื่อนด้วย AI +- รับรองว่าแอปพลิเคชันแชทใช้ AI อย่างมีความรับผิดชอบ + +## การผสมผสาน Generative AI เข้ากับแอปพลิเคชันแชท + +การยกระดับแอปพลิเคชันแชทด้วย Generative AI ไม่ได้มุ่งเน้นแค่การทำให้ฉลาดขึ้นเท่านั้น แต่ยังเกี่ยวกับการปรับปรุงสถาปัตยกรรม ประสิทธิภาพ และส่วนติดต่อผู้ใช้เพื่อมอบประสบการณ์ที่มีคุณภาพแก่ผู้ใช้ สิ่งนี้เกี่ยวข้องกับการสำรวจพื้นฐานของสถาปัตยกรรม การผสมผสาน API และข้อพิจารณาเกี่ยวกับส่วนติดต่อผู้ใช้ ส่วนนี้มีเป้าหมายเพื่อให้คุณมีแผนที่นำทางที่ครอบคลุมสำหรับการนำทางในภูมิทัศน์ที่ซับซ้อนเหล่านี้ ไม่ว่าคุณจะผสมผสานเข้ากับระบบที่มีอยู่หรือสร้างเป็นแพลตฟอร์มแบบสแตนด์อโลน + +เมื่อจบส่วนนี้ คุณจะมีความเชี่ยวชาญที่จำเป็นในการสร้างและผสมผสานแอปพลิเคชันแชทอย่างมีประสิทธิภาพ + +### Chatbot หรือ แอปพลิเคชันแชท? + +ก่อนที่เราจะลงมือสร้างแอปพลิเคชันแชท มาดูความแตกต่างระหว่าง 'Chatbot' กับ 'แอปพลิเคชันแชทที่ขับเคลื่อนด้วย AI' ซึ่งมีบทบาทและฟังก์ชันที่แตกต่างกัน Chatbot มีวัตถุประสงค์หลักในการทำงานอัตโนมัติในงานสนทนาเฉพาะ เช่น การตอบคำถามที่พบบ่อยหรือการติดตามพัสดุ โดยมักจะถูกควบคุมด้วยตรรกะที่ตั้งกฎหรืออัลกอริทึม AI ที่ซับซ้อน ในทางกลับกัน แอปพลิเคชันแชทที่ขับเคลื่อนด้วย AI เป็นสภาพแวดล้อมที่กว้างขวางกว่า ซึ่งออกแบบมาเพื่ออำนวยความสะดวกในการสื่อสารดิจิทัลในรูปแบบต่าง ๆ เช่น การแชทด้วยข้อความ เสียง และวิดีโอระหว่างผู้ใช้มนุษย์ จุดเด่นของมันคือการผสมผสานโมเดล Generative AI ที่จำลองการสนทนาแบบมนุษย์ที่ละเอียดอ่อน สร้างคำตอบตามข้อมูลและบริบทที่หลากหลาย แอปพลิเคชันแชทที่ขับเคลื่อนด้วย Generative AI สามารถมีส่วนร่วมในการสนทนาแบบเปิด ปรับตัวให้เข้ากับบริบทการสนทนาที่เปลี่ยนแปลง และแม้กระทั่งสร้างบทสนทนาที่สร้างสรรค์หรือซับซ้อน + +ตารางด้านล่างแสดงความแตกต่างและความคล้ายคลึงกันเพื่อช่วยให้เราเข้าใจบทบาทเฉพาะของพวกมันในโลกดิจิทัล + +| Chatbot | แอปพลิเคชันแชทที่ขับเคลื่อนด้วย Generative AI | +| ------------------------------------- | ----------------------------------------------- | +| เน้นงานเฉพาะและใช้ตรรกะที่ตั้งกฎ | รับรู้บริบท | +| มักจะผสมผสานเข้ากับระบบขนาดใหญ่ | อาจมี Chatbot หนึ่งตัวหรือหลายตัว | +| จำกัดเฉพาะฟังก์ชันที่ตั้งโปรแกรมไว้ | ผสมผสานโมเดล Generative AI | +| การโต้ตอบที่มีโครงสร้างและเฉพาะเจาะจง | สามารถสนทนาแบบเปิดได้ | + +### การใช้ฟังก์ชันที่สร้างไว้ล่วงหน้าด้วย SDKs และ APIs + +เมื่อสร้างแอปพลิเคชันแชท ขั้นตอนแรกที่ดีคือการประเมินสิ่งที่มีอยู่แล้ว การใช้ SDKs และ APIs ในการสร้างแอปพลิเคชันแชทเป็นกลยุทธ์ที่มีข้อดีหลายประการ การผสมผสาน SDKs และ APIs ที่มีเอกสารประกอบดีช่วยให้คุณวางตำแหน่งแอปพลิเคชันของคุณสำหรับความสำเร็จในระยะยาว และแก้ไขปัญหาเกี่ยวกับการขยายตัวและการบำรุงรักษา + +- **เร่งกระบวนการพัฒนาและลดค่าใช้จ่าย**: การใช้ฟังก์ชันที่สร้างไว้ล่วงหน้าแทนที่จะสร้างเองช่วยให้คุณสามารถมุ่งเน้นไปที่ส่วนอื่น ๆ ของแอปพลิเคชันที่สำคัญกว่า เช่น ตรรกะทางธุรกิจ +- **ประสิทธิภาพที่ดีขึ้น**: เมื่อสร้างฟังก์ชันจากศูนย์ คุณจะต้องถามตัวเองว่า "มันจะขยายตัวได้อย่างไร? แอปพลิเคชันนี้สามารถรองรับการเพิ่มขึ้นของผู้ใช้ได้หรือไม่?" SDK และ API ที่ได้รับการดูแลรักษาอย่างดีมักมีโซลูชันในตัวสำหรับข้อกังวลเหล่านี้ +- **การบำรุงรักษาที่ง่ายขึ้น**: การอัปเดตและปรับปรุงทำได้ง่ายขึ้น เนื่องจาก API และ SDK ส่วนใหญ่เพียงแค่ต้องอัปเดตไลบรารีเมื่อมีเวอร์ชันใหม่ออกมา +- **การเข้าถึงเทคโนโลยีล้ำสมัย**: การใช้โมเดลที่ได้รับการปรับแต่งและฝึกฝนด้วยชุดข้อมูลที่ครอบคลุมช่วยให้แอปพลิเคชันของคุณมีความสามารถด้านภาษาธรรมชาติ + +การเข้าถึงฟังก์ชันของ SDK หรือ API มักเกี่ยวข้องกับการขออนุญาตใช้บริการที่มีให้ ซึ่งมักจะผ่านการใช้คีย์หรือโทเค็นการตรวจสอบสิทธิ์เฉพาะ เราจะใช้ OpenAI Python Library เพื่อสำรวจว่ามันเป็นอย่างไร คุณสามารถลองใช้ด้วยตัวเองใน [notebook สำหรับ OpenAI](./python/oai-assignment.ipynb?WT.mc_id=academic-105485-koreyst) หรือ [notebook สำหรับ Azure OpenAI Services](./python/aoai-assignment.ipynb?WT.mc_id=academic-105485-koreys) สำหรับบทเรียนนี้ + +```python +import os +from openai import OpenAI + +API_KEY = os.getenv("OPENAI_API_KEY","") + +client = OpenAI( + api_key=API_KEY + ) + +chat_completion = client.chat.completions.create(model="gpt-3.5-turbo", messages=[{"role": "user", "content": "Suggest two titles for an instructional lesson on chat applications for generative AI."}]) +``` + +ตัวอย่างด้านบนใช้โมเดล GPT-3.5 Turbo เพื่อทำการเติมข้อความใน prompt แต่สังเกตว่าคีย์ API ถูกตั้งค่าก่อนที่จะทำเช่นนั้น คุณจะได้รับข้อผิดพลาดหากไม่ได้ตั้งค่าคีย์ + +## ประสบการณ์ผู้ใช้ (UX) + +หลักการ UX ทั่วไปสามารถนำไปใช้กับแอปพลิเคชันแชทได้ แต่มีข้อพิจารณาเพิ่มเติมที่สำคัญเนื่องจากส่วนประกอบการเรียนรู้ของเครื่องที่เกี่ยวข้อง + +- **กลไกสำหรับการแก้ไขความคลุมเครือ**: โมเดล Generative AI บางครั้งสร้างคำตอบที่คลุมเครือ ฟีเจอร์ที่ช่วยให้ผู้ใช้สามารถขอคำชี้แจงได้อาจมีประโยชน์หากพวกเขาพบปัญหานี้ +- **การเก็บบริบท**: โมเดล Generative AI ขั้นสูงมีความสามารถในการจดจำบริบทภายในการสนทนา ซึ่งอาจเป็นทรัพย์สินที่จำเป็นต่อประสบการณ์ผู้ใช้ การให้ผู้ใช้สามารถควบคุมและจัดการบริบทช่วยปรับปรุงประสบการณ์ผู้ใช้ แต่ก็เพิ่มความเสี่ยงในการเก็บข้อมูลที่ละเอียดอ่อนของผู้ใช้ ข้อพิจารณาเกี่ยวกับระยะเวลาที่ข้อมูลนี้ถูกเก็บไว้ เช่น การแนะนำการเก็บรักษาข้อมูล สามารถสร้างสมดุลระหว่างความต้องการบริบทกับความเป็นส่วนตัว +- **การปรับแต่ง**: ด้วยความสามารถในการเรียนรู้และปรับตัว โมเดล AI เสนอประสบการณ์ที่ปรับแต่งเฉพาะสำหรับผู้ใช้ การปรับแต่งประสบการณ์ผู้ใช้ผ่านฟีเจอร์อย่างโปรไฟล์ผู้ใช้ไม่เพียงแต่ทำให้ผู้ใช้รู้สึกว่าได้รับการเข้าใจ แต่ยังช่วยให้พวกเขาค้นหาคำตอบเฉพาะได้อย่างมีประสิทธิภาพและน่าพึงพอใจมากขึ้น + +ตัวอย่างหนึ่งของการปรับแต่งคือการตั้งค่า "Custom instructions" ใน ChatGPT ของ OpenAI ซึ่งช่วยให้คุณสามารถให้ข้อมูลเกี่ยวกับตัวคุณเองที่อาจเป็นบริบทสำคัญสำหรับ prompt ของคุณ นี่คือตัวอย่างของการตั้งค่า custom instruction + +![การตั้งค่า Custom Instructions ใน ChatGPT](../../../translated_images/custom-instructions.b96f59aa69356fcfed456414221919e8996f93c90c20d0d58d1bc0221e3c909f.th.png) + +โปรไฟล์นี้ช่วยให้ ChatGPT สร้างแผนการสอนเกี่ยวกับ linked lists สังเกตว่า ChatGPT คำนึงถึงว่าผู้ใช้อาจต้องการแผนการสอนที่ลึกซึ้งขึ้นตามประสบการณ์ของเธอ + +![Prompt ใน ChatGPT สำหรับแผนการสอนเกี่ยวกับ linked lists](../../../translated_images/lesson-plan-prompt.cc47c488cf1343df5d67aa796a1acabca32c380e5b782971e289f6ab8b21cf5a.th.png) + +### Framework ข้อความระบบของ Microsoft สำหรับโมเดลภาษาขนาดใหญ่ + +[Microsoft ได้ให้คำแนะนำ](https://learn.microsoft.com/azure/ai-services/openai/concepts/system-message#define-the-models-output-format?WT.mc_id=academic-105485-koreyst) สำหรับการเขียนข้อความระบบที่มีประสิทธิภาพเมื่อสร้างคำตอบจาก LLM โดยแบ่งออกเป็น 4 ด้าน: + +1. กำหนดว่าโมเดลนี้สำหรับใคร รวมถึงความสามารถและข้อจำกัดของมัน +2. กำหนดรูปแบบผลลัพธ์ของโมเดล +3. ให้ตัวอย่างเฉพาะที่แสดงพฤติกรรมที่ตั้งใจของโมเดล +4. ให้ข้อจำกัดเพิ่มเติมเกี่ยวกับพฤติกรรม + +### การเข้าถึง + +ไม่ว่าผู้ใช้จะมีความบกพร่องทางการมองเห็น การได้ยิน การเคลื่อนไหว หรือการรับรู้ แอปพลิเคชันแชทที่ออกแบบมาอย่างดีควรใช้งานได้สำหรับทุกคน รายการต่อไปนี้แบ่งฟีเจอร์เฉพาะที่มุ่งเน้นการเพิ่มการเข้าถึงสำหรับผู้ใช้ที่มีความบกพร่องต่าง ๆ + +- **ฟีเจอร์สำหรับผู้ที่มีความบกพร่องทางการมองเห็น**: ธีมที่มีความคมชัดสูงและข้อความที่ปรับขนาดได้ ความเข้ากันได้กับโปรแกรมอ่านหน้าจอ +- **ฟีเจอร์สำหรับผู้ที่มีความบกพร่องทางการได้ยิน**: ฟังก์ชันแปลงข้อความเป็นเสียงและเสียงเป็นข้อความ สัญญาณภาพสำหรับการแจ้งเตือนเสียง +- **ฟีเจอร์สำหรับผู้ที่มีความบกพร่องทางการเคลื่อนไหว**: การสนับสนุนการนำทางด้วยแป้นพิมพ์ คำสั่งเสียง +- **ฟีเจอร์สำหรับผู้ที่มีความบกพร่องทางการรับรู้**: ตัวเลือกภาษาที่เรียบง่าย + +## การปรับแต่งและการปรับปรุงสำหรับโมเดลภาษาที่เฉพาะเจาะจงในโดเมน + +ลองจินตนาการถึงแอปพลิเคชันแชทที่เข้าใจศัพท์เฉพาะของบริษัทของคุณและคาดการณ์คำถามเฉพาะที่ฐานผู้ใช้ของมันมักมี มีวิธีการสองสามอย่างที่ควรกล่าวถึง: + +- **การใช้โมเดล DSL** DSL ย่อมาจาก domain specific language คุณสามารถใช้โมเดล DSL ที่ได้รับการฝึกฝนในโดเมนเฉพาะเพื่อเข้าใจแนวคิดและสถานการณ์ของมัน +- **การปรับปรุงโมเดล** การปรับปรุงโมเดลคือกระบวนการฝึกฝนเพิ่มเติมด้วยข้อมูลเฉพาะ + +## การปรับแต่ง: การใช้โมเดล DSL + +การใช้โมเดลภาษาที่เฉพาะเจาะจงในโดเมน (DSL Models) สามารถเพิ่มการมีส่วนร่วมของผู้ใช้โดยการให้การโต้ตอบที่มีความเชี่ยวชาญและเกี่ยวข้องกับบริบท เป็นโมเดลที่ได้รับการฝึกฝนหรือปรับปรุงเพื่อเข้าใจและสร้างข้อความที่เกี่ยวข้องกับสาขา อุตสาหกรรม หรือหัวข้อเฉพาะ ตัวเลือกสำหรับการใช้โมเดล DSL อาจแตกต่างกันไปตั้งแต่การฝึกฝนใหม่ไปจนถึงการใช้โมเดลที่มีอยู่ผ่าน SDKs และ APIs อีกตัวเลือกหนึ่งคือการปรับปรุงโมเดล ซึ่งเกี่ยวข้องกับการนำโมเดลที่ได้รับการฝึกฝนล่วงหน้าและปรับให้เหมาะสมกับโดเมนเฉพาะ + +## การปรับแต่ง: การปรับปรุงโมเดล + +การปรับปรุงโมเดลมักถูกพิจารณาเมื่อโมเดลที่ได้รับการฝึกฝนล่วงหน้าขาดความสามารถในโดเมนเฉพาะหรือภารกิจเฉพาะ + +ตัวอย่างเช่น คำถามทางการแพทย์มีความซับซ้อนและต้องการบริบทมากมาย เมื่อผู้เชี่ยวชาญทางการแพทย์วินิจฉัยผู้ป่วย พวกเขาจะพิจารณาปัจจัยหลากหลาย เช่น วิถีชีวิตหรือโรคประจำตัว และอาจต้องพึ่งพาวารสารทางการแพทย์ล่าสุดเพื่อยืนยันการวินิจฉัยของพวกเขา ในสถานการณ์ที่ละเอียดอ่อนเช่นนี้ แอปพลิเคชันแชท AI ทั่วไปไม่สามารถเป็นแหล่งข้อมูลที่เชื่อถือได้ + +### สถานการณ์: แอปพลิเคชันทางการแพทย์ + +ลองพิจารณาแอปพลิเคชันแชทที่ออกแบบมาเพื่อช่วยผู้ปฏิบัติงานทางการแพทย์โดยให้ข้อมูลอ้างอิงอย่างรวดเร็วเกี่ยวกับแนวทางการรักษา ปฏิกิริยายา หรือผลการวิจัยล่าสุด + +โมเดลทั่วไปอาจเพียงพอสำหรับการตอบคำถามทางการแพทย์ +| **การตรวจจับความผิดปกติ** | เครื่องมือและเทคนิคสำหรับการระบุรูปแบบที่ผิดปกติซึ่งไม่สอดคล้องกับพฤติกรรมที่คาดหวัง | คุณจะตอบสนองต่อความผิดปกติอย่างไร? | + +### การนำแนวปฏิบัติ AI ที่รับผิดชอบมาใช้ในแอปพลิเคชันแชท + +แนวทางของ Microsoft ในการพัฒนา AI ที่รับผิดชอบได้ระบุหลักการ 6 ข้อที่ควรใช้เป็นแนวทางในการพัฒนาและใช้งาน AI ด้านล่างนี้คือหลักการ คำจำกัดความ และสิ่งที่นักพัฒนาแอปแชทควรพิจารณา รวมถึงเหตุผลที่ควรให้ความสำคัญ + +| หลักการ | คำจำกัดความของ Microsoft | สิ่งที่นักพัฒนาแอปแชทควรพิจารณา | เหตุผลที่สำคัญ | +| ---------------------- | ----------------------------------------------------- | ---------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | +| ความเป็นธรรม | ระบบ AI ควรปฏิบัติต่อทุกคนอย่างเป็นธรรม. | ตรวจสอบให้แน่ใจว่าแอปแชทไม่เลือกปฏิบัติตามข้อมูลผู้ใช้. | เพื่อสร้างความไว้วางใจและความครอบคลุมในหมู่ผู้ใช้; หลีกเลี่ยงผลกระทบทางกฎหมาย. | +| ความน่าเชื่อถือและความปลอดภัย | ระบบ AI ควรทำงานอย่างน่าเชื่อถือและปลอดภัย. | ใช้การทดสอบและมาตรการป้องกันเพื่อลดข้อผิดพลาดและความเสี่ยง. | เพื่อให้ผู้ใช้พึงพอใจและป้องกันอันตรายที่อาจเกิดขึ้น. | +| ความเป็นส่วนตัวและความปลอดภัย | ระบบ AI ควรมีความปลอดภัยและเคารพความเป็นส่วนตัว. | ใช้มาตรการเข้ารหัสและการปกป้องข้อมูลที่แข็งแกร่ง. | เพื่อปกป้องข้อมูลที่ละเอียดอ่อนของผู้ใช้และปฏิบัติตามกฎหมายความเป็นส่วนตัว. | +| ความครอบคลุม | ระบบ AI ควรส่งเสริมและมีส่วนร่วมกับทุกคน. | ออกแบบ UI/UX ที่เข้าถึงได้และใช้งานง่ายสำหรับกลุ่มผู้ใช้ที่หลากหลาย. | เพื่อให้คนหลากหลายสามารถใช้งานแอปพลิเคชันได้อย่างมีประสิทธิภาพ. | +| ความโปร่งใส | ระบบ AI ควรเข้าใจได้ง่าย. | จัดทำเอกสารและเหตุผลที่ชัดเจนสำหรับการตอบสนองของ AI. | ผู้ใช้มีแนวโน้มที่จะไว้วางใจระบบมากขึ้นหากพวกเขาเข้าใจวิธีการตัดสินใจ. | +| ความรับผิดชอบ | คนควรรับผิดชอบต่อระบบ AI. | สร้างกระบวนการที่ชัดเจนสำหรับการตรวจสอบและปรับปรุงการตัดสินใจของ AI. | ช่วยให้มีการปรับปรุงอย่างต่อเนื่องและแก้ไขข้อผิดพลาดในกรณีที่เกิดปัญหา. | + +## งานที่ได้รับมอบหมาย + +ดู [งานที่ได้รับมอบหมาย](../../../07-building-chat-applications/python). งานนี้จะนำคุณผ่านชุดของแบบฝึกหัดตั้งแต่การเริ่มต้นใช้งานคำสั่งแชทแรกของคุณ ไปจนถึงการจัดประเภทและสรุปข้อความ และอื่นๆ อีกมากมาย โปรดทราบว่าแบบฝึกหัดมีให้ในภาษาการเขียนโปรแกรมที่หลากหลาย! + +## ทำได้ดีมาก! เดินหน้าต่อไป + +หลังจากจบบทเรียนนี้ ลองดู [คอลเลกชันการเรียนรู้ Generative AI](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) เพื่อเพิ่มพูนความรู้เกี่ยวกับ Generative AI ของคุณ! + +ไปที่บทเรียนที่ 8 เพื่อดูวิธีที่คุณสามารถเริ่มต้น [สร้างแอปพลิเคชันการค้นหา](../08-building-search-applications/README.md?WT.mc_id=academic-105485-koreyst)! + +--- + +**ข้อจำกัดความรับผิดชอบ**: +เอกสารนี้ได้รับการแปลโดยใช้บริการแปลภาษา AI [Co-op Translator](https://github.com/Azure/co-op-translator) แม้ว่าเราจะพยายามให้การแปลมีความถูกต้อง แต่โปรดทราบว่าการแปลโดยอัตโนมัติอาจมีข้อผิดพลาดหรือความไม่ถูกต้อง เอกสารต้นฉบับในภาษาดั้งเดิมควรถือเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลที่สำคัญ ขอแนะนำให้ใช้บริการแปลภาษามืออาชีพ เราไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความผิดที่เกิดจากการใช้การแปลนี้ \ No newline at end of file diff --git a/translations/th/08-building-search-applications/README.md b/translations/th/08-building-search-applications/README.md index 3a0a22547c..b6db0d3ec4 100644 --- a/translations/th/08-building-search-applications/README.md +++ b/translations/th/08-building-search-applications/README.md @@ -1,175 +1,177 @@ - -# การสร้างแอปพลิเคชันค้นหา - -[![Introduction to Generative AI and Large Language Models](../../../translated_images/08-lesson-banner.8fff48c566dad08a1cbb9f4b4a2c16adfdd288a7bbfffdd30770b466fe08c25c.th.png)](https://aka.ms/gen-ai-lesson8-gh?WT.mc_id=academic-105485-koreyst) - -> > _คลิกที่ภาพด้านบนเพื่อดูวิดีโอของบทเรียนนี้_ - -LLM ไม่ได้มีแค่แชทบอทและการสร้างข้อความเท่านั้น เรายังสามารถสร้างแอปพลิเคชันค้นหาโดยใช้ Embeddings ได้ Embeddings คือการแทนข้อมูลในรูปแบบตัวเลขที่เรียกอีกอย่างว่าเวกเตอร์ และสามารถใช้สำหรับการค้นหาเชิงความหมายของข้อมูลได้ - -ในบทเรียนนี้ คุณจะได้สร้างแอปพลิเคชันค้นหาสำหรับสตาร์ทอัพด้านการศึกษา สตาร์ทอัพของเราเป็นองค์กรไม่แสวงหากำไรที่ให้การศึกษาฟรีแก่ผู้เรียนในประเทศกำลังพัฒนา สตาร์ทอัพของเรามีวิดีโอ YouTube จำนวนมากที่นักเรียนสามารถใช้เรียนรู้เกี่ยวกับ AI ได้ สตาร์ทอัพของเราต้องการสร้างแอปพลิเคชันค้นหาที่ให้นักเรียนสามารถค้นหาวิดีโอ YouTube โดยพิมพ์คำถามเข้าไป - -ตัวอย่างเช่น นักเรียนอาจพิมพ์ว่า 'Jupyter Notebooks คืออะไร?' หรือ 'Azure ML คืออะไร' และแอปพลิเคชันค้นหาจะส่งคืนรายการวิดีโอ YouTube ที่เกี่ยวข้องกับคำถาม และที่ดียิ่งกว่านั้น แอปพลิเคชันค้นหาจะส่งลิงก์ไปยังตำแหน่งในวิดีโอที่มีคำตอบของคำถามนั้น - -## บทนำ - -ในบทเรียนนี้ เราจะครอบคลุมเรื่อง: - -- การค้นหาเชิงความหมายกับการค้นหาด้วยคำสำคัญ -- Text Embeddings คืออะไร -- การสร้างดัชนี Text Embeddings -- การค้นหาในดัชนี Text Embeddings - -## เป้าหมายการเรียนรู้ - -หลังจากจบบทเรียนนี้ คุณจะสามารถ: - -- บอกความแตกต่างระหว่างการค้นหาเชิงความหมายและการค้นหาด้วยคำสำคัญได้ -- อธิบายว่า Text Embeddings คืออะไร -- สร้างแอปพลิเคชันโดยใช้ Embeddings เพื่อค้นหาข้อมูลได้ - -## ทำไมต้องสร้างแอปพลิเคชันค้นหา? - -การสร้างแอปพลิเคชันค้นหาจะช่วยให้คุณเข้าใจวิธีใช้ Embeddings ในการค้นหาข้อมูล นอกจากนี้คุณยังจะได้เรียนรู้วิธีสร้างแอปพลิเคชันค้นหาที่นักเรียนสามารถใช้ค้นหาข้อมูลได้อย่างรวดเร็ว - -บทเรียนนี้มีดัชนี Embedding ของคำบรรยายวิดีโอ YouTube สำหรับช่อง Microsoft [AI Show](https://www.youtube.com/playlist?list=PLlrxD0HtieHi0mwteKBOfEeOYf0LJU4O1) AI Show เป็นช่อง YouTube ที่สอนเกี่ยวกับ AI และการเรียนรู้ของเครื่อง ดัชนี Embedding นี้ประกอบด้วย Embeddings สำหรับคำบรรยายวิดีโอ YouTube ทุกตอนจนถึงเดือนตุลาคม 2023 คุณจะใช้ดัชนี Embedding นี้เพื่อสร้างแอปพลิเคชันค้นหาสำหรับสตาร์ทอัพของเรา แอปพลิเคชันค้นหาจะส่งลิงก์ไปยังตำแหน่งในวิดีโอที่มีคำตอบของคำถาม ซึ่งเป็นวิธีที่ดีมากสำหรับนักเรียนในการค้นหาข้อมูลที่ต้องการได้อย่างรวดเร็ว - -ตัวอย่างต่อไปนี้เป็นการค้นหาเชิงความหมายสำหรับคำถาม 'can you use rstudio with azure ml?' ลองดู URL ของ YouTube คุณจะเห็นว่า URL มีการระบุเวลาที่พาไปยังตำแหน่งในวิดีโอที่มีคำตอบของคำถามนั้น - -![Semantic query for the question "can you use rstudio with Azure ML"](../../../translated_images/query-results.bb0480ebf025fac69c5179ad4d53b6627d643046838c857dc9e2b1281f1cdeb7.th.png) - -## การค้นหาเชิงความหมายคืออะไร? - -ตอนนี้คุณอาจสงสัยว่าการค้นหาเชิงความหมายคืออะไร? การค้นหาเชิงความหมายเป็นเทคนิคการค้นหาที่ใช้ความหมายของคำในคำค้นหาเพื่อส่งคืนผลลัพธ์ที่เกี่ยวข้อง - -นี่คือตัวอย่างของการค้นหาเชิงความหมาย สมมติว่าคุณกำลังมองหารถยนต์ คุณอาจค้นหาว่า 'my dream car' การค้นหาเชิงความหมายจะเข้าใจว่าคุณไม่ได้ `ฝัน` ถึงรถยนต์ แต่คุณกำลังมองหารถยนต์ `ในฝัน` หรือรถยนต์ที่คุณต้องการจริงๆ การค้นหาเชิงความหมายเข้าใจเจตนาของคุณและส่งคืนผลลัพธ์ที่เกี่ยวข้อง ทางเลือกอื่นคือ `การค้นหาด้วยคำสำคัญ` ซึ่งจะค้นหาคำว่า "ฝัน" และ "รถยนต์" ตามตัวอักษรและมักจะส่งคืนผลลัพธ์ที่ไม่เกี่ยวข้อง - -## Text Embeddings คืออะไร? - -[Text embeddings](https://en.wikipedia.org/wiki/Word_embedding?WT.mc_id=academic-105485-koreyst) คือเทคนิคการแทนข้อความที่ใช้ใน [การประมวลผลภาษาธรรมชาติ](https://en.wikipedia.org/wiki/Natural_language_processing?WT.mc_id=academic-105485-koreyst) Text embeddings คือการแทนข้อความในรูปแบบตัวเลขเชิงความหมาย Embeddings ใช้แทนข้อมูลในรูปแบบที่เครื่องสามารถเข้าใจได้ง่าย มีโมเดลหลายแบบสำหรับสร้าง text embeddings ในบทเรียนนี้ เราจะเน้นการสร้าง embeddings โดยใช้ OpenAI Embedding Model - -นี่คือตัวอย่าง สมมติว่าข้อความต่อไปนี้มาจากคำบรรยายในหนึ่งในตอนของช่อง AI Show บน YouTube: - -```text -Today we are going to learn about Azure Machine Learning. -``` - -เราจะส่งข้อความนี้ไปยัง OpenAI Embedding API และจะได้รับ embedding ที่ประกอบด้วยตัวเลข 1536 ตัว หรือที่เรียกว่าเวกเตอร์ ตัวเลขแต่ละตัวในเวกเตอร์แทนแง่มุมต่างๆ ของข้อความ เพื่อความกระชับ นี่คือตัวเลข 10 ตัวแรกในเวกเตอร์ - -```python -[-0.006655829958617687, 0.0026128944009542465, 0.008792596869170666, -0.02446001023054123, -0.008540431968867779, 0.022071078419685364, -0.010703742504119873, 0.003311325330287218, -0.011632772162556648, -0.02187200076878071, ...] -``` - -## ดัชนี Embedding ถูกสร้างขึ้นอย่างไร? - -ดัชนี Embedding สำหรับบทเรียนนี้ถูกสร้างขึ้นด้วยชุดสคริปต์ Python คุณจะพบสคริปต์พร้อมคำแนะนำใน [README](./scripts/README.md?WT.mc_id=academic-105485-koreyst) ในโฟลเดอร์ 'scripts' สำหรับบทเรียนนี้ คุณไม่จำเป็นต้องรันสคริปต์เหล่านี้เพื่อทำบทเรียนให้เสร็จ เพราะดัชนี Embedding ได้ถูกจัดเตรียมไว้ให้แล้ว - -สคริปต์ทำงานดังนี้: - -1. ดาวน์โหลดคำบรรยายของวิดีโอ YouTube แต่ละรายการในเพลย์ลิสต์ [AI Show](https://www.youtube.com/playlist?list=PLlrxD0HtieHi0mwteKBOfEeOYf0LJU4O1) -2. ใช้ [OpenAI Functions](https://learn.microsoft.com/azure/ai-services/openai/how-to/function-calling?WT.mc_id=academic-105485-koreyst) เพื่อพยายามดึงชื่อผู้พูดจาก 3 นาทีแรกของคำบรรยายวิดีโอ ชื่อผู้พูดของแต่ละวิดีโอจะถูกเก็บไว้ในดัชนี Embedding ชื่อ `embedding_index_3m.json` -3. แบ่งข้อความคำบรรยายออกเป็น **ช่วงข้อความละ 3 นาที** โดยแต่ละช่วงจะมีคำประมาณ 20 คำซ้อนทับกับช่วงถัดไป เพื่อให้ Embedding ของช่วงนั้นไม่ถูกตัดและเพื่อให้บริบทการค้นหาดีขึ้น -4. ส่งข้อความแต่ละช่วงไปยัง OpenAI Chat API เพื่อสรุปข้อความให้เหลือ 60 คำ สรุปนี้จะถูกเก็บไว้ในดัชนี Embedding `embedding_index_3m.json` -5. สุดท้าย ส่งข้อความช่วงนั้นไปยัง OpenAI Embedding API ซึ่งจะส่งคืนเวกเตอร์ที่มีตัวเลข 1536 ตัวแทนความหมายเชิงความหมายของช่วงข้อความ ช่วงข้อความพร้อมเวกเตอร์ Embedding จะถูกเก็บไว้ในดัชนี Embedding `embedding_index_3m.json` - -### ฐานข้อมูลเวกเตอร์ - -เพื่อความง่ายของบทเรียน ดัชนี Embedding จะถูกเก็บในไฟล์ JSON ชื่อ `embedding_index_3m.json` และโหลดเข้า Pandas DataFrame อย่างไรก็ตาม ในการใช้งานจริง ดัชนี Embedding จะถูกเก็บในฐานข้อมูลเวกเตอร์ เช่น [Azure Cognitive Search](https://learn.microsoft.com/training/modules/improve-search-results-vector-search?WT.mc_id=academic-105485-koreyst), [Redis](https://cookbook.openai.com/examples/vector_databases/redis/readme?WT.mc_id=academic-105485-koreyst), [Pinecone](https://cookbook.openai.com/examples/vector_databases/pinecone/readme?WT.mc_id=academic-105485-koreyst), [Weaviate](https://cookbook.openai.com/examples/vector_databases/weaviate/readme?WT.mc_id=academic-105485-koreyst) เป็นต้น - -## ความเข้าใจเกี่ยวกับ cosine similarity - -เราได้เรียนรู้เกี่ยวกับ text embeddings ขั้นตอนต่อไปคือการเรียนรู้วิธีใช้ text embeddings เพื่อค้นหาข้อมูล โดยเฉพาะการหาค่า embeddings ที่เหมือนกับคำค้นหามากที่สุดโดยใช้ cosine similarity - -### cosine similarity คืออะไร? - -cosine similarity คือการวัดความคล้ายคลึงกันระหว่างเวกเตอร์สองตัว คุณอาจได้ยินเรียกอีกอย่างว่า `nearest neighbor search` ในการค้นหาโดยใช้ cosine similarity คุณต้อง _แปลงข้อความคำค้นหาเป็นเวกเตอร์_ โดยใช้ OpenAI Embedding API จากนั้นคำนวณ _cosine similarity_ ระหว่างเวกเตอร์คำค้นหากับเวกเตอร์แต่ละตัวในดัชนี Embedding จำไว้ว่าดัชนี Embedding มีเวกเตอร์สำหรับแต่ละช่วงข้อความคำบรรยายวิดีโอ YouTube สุดท้ายจัดเรียงผลลัพธ์ตามค่า cosine similarity โดยช่วงข้อความที่มีค่า cosine similarity สูงสุดจะเป็นช่วงที่เหมือนกับคำค้นหามากที่สุด - -ในเชิงคณิตศาสตร์ cosine similarity วัดค่าคอสายน์ของมุมระหว่างเวกเตอร์สองตัวที่ฉายในพื้นที่หลายมิติ การวัดนี้มีประโยชน์เพราะถึงแม้เอกสารสองฉบับจะอยู่ห่างกันตามระยะทาง Euclidean เพราะขนาดต่างกัน แต่ก็อาจมีมุมระหว่างกันเล็กและมีค่า cosine similarity สูงกว่า สำหรับข้อมูลเพิ่มเติมเกี่ยวกับสมการ cosine similarity ดูที่ [Cosine similarity](https://en.wikipedia.org/wiki/Cosine_similarity?WT.mc_id=academic-105485-koreyst) - -## การสร้างแอปพลิเคชันค้นหาแรกของคุณ - -ต่อไป เราจะเรียนรู้วิธีสร้างแอปพลิเคชันค้นหาโดยใช้ Embeddings แอปพลิเคชันค้นหาจะให้นักเรียนค้นหาวิดีโอโดยพิมพ์คำถาม แอปพลิเคชันจะส่งคืนรายการวิดีโอที่เกี่ยวข้องกับคำถาม และยังส่งลิงก์ไปยังตำแหน่งในวิดีโอที่มีคำตอบของคำถามนั้น - -โซลูชันนี้ถูกสร้างและทดสอบบน Windows 11, macOS และ Ubuntu 22.04 โดยใช้ Python 3.10 ขึ้นไป คุณสามารถดาวน์โหลด Python ได้จาก [python.org](https://www.python.org/downloads/?WT.mc_id=academic-105485-koreyst) - -## การบ้าน - สร้างแอปพลิเคชันค้นหาเพื่อให้นักเรียนใช้งาน - -เราได้แนะนำสตาร์ทอัพของเราตั้งแต่ต้นบทเรียน ตอนนี้ถึงเวลาที่จะให้นักเรียนสร้างแอปพลิเคชันค้นหาเพื่อใช้ในการประเมินผล - -ในการบ้านนี้ คุณจะสร้าง Azure OpenAI Services ที่จะใช้ในการสร้างแอปพลิเคชันค้นหา คุณจะสร้าง Azure OpenAI Services ดังต่อไปนี้ คุณจะต้องมีบัญชี Azure เพื่อทำการบ้านนี้ให้เสร็จ - -### เริ่มต้น Azure Cloud Shell - -1. ลงชื่อเข้าใช้ [Azure portal](https://portal.azure.com/?WT.mc_id=academic-105485-koreyst) -2. เลือกไอคอน Cloud Shell ที่มุมขวาบนของ Azure portal -3. เลือก **Bash** สำหรับประเภทสภาพแวดล้อม - -#### สร้าง resource group - -> สำหรับคำแนะนำนี้ เราใช้ resource group ชื่อ "semantic-video-search" ใน East US -> คุณสามารถเปลี่ยนชื่อ resource group ได้ แต่ถ้าจะเปลี่ยนตำแหน่งของทรัพยากร -> ให้ตรวจสอบ [ตารางความพร้อมของโมเดล](https://aka.ms/oai/models?WT.mc_id=academic-105485-koreyst) - -```shell -az group create --name semantic-video-search --location eastus -``` - -#### สร้าง Azure OpenAI Service resource - -จาก Azure Cloud Shell ให้รันคำสั่งต่อไปนี้เพื่อสร้าง Azure OpenAI Service resource - -```shell -az cognitiveservices account create --name semantic-video-openai --resource-group semantic-video-search \ - --location eastus --kind OpenAI --sku s0 -``` - -#### ดึง endpoint และ keys สำหรับใช้งานในแอปพลิเคชันนี้ - -จาก Azure Cloud Shell ให้รันคำสั่งต่อไปนี้เพื่อดึง endpoint และ keys สำหรับ Azure OpenAI Service resource - -```shell -az cognitiveservices account show --name semantic-video-openai \ - --resource-group semantic-video-search | jq -r .properties.endpoint -az cognitiveservices account keys list --name semantic-video-openai \ - --resource-group semantic-video-search | jq -r .key1 -``` - -#### ติดตั้งโมเดล OpenAI Embedding - -จาก Azure Cloud Shell ให้รันคำสั่งต่อไปนี้เพื่อติดตั้งโมเดล OpenAI Embedding - -```shell -az cognitiveservices account deployment create \ - --name semantic-video-openai \ - --resource-group semantic-video-search \ - --deployment-name text-embedding-ada-002 \ - --model-name text-embedding-ada-002 \ - --model-version "2" \ - --model-format OpenAI \ - --sku-capacity 100 --sku-name "Standard" -``` - -## โซลูชัน - -เปิด [solution notebook](python/aoai-solution.ipynb) ใน GitHub Codespaces และทำตามคำแนะนำใน Jupyter Notebook - -เมื่อคุณรันโน้ตบุ๊ก คุณจะถูกขอให้ป้อนคำค้นหา กล่องป้อนข้อมูลจะมีลักษณะดังนี้: - -![Input box for the user to input a query](../../../translated_images/notebook-search.1e320b9c7fcbb0bc1436d98ea6ee73b4b54ca47990a1c952b340a2cadf8ac1ca.th.png) - -## ทำได้ดีมาก! เรียนรู้ต่อไป - -หลังจากจบบทเรียนนี้แล้ว ลองดู [คอลเลกชันการเรียนรู้ Generative AI](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) ของเราเพื่อพัฒนาความรู้ด้าน Generative AI ให้มากขึ้น! - -ไปที่บทเรียนที่ 9 ซึ่งเราจะเรียนรู้วิธี [สร้างแอปพลิเคชันสร้างภาพ](../09-building-image-applications/README.md?WT.mc_id=academic-105485-koreyst)! - -**ข้อจำกัดความรับผิดชอบ**: -เอกสารนี้ได้รับการแปลโดยใช้บริการแปลภาษาอัตโนมัติ [Co-op Translator](https://github.com/Azure/co-op-translator) แม้เราจะพยายามให้ความถูกต้องสูงสุด แต่โปรดทราบว่าการแปลอัตโนมัติอาจมีข้อผิดพลาดหรือความไม่ถูกต้อง เอกสารต้นฉบับในภาษาต้นทางถือเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลที่สำคัญ ขอแนะนำให้ใช้บริการแปลโดยผู้เชี่ยวชาญมนุษย์ เราไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความผิดใด ๆ ที่เกิดจากการใช้การแปลนี้ \ No newline at end of file + +# การสร้างแอปพลิเคชันค้นหา + +[![แนะนำ AI เชิงสร้างสรรค์และโมเดลภาษาขนาดใหญ่](../../../translated_images/08-lesson-banner.8fff48c566dad08a1cbb9f4b4a2c16adfdd288a7bbfffdd30770b466fe08c25c.th.png)](https://youtu.be/W0-nzXjOjr0?si=GcsqiTTvd7RKbo7V) + +> > _คลิกที่ภาพด้านบนเพื่อดูวิดีโอของบทเรียนนี้_ + +LLMs ไม่ได้มีแค่แชทบอทและการสร้างข้อความเท่านั้น แต่ยังสามารถสร้างแอปพลิเคชันค้นหาโดยใช้ Embeddings ได้อีกด้วย Embeddings คือการแสดงข้อมูลในรูปแบบตัวเลขที่เรียกว่าวิทยุเวกเตอร์ และสามารถใช้สำหรับการค้นหาเชิงความหมายของข้อมูลได้ + +ในบทเรียนนี้ คุณจะได้สร้างแอปพลิเคชันค้นหาสำหรับสตาร์ทอัพด้านการศึกษาของเรา สตาร์ทอัพของเราเป็นองค์กรไม่แสวงหาผลกำไรที่ให้การศึกษาฟรีแก่เด็กนักเรียนในประเทศกำลังพัฒนา สตาร์ทอัพของเรามีวิดีโอ YouTube จำนวนมากที่นักเรียนสามารถใช้เรียนรู้เกี่ยวกับ AI สตาร์ทอัพของเราต้องการสร้างแอปพลิเคชันค้นหาที่ช่วยให้นักเรียนสามารถค้นหาวิดีโอ YouTube ได้โดยการพิมพ์คำถาม + +ตัวอย่างเช่น นักเรียนอาจพิมพ์ว่า 'Jupyter Notebooks คืออะไร?' หรือ 'Azure ML คืออะไร?' และแอปพลิเคชันค้นหาจะคืนรายการวิดีโอ YouTube ที่เกี่ยวข้องกับคำถามนั้น และที่ดียิ่งกว่านั้น แอปพลิเคชันค้นหาจะคืนลิงก์ไปยังจุดในวิดีโอที่มีคำตอบสำหรับคำถามนั้น + +## บทนำ + +ในบทเรียนนี้ เราจะครอบคลุม: + +- การค้นหาเชิงความหมาย vs การค้นหาด้วยคำสำคัญ +- Text Embeddings คืออะไร +- การสร้างดัชนี Text Embeddings +- การค้นหาดัชนี Text Embeddings + +## เป้าหมายการเรียนรู้ + +หลังจากจบบทเรียนนี้ คุณจะสามารถ: + +- แยกแยะความแตกต่างระหว่างการค้นหาเชิงความหมายและการค้นหาด้วยคำสำคัญ +- อธิบายว่า Text Embeddings คืออะไร +- สร้างแอปพลิเคชันโดยใช้ Embeddings เพื่อค้นหาข้อมูล + +## ทำไมต้องสร้างแอปพลิเคชันค้นหา? + +การสร้างแอปพลิเคชันค้นหาจะช่วยให้คุณเข้าใจวิธีการใช้ Embeddings ในการค้นหาข้อมูล คุณยังจะได้เรียนรู้วิธีการสร้างแอปพลิเคชันค้นหาที่นักเรียนสามารถใช้เพื่อค้นหาข้อมูลได้อย่างรวดเร็ว + +บทเรียนนี้รวมถึง Embedding Index ของการถอดเสียงวิดีโอ YouTube จากช่อง [AI Show](https://www.youtube.com/playlist?list=PLlrxD0HtieHi0mwteKBOfEeOYf0LJU4O1) ของ Microsoft ช่อง AI Show เป็นช่อง YouTube ที่สอนเกี่ยวกับ AI และการเรียนรู้ของเครื่อง Embedding Index มี Embeddings สำหรับการถอดเสียงวิดีโอ YouTube จนถึงเดือนตุลาคม 2023 คุณจะใช้ Embedding Index เพื่อสร้างแอปพลิเคชันค้นหาสำหรับสตาร์ทอัพของเรา แอปพลิเคชันค้นหาจะคืนลิงก์ไปยังจุดในวิดีโอที่มีคำตอบสำหรับคำถาม นี่เป็นวิธีที่ยอดเยี่ยมสำหรับนักเรียนในการค้นหาข้อมูลที่ต้องการได้อย่างรวดเร็ว + +ตัวอย่างต่อไปนี้เป็นการค้นหาเชิงความหมายสำหรับคำถาม 'สามารถใช้ rstudio กับ azure ml ได้หรือไม่?' ลองดูที่ URL ของ YouTube คุณจะเห็นว่า URL มี timestamp ที่นำคุณไปยังจุดในวิดีโอที่มีคำตอบสำหรับคำถามนั้น + +![การค้นหาเชิงความหมายสำหรับคำถาม "สามารถใช้ rstudio กับ Azure ML ได้หรือไม่"](../../../translated_images/query-results.bb0480ebf025fac69c5179ad4d53b6627d643046838c857dc9e2b1281f1cdeb7.th.png) + +## การค้นหาเชิงความหมายคืออะไร? + +คุณอาจสงสัยว่า การค้นหาเชิงความหมายคืออะไร? การค้นหาเชิงความหมายเป็นเทคนิคการค้นหาที่ใช้ความหมายของคำในคำค้นหาเพื่อคืนผลลัพธ์ที่เกี่ยวข้อง + +นี่คือตัวอย่างของการค้นหาเชิงความหมาย สมมติว่าคุณกำลังมองหาซื้อรถ คุณอาจค้นหาว่า 'รถในฝันของฉัน' การค้นหาเชิงความหมายเข้าใจว่าคุณไม่ได้ `ฝัน` เกี่ยวกับรถ แต่คุณกำลังมองหาซื้อรถที่ `เหมาะสมที่สุด` การค้นหาเชิงความหมายเข้าใจเจตนาของคุณและคืนผลลัพธ์ที่เกี่ยวข้อง ทางเลือกคือ `การค้นหาด้วยคำสำคัญ` ซึ่งจะค้นหาความฝันเกี่ยวกับรถและมักจะคืนผลลัพธ์ที่ไม่เกี่ยวข้อง + +## Text Embeddings คืออะไร? + +[Text embeddings](https://en.wikipedia.org/wiki/Word_embedding?WT.mc_id=academic-105485-koreyst) เป็นเทคนิคการแสดงข้อความที่ใช้ใน [การประมวลผลภาษาธรรมชาติ](https://en.wikipedia.org/wiki/Natural_language_processing?WT.mc_id=academic-105485-koreyst) Text embeddings เป็นการแสดงข้อความในรูปแบบตัวเลขเชิงความหมาย Embeddings ใช้เพื่อแสดงข้อมูลในรูปแบบที่เครื่องสามารถเข้าใจได้ง่าย มีโมเดลมากมายสำหรับการสร้าง text embeddings ในบทเรียนนี้ เราจะเน้นการสร้าง embeddings โดยใช้ OpenAI Embedding Model + +นี่คือตัวอย่าง ลองจินตนาการว่าข้อความต่อไปนี้อยู่ในการถอดเสียงจากหนึ่งในตอนของช่อง AI Show บน YouTube: + +```text +Today we are going to learn about Azure Machine Learning. +``` + +เราจะส่งข้อความไปยัง OpenAI Embedding API และมันจะคืน embedding ที่ประกอบด้วยตัวเลข 1536 ตัว หรือที่เรียกว่าเวกเตอร์ แต่ละตัวเลขในเวกเตอร์แสดงถึงแง่มุมต่างๆ ของข้อความ เพื่อความกระชับ นี่คือตัวเลข 10 ตัวแรกในเวกเตอร์ + +```python +[-0.006655829958617687, 0.0026128944009542465, 0.008792596869170666, -0.02446001023054123, -0.008540431968867779, 0.022071078419685364, -0.010703742504119873, 0.003311325330287218, -0.011632772162556648, -0.02187200076878071, ...] +``` + +## Embedding Index ถูกสร้างขึ้นอย่างไร? + +Embedding Index สำหรับบทเรียนนี้ถูกสร้างขึ้นด้วยชุดของสคริปต์ Python คุณจะพบสคริปต์พร้อมคำแนะนำใน [README](./scripts/README.md?WT.mc_id=academic-105485-koreyst) ในโฟลเดอร์ 'scripts' สำหรับบทเรียนนี้ คุณไม่จำเป็นต้องรันสคริปต์เหล่านี้เพื่อจบบทเรียนนี้ เนื่องจาก Embedding Index ถูกเตรียมไว้ให้คุณแล้ว + +สคริปต์ทำงานดังนี้: + +1. การดาวน์โหลดการถอดเสียงสำหรับวิดีโอ YouTube แต่ละรายการในเพลย์ลิสต์ [AI Show](https://www.youtube.com/playlist?list=PLlrxD0HtieHi0mwteKBOfEeOYf0LJU4O1) +2. ใช้ [OpenAI Functions](https://learn.microsoft.com/azure/ai-services/openai/how-to/function-calling?WT.mc_id=academic-105485-koreyst) เพื่อพยายามดึงชื่อผู้พูดจาก 3 นาทีแรกของการถอดเสียงวิดีโอ YouTube ชื่อผู้พูดสำหรับแต่ละวิดีโอจะถูกเก็บไว้ใน Embedding Index ชื่อ `embedding_index_3m.json` +3. ข้อความการถอดเสียงจะถูกแบ่งเป็น **ส่วนข้อความ 3 นาที** แต่ละส่วนมีคำประมาณ 20 คำที่ซ้อนทับจากส่วนถัดไปเพื่อให้แน่ใจว่า Embedding สำหรับส่วนข้อความจะไม่ถูกตัดออกและเพื่อให้บริบทการค้นหาดีขึ้น +4. ข้อความในแต่ละส่วนจะถูกส่งไปยัง OpenAI Chat API เพื่อสรุปข้อความให้เหลือ 60 คำ สรุปนี้จะถูกเก็บไว้ใน Embedding Index `embedding_index_3m.json` +5. สุดท้าย ข้อความในแต่ละส่วนจะถูกส่งไปยัง OpenAI Embedding API Embedding API จะคืนเวกเตอร์ที่มีตัวเลข 1536 ตัวที่แสดงถึงความหมายเชิงความหมายของส่วนข้อความนั้น ส่วนข้อความพร้อมกับเวกเตอร์ OpenAI Embedding จะถูกเก็บไว้ใน Embedding Index `embedding_index_3m.json` + +### ฐานข้อมูลเวกเตอร์ + +เพื่อความง่ายในบทเรียนนี้ Embedding Index จะถูกเก็บไว้ในไฟล์ JSON ชื่อ `embedding_index_3m.json` และโหลดเข้าสู่ Pandas DataFrame อย่างไรก็ตาม ในการใช้งานจริง Embedding Index จะถูกเก็บไว้ในฐานข้อมูลเวกเตอร์ เช่น [Azure Cognitive Search](https://learn.microsoft.com/training/modules/improve-search-results-vector-search?WT.mc_id=academic-105485-koreyst), [Redis](https://cookbook.openai.com/examples/vector_databases/redis/readme?WT.mc_id=academic-105485-koreyst), [Pinecone](https://cookbook.openai.com/examples/vector_databases/pinecone/readme?WT.mc_id=academic-105485-koreyst), [Weaviate](https://cookbook.openai.com/examples/vector_databases/weaviate/readme?WT.mc_id=academic-105485-koreyst) เป็นต้น + +## การทำความเข้าใจความคล้ายคลึงกันของโคไซน์ + +เราได้เรียนรู้เกี่ยวกับ text embeddings ขั้นตอนต่อไปคือการเรียนรู้วิธีการใช้ text embeddings เพื่อค้นหาข้อมูล และโดยเฉพาะอย่างยิ่งการค้นหา embeddings ที่คล้ายกันที่สุดกับคำค้นหาที่กำหนดโดยใช้ความคล้ายคลึงกันของโคไซน์ + +### ความคล้ายคลึงกันของโคไซน์คืออะไร? + +ความคล้ายคลึงกันของโคไซน์เป็นการวัดความคล้ายคลึงกันระหว่างเวกเตอร์สองตัว คุณอาจเคยได้ยินคำนี้ในชื่อ `การค้นหาเพื่อนบ้านที่ใกล้ที่สุด` เพื่อทำการค้นหาความคล้ายคลึงกันของโคไซน์ คุณต้อง _แปลงเป็นเวกเตอร์_ สำหรับข้อความ _query_ โดยใช้ OpenAI Embedding API จากนั้นคำนวณ _cosine similarity_ ระหว่างเวกเตอร์ query และแต่ละเวกเตอร์ใน Embedding Index จำไว้ว่า Embedding Index มีเวกเตอร์สำหรับแต่ละส่วนข้อความการถอดเสียงวิดีโอ YouTube สุดท้าย จัดเรียงผลลัพธ์ตามความคล้ายคลึงกันของโคไซน์ และส่วนข้อความที่มีความคล้ายคลึงกันของโคไซน์สูงสุดจะเป็นข้อความที่คล้ายกับ query มากที่สุด + +จากมุมมองทางคณิตศาสตร์ ความคล้ายคลึงกันของโคไซน์วัดมุมโคไซน์ระหว่างเวกเตอร์สองตัวที่ฉายในพื้นที่หลายมิติ การวัดนี้มีประโยชน์เพราะหากเอกสารสองฉบับอยู่ห่างกันมากในระยะทางยูคลิดเนื่องจากขนาด พวกมันยังสามารถมีมุมที่เล็กกว่าระหว่างกันและดังนั้นจึงมีความคล้ายคลึงกันของโคไซน์สูงขึ้น สำหรับข้อมูลเพิ่มเติมเกี่ยวกับสมการความคล้ายคลึงกันของโคไซน์ ดูที่ [Cosine similarity](https://en.wikipedia.org/wiki/Cosine_similarity?WT.mc_id=academic-105485-koreyst) + +## การสร้างแอปพลิเคชันค้นหาแรกของคุณ + +ต่อไป เราจะเรียนรู้วิธีการสร้างแอปพลิเคชันค้นหาโดยใช้ Embeddings แอปพลิเคชันค้นหาจะช่วยให้นักเรียนสามารถค้นหาวิดีโอได้โดยการพิมพ์คำถาม แอปพลิเคชันค้นหาจะคืนรายการวิดีโอที่เกี่ยวข้องกับคำถาม แอปพลิเคชันค้นหายังจะคืนลิงก์ไปยังจุดในวิดีโอที่มีคำตอบสำหรับคำถามนั้น + +โซลูชันนี้ถูกสร้างและทดสอบบน Windows 11, macOS และ Ubuntu 22.04 โดยใช้ Python 3.10 หรือใหม่กว่า คุณสามารถดาวน์โหลด Python ได้จาก [python.org](https://www.python.org/downloads/?WT.mc_id=academic-105485-koreyst) + +## งาน - การสร้างแอปพลิเคชันค้นหา เพื่อช่วยนักเรียน + +เราได้แนะนำสตาร์ทอัพของเราตั้งแต่ต้นบทเรียน ตอนนี้ถึงเวลาที่จะช่วยนักเรียนสร้างแอปพลิเคชันค้นหาสำหรับการประเมินผลของพวกเขา + +ในงานนี้ คุณจะสร้าง Azure OpenAI Services ที่จะใช้ในการสร้างแอปพลิเคชันค้นหา คุณจะสร้าง Azure OpenAI Services ต่อไปนี้ คุณจะต้องมีการสมัครสมาชิก Azure เพื่อทำงานนี้ให้เสร็จสมบูรณ์ + +### เริ่มต้น Azure Cloud Shell + +1. ลงชื่อเข้าใช้ [Azure portal](https://portal.azure.com/?WT.mc_id=academic-105485-koreyst) +2. เลือกไอคอน Cloud Shell ที่มุมขวาบนของ Azure portal +3. เลือก **Bash** สำหรับประเภทของสภาพแวดล้อม + +#### สร้างกลุ่มทรัพยากร + +> สำหรับคำแนะนำเหล่านี้ เราใช้กลุ่มทรัพยากรชื่อ "semantic-video-search" ใน East US +> คุณสามารถเปลี่ยนชื่อกลุ่มทรัพยากรได้ แต่เมื่อเปลี่ยนตำแหน่งสำหรับทรัพยากร +> ตรวจสอบ [ตารางความพร้อมใช้งานของโมเดล](https://aka.ms/oai/models?WT.mc_id=academic-105485-koreyst) + +```shell +az group create --name semantic-video-search --location eastus +``` + +#### สร้างทรัพยากร Azure OpenAI Service + +จาก Azure Cloud Shell ให้รันคำสั่งต่อไปนี้เพื่อสร้างทรัพยากร Azure OpenAI Service + +```shell +az cognitiveservices account create --name semantic-video-openai --resource-group semantic-video-search \ + --location eastus --kind OpenAI --sku s0 +``` + +#### รับ endpoint และ keys สำหรับการใช้งานในแอปพลิเคชันนี้ + +จาก Azure Cloud Shell ให้รันคำสั่งต่อไปนี้เพื่อรับ endpoint และ keys สำหรับทรัพยากร Azure OpenAI Service + +```shell +az cognitiveservices account show --name semantic-video-openai \ + --resource-group semantic-video-search | jq -r .properties.endpoint +az cognitiveservices account keys list --name semantic-video-openai \ + --resource-group semantic-video-search | jq -r .key1 +``` + +#### ติดตั้งโมเดล OpenAI Embedding + +จาก Azure Cloud Shell ให้รันคำสั่งต่อไปนี้เพื่อติดตั้งโมเดล OpenAI Embedding + +```shell +az cognitiveservices account deployment create \ + --name semantic-video-openai \ + --resource-group semantic-video-search \ + --deployment-name text-embedding-ada-002 \ + --model-name text-embedding-ada-002 \ + --model-version "2" \ + --model-format OpenAI \ + --sku-capacity 100 --sku-name "Standard" +``` + +## โซลูชัน + +เปิด [solution notebook](./python/aoai-solution.ipynb?WT.mc_id=academic-105485-koreyst) ใน GitHub Codespaces และทำตามคำแนะนำใน Jupyter Notebook + +เมื่อคุณรัน notebook คุณจะได้รับการแจ้งให้ป้อน query กล่องป้อนข้อมูลจะมีลักษณะดังนี้: + +![กล่องป้อนข้อมูลสำหรับผู้ใช้เพื่อป้อน query](../../../translated_images/notebook-search.1e320b9c7fcbb0bc1436d98ea6ee73b4b54ca47990a1c952b340a2cadf8ac1ca.th.png) + +## ยอดเยี่ยม! เรียนรู้ต่อไป + +หลังจากจบบทเรียนนี้ ลองดู [Generative AI Learning collection](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) ของเราเพื่อเพิ่มพูนความรู้เกี่ยวกับ Generative AI! + +ไปที่บทเรียนที่ 9 ซึ่งเราจะดูวิธีการ [สร้างแอปพลิเคชันการสร้างภาพ](../09-building-image-applications/README.md?WT.mc_id=academic-105485-koreyst)! + +--- + +**ข้อจำกัดความรับผิดชอบ**: +เอกสารนี้ได้รับการแปลโดยใช้บริการแปลภาษา AI [Co-op Translator](https://github.com/Azure/co-op-translator) แม้ว่าเราจะพยายามให้การแปลมีความถูกต้อง แต่โปรดทราบว่าการแปลอัตโนมัติอาจมีข้อผิดพลาดหรือความไม่ถูกต้อง เอกสารต้นฉบับในภาษาดั้งเดิมควรถือเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลสำคัญ ขอแนะนำให้ใช้บริการแปลภาษามืออาชีพ เราไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความผิดที่เกิดจากการใช้การแปลนี้ \ No newline at end of file diff --git a/translations/th/09-building-image-applications/README.md b/translations/th/09-building-image-applications/README.md index 3bf06f08f6..d44014633c 100644 --- a/translations/th/09-building-image-applications/README.md +++ b/translations/th/09-building-image-applications/README.md @@ -1,24 +1,24 @@ # การสร้างแอปพลิเคชันสร้างภาพ -[![การสร้างแอปพลิเคชันสร้างภาพ](../../../translated_images/09-lesson-banner.906e408c741f44112ff5da17492a30d3872abb52b8530d6506c2631e86e704d0.th.png)](https://aka.ms/gen-ai-lesson9-gh?WT.mc_id=academic-105485-koreyst) +[![การสร้างแอปพลิเคชันสร้างภาพ](../../../translated_images/09-lesson-banner.906e408c741f44112ff5da17492a30d3872abb52b8530d6506c2631e86e704d0.th.png)](https://youtu.be/B5VP0_J7cs8?si=5P3L5o7F_uS_QcG9) -LLMs ไม่ได้มีแค่การสร้างข้อความเท่านั้น แต่ยังสามารถสร้างภาพจากคำอธิบายข้อความได้อีกด้วย การมีภาพเป็นสื่อสามารถนำไปใช้ประโยชน์ได้ในหลายด้าน เช่น เทคโนโลยีทางการแพทย์ สถาปัตยกรรม การท่องเที่ยว การพัฒนาเกม และอื่น ๆ ในบทนี้ เราจะมาดูโมเดลการสร้างภาพที่ได้รับความนิยมมากที่สุดสองตัว ได้แก่ DALL-E และ Midjourney +LLMs ไม่ได้มีแค่การสร้างข้อความเท่านั้น แต่ยังสามารถสร้างภาพจากคำอธิบายข้อความได้อีกด้วย การมีภาพเป็นส่วนหนึ่งของการใช้งานสามารถเป็นประโยชน์ในหลายด้าน เช่น เทคโนโลยีทางการแพทย์ สถาปัตยกรรม การท่องเที่ยว การพัฒนาเกม และอื่นๆ ในบทนี้ เราจะมาดูโมเดลการสร้างภาพที่ได้รับความนิยมมากที่สุดสองตัว ได้แก่ DALL-E และ Midjourney ## บทนำ -ในบทเรียนนี้ เราจะครอบคลุมเนื้อหาดังนี้: +ในบทเรียนนี้ เราจะครอบคลุม: - การสร้างภาพและเหตุผลที่มันมีประโยชน์ -- DALL-E และ Midjourney คืออะไร และทำงานอย่างไร +- DALL-E และ Midjourney คืออะไรและทำงานอย่างไร - วิธีการสร้างแอปพลิเคชันสร้างภาพ ## เป้าหมายการเรียนรู้ @@ -31,17 +31,17 @@ LLMs ไม่ได้มีแค่การสร้างข้อควา ## ทำไมต้องสร้างแอปพลิเคชันสร้างภาพ? -แอปพลิเคชันสร้างภาพเป็นวิธีที่ยอดเยี่ยมในการสำรวจความสามารถของ Generative AI โดยสามารถนำไปใช้ในกรณีต่าง ๆ เช่น: +แอปพลิเคชันสร้างภาพเป็นวิธีที่ยอดเยี่ยมในการสำรวจความสามารถของ Generative AI สามารถนำไปใช้ในกรณีต่างๆ เช่น: -- **การแก้ไขและการสังเคราะห์ภาพ** คุณสามารถสร้างภาพสำหรับการใช้งานที่หลากหลาย เช่น การแก้ไขภาพและการสังเคราะห์ภาพ +- **การแก้ไขและการสังเคราะห์ภาพ** คุณสามารถสร้างภาพสำหรับการใช้งานหลากหลาย เช่น การแก้ไขภาพและการสังเคราะห์ภาพ -- **การประยุกต์ใช้ในอุตสาหกรรมต่าง ๆ** แอปพลิเคชันเหล่านี้สามารถนำไปใช้สร้างภาพสำหรับอุตสาหกรรมต่าง ๆ เช่น เทคโนโลยีทางการแพทย์ การท่องเที่ยว การพัฒนาเกม และอื่น ๆ +- **นำไปใช้ในหลากหลายอุตสาหกรรม** สามารถนำไปใช้สร้างภาพสำหรับอุตสาหกรรมต่างๆ เช่น เทคโนโลยีทางการแพทย์ การท่องเที่ยว การพัฒนาเกม และอื่นๆ ## สถานการณ์: Edu4All -ในบทเรียนนี้ เราจะทำงานร่วมกับสตาร์ทอัพของเรา Edu4All นักเรียนจะสร้างภาพสำหรับการประเมินของพวกเขา โดยภาพที่สร้างขึ้นจะขึ้นอยู่กับนักเรียน เช่น ภาพประกอบสำหรับนิทานของพวกเขาเอง หรือการสร้างตัวละครใหม่สำหรับเรื่องราวของพวกเขา หรือช่วยให้พวกเขาเห็นภาพแนวคิดและไอเดียของพวกเขา +ในบทเรียนนี้ เราจะทำงานร่วมกับสตาร์ทอัพของเรา Edu4All นักเรียนจะสร้างภาพสำหรับการประเมินของพวกเขา โดยภาพที่สร้างขึ้นขึ้นอยู่กับนักเรียน เช่น ภาพประกอบสำหรับนิทานของพวกเขา หรือสร้างตัวละครใหม่สำหรับเรื่องราว หรือช่วยให้พวกเขาเห็นภาพแนวคิดของพวกเขา -ตัวอย่างเช่น หากนักเรียนของ Edu4All กำลังทำงานในชั้นเรียนเกี่ยวกับอนุสรณ์สถาน: +ตัวอย่างเช่น นักเรียนของ Edu4All อาจสร้างภาพในชั้นเรียนเกี่ยวกับอนุสรณ์สถาน: ![สตาร์ทอัพ Edu4All, ชั้นเรียนเกี่ยวกับอนุสรณ์สถาน, หอไอเฟล](../../../translated_images/startup.94d6b79cc4bb3f5afbf6e2ddfcf309aa5d1e256b5f30cc41d252024eaa9cc5dc.th.png) @@ -51,7 +51,7 @@ LLMs ไม่ได้มีแค่การสร้างข้อควา ## DALL-E และ Midjourney คืออะไร? -[DALL-E](https://openai.com/dall-e-2?WT.mc_id=academic-105485-koreyst) และ [Midjourney](https://www.midjourney.com/?WT.mc_id=academic-105485-koreyst) เป็นโมเดลการสร้างภาพที่ได้รับความนิยมมากที่สุดสองตัว โดยอนุญาตให้คุณใช้ prompt เพื่อสร้างภาพ +[DALL-E](https://openai.com/dall-e-2?WT.mc_id=academic-105485-koreyst) และ [Midjourney](https://www.midjourney.com/?WT.mc_id=academic-105485-koreyst) เป็นโมเดลการสร้างภาพที่ได้รับความนิยมมากที่สุดสองตัว ซึ่งช่วยให้คุณใช้ prompt ในการสร้างภาพได้ ### DALL-E @@ -59,24 +59,24 @@ LLMs ไม่ได้มีแค่การสร้างข้อควา > [DALL-E เป็นการรวมกันของสองโมเดล CLIP และ diffused attention](https://towardsdatascience.com/openais-dall-e-and-clip-101-a-brief-introduction-3a4367280d4e?WT.mc_id=academic-105485-koreyst) -- **CLIP** เป็นโมเดลที่สร้าง embeddings ซึ่งเป็นตัวแทนเชิงตัวเลขของข้อมูลจากภาพและข้อความ +- **CLIP** เป็นโมเดลที่สร้าง embeddings ซึ่งเป็นการแสดงผลข้อมูลในรูปแบบตัวเลขจากภาพและข้อความ -- **Diffused attention** เป็นโมเดลที่สร้างภาพจาก embeddings DALL-E ได้รับการฝึกอบรมด้วยชุดข้อมูลของภาพและข้อความ และสามารถใช้สร้างภาพจากคำอธิบายข้อความได้ ตัวอย่างเช่น DALL-E สามารถใช้สร้างภาพของแมวใส่หมวก หรือสุนัขที่มีทรงผมโมฮอว์ก +- **Diffused attention** เป็นโมเดลที่สร้างภาพจาก embeddings DALL-E ได้รับการฝึกฝนด้วยชุดข้อมูลของภาพและข้อความ และสามารถใช้สร้างภาพจากคำอธิบายข้อความได้ เช่น DALL-E สามารถใช้สร้างภาพของแมวใส่หมวก หรือสุนัขที่มีทรงผมโมฮอว์ก ### Midjourney -Midjourney ทำงานในลักษณะเดียวกับ DALL-E โดยสร้างภาพจากข้อความ prompt Midjourney สามารถใช้สร้างภาพด้วย prompt เช่น “แมวใส่หมวก” หรือ “สุนัขที่มีทรงผมโมฮอว์ก” +Midjourney ทำงานในลักษณะเดียวกับ DALL-E โดยสร้างภาพจาก prompt ข้อความ Midjourney สามารถใช้สร้างภาพโดยใช้ prompt เช่น "แมวใส่หมวก" หรือ "สุนัขที่มีทรงผมโมฮอว์ก" ![ภาพที่สร้างโดย Midjourney, นกพิราบกลไก](https://upload.wikimedia.org/wikipedia/commons/thumb/8/8c/Rupert_Breheny_mechanical_dove_eca144e7-476d-4976-821d-a49c408e4f36.png/440px-Rupert_Breheny_mechanical_dove_eca144e7-476d-4976-821d-a49c408e4f36.png?WT.mc_id=academic-105485-koreyst) _เครดิตภาพ Wikipedia, ภาพที่สร้างโดย Midjourney_ ## DALL-E และ Midjourney ทำงานอย่างไร -เริ่มต้นด้วย [DALL-E](https://arxiv.org/pdf/2102.12092.pdf?WT.mc_id=academic-105485-koreyst) DALL-E เป็นโมเดล Generative AI ที่ใช้สถาปัตยกรรม transformer โดยมี _autoregressive transformer_ +เริ่มต้นด้วย [DALL-E](https://arxiv.org/pdf/2102.12092.pdf?WT.mc_id=academic-105485-koreyst) DALL-E เป็นโมเดล Generative AI ที่ใช้สถาปัตยกรรม transformer พร้อมกับ _autoregressive transformer_ -_autoregressive transformer_ กำหนดวิธีที่โมเดลสร้างภาพจากคำอธิบายข้อความ โดยสร้างทีละพิกเซล และใช้พิกเซลที่สร้างขึ้นเพื่อสร้างพิกเซลถัดไป ผ่านหลายชั้นในเครือข่ายประสาทเทียมจนกว่าภาพจะเสร็จสมบูรณ์ +_autoregressive transformer_ กำหนดวิธีที่โมเดลสร้างภาพจากคำอธิบายข้อความ โดยสร้างทีละพิกเซล และใช้พิกเซลที่สร้างขึ้นเพื่อสร้างพิกเซลถัดไป ผ่านหลายชั้นในเครือข่ายประสาทเทียมจนกระทั่งภาพเสร็จสมบูรณ์ -ด้วยกระบวนการนี้ DALL-E สามารถควบคุมคุณลักษณะ วัตถุ ลักษณะ และอื่น ๆ ในภาพที่สร้างขึ้น อย่างไรก็ตาม DALL-E 2 และ 3 มีการควบคุมภาพที่สร้างขึ้นได้มากกว่า +ด้วยกระบวนการนี้ DALL-E สามารถควบคุมคุณลักษณะ วัตถุ ลักษณะ และอื่นๆ ในภาพที่สร้างขึ้น อย่างไรก็ตาม DALL-E 2 และ 3 มีการควบคุมภาพที่สร้างขึ้นได้มากกว่า ## การสร้างแอปพลิเคชันสร้างภาพครั้งแรกของคุณ @@ -89,7 +89,7 @@ _autoregressive transformer_ กำหนดวิธีที่โมเดล ## สร้างและปรับใช้โมเดล Azure OpenAI -หากยังไม่ได้ดำเนินการ ให้ทำตามคำแนะนำในหน้า [Microsoft Learn](https://learn.microsoft.com/azure/ai-foundry/openai/how-to/create-resource?pivots=web-portal) +หากยังไม่ได้ทำ ให้ทำตามคำแนะนำในหน้า [Microsoft Learn](https://learn.microsoft.com/azure/ai-foundry/openai/how-to/create-resource?pivots=web-portal) เพื่อสร้างทรัพยากรและโมเดล Azure OpenAI เลือก DALL-E 3 เป็นโมเดล ## สร้างแอป @@ -182,7 +182,7 @@ _autoregressive transformer_ กำหนดวิธีที่โมเดล อธิบายโค้ดนี้: -- เริ่มต้นด้วยการนำเข้าไลบรารีที่เราต้องการ รวมถึงไลบรารี OpenAI ไลบรารี dotenv ไลบรารี requests และไลบรารี Pillow +- เริ่มต้น เรานำเข้าไลบรารีที่เราต้องการ รวมถึงไลบรารี OpenAI ไลบรารี dotenv ไลบรารี requests และไลบรารี Pillow ```python import openai @@ -192,14 +192,14 @@ _autoregressive transformer_ กำหนดวิธีที่โมเดล import dotenv ``` -- จากนั้น โหลดตัวแปรสภาพแวดล้อมจากไฟล์ _.env_ +- ต่อมา เราโหลดตัวแปรสภาพแวดล้อมจากไฟล์ _.env_ ```python # import dotenv dotenv.load_dotenv() ``` -- หลังจากนั้น ตั้งค่าคอนฟิก Azure OpenAI service client +- หลังจากนั้น เรากำหนดค่าลูกค้า Azure OpenAI service ```python # Get endpoint and key from environment variables @@ -210,7 +210,7 @@ _autoregressive transformer_ กำหนดวิธีที่โมเดล ) ``` -- ต่อไป สร้างภาพ: +- ต่อมา เราสร้างภาพ: ```python # Create an image by using the image generation API @@ -221,9 +221,9 @@ _autoregressive transformer_ กำหนดวิธีที่โมเดล ) ``` - โค้ดด้านบนตอบกลับด้วย JSON object ที่มี URL ของภาพที่สร้างขึ้น เราสามารถใช้ URL เพื่อดาวน์โหลดภาพและบันทึกลงในไฟล์ + โค้ดด้านบนตอบกลับด้วยวัตถุ JSON ที่มี URL ของภาพที่สร้างขึ้น เราสามารถใช้ URL เพื่อดาวน์โหลดภาพและบันทึกลงในไฟล์ -- สุดท้าย เปิดภาพและใช้โปรแกรมดูภาพมาตรฐานเพื่อแสดงภาพ: +- สุดท้าย เราเปิดภาพและใช้โปรแกรมดูภาพมาตรฐานเพื่อแสดงภาพ: ```python image = Image.open(image_path) @@ -242,23 +242,23 @@ _autoregressive transformer_ กำหนดวิธีที่โมเดล ) ``` -- **prompt** คือข้อความ prompt ที่ใช้สร้างภาพ ในกรณีนี้ เราใช้ prompt "กระต่ายบนหลังม้า ถืออมยิ้ม ในทุ่งหญ้าที่มีหมอกและดอกแดฟโฟดิล" -- **size** คือขนาดของภาพที่สร้างขึ้น ในกรณีนี้ เรากำลังสร้างภาพที่มีขนาด 1024x1024 พิกเซล -- **n** คือจำนวนภาพที่สร้างขึ้น ในกรณีนี้ เรากำลังสร้างสองภาพ -- **temperature** เป็นพารามิเตอร์ที่ควบคุมความสุ่มของผลลัพธ์ของโมเดล Generative AI ค่า temperature อยู่ระหว่าง 0 ถึง 1 โดยที่ 0 หมายถึงผลลัพธ์ที่กำหนดแน่นอน และ 1 หมายถึงผลลัพธ์ที่สุ่ม ค่าเริ่มต้นคือ 0.7 +- **prompt** คือข้อความที่ใช้ในการสร้างภาพ ในกรณีนี้ เราใช้ prompt "กระต่ายบนม้า ถืออมยิ้ม อยู่ในทุ่งหญ้าที่มีดอกแดฟโฟดิลขึ้นในหมอก" +- **size** คือขนาดของภาพที่สร้างขึ้น ในกรณีนี้ เราสร้างภาพที่มีขนาด 1024x1024 พิกเซล +- **n** คือจำนวนภาพที่สร้างขึ้น ในกรณีนี้ เราสร้างภาพสองภาพ +- **temperature** เป็นพารามิเตอร์ที่ควบคุมความสุ่มของผลลัพธ์ของโมเดล Generative AI ค่า temperature อยู่ระหว่าง 0 ถึง 1 โดยที่ 0 หมายถึงผลลัพธ์เป็นแบบกำหนดแน่นอน และ 1 หมายถึงผลลัพธ์เป็นแบบสุ่ม ค่าเริ่มต้นคือ 0.7 -ยังมีสิ่งอื่น ๆ ที่คุณสามารถทำได้กับภาพ ซึ่งเราจะครอบคลุมในส่วนถัดไป +ยังมีสิ่งอื่นๆ ที่คุณสามารถทำได้กับภาพ ซึ่งเราจะครอบคลุมในส่วนถัดไป ## ความสามารถเพิ่มเติมของการสร้างภาพ -คุณได้เห็นแล้วว่าเราสามารถสร้างภาพได้ด้วยโค้ด Python เพียงไม่กี่บรรทัด อย่างไรก็ตาม ยังมีสิ่งอื่น ๆ ที่คุณสามารถทำได้กับภาพ +คุณได้เห็นแล้วว่าเราสามารถสร้างภาพได้ด้วยโค้ด Python เพียงไม่กี่บรรทัด อย่างไรก็ตาม ยังมีสิ่งอื่นๆ ที่คุณสามารถทำได้กับภาพ คุณยังสามารถทำสิ่งต่อไปนี้: -- **แก้ไขภาพ** โดยการให้ภาพที่มีอยู่แล้วพร้อมกับ mask และ prompt คุณสามารถเปลี่ยนแปลงภาพได้ ตัวอย่างเช่น คุณสามารถเพิ่มบางสิ่งในส่วนหนึ่งของภาพ ลองนึกถึงภาพกระต่ายของเรา คุณสามารถเพิ่มหมวกให้กับกระต่าย วิธีการทำคือการให้ภาพ mask (ระบุส่วนที่ต้องการเปลี่ยนแปลง) และข้อความ prompt เพื่อบอกว่าควรทำอะไร -> หมายเหตุ: ฟีเจอร์นี้ไม่รองรับใน DALL-E 3 - -ตัวอย่างนี้ใช้ GPT Image: +- **แก้ไขภาพ** โดยการให้ภาพที่มีอยู่แล้ว หน้ากาก และ prompt คุณสามารถเปลี่ยนแปลงภาพได้ เช่น คุณสามารถเพิ่มบางสิ่งในส่วนหนึ่งของภาพ ลองนึกภาพกระต่ายของเรา คุณสามารถเพิ่มหมวกให้กระต่าย วิธีการทำคือการให้ภาพ หน้ากาก (ระบุส่วนที่ต้องการเปลี่ยนแปลง) และ prompt ข้อความเพื่อบอกว่าควรทำอะไร +> หมายเหตุ: ฟีเจอร์นี้ไม่รองรับใน DALL-E 3 + +ตัวอย่างเช่น การใช้ GPT Image: ```python response = client.images.edit( @@ -270,7 +270,7 @@ _autoregressive transformer_ กำหนดวิธีที่โมเดล image_url = response.data[0].url ``` - ภาพพื้นฐานจะมีเพียงเลานจ์พร้อมสระว่ายน้ำ แต่ภาพสุดท้ายจะมีนกฟลามิงโก: + ภาพพื้นฐานจะมีเพียงเลานจ์ที่มีสระว่ายน้ำ แต่ภาพสุดท้ายจะมีนกฟลามิงโก:
@@ -278,8 +278,7 @@ _autoregressive transformer_ กำหนดวิธีที่โมเดล
- -- **สร้างภาพแบบต่าง ๆ** แนวคิดคือการนำภาพที่มีอยู่แล้วและขอให้สร้างภาพแบบต่าง ๆ เพื่อสร้างภาพแบบต่าง ๆ คุณต้องให้ภาพและข้อความ prompt พร้อมโค้ดดังนี้: +- **สร้างภาพแบบต่างๆ** แนวคิดคือการนำภาพที่มีอยู่แล้วและขอให้สร้างภาพแบบต่างๆ เพื่อสร้างภาพแบบต่างๆ คุณให้ภาพและ prompt ข้อความพร้อมโค้ดดังนี้: ```python response = openai.Image.create_variation( @@ -294,19 +293,19 @@ _autoregressive transformer_ กำหนดวิธีที่โมเดล ## Temperature -Temperature เป็นพารามิเตอร์ที่ควบคุมความสุ่มของผลลัพธ์ของโมเดล Generative AI ค่า temperature อยู่ระหว่าง 0 ถึง 1 โดยที่ 0 หมายถึงผลลัพธ์ที่กำหนดแน่นอน และ 1 หมายถึงผลลัพธ์ที่สุ่ม ค่าเริ่มต้นคือ 0.7 +Temperature เป็นพารามิเตอร์ที่ควบคุมความสุ่มของผลลัพธ์ของโมเดล Generative AI ค่า temperature อยู่ระหว่าง 0 ถึง 1 โดยที่ 0 หมายถึงผลลัพธ์เป็นแบบกำหนดแน่นอน และ 1 หมายถึงผลลัพธ์เป็นแบบสุ่ม ค่าเริ่มต้นคือ 0.7 มาดูตัวอย่างว่า temperature ทำงานอย่างไร โดยการรัน prompt นี้สองครั้ง: -> Prompt : "กระต่ายบนหลังม้า ถืออมยิ้ม ในทุ่งหญ้าที่มีหมอกและดอกแดฟโฟดิล" +> Prompt : "กระต่ายบนม้า ถืออมยิ้ม อยู่ในทุ่งหญ้าที่มีดอกแดฟโฟดิลขึ้นในหมอก" -![กระต่ายบนหลังม้าถืออมยิ้ม, เวอร์ชัน 1](../../../translated_images/v1-generated-image.a295cfcffa3c13c2432eb1e41de7e49a78c814000fb1b462234be24b6e0db7ea.th.png) +![กระต่ายบนม้าถืออมยิ้ม, เวอร์ชัน 1](../../../translated_images/v1-generated-image.a295cfcffa3c13c2432eb1e41de7e49a78c814000fb1b462234be24b6e0db7ea.th.png) ตอนนี้ลองรัน prompt เดิมอีกครั้งเพื่อดูว่าเราจะไม่ได้ภาพเดิมสองครั้ง: -![ภาพที่สร้างขึ้นของกระต่ายบนหลังม้า](../../../translated_images/v2-generated-image.33f55a3714efe61dc19622c869ba6cd7d6e6de562e26e95b5810486187aace39.th.png) +![ภาพที่สร้างของกระต่ายบนม้า](../../../translated_images/v2-generated-image.33f55a3714efe61dc19622c869ba6cd7d6e6de562e26e95b5810486187aace39.th.png) -ดังที่คุณเห็น ภาพมีความคล้ายคลึงกัน แต่ไม่เหมือนกัน ลองเปลี่ยนค่า temperature เป็น 0.1 และดูว่าจะเกิดอะไรขึ้น: +คุณจะเห็นว่าภาพมีความคล้ายกัน แต่ไม่เหมือนกัน ลองเปลี่ยนค่า temperature เป็น 0.1 และดูผลลัพธ์: ```python generation_response = client.images.create( @@ -318,7 +317,7 @@ Temperature เป็นพารามิเตอร์ที่ควบค ### การเปลี่ยนแปลง temperature -ลองทำให้ผลลัพธ์มีความแน่นอนมากขึ้น เราสามารถสังเกตได้จากภาพสองภาพที่เราสร้างขึ้นว่าในภาพแรกมีกระต่าย และในภาพที่สองมีม้า ดังนั้นภาพจึงแตกต่างกันมาก +ลองทำให้ผลลัพธ์มีความกำหนดแน่นอนมากขึ้น เราสามารถสังเกตจากภาพสองภาพที่เราสร้างขึ้นว่าในภาพแรกมีกระต่าย และในภาพที่สองมีม้า ดังนั้นภาพจึงแตกต่างกันมาก ดังนั้นลองเปลี่ยนโค้ดของเราและตั้งค่า temperature เป็น 0 ดังนี้: @@ -331,26 +330,26 @@ generation_response = client.images.create( ) ``` -ตอนนี้เมื่อคุณรันโค้ดนี้ คุณจะได้ภาพสองภาพดังนี้: +เมื่อคุณรันโค้ดนี้ คุณจะได้ภาพสองภาพดังนี้: - ![Temperature 0, v1](../../../translated_images/v1-temp-generated-image.a4346e1d2360a056d855ee3dfcedcce91211747967cb882e7d2eff2076f90e4a.th.png) - ![Temperature 0 , v2](../../../translated_images/v2-temp-generated-image.871d0c920dbfb0f1cb5d9d80bffd52da9b41f83b386320d9a9998635630ec83d.th.png) -ที่นี่คุณจะเห็นได้ชัดเจนว่าภาพมีความคล้ายคลึงกันมากขึ้น +คุณจะเห็นได้ชัดเจนว่าภาพมีความคล้ายกันมากขึ้น ## วิธีการกำหนดขอบเขตสำหรับแอปพลิเคชันของคุณด้วย metaprompts -ด้วยเดโมของเรา เราสามารถสร้างภาพให้กับลูกค้าของเราได้แล้ว อย่างไรก็ตาม เราจำเป็นต้องสร้างขอบเขตสำหรับแอปพลิเคชันของเรา +ด้วยเดโมของเรา เราสามารถสร้างภาพให้ลูกค้าได้แล้ว อย่างไรก็ตาม เราจำเป็นต้องสร้างขอบเขตสำหรับแอปพลิเคชันของเรา ตัวอย่างเช่น เราไม่ต้องการสร้างภาพที่ไม่เหมาะสมสำหรับการทำงาน หรือไม่เหมาะสมสำหรับเด็ก -เราสามารถทำสิ่งนี้ได้ด้วย _metaprompts_ Metaprompts คือข้อความ prompt ที่ใช้ควบคุมผลลัพธ์ของโมเดล Generative AI ตัวอย่างเช่น เราสามารถใช้ metaprompts เพื่อควบคุมผลลัพธ์ และมั่นใจว่าภาพที่สร้างขึ้นเหมาะสมสำหรับการทำงาน หรือเหมาะสมสำหรับเด็ก +เราสามารถทำได้ด้วย _metaprompts_ Metaprompts คือ prompt ข้อความที่ใช้ควบคุมผลลัพธ์ของโมเดล Generative AI ตัวอย่างเช่น เราสามารถใช้ metaprompts เพื่อควบคุมผลลัพธ์ และมั่นใจว่าภาพที่สร้างขึ้นเหมาะสมสำหรับการทำงาน หรือเหมาะสมสำหรับเด็ก ### มันทำงานอย่างไร? แล้ว metaprompts ทำงานอย่างไร? -Metaprompts คือข้อความ prompt ที่ใช้ควบคุมผลลัพธ์ของโมเดล Generative AI โดยวางไว้ก่อนข้อความ prompt และใช้ควบคุมผลลัพธ์ของโมเดล และฝังอยู่ในแอปพลิเคชันเพื่อควบคุมผลลัพธ์ของโมเดล โดยรวมข้อความ prompt และ metaprompt เข้าในข้อความ prompt เดียว +Metaprompts คือ prompt ข้อความที่ใช้ควบคุมผลลัพธ์ของโมเดล Generative AI โดยวางไว้ก่อน prompt ข้อความ และใช้ควบคุมผลลัพธ์ของโมเดล และฝังในแอปพลิเคชันเพื่อควบคุมผลลัพธ์ของโมเดล โดยรวม prompt ข้อความและ metaprompt ข้อความใน prompt เดียว ตัวอย่างหนึ่งของ metaprompt จะเป็นดังนี้: @@ -398,15 +397,15 @@ Create an image of a bunny on a horse, holding a lollipop" จาก prompt ด้านบน คุณจะเห็นว่าภาพทั้งหมดที่สร้างขึ้นพิจารณา metaprompt -## งานมอบหมาย - มาช่วยนักเรียนกันเถอะ +## งาน - มาสนับสนุนนักเรียนกันเถอะ -เราได้แนะนำ Edu4All ในตอนต้นของบทเรียนนี้ ตอนนี้ถึงเวลาช่วยนักเรียนสร้างภาพสำหรับการประเมินของพวกเขา +เราได้แนะนำ Edu4All ในตอนต้นของบทเรียนนี้ ตอนนี้ถึงเวลาสนับสนุนนักเรียนให้สร้างภาพสำหรับการประเมินของพวกเขา นักเรียนจะสร้างภาพสำหรับการประเมินของพวกเขาที่มีอนุสรณ์สถาน โดยอนุสรณ์สถานที่เลือกขึ้นอยู่กับนักเรียน นักเรียนถูกขอให้ใช้ความคิดสร้างสรรค์ในงานนี้เพื่อวางอนุสรณ์สถานเหล่านี้ในบริบทที่แตกต่างกัน -## วิธีแก้ปัญหา +## วิธีแก้ไข -นี่คือตัวอย่างวิธีแก้ปัญหาหนึ่ง: +นี่คือตัวอย่างวิธีแก้ไขที่เป็นไปได้: ```python import openai import os @@ -477,7 +476,7 @@ except openai.BadRequestError as err: print(err) ``` -## ทำได้ดีมาก! เรียนรู้เพิ่มเติมกันเถอะ +## ยอดเยี่ยม! เรียนรู้เพิ่มเติมต่อไป หลังจากจบบทเรียนนี้ ลองดู [คอลเลกชันการเรียนรู้ Generative AI](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) เพื่อเพิ่มพูนความรู้เกี่ยวกับ Generative AI ของคุณ! @@ -486,4 +485,4 @@ except openai.BadRequestError as err: --- **ข้อจำกัดความรับผิดชอบ**: -เอกสารนี้ได้รับการแปลโดยใช้บริการแปลภาษา AI [Co-op Translator](https://github.com/Azure/co-op-translator) แม้ว่าเราจะพยายามให้การแปลมีความถูกต้องมากที่สุด แต่โปรดทราบว่าการแปลอัตโนมัติอาจมีข้อผิดพลาดหรือความไม่ถูกต้อง เอกสารต้นฉบับในภาษาดั้งเดิมควรถือเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลที่สำคัญ ขอแนะนำให้ใช้บริการแปลภาษามืออาชีพ เราไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความผิดที่เกิดจากการใช้การแปลนี้ \ No newline at end of file +เอกสารนี้ได้รับการแปลโดยใช้บริการแปลภาษา AI [Co-op Translator](https://github.com/Azure/co-op-translator) แม้ว่าเราจะพยายามให้การแปลมีความถูกต้อง แต่โปรดทราบว่าการแปลโดยอัตโนมัติอาจมีข้อผิดพลาดหรือความไม่ถูกต้อง เอกสารต้นฉบับในภาษาดั้งเดิมควรถือเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลที่สำคัญ ขอแนะนำให้ใช้บริการแปลภาษามืออาชีพ เราไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความผิดที่เกิดจากการใช้การแปลนี้ \ No newline at end of file diff --git a/translations/th/10-building-low-code-ai-applications/README.md b/translations/th/10-building-low-code-ai-applications/README.md index 891a9756e2..a187bb3a7d 100644 --- a/translations/th/10-building-low-code-ai-applications/README.md +++ b/translations/th/10-building-low-code-ai-applications/README.md @@ -1,255 +1,257 @@ - -# การสร้างแอปพลิเคชัน AI แบบ Low Code - -[![Building Low Code AI Applications](../../../translated_images/10-lesson-banner.a01ac8fe3fd86310c2e4065c0b3c584879f33b8ce797311821a636992f8a5b2f.th.png)](https://aka.ms/gen-ai-lesson10-gh?WT.mc_id=academic-105485-koreyst) - -> _(คลิกที่ภาพด้านบนเพื่อดูวิดีโอบทเรียนนี้)_ - -## บทนำ - -ตอนนี้ที่เราได้เรียนรู้วิธีสร้างแอปพลิเคชันสร้างภาพแล้ว มาพูดถึงเรื่อง Low Code กัน Generative AI สามารถนำไปใช้ในหลายด้านรวมถึง Low Code แต่ Low Code คืออะไร และเราจะเพิ่ม AI เข้าไปได้อย่างไร? - -การสร้างแอปและโซลูชันกลายเป็นเรื่องง่ายขึ้นสำหรับนักพัฒนาทั้งแบบดั้งเดิมและไม่ใช่นักพัฒนา ผ่านการใช้ Low Code Development Platforms แพลตฟอร์มเหล่านี้ช่วยให้คุณสร้างแอปและโซลูชันโดยใช้โค้ดน้อยหรือแทบไม่ต้องเขียนโค้ดเลย โดยการจัดเตรียมสภาพแวดล้อมการพัฒนาแบบภาพที่ให้คุณลากและวางส่วนประกอบเพื่อสร้างแอปและโซลูชันได้อย่างรวดเร็วและใช้ทรัพยากรน้อยลง ในบทเรียนนี้ เราจะเจาะลึกวิธีใช้ Low Code และวิธีเพิ่มประสิทธิภาพการพัฒนา Low Code ด้วย AI ผ่าน Power Platform - -Power Platform เปิดโอกาสให้องค์กรสามารถเสริมพลังให้ทีมงานสร้างโซลูชันของตนเองผ่านสภาพแวดล้อมแบบ low-code หรือ no-code ที่ใช้งานง่าย สภาพแวดล้อมนี้ช่วยให้กระบวนการสร้างโซลูชันง่ายขึ้น ด้วย Power Platform โซลูชันสามารถสร้างได้ภายในไม่กี่วันหรือสัปดาห์ แทนที่จะใช้เวลาหลายเดือนหรือหลายปี Power Platform ประกอบด้วยผลิตภัณฑ์หลัก 5 ตัว ได้แก่ Power Apps, Power Automate, Power BI, Power Pages และ Copilot Studio - -บทเรียนนี้ครอบคลุม: - -- แนะนำ Generative AI ใน Power Platform -- แนะนำ Copilot และวิธีใช้งาน -- การใช้ Generative AI เพื่อสร้างแอปและโฟลว์ใน Power Platform -- ทำความเข้าใจโมเดล AI ใน Power Platform ด้วย AI Builder - -## เป้าหมายการเรียนรู้ - -เมื่อจบบทเรียนนี้ คุณจะสามารถ: - -- เข้าใจการทำงานของ Copilot ใน Power Platform - -- สร้างแอป Student Assignment Tracker สำหรับสตาร์ทอัพด้านการศึกษา - -- สร้างโฟลว์ Invoice Processing ที่ใช้ AI ในการดึงข้อมูลจากใบแจ้งหนี้ - -- นำแนวปฏิบัติที่ดีที่สุดมาใช้เมื่อใช้โมเดล AI สร้างข้อความด้วย GPT - -เครื่องมือและเทคโนโลยีที่คุณจะใช้ในบทเรียนนี้ ได้แก่: - -- **Power Apps** สำหรับแอป Student Assignment Tracker ซึ่งเป็นสภาพแวดล้อมการพัฒนาแบบ low-code สำหรับสร้างแอปเพื่อติดตาม จัดการ และโต้ตอบกับข้อมูล - -- **Dataverse** สำหรับเก็บข้อมูลของแอป Student Assignment Tracker โดย Dataverse จะเป็นแพลตฟอร์มข้อมูลแบบ low-code สำหรับเก็บข้อมูลของแอป - -- **Power Automate** สำหรับโฟลว์ Invoice Processing ซึ่งเป็นสภาพแวดล้อมการพัฒนาแบบ low-code สำหรับสร้างเวิร์กโฟลว์เพื่อทำให้งานประมวลผลใบแจ้งหนี้เป็นอัตโนมัติ - -- **AI Builder** สำหรับโมเดล AI ในการประมวลผลใบแจ้งหนี้ โดยคุณจะใช้โมเดล AI ที่สร้างไว้ล่วงหน้าเพื่อประมวลผลใบแจ้งหนี้สำหรับสตาร์ทอัพของเรา - -## Generative AI ใน Power Platform - -การเพิ่มประสิทธิภาพการพัฒนาและแอปพลิเคชันแบบ low-code ด้วย generative AI เป็นจุดสนใจหลักของ Power Platform เป้าหมายคือการเปิดโอกาสให้ทุกคนสามารถสร้างแอป เว็บไซต์ แดชบอร์ดที่ขับเคลื่อนด้วย AI และทำงานอัตโนมัติด้วย AI _โดยไม่จำเป็นต้องมีความเชี่ยวชาญด้านวิทยาศาสตร์ข้อมูล_ เป้าหมายนี้ทำได้โดยการผสาน generative AI เข้ากับประสบการณ์การพัฒนาแบบ low-code ใน Power Platform ในรูปแบบของ Copilot และ AI Builder - -### มันทำงานอย่างไร? - -Copilot คือผู้ช่วย AI ที่ช่วยให้คุณสร้างโซลูชัน Power Platform โดยการอธิบายความต้องการของคุณผ่านขั้นตอนการสนทนาโดยใช้ภาษาธรรมชาติ เช่น คุณสามารถสั่งให้ผู้ช่วย AI ระบุว่าฟิลด์ใดบ้างที่แอปของคุณจะใช้ แล้วมันจะสร้างทั้งแอปและโมเดลข้อมูลพื้นฐาน หรือคุณอาจระบุวิธีตั้งค่าโฟลว์ใน Power Automate - -คุณสามารถใช้ฟีเจอร์ที่ขับเคลื่อนด้วย Copilot ในหน้าจอแอปของคุณเพื่อให้ผู้ใช้ค้นพบข้อมูลเชิงลึกผ่านการโต้ตอบแบบสนทนา - -AI Builder คือความสามารถ AI แบบ low-code ที่มีใน Power Platform ซึ่งช่วยให้คุณใช้โมเดล AI เพื่อช่วยทำงานอัตโนมัติและทำนายผลลัพธ์ ด้วย AI Builder คุณสามารถนำ AI มาใช้ในแอปและโฟลว์ที่เชื่อมต่อกับข้อมูลใน Dataverse หรือแหล่งข้อมูลคลาวด์ต่างๆ เช่น SharePoint, OneDrive หรือ Azure - -Copilot มีให้ใช้งานในผลิตภัณฑ์ Power Platform ทุกตัว ได้แก่ Power Apps, Power Automate, Power BI, Power Pages และ Power Virtual Agents ส่วน AI Builder มีให้ใช้งานใน Power Apps และ Power Automate ในบทเรียนนี้ เราจะเน้นวิธีใช้ Copilot และ AI Builder ใน Power Apps และ Power Automate เพื่อสร้างโซลูชันสำหรับสตาร์ทอัพด้านการศึกษาของเรา - -### Copilot ใน Power Apps - -ในฐานะส่วนหนึ่งของ Power Platform, Power Apps ให้สภาพแวดล้อมการพัฒนาแบบ low-code สำหรับสร้างแอปเพื่อติดตาม จัดการ และโต้ตอบกับข้อมูล เป็นชุดบริการพัฒนาแอปที่มีแพลตฟอร์มข้อมูลที่ปรับขนาดได้และสามารถเชื่อมต่อกับบริการคลาวด์และข้อมูลในองค์กร Power Apps ช่วยให้คุณสร้างแอปที่ทำงานบนเบราว์เซอร์ แท็บเล็ต และโทรศัพท์มือถือ และสามารถแชร์กับเพื่อนร่วมงานได้ Power Apps ช่วยให้ผู้ใช้เริ่มต้นพัฒนาแอปได้ง่ายด้วยอินเทอร์เฟซที่เรียบง่าย เพื่อให้ผู้ใช้ธุรกิจทั่วไปหรือผู้พัฒนามืออาชีพสามารถสร้างแอปที่กำหนดเองได้ ประสบการณ์การพัฒนาแอปยังได้รับการปรับปรุงด้วย Generative AI ผ่าน Copilot - -ฟีเจอร์ผู้ช่วย AI Copilot ใน Power Apps ช่วยให้คุณอธิบายว่าแอปแบบไหนที่คุณต้องการและข้อมูลอะไรที่คุณต้องการให้แอปติดตาม รวบรวม หรือแสดง จากนั้น Copilot จะสร้างแอป Canvas ที่ตอบสนองตามคำอธิบายของคุณ คุณสามารถปรับแต่งแอปให้ตรงกับความต้องการได้ AI Copilot ยังสร้างและแนะนำ Dataverse Table ที่มีฟิลด์ที่คุณต้องการเพื่อเก็บข้อมูลที่ต้องการติดตาม พร้อมตัวอย่างข้อมูล เราจะมาดูว่า Dataverse คืออะไรและคุณจะใช้มันใน Power Apps อย่างไรในบทเรียนนี้ต่อไป คุณสามารถปรับแต่งตารางให้ตรงกับความต้องการโดยใช้ฟีเจอร์ผู้ช่วย AI Copilot ผ่านขั้นตอนการสนทนา ฟีเจอร์นี้สามารถใช้งานได้ทันทีจากหน้าจอหลักของ Power Apps - -### Copilot ใน Power Automate - -ในฐานะส่วนหนึ่งของ Power Platform, Power Automate ช่วยให้ผู้ใช้สร้างเวิร์กโฟลว์อัตโนมัติระหว่างแอปและบริการต่างๆ ช่วยทำให้งานธุรกิจที่ทำซ้ำๆ เช่น การสื่อสาร การเก็บข้อมูล และการอนุมัติการตัดสินใจเป็นอัตโนมัติ อินเทอร์เฟซที่เรียบง่ายช่วยให้ผู้ใช้ทุกระดับทักษะ (ตั้งแต่ผู้เริ่มต้นจนถึงนักพัฒนามืออาชีพ) สามารถสร้างงานอัตโนมัติได้ ประสบการณ์การพัฒนาเวิร์กโฟลว์ยังได้รับการปรับปรุงด้วย Generative AI ผ่าน Copilot - -ฟีเจอร์ผู้ช่วย AI Copilot ใน Power Automate ช่วยให้คุณอธิบายว่าโฟลว์แบบไหนที่คุณต้องการและการกระทำใดที่คุณต้องการให้โฟลว์ทำ จากนั้น Copilot จะสร้างโฟลว์ตามคำอธิบายของคุณ คุณสามารถปรับแต่งโฟลว์ให้ตรงกับความต้องการได้ AI Copilot ยังสร้างและแนะนำการกระทำที่คุณต้องใช้เพื่อทำงานที่ต้องการอัตโนมัติ เราจะมาดูว่าโฟลว์คืออะไรและคุณจะใช้มันใน Power Automate อย่างไรในบทเรียนนี้ต่อไป คุณสามารถปรับแต่งการกระทำให้ตรงกับความต้องการโดยใช้ฟีเจอร์ผู้ช่วย AI Copilot ผ่านขั้นตอนการสนทนา ฟีเจอร์นี้สามารถใช้งานได้ทันทีจากหน้าจอหลักของ Power Automate - -## การบ้าน: จัดการงานนักเรียนและใบแจ้งหนี้สำหรับสตาร์ทอัพของเรา โดยใช้ Copilot - -สตาร์ทอัพของเราจัดคอร์สออนไลน์ให้กับนักเรียน สตาร์ทอัพเติบโตอย่างรวดเร็วและกำลังประสบปัญหาในการตอบสนองความต้องการของคอร์ส สตาร์ทอัพจึงจ้างคุณในฐานะนักพัฒนา Power Platform เพื่อช่วยสร้างโซลูชัน low code ที่ช่วยจัดการงานนักเรียนและใบแจ้งหนี้ โซลูชันนี้ควรช่วยติดตามและจัดการงานนักเรียนผ่านแอป และทำให้งานประมวลผลใบแจ้งหนี้เป็นอัตโนมัติผ่านเวิร์กโฟลว์ คุณได้รับมอบหมายให้ใช้ Generative AI ในการพัฒนาโซลูชันนี้ - -เมื่อเริ่มต้นใช้ Copilot คุณสามารถใช้ [Power Platform Copilot Prompt Library](https://github.com/pnp/powerplatform-prompts?WT.mc_id=academic-109639-somelezediko) เพื่อเริ่มต้นกับคำสั่ง prompt ไลบรารีนี้มีรายการ prompt ที่คุณสามารถใช้สร้างแอปและโฟลว์ด้วย Copilot คุณยังสามารถใช้ prompt ในไลบรารีเพื่อเป็นแนวทางในการอธิบายความต้องการของคุณกับ Copilot - -### สร้างแอป Student Assignment Tracker สำหรับสตาร์ทอัพของเรา - -ครูผู้สอนในสตาร์ทอัพของเรากำลังประสบปัญหาในการติดตามงานนักเรียน พวกเขาใช้สเปรดชีตในการติดตามงาน แต่เริ่มจัดการยากขึ้นเมื่อจำนวนนักเรียนเพิ่มขึ้น พวกเขาขอให้คุณสร้างแอปที่ช่วยติดตามและจัดการงานนักเรียน แอปควรให้ผู้ใช้เพิ่มงานใหม่ ดูงาน อัปเดตงาน และลบงานได้ แอปยังควรให้ครูและนักเรียนดูงานที่ได้รับการให้คะแนนแล้วและงานที่ยังไม่ได้ให้คะแนนได้ - -คุณจะสร้างแอปโดยใช้ Copilot ใน Power Apps ตามขั้นตอนดังนี้: - -1. ไปที่หน้าจอหลักของ [Power Apps](https://make.powerapps.com?WT.mc_id=academic-105485-koreyst) - -2. ใช้พื้นที่ข้อความบนหน้าจอหลักเพื่ออธิบายแอปที่คุณต้องการสร้าง เช่น **_ฉันต้องการสร้างแอปเพื่อติดตามและจัดการงานนักเรียน_** คลิกปุ่ม **Send** เพื่อส่ง prompt ไปยัง AI Copilot - -![Describe the app you want to build](../../../translated_images/copilot-chat-prompt-powerapps.84250f341d060830a296b68512e6b3b3aa3a4559f4f1c2d7bafeba8ad3fcd17a.th.png) - -3. AI Copilot จะแนะนำ Dataverse Table ที่มีฟิลด์ที่คุณต้องการเพื่อเก็บข้อมูลที่ต้องการติดตาม พร้อมตัวอย่างข้อมูล คุณสามารถปรับแต่งตารางให้ตรงกับความต้องการโดยใช้ฟีเจอร์ผู้ช่วย AI Copilot ผ่านขั้นตอนการสนทนา - - > **สำคัญ**: Dataverse คือแพลตฟอร์มข้อมูลพื้นฐานของ Power Platform เป็นแพลตฟอร์มข้อมูลแบบ low-code สำหรับเก็บข้อมูลของแอป เป็นบริการที่มีการจัดการเต็มรูปแบบที่เก็บข้อมูลอย่างปลอดภัยใน Microsoft Cloud และถูกจัดเตรียมภายในสภาพแวดล้อม Power Platform ของคุณ มาพร้อมกับความสามารถในการบริหารจัดการข้อมูล เช่น การจัดประเภทข้อมูล การติดตามแหล่งที่มาของข้อมูล การควบคุมการเข้าถึงอย่างละเอียด และอื่นๆ คุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับ Dataverse ได้ [ที่นี่](https://docs.microsoft.com/powerapps/maker/data-platform/data-platform-intro?WT.mc_id=academic-109639-somelezediko) - - ![Suggested fields in your new table](../../../translated_images/copilot-dataverse-table-powerapps.f4cc07b5d5f9327bd3783dd288debb2a959ce3320107512e235137aebd8a1a4c.th.png) - -4. ครูต้องการส่งอีเมลถึงนักเรียนที่ส่งงานมาเพื่อแจ้งความคืบหน้าของงาน คุณสามารถใช้ Copilot เพื่อเพิ่มฟิลด์ใหม่ในตารางเพื่อเก็บอีเมลนักเรียน เช่น คุณสามารถใช้ prompt นี้เพื่อเพิ่มฟิลด์ใหม่ในตาราง: **_ฉันต้องการเพิ่มคอลัมน์เพื่อเก็บอีเมลนักเรียน_** คลิกปุ่ม **Send** เพื่อส่ง prompt ไปยัง AI Copilot - -![Adding a new field](../../../translated_images/copilot-new-column.35e15ff21acaf2745965d427b130f2be772f0484835b44fe074d496b1a455f2a.th.png) - -5. AI Copilot จะสร้างฟิลด์ใหม่ให้ และคุณสามารถปรับแต่งฟิลด์ให้ตรงกับความต้องการได้ - -6. เมื่อเสร็จสิ้นการจัดการตารางแล้ว ให้คลิกปุ่ม **Create app** เพื่อสร้างแอป - -7. AI Copilot จะสร้างแอป Canvas ที่ตอบสนองตามคำอธิบายของคุณ คุณสามารถปรับแต่งแอปให้ตรงกับความต้องการได้ - -8. เพื่อให้ครูส่งอีเมลถึงนักเรียน คุณสามารถใช้ Copilot เพื่อเพิ่มหน้าจอใหม่ในแอป เช่น คุณสามารถใช้ prompt นี้เพื่อเพิ่มหน้าจอใหม่: **_ฉันต้องการเพิ่มหน้าจอเพื่อส่งอีเมลถึงนักเรียน_** คลิกปุ่ม **Send** เพื่อส่ง prompt ไปยัง AI Copilot - -![Adding a new screen via a prompt instruction](../../../translated_images/copilot-new-screen.2e0bef7132a173928bc621780b39799e03982d315cb5a9ff75a34b08054641d4.th.png) - -9. AI Copilot จะสร้างหน้าจอใหม่ให้ และคุณสามารถปรับแต่งหน้าจอให้ตรงกับความต้องการได้ - -10. เมื่อเสร็จสิ้นการสร้างแอปแล้ว ให้คลิกปุ่ม **Save** เพื่อบันทึกแอป - -11. เพื่อแชร์แอปกับครู ให้คลิกปุ่ม **Share** แล้วคลิกปุ่ม **Share** อีกครั้ง จากนั้นคุณสามารถแชร์แอปโดยใส่อีเมลของครู - -> **การบ้านของคุณ**: แอปที่คุณสร้างขึ้นเป็นจุดเริ่มต้นที่ดี แต่ยังสามารถพัฒนาได้อีก ด้วยฟีเจอร์อีเมล ครูสามารถส่งอีเมลถึงนักเรียนได้แค่แบบแมนนวลโดยต้องพิมพ์อีเมลเอง คุณสามารถใช้ Copilot สร้างระบบอัตโนมัติที่ช่วยให้ครูส่งอีเมลถึงนักเรียนโดยอัตโนมัติเมื่อพวกเขาส่งงานได้หรือไม่? คำใบ้คือ ด้วย prompt ที่เหมาะสม คุณสามารถใช้ Copilot ใน Power Automate เพื่อสร้างระบบนี้ได้ - -### สร้างตารางข้อมูลใบแจ้งหนี้สำหรับสตาร์ทอัพของเรา - -ทีมการเงินของสตาร์ทอัพของเรากำลังประสบปัญหาในการติดตามใบแจ้งหนี้ พวกเขาใช้สเปรดชีตในการติดตามใบแจ้งหนี้ แต่เริ่มจัดการยากขึ้นเมื่อจำนวนใบแจ้งหนี้เพิ่มขึ้น พวกเขาขอให้คุณสร้างตารางที่ช่วยเก็บ ติดตาม และจัดการข้อมูลใบแจ้งหนี้ที่ได้รับ ตารางนี้จะใช้สร้างระบบอัตโนมัติที่ดึงข้อมูลใบแจ้งหนี้ทั้งหมดและเก็บไว้ในตาราง ตารางนี้ยังควรช่วยให้ทีมการเงินดูใบแจ้งหนี้ที่ชำระแล้วและยังไม่ชำระได้ - -Power Platform มีแพลตฟอร์มข้อมูลพื้นฐานชื่อ Dataverse ที่ช่วยให้คุณเก็บข้อมูลสำหรับแอปและโซลูชันของคุณ Dataverse เป็นแพลตฟอร์มข้อมูลแบบ low-code สำหรับเก็บข้อมูลของแอป เป็นบริการที่มีการจัดการเต็มรูปแบบที่เก็บข้อมูลอย่างปลอดภัยใน Microsoft Cloud และถูกจัดเตรียมภายในสภาพแวดล้อม Power Platform ของคุณ มาพร้อมกับความสามารถในการบริหารจัดการข้อมูล เช่น การจัดประเภทข้อมูล การติดตามแหล่งที่มาของข้อมูล การควบคุมการเข้าถึงอย่างละเอียด และอื่นๆ คุณสามารถเรียนรู้เพิ่มเติม [เกี่ยวกับ Dataverse ได้ที่นี่](https://docs.microsoft.com/powerapps/maker/data-platform/data-platform-intro?WT.mc_id=academic-109639-somelezediko) - -ทำไมเราควรใช้ Dataverse สำหรับสตาร์ทอัพของเรา? ตารางมาตรฐานและตารางที่กำหนดเองใน Dataverse ให้ตัวเลือกการเก็บข้อมูลที่ปลอดภัยและอยู่บนคลาวด์ ตารางช่วยให้คุณเก็บข้อมูลประเภทต่างๆ ได้ คล้ายกับการใช้หลายแผ่นงานในสมุดงาน Excel เดียวกัน คุณสามารถใช้ตารางเพื่อเก็บข้อมูลที่เฉพาะเจาะจงกับองค์กรหรือความต้องการทางธุรกิจของคุณ ประโยชน์บางประการที่สตาร์ทอัพของเราจะได้รับจากการใช้ Dataverse รวมถึงแต่ไม่จำกัดเพียง: -- **จัดการง่าย**: ทั้งเมตาดาต้าและข้อมูลจะถูกเก็บไว้บนคลาวด์ ดังนั้นคุณไม่ต้องกังวลเกี่ยวกับรายละเอียดของการจัดเก็บหรือการจัดการ คุณสามารถมุ่งเน้นไปที่การสร้างแอปและโซลูชันของคุณได้ - -- **ปลอดภัย**: Dataverse มีตัวเลือกการจัดเก็บข้อมูลบนคลาวด์ที่ปลอดภัย คุณสามารถควบคุมว่าใครสามารถเข้าถึงข้อมูลในตารางของคุณและวิธีการเข้าถึงโดยใช้ระบบความปลอดภัยตามบทบาท - -- **เมตาดาต้าที่ครบถ้วน**: ประเภทข้อมูลและความสัมพันธ์ถูกใช้งานโดยตรงภายใน Power Apps - -- **ตรรกะและการตรวจสอบความถูกต้อง**: คุณสามารถใช้กฎทางธุรกิจ ฟิลด์ที่คำนวณ และกฎการตรวจสอบความถูกต้องเพื่อบังคับใช้ตรรกะทางธุรกิจและรักษาความถูกต้องของข้อมูล - -ตอนนี้ที่คุณเข้าใจว่า Dataverse คืออะไรและทำไมคุณควรใช้ มาดูกันว่าคุณจะใช้ Copilot สร้างตารางใน Dataverse เพื่อตอบสนองความต้องการของทีมการเงินของเราได้อย่างไร - -> **Note** : คุณจะใช้ตารางนี้ในส่วนถัดไปเพื่อสร้างระบบอัตโนมัติที่จะดึงข้อมูลใบแจ้งหนี้ทั้งหมดและเก็บไว้ในตารางนี้ - -ในการสร้างตารางใน Dataverse โดยใช้ Copilot ให้ทำตามขั้นตอนด้านล่างนี้: - -1. ไปที่หน้าจอหลักของ [Power Apps](https://make.powerapps.com?WT.mc_id=academic-105485-koreyst) - -2. ที่แถบนำทางด้านซ้าย เลือก **Tables** แล้วคลิกที่ **Describe the new Table** - -![Select new table](../../../translated_images/describe-new-table.0792373eb757281e3c5f542f84cad3b5208bfe0e5c4a7786dd2bd31aa848a23c.th.png) - -3. ที่หน้าจอ **Describe the new Table** ใช้พื้นที่ข้อความเพื่ออธิบายตารางที่คุณต้องการสร้าง เช่น **_ฉันต้องการสร้างตารางเพื่อเก็บข้อมูลใบแจ้งหนี้_** คลิกปุ่ม **Send** เพื่อส่งคำสั่งไปยัง AI Copilot - -![Describe the table](../../../translated_images/copilot-chat-prompt-dataverse.feb2f81e5872b9d2b05d45d11bb6830e0f2ef6a2d4742413bc9a1e50a45bbb89.th.png) - -4. AI Copilot จะแนะนำตาราง Dataverse พร้อมฟิลด์ที่คุณต้องการเพื่อเก็บข้อมูลที่ต้องการติดตามและตัวอย่างข้อมูล คุณสามารถปรับแต่งตารางให้ตรงกับความต้องการของคุณโดยใช้ฟีเจอร์ผู้ช่วย AI Copilot ผ่านขั้นตอนการสนทนา - -![Suggested Dataverse table](../../../translated_images/copilot-dataverse-table.b3bc936091324d9db1e943d640df1c7a7df598e66d30f5b8a2999048e26a5073.th.png) - -5. ทีมการเงินต้องการส่งอีเมลถึงซัพพลายเออร์เพื่ออัปเดตสถานะปัจจุบันของใบแจ้งหนี้ คุณสามารถใช้ Copilot เพื่อเพิ่มฟิลด์ใหม่ในตารางเพื่อเก็บอีเมลของซัพพลายเออร์ เช่น คุณสามารถใช้คำสั่งนี้เพื่อเพิ่มคอลัมน์ใหม่ในตาราง: **_ฉันต้องการเพิ่มคอลัมน์เพื่อเก็บอีเมลของซัพพลายเออร์_** คลิกปุ่ม **Send** เพื่อส่งคำสั่งไปยัง AI Copilot - -6. AI Copilot จะสร้างฟิลด์ใหม่ขึ้นมา และคุณสามารถปรับแต่งฟิลด์นั้นให้ตรงกับความต้องการของคุณ - -7. เมื่อเสร็จสิ้นการสร้างตารางแล้ว ให้คลิกปุ่ม **Create** เพื่อสร้างตาราง - -## AI Models ใน Power Platform กับ AI Builder - -AI Builder คือความสามารถ AI แบบ low-code ที่มีใน Power Platform ซึ่งช่วยให้คุณใช้ AI Models เพื่อช่วยในการทำงานอัตโนมัติและทำนายผลลัพธ์ ด้วย AI Builder คุณสามารถนำ AI มาใช้ในแอปและโฟลว์ที่เชื่อมต่อกับข้อมูลใน Dataverse หรือแหล่งข้อมูลบนคลาวด์ต่างๆ เช่น SharePoint, OneDrive หรือ Azure - -## AI Models ที่สร้างไว้ล่วงหน้ากับ AI Models ที่สร้างเอง - -AI Builder มี AI Models อยู่สองประเภท คือ AI Models ที่สร้างไว้ล่วงหน้าและ AI Models ที่สร้างเอง AI Models ที่สร้างไว้ล่วงหน้าเป็นโมเดลที่ Microsoft ฝึกสอนและพร้อมใช้งานใน Power Platform ช่วยให้คุณเพิ่มความชาญฉลาดให้กับแอปและโฟลว์โดยไม่ต้องรวบรวมข้อมูล สร้าง ฝึก และเผยแพร่โมเดลเอง คุณสามารถใช้โมเดลเหล่านี้เพื่อทำงานอัตโนมัติและทำนายผลลัพธ์ได้ - -ตัวอย่าง AI Models ที่สร้างไว้ล่วงหน้าที่มีใน Power Platform ได้แก่: - -- **Key Phrase Extraction**: โมเดลนี้ดึงวลีสำคัญจากข้อความ -- **Language Detection**: โมเดลนี้ตรวจจับภาษาของข้อความ -- **Sentiment Analysis**: โมเดลนี้ตรวจจับความรู้สึกในข้อความว่าเป็นบวก ลบ กลาง หรือผสม -- **Business Card Reader**: โมเดลนี้ดึงข้อมูลจากนามบัตร -- **Text Recognition**: โมเดลนี้ดึงข้อความจากภาพ -- **Object Detection**: โมเดลนี้ตรวจจับและดึงวัตถุจากภาพ -- **Document processing**: โมเดลนี้ดึงข้อมูลจากแบบฟอร์ม -- **Invoice Processing**: โมเดลนี้ดึงข้อมูลจากใบแจ้งหนี้ - -สำหรับ AI Models ที่สร้างเอง คุณสามารถนำโมเดลของคุณเข้ามาใน AI Builder เพื่อให้ทำงานเหมือนโมเดลที่สร้างเองใน AI Builder โดยคุณสามารถฝึกโมเดลด้วยข้อมูลของคุณเอง ใช้โมเดลเหล่านี้เพื่อทำงานอัตโนมัติและทำนายผลลัพธ์ได้ทั้งใน Power Apps และ Power Automate เมื่อใช้โมเดลของคุณเองจะมีข้อจำกัดบางประการ อ่านเพิ่มเติมเกี่ยวกับ [ข้อจำกัดเหล่านี้](https://learn.microsoft.com/ai-builder/byo-model#limitations?WT.mc_id=academic-105485-koreyst) - -![AI builder models](../../../translated_images/ai-builder-models.8069423b84cfc47f6bb989bc3cd0584b5b2471c80fad80bf504d356928a08c9c.th.png) - -## งานที่ 2 - สร้างโฟลว์ประมวลผลใบแจ้งหนี้สำหรับสตาร์ทอัพของเรา - -ทีมการเงินประสบปัญหาในการประมวลผลใบแจ้งหนี้ พวกเขาใช้สเปรดชีตเพื่อติดตามใบแจ้งหนี้ แต่เริ่มจัดการได้ยากขึ้นเมื่อจำนวนใบแจ้งหนี้เพิ่มขึ้น พวกเขาขอให้คุณสร้างเวิร์กโฟลว์ที่จะช่วยประมวลผลใบแจ้งหนี้โดยใช้ AI เวิร์กโฟลว์นี้ควรช่วยดึงข้อมูลจากใบแจ้งหนี้และเก็บข้อมูลไว้ในตาราง Dataverse รวมถึงช่วยส่งอีเมลถึงทีมการเงินพร้อมข้อมูลที่ดึงมา - -ตอนนี้ที่คุณรู้ว่า AI Builder คืออะไรและทำไมควรใช้ มาดูกันว่าคุณจะใช้โมเดล Invoice Processing AI Model ใน AI Builder ที่เราได้พูดถึงก่อนหน้านี้ เพื่อสร้างเวิร์กโฟลว์ที่ช่วยทีมการเงินประมวลผลใบแจ้งหนี้ได้อย่างไร - -ในการสร้างเวิร์กโฟลว์ที่จะช่วยทีมการเงินประมวลผลใบแจ้งหนี้โดยใช้ Invoice Processing AI Model ใน AI Builder ให้ทำตามขั้นตอนนี้: - -1. ไปที่หน้าจอหลักของ [Power Automate](https://make.powerautomate.com?WT.mc_id=academic-105485-koreyst) - -2. ใช้พื้นที่ข้อความบนหน้าจอหลักเพื่ออธิบายเวิร์กโฟลว์ที่คุณต้องการสร้าง เช่น **_ประมวลผลใบแจ้งหนี้เมื่อได้รับในกล่องจดหมายของฉัน_** คลิกปุ่ม **Send** เพื่อส่งคำสั่งไปยัง AI Copilot - - ![Copilot power automate](../../../translated_images/copilot-chat-prompt-powerautomate.f377e478cc8412de4394fab09e5b72f97b3fc9312526b516ded426102f51c30d.th.png) - -3. AI Copilot จะแนะนำการกระทำที่คุณต้องทำเพื่อทำงานที่ต้องการอัตโนมัติ คุณสามารถคลิกปุ่ม **Next** เพื่อดำเนินขั้นตอนถัดไป - -4. ในขั้นตอนถัดไป Power Automate จะขอให้คุณตั้งค่าการเชื่อมต่อที่จำเป็นสำหรับโฟลว์ เมื่อเสร็จแล้ว คลิกปุ่ม **Create flow** เพื่อสร้างโฟลว์ - -5. AI Copilot จะสร้างโฟลว์ให้ และคุณสามารถปรับแต่งโฟลว์ให้ตรงกับความต้องการของคุณ - -6. อัปเดตทริกเกอร์ของโฟลว์และตั้งค่า **Folder** เป็นโฟลเดอร์ที่เก็บใบแจ้งหนี้ เช่น ตั้งเป็น **Inbox** คลิก **Show advanced options** และตั้งค่า **Only with Attachments** เป็น **Yes** เพื่อให้โฟลว์ทำงานเฉพาะเมื่อได้รับอีเมลที่มีไฟล์แนบในโฟลเดอร์นั้น - -7. ลบการกระทำต่อไปนี้ออกจากโฟลว์: **HTML to text**, **Compose**, **Compose 2**, **Compose 3** และ **Compose 4** เพราะคุณจะไม่ใช้การกระทำเหล่านี้ - -8. ลบการกระทำ **Condition** ออกจากโฟลว์ เพราะคุณจะไม่ใช้ มันควรจะดูเหมือนภาพหน้าจอด้านล่างนี้: - - ![power automate, remove actions](../../../translated_images/powerautomate-remove-actions.7216392fe684ceba4b73c6383edd1cc5e7ded11afd0ca812052a11487d049ef8.th.png) - -9. คลิกปุ่ม **Add an action** และค้นหา **Dataverse** เลือกการกระทำ **Add a new row** - -10. ในการกระทำ **Extract Information from invoices** อัปเดต **Invoice File** ให้ชี้ไปที่ **Attachment Content** จากอีเมล เพื่อให้โฟลว์ดึงข้อมูลจากไฟล์แนบใบแจ้งหนี้ - -11. เลือก **Table** ที่คุณสร้างไว้ก่อนหน้านี้ เช่น ตาราง **Invoice Information** เลือกเนื้อหาไดนามิกจากการกระทำก่อนหน้าเพื่อเติมข้อมูลในฟิลด์ต่อไปนี้: - - - ID - - Amount - - Date - - Name - - Status - ตั้งค่า **Status** เป็น **Pending** - - Supplier Email - ใช้เนื้อหาไดนามิก **From** จากทริกเกอร์ **When a new email arrives** - - ![power automate add row](../../../translated_images/powerautomate-add-row.5edce45e5dd3d51e5152688dc140ad43e1423e7a9fef9a206f82a7965ea68d73.th.png) - -12. เมื่อเสร็จสิ้นการสร้างโฟลว์แล้ว คลิกปุ่ม **Save** เพื่อบันทึกโฟลว์ จากนั้นคุณสามารถทดสอบโฟลว์โดยส่งอีเมลที่มีใบแจ้งหนี้ไปยังโฟลเดอร์ที่คุณตั้งค่าในทริกเกอร์ - -> **งานบ้านของคุณ**: โฟลว์ที่คุณสร้างขึ้นเป็นจุดเริ่มต้นที่ดี ตอนนี้คุณต้องคิดว่าจะสร้างระบบอัตโนมัติอย่างไรที่จะช่วยให้ทีมการเงินส่งอีเมลถึงซัพพลายเออร์เพื่ออัปเดตสถานะปัจจุบันของใบแจ้งหนี้ได้ คำใบ้: โฟลว์ต้องทำงานเมื่อสถานะของใบแจ้งหนี้เปลี่ยนแปลง - -## ใช้ Text Generation AI Model ใน Power Automate - -โมเดล Create Text with GPT AI Model ใน AI Builder ช่วยให้คุณสร้างข้อความตามคำสั่ง โดยใช้บริการ Microsoft Azure OpenAI Service ด้วยความสามารถนี้ คุณสามารถผนวกเทคโนโลยี GPT (Generative Pre-Trained Transformer) เข้ากับแอปและโฟลว์ของคุณเพื่อสร้างโฟลว์อัตโนมัติและแอปพลิเคชันที่มีความเข้าใจลึกซึ้ง - -โมเดล GPT ผ่านการฝึกฝนอย่างเข้มข้นกับข้อมูลจำนวนมาก ทำให้สามารถสร้างข้อความที่คล้ายภาษามนุษย์ได้เมื่อได้รับคำสั่ง เมื่อผนวกกับการทำงานอัตโนมัติของเวิร์กโฟลว์ โมเดล AI อย่าง GPT สามารถช่วยให้การทำงานหลายอย่างเป็นไปอย่างราบรื่นและอัตโนมัติ - -ตัวอย่างเช่น คุณสามารถสร้างโฟลว์เพื่อสร้างข้อความอัตโนมัติสำหรับกรณีการใช้งานต่างๆ เช่น ร่างอีเมล คำอธิบายสินค้า และอื่นๆ นอกจากนี้ยังสามารถใช้โมเดลนี้สร้างข้อความสำหรับแอปต่างๆ เช่น แชทบอทและแอปบริการลูกค้าที่ช่วยให้เจ้าหน้าที่ตอบคำถามลูกค้าได้อย่างมีประสิทธิภาพ - -![create a prompt](../../../translated_images/create-prompt-gpt.69d429300c2e870a12ec95556cda9bacf6a173e452cdca02973c90df5f705cee.th.png) - -หากต้องการเรียนรู้วิธีใช้โมเดล AI นี้ใน Power Automate ให้ศึกษาจากโมดูล [Add intelligence with AI Builder and GPT](https://learn.microsoft.com/training/modules/ai-builder-text-generation/?WT.mc_id=academic-109639-somelezediko) - -## ทำได้ดีมาก! เรียนรู้ต่อไป - -หลังจากเรียนจบบทเรียนนี้แล้ว อย่าลืมดู [คอลเลกชันการเรียนรู้ Generative AI](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) เพื่อพัฒนาความรู้ด้าน Generative AI ของคุณให้ก้าวหน้าไปอีกขั้น! - -ไปที่บทเรียนที่ 11 ซึ่งเราจะเรียนรู้วิธี [ผนวก Generative AI กับ Function Calling](../11-integrating-with-function-calling/README.md?WT.mc_id=academic-105485-koreyst)! - -**ข้อจำกัดความรับผิดชอบ**: -เอกสารนี้ได้รับการแปลโดยใช้บริการแปลภาษาอัตโนมัติ [Co-op Translator](https://github.com/Azure/co-op-translator) แม้เราจะพยายามให้ความถูกต้องสูงสุด แต่โปรดทราบว่าการแปลอัตโนมัติอาจมีข้อผิดพลาดหรือความไม่ถูกต้อง เอกสารต้นฉบับในภาษาต้นทางถือเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลที่สำคัญ ขอแนะนำให้ใช้บริการแปลโดยผู้เชี่ยวชาญมนุษย์ เราไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความผิดใด ๆ ที่เกิดจากการใช้การแปลนี้ \ No newline at end of file + +# การสร้างแอปพลิเคชัน AI แบบ Low Code + +[![การสร้างแอปพลิเคชัน AI แบบ Low Code](../../../translated_images/10-lesson-banner.a01ac8fe3fd86310c2e4065c0b3c584879f33b8ce797311821a636992f8a5b2f.th.png)](https://youtu.be/1vzq3Nd8GBA?si=h6LHWJXdmqf6mhDg) + +> _(คลิกที่ภาพด้านบนเพื่อดูวิดีโอของบทเรียนนี้)_ + +## บทนำ + +ตอนนี้เราได้เรียนรู้วิธีการสร้างแอปพลิเคชันที่สร้างภาพแล้ว มาพูดถึงเรื่อง Low Code กันบ้าง Generative AI สามารถนำไปใช้ในหลายๆ ด้าน รวมถึง Low Code แต่ Low Code คืออะไร และเราจะเพิ่ม AI เข้าไปในนั้นได้อย่างไร? + +การสร้างแอปและโซลูชันกลายเป็นเรื่องง่ายขึ้นสำหรับนักพัฒนาทั่วไปและผู้ที่ไม่ใช่นักพัฒนาผ่านการใช้แพลตฟอร์มการพัฒนาแบบ Low Code แพลตฟอร์มเหล่านี้ช่วยให้คุณสร้างแอปและโซลูชันด้วยการเขียนโค้ดเพียงเล็กน้อยหรือไม่ต้องเขียนเลย โดยใช้สภาพแวดล้อมการพัฒนาแบบภาพที่ช่วยให้คุณลากและวางองค์ประกอบเพื่อสร้างแอปและโซลูชัน ซึ่งช่วยให้คุณสร้างแอปและโซลูชันได้เร็วขึ้นและใช้ทรัพยากรน้อยลง ในบทเรียนนี้ เราจะเจาะลึกถึงวิธีการใช้ Low Code และวิธีการเพิ่มประสิทธิภาพการพัฒนาแบบ Low Code ด้วย AI โดยใช้ Power Platform + +Power Platform มอบโอกาสให้กับองค์กรในการเสริมสร้างทีมของพวกเขาให้สามารถสร้างโซลูชันของตัวเองผ่านสภาพแวดล้อมแบบ Low Code หรือ No Code ที่ใช้งานง่าย สภาพแวดล้อมนี้ช่วยลดความซับซ้อนของกระบวนการสร้างโซลูชัน ด้วย Power Platform โซลูชันสามารถสร้างได้ในเวลาเพียงไม่กี่วันหรือไม่กี่สัปดาห์แทนที่จะใช้เวลาหลายเดือนหรือหลายปี Power Platform ประกอบด้วยผลิตภัณฑ์หลัก 5 รายการ ได้แก่ Power Apps, Power Automate, Power BI, Power Pages และ Copilot Studio + +บทเรียนนี้ครอบคลุม: + +- การแนะนำ Generative AI ใน Power Platform +- การแนะนำ Copilot และวิธีการใช้งาน +- การใช้ Generative AI เพื่อสร้างแอปและโฟลว์ใน Power Platform +- การทำความเข้าใจโมเดล AI ใน Power Platform ด้วย AI Builder + +## เป้าหมายการเรียนรู้ + +เมื่อจบบทเรียนนี้ คุณจะสามารถ: + +- เข้าใจวิธีการทำงานของ Copilot ใน Power Platform + +- สร้างแอปติดตามงานมอบหมายของนักเรียนสำหรับสตาร์ทอัพด้านการศึกษา + +- สร้างโฟลว์การประมวลผลใบแจ้งหนี้ที่ใช้ AI เพื่อดึงข้อมูลจากใบแจ้งหนี้ + +- ใช้แนวทางปฏิบัติที่ดีที่สุดเมื่อใช้โมเดล AI Create Text with GPT + +เครื่องมือและเทคโนโลยีที่คุณจะใช้ในบทเรียนนี้ ได้แก่: + +- **Power Apps** สำหรับแอปติดตามงานมอบหมายของนักเรียน ซึ่งให้สภาพแวดล้อมการพัฒนาแบบ Low Code สำหรับการสร้างแอปเพื่อการติดตาม จัดการ และโต้ตอบกับข้อมูล + +- **Dataverse** สำหรับการจัดเก็บข้อมูลของแอปติดตามงานมอบหมายของนักเรียน โดย Dataverse จะให้แพลตฟอร์มข้อมูลแบบ Low Code สำหรับการจัดเก็บข้อมูลของแอป + +- **Power Automate** สำหรับโฟลว์การประมวลผลใบแจ้งหนี้ ซึ่งคุณจะมีสภาพแวดล้อมการพัฒนาแบบ Low Code สำหรับการสร้างเวิร์กโฟลว์เพื่อทำให้กระบวนการประมวลผลใบแจ้งหนี้เป็นอัตโนมัติ + +- **AI Builder** สำหรับโมเดล AI การประมวลผลใบแจ้งหนี้ ซึ่งคุณจะใช้โมเดล AI ที่สร้างไว้ล่วงหน้าเพื่อประมวลผลใบแจ้งหนี้สำหรับสตาร์ทอัพของเรา + +## Generative AI ใน Power Platform + +การเพิ่มประสิทธิภาพการพัฒนาแบบ Low Code และแอปพลิเคชันด้วย Generative AI เป็นจุดสำคัญสำหรับ Power Platform เป้าหมายคือการทำให้ทุกคนสามารถสร้างแอปที่มี AI, เว็บไซต์, แดชบอร์ด และกระบวนการอัตโนมัติด้วย AI _โดยไม่จำเป็นต้องมีความเชี่ยวชาญด้านวิทยาศาสตร์ข้อมูล_ เป้าหมายนี้สำเร็จได้โดยการรวม Generative AI เข้ากับประสบการณ์การพัฒนาแบบ Low Code ใน Power Platform ในรูปแบบของ Copilot และ AI Builder + +### มันทำงานอย่างไร? + +Copilot เป็นผู้ช่วย AI ที่ช่วยให้คุณสร้างโซลูชัน Power Platform โดยการอธิบายความต้องการของคุณในขั้นตอนการสนทนาโดยใช้ภาษาธรรมชาติ ตัวอย่างเช่น คุณสามารถสั่งให้ผู้ช่วย AI ระบุว่าต้องการใช้ฟิลด์ใดในแอปของคุณ และมันจะสร้างทั้งแอปและโมเดลข้อมูลพื้นฐาน หรือคุณสามารถระบุวิธีการตั้งค่าโฟลว์ใน Power Automate + +คุณสามารถใช้ฟังก์ชันที่ขับเคลื่อนด้วย Copilot เป็นฟีเจอร์ในหน้าจอแอปของคุณเพื่อช่วยให้ผู้ใช้ค้นพบข้อมูลเชิงลึกผ่านการโต้ตอบแบบสนทนา + +AI Builder เป็นความสามารถ AI แบบ Low Code ที่มีอยู่ใน Power Platform ซึ่งช่วยให้คุณใช้โมเดล AI เพื่อช่วยทำให้กระบวนการเป็นอัตโนมัติและคาดการณ์ผลลัพธ์ ด้วย AI Builder คุณสามารถนำ AI มาใช้ในแอปและโฟลว์ที่เชื่อมต่อกับข้อมูลของคุณใน Dataverse หรือในแหล่งข้อมูลคลาวด์ต่างๆ เช่น SharePoint, OneDrive หรือ Azure + +Copilot มีอยู่ในผลิตภัณฑ์ทั้งหมดของ Power Platform ได้แก่ Power Apps, Power Automate, Power BI, Power Pages และ Power Virtual Agents ส่วน AI Builder มีอยู่ใน Power Apps และ Power Automate ในบทเรียนนี้ เราจะเน้นที่วิธีการใช้ Copilot และ AI Builder ใน Power Apps และ Power Automate เพื่อสร้างโซลูชันสำหรับสตาร์ทอัพด้านการศึกษาของเรา + +### Copilot ใน Power Apps + +ในฐานะส่วนหนึ่งของ Power Platform, Power Apps ให้สภาพแวดล้อมการพัฒนาแบบ Low Code สำหรับการสร้างแอปเพื่อการติดตาม จัดการ และโต้ตอบกับข้อมูล เป็นชุดบริการพัฒนาแอปที่มีแพลตฟอร์มข้อมูลที่สามารถขยายได้และความสามารถในการเชื่อมต่อกับบริการคลาวด์และข้อมูลในองค์กร Power Apps ช่วยให้คุณสร้างแอปที่ทำงานบนเบราว์เซอร์ แท็บเล็ต และโทรศัพท์ และสามารถแชร์กับเพื่อนร่วมงานได้ Power Apps ช่วยให้ผู้ใช้เข้าสู่การพัฒนาแอปด้วยอินเทอร์เฟซที่เรียบง่าย เพื่อให้ผู้ใช้ธุรกิจทุกคนหรือผู้พัฒนามืออาชีพสามารถสร้างแอปที่กำหนดเองได้ ประสบการณ์การพัฒนาแอปยังได้รับการปรับปรุงด้วย Generative AI ผ่าน Copilot + +ฟีเจอร์ผู้ช่วย AI Copilot ใน Power Apps ช่วยให้คุณอธิบายว่าแอปที่คุณต้องการควรมีลักษณะอย่างไร และข้อมูลใดที่คุณต้องการให้แอปติดตาม รวบรวม หรือแสดง Copilot จะสร้างแอป Canvas ที่ตอบสนองตามคำอธิบายของคุณ จากนั้นคุณสามารถปรับแต่งแอปให้ตรงกับความต้องการของคุณได้ ผู้ช่วย AI Copilot ยังสร้างและแนะนำตาราง Dataverse พร้อมฟิลด์ที่คุณต้องการเพื่อจัดเก็บข้อมูลที่คุณต้องการติดตามและตัวอย่างข้อมูลบางส่วน เราจะดูว่า Dataverse คืออะไรและวิธีการใช้ใน Power Apps ในบทเรียนนี้ในภายหลัง จากนั้นคุณสามารถปรับแต่งตารางให้ตรงกับความต้องการของคุณโดยใช้ฟีเจอร์ผู้ช่วย AI Copilot ผ่านขั้นตอนการสนทนา ฟีเจอร์นี้พร้อมใช้งานได้จากหน้าจอหลักของ Power Apps + +### Copilot ใน Power Automate + +ในฐานะส่วนหนึ่งของ Power Platform, Power Automate ช่วยให้ผู้ใช้สร้างเวิร์กโฟลว์อัตโนมัติระหว่างแอปพลิเคชันและบริการ มันช่วยทำให้กระบวนการธุรกิจที่ซ้ำซาก เช่น การสื่อสาร การรวบรวมข้อมูล และการอนุมัติการตัดสินใจเป็นอัตโนมัติ อินเทอร์เฟซที่เรียบง่ายช่วยให้ผู้ใช้ทุกระดับความสามารถทางเทคนิค (ตั้งแต่ผู้เริ่มต้นจนถึงนักพัฒนาที่มีประสบการณ์) สามารถทำงานอัตโนมัติได้ ประสบการณ์การพัฒนาเวิร์กโฟลว์ยังได้รับการปรับปรุงด้วย Generative AI ผ่าน Copilot + +ฟีเจอร์ผู้ช่วย AI Copilot ใน Power Automate ช่วยให้คุณอธิบายว่าโฟลว์ที่คุณต้องการควรมีลักษณะอย่างไร และการดำเนินการใดที่คุณต้องการให้โฟลว์ของคุณทำ Copilot จะสร้างโฟลว์ตามคำอธิบายของคุณ จากนั้นคุณสามารถปรับแต่งโฟลว์ให้ตรงกับความต้องการของคุณได้ ผู้ช่วย AI Copilot ยังสร้างและแนะนำการดำเนินการที่คุณต้องการเพื่อทำงานที่คุณต้องการทำให้เป็นอัตโนมัติ เราจะดูว่าโฟลว์คืออะไรและวิธีการใช้ใน Power Automate ในบทเรียนนี้ในภายหลัง จากนั้นคุณสามารถปรับแต่งการดำเนินการให้ตรงกับความต้องการของคุณโดยใช้ฟีเจอร์ผู้ช่วย AI Copilot ผ่านขั้นตอนการสนทนา ฟีเจอร์นี้พร้อมใช้งานได้จากหน้าจอหลักของ Power Automate + +## งาน: จัดการงานมอบหมายของนักเรียนและใบแจ้งหนี้สำหรับสตาร์ทอัพของเราโดยใช้ Copilot + +สตาร์ทอัพของเรามีการให้บริการคอร์สออนไลน์แก่นักเรียน สตาร์ทอัพเติบโตอย่างรวดเร็วและตอนนี้กำลังประสบปัญหาในการตอบสนองความต้องการของคอร์ส สตาร์ทอัพได้จ้างคุณเป็นนักพัฒนา Power Platform เพื่อช่วยสร้างโซลูชันแบบ Low Code เพื่อช่วยจัดการงานมอบหมายของนักเรียนและใบแจ้งหนี้ โซลูชันของพวกเขาควรสามารถช่วยติดตามและจัดการงานมอบหมายของนักเรียนผ่านแอป และทำให้กระบวนการประมวลผลใบแจ้งหนี้เป็นอัตโนมัติผ่านเวิร์กโฟลว์ คุณได้รับมอบหมายให้ใช้ Generative AI เพื่อพัฒนาโซลูชันนี้ + +เมื่อคุณเริ่มต้นใช้งาน Copilot คุณสามารถใช้ [Power Platform Copilot Prompt Library](https://github.com/pnp/powerplatform-prompts?WT.mc_id=academic-109639-somelezediko) เพื่อเริ่มต้นใช้งานไลบรารีนี้มีรายการคำสั่งที่คุณสามารถใช้เพื่อสร้างแอปและโฟลว์ด้วย Copilot คุณยังสามารถใช้คำสั่งในไลบรารีเพื่อดูตัวอย่างวิธีการอธิบายความต้องการของคุณให้ Copilot + +### สร้างแอปติดตามงานมอบหมายของนักเรียนสำหรับสตาร์ทอัพของเรา + +ครูในสตาร์ทอัพของเรากำลังประสบปัญหาในการติดตามงานมอบหมายของนักเรียน พวกเขาใช้สเปรดชีตในการติดตามงานมอบหมาย แต่การจัดการเริ่มยากขึ้นเมื่อจำนวนนักเรียนเพิ่มขึ้น พวกเขาได้ขอให้คุณสร้างแอปที่ช่วยติดตามและจัดการงานมอบหมายของนักเรียน แอปควรช่วยให้พวกเขาเพิ่มงานมอบหมายใหม่ ดูงานมอบหมาย อัปเดตงานมอบหมาย และลบงานมอบหมาย แอปควรช่วยให้ครูและนักเรียนสามารถดูงานมอบหมายที่ได้รับการตรวจแล้วและยังไม่ได้รับการตรวจ + +คุณจะสร้างแอปโดยใช้ Copilot ใน Power Apps ตามขั้นตอนด้านล่าง: + +1. ไปที่หน้าจอหลักของ [Power Apps](https://make.powerapps.com?WT.mc_id=academic-105485-koreyst) + +1. ใช้พื้นที่ข้อความบนหน้าจอหลักเพื่ออธิบายแอปที่คุณต้องการสร้าง ตัวอย่างเช่น **_ฉันต้องการสร้างแอปเพื่อการติดตามและจัดการงานมอบหมายของนักเรียน_** คลิกที่ปุ่ม **Send** เพื่อส่งคำสั่งไปยัง AI Copilot + +![อธิบายแอปที่คุณต้องการสร้าง](../../../translated_images/copilot-chat-prompt-powerapps.84250f341d060830a296b68512e6b3b3aa3a4559f4f1c2d7bafeba8ad3fcd17a.th.png) + +1. AI Copilot จะเสนอแนะตาราง Dataverse พร้อมฟิลด์ที่คุณต้องการเพื่อจัดเก็บข้อมูลที่คุณต้องการติดตามและตัวอย่างข้อมูลบางส่วน จากนั้นคุณสามารถปรับแต่งตารางให้ตรงกับความต้องการของคุณโดยใช้ฟีเจอร์ผู้ช่วย AI Copilot ผ่านขั้นตอนการสนทนา + + > **สำคัญ**: Dataverse เป็นแพลตฟอร์มข้อมูลพื้นฐานสำหรับ Power Platform เป็นแพลตฟอร์มข้อมูลแบบ Low Code สำหรับการจัดเก็บข้อมูลของแอป เป็นบริการที่มีการจัดการอย่างสมบูรณ์ที่จัดเก็บข้อมูลอย่างปลอดภัยใน Microsoft Cloud และถูกจัดเตรียมไว้ในสภาพแวดล้อม Power Platform ของคุณ มันมาพร้อมกับความสามารถในการกำกับดูแลข้อมูลในตัว เช่น การจำแนกประเภทข้อมูล การติดตามข้อมูล การควบคุมการเข้าถึงที่ละเอียด และอื่นๆ คุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับ Dataverse [ที่นี่](https://docs.microsoft.com/powerapps/maker/data-platform/data-platform-intro?WT.mc_id=academic-109639-somelezediko) + + ![ฟิลด์ที่แนะนำในตารางใหม่ของคุณ](../../../translated_images/copilot-dataverse-table-powerapps.f4cc07b5d5f9327bd3783dd288debb2a959ce3320107512e235137aebd8a1a4c.th.png) + +1. ครูต้องการส่งอีเมลถึงนักเรียนที่ส่งงานมอบหมายเพื่ออัปเดตความคืบหน้าของงานมอบหมาย คุณสามารถใช้ Copilot เพื่อเพิ่มฟิลด์ใหม่ในตารางเพื่อจัดเก็บอีเมลของนักเรียน ตัวอย่างเช่น คุณสามารถใช้คำสั่งต่อไปนี้เพื่อเพิ่มฟิลด์ใหม่ในตาราง: **_ฉันต้องการเพิ่มคอลัมน์เพื่อจัดเก็บอีเมลของนักเรียน_** คลิกที่ปุ่ม **Send** เพื่อส่งคำสั่งไปยัง AI Copilot + +![การเพิ่มฟิลด์ใหม่](../../../translated_images/copilot-new-column.35e15ff21acaf2745965d427b130f2be772f0484835b44fe074d496b1a455f2a.th.png) + +1. AI Copilot จะสร้างฟิลด์ใหม่และคุณสามารถปรับแต่งฟิลด์ให้ตรงกับความต้องการของคุณ + +1. เมื่อคุณทำตารางเสร็จแล้ว คลิกที่ปุ่ม **Create app** เพื่อสร้างแอป + +1. AI Copilot จะสร้างแอป Canvas ที่ตอบสนองตามคำอธิบายของคุณ จากนั้นคุณสามารถปรับแต่งแอปให้ตรงกับความต้องการของคุณ + +1. สำหรับครูที่จะส่งอีเมลถึงนักเรียน คุณสามารถใช้ Copilot เพื่อเพิ่มหน้าจอใหม่ในแอป ตัวอย่างเช่น คุณสามารถใช้คำสั่งต่อไปนี้เพื่อเพิ่มหน้าจอใหม่ในแอป: **_ฉันต้องการเพิ่มหน้าจอเพื่อส่งอีเมลถึงนักเรียน_** คลิกที่ปุ่ม **Send** เพื่อส่งคำสั่งไปยัง AI Copilot + +![การเพิ่มหน้าจอใหม่ผ่านคำสั่ง](../../../translated_images/copilot-new-screen.2e0bef7132a173928bc621780b39799e03982d315cb5a9ff75a34b08054641d4.th.png) + +1. AI Copilot จะสร้างหน้าจอใหม่และคุณสามารถปรับแต่งหน้าจอให้ตรงกับความต้องการของคุณ + +1. เมื่อคุณทำแอปเสร็จแล้ว คลิกที่ปุ่ม **Save** เพื่อบันทึกแอป + +1. เพื่อแชร์แอปกับครู คลิกที่ปุ่ม **Share** และคลิกที่ปุ่ม **Share** อีกครั้ง จากนั้นคุณสามารถแชร์แอปกับครูโดยการป้อนที่อยู่อีเมลของพวกเขา + +> **การบ้านของคุณ**: แอปที่คุณเพิ่งสร้างขึ้นเป็นจุดเริ่มต้นที่ดี แต่สามารถปรับปรุงได้ ด้วยฟีเจอร์อีเมล ครูสามารถส่งอีเมลถึงนักเรียนได้เฉพาะแบบแมนนวลโดยต้องพิมพ์อีเมลของพวกเขา คุณสามารถใช้ Copilot เพื่อสร้างระบบอัตโนมัติที่ช่วยให้ครูส่งอีเมลถึงนักเรียนโดยอัตโนมัติเมื่อพวกเขาส่งงานมอบหมายได้หรือไม่? คำแนะนำของคุณคือด้วยคำสั่งที่เหมาะสม คุณสามารถใช้ Copilot ใน Power Automate เพื่อสร้างสิ่งนี้ได้ + +### สร้างตารางข้อมูลใบแจ้งหนี้สำหรับสตาร์ทอัพของเรา + +ทีมการเงินของสตาร์ทอัพของเรากำลังประสบปัญหาในการติดตามใบแจ้งหนี้ พวกเขาใช้สเปรดชีตในการติดตามใบแจ้งหนี้ แต่การจัดการเริ่มยากขึ้นเมื่อจำนวนใบแจ้งหนี้เพิ่มขึ้น พวกเขาได้ขอให้คุณสร้างตารางที่จะช่วยให้พวกเขาจัดเก็บ ติดตาม และจัดการข้อมูลของใบแจ้งหนี้ที่ได้รับ ตารางนี้ควรใช้เพื่อสร้างระบบอัตโนมัติที่จะดึงข้อมูลใบแจ้งหนี้ทั้งหมดและจัดเก็บไว้ในตาราง ตารางนี้ควรช่วยให้ทีมการเงินสามารถดูใบแจ้งหนี้ที่ชำระแล้วและยังไม่ได้ชำระ + +Power Platform มีแพลตฟอร์มข้อมูลพื้นฐานที่เรียกว่า Dataverse ซึ่งช่วยให้คุณจัดเก็บข้อมูลสำหรับแอปและโซลูชันของคุณ Dataverse ให้แพลตฟ +ทำไมเราควรใช้ Dataverse สำหรับธุรกิจสตาร์ทอัพของเรา? ตารางมาตรฐานและตารางที่ปรับแต่งได้ใน Dataverse ให้ตัวเลือกการจัดเก็บข้อมูลที่ปลอดภัยและอยู่บนคลาวด์ ตารางช่วยให้คุณจัดเก็บข้อมูลประเภทต่าง ๆ คล้ายกับการใช้แผ่นงานหลายแผ่นในไฟล์ Excel เดียว คุณสามารถใช้ตารางเพื่อจัดเก็บข้อมูลที่เฉพาะเจาะจงต่อองค์กรหรือความต้องการทางธุรกิจของคุณ ข้อดีบางประการที่ธุรกิจสตาร์ทอัพของเราจะได้รับจากการใช้ Dataverse ได้แก่: + +- **จัดการง่าย**: ทั้งข้อมูลเมตาและข้อมูลถูกจัดเก็บในคลาวด์ คุณจึงไม่ต้องกังวลเกี่ยวกับรายละเอียดของการจัดเก็บหรือการจัดการ คุณสามารถมุ่งเน้นไปที่การสร้างแอปและโซลูชันของคุณได้ + +- **ปลอดภัย**: Dataverse ให้ตัวเลือกการจัดเก็บข้อมูลที่ปลอดภัยและอยู่บนคลาวด์ คุณสามารถควบคุมว่าใครสามารถเข้าถึงข้อมูลในตารางของคุณและวิธีการเข้าถึงโดยใช้การรักษาความปลอดภัยตามบทบาท + +- **ข้อมูลเมตาที่หลากหลาย**: ประเภทข้อมูลและความสัมพันธ์ถูกใช้งานโดยตรงใน Power Apps + +- **ตรรกะและการตรวจสอบ**: คุณสามารถใช้กฎทางธุรกิจ ฟิลด์ที่คำนวณได้ และกฎการตรวจสอบเพื่อบังคับใช้ตรรกะทางธุรกิจและรักษาความถูกต้องของข้อมูล + +เมื่อคุณทราบแล้วว่า Dataverse คืออะไรและทำไมคุณควรใช้มัน ลองมาดูวิธีการใช้ Copilot เพื่อสร้างตารางใน Dataverse เพื่อตอบสนองความต้องการของทีมการเงินของเรา + +> **Note**: คุณจะใช้ตารางนี้ในส่วนถัดไปเพื่อสร้างระบบอัตโนมัติที่ดึงข้อมูลใบแจ้งหนี้ทั้งหมดและจัดเก็บไว้ในตาราง + +ในการสร้างตารางใน Dataverse โดยใช้ Copilot ให้ทำตามขั้นตอนด้านล่าง: + +1. ไปที่หน้าหลักของ [Power Apps](https://make.powerapps.com?WT.mc_id=academic-105485-koreyst) + +2. ในแถบนำทางด้านซ้าย เลือก **Tables** แล้วคลิก **Describe the new Table** + +![เลือกตารางใหม่](../../../translated_images/describe-new-table.0792373eb757281e3c5f542f84cad3b5208bfe0e5c4a7786dd2bd31aa848a23c.th.png) + +3. ในหน้าจอ **Describe the new Table** ใช้พื้นที่ข้อความเพื่ออธิบายตารางที่คุณต้องการสร้าง เช่น **_ฉันต้องการสร้างตารางเพื่อจัดเก็บข้อมูลใบแจ้งหนี้_** คลิกปุ่ม **Send** เพื่อส่งคำสั่งไปยัง AI Copilot + +![อธิบายตาราง](../../../translated_images/copilot-chat-prompt-dataverse.feb2f81e5872b9d2b05d45d11bb6830e0f2ef6a2d4742413bc9a1e50a45bbb89.th.png) + +4. AI Copilot จะเสนอแนะตาราง Dataverse พร้อมฟิลด์ที่คุณต้องการเพื่อจัดเก็บข้อมูลที่คุณต้องการติดตาม และตัวอย่างข้อมูลบางส่วน คุณสามารถปรับแต่งตารางให้ตรงกับความต้องการของคุณโดยใช้ฟีเจอร์ผู้ช่วย AI Copilot ผ่านขั้นตอนการสนทนา + +![ตาราง Dataverse ที่แนะนำ](../../../translated_images/copilot-dataverse-table.b3bc936091324d9db1e943d640df1c7a7df598e66d30f5b8a2999048e26a5073.th.png) + +5. ทีมการเงินต้องการส่งอีเมลไปยังผู้จัดจำหน่ายเพื่ออัปเดตสถานะปัจจุบันของใบแจ้งหนี้ คุณสามารถใช้ Copilot เพื่อเพิ่มฟิลด์ใหม่ในตารางเพื่อจัดเก็บอีเมลของผู้จัดจำหน่าย เช่น คุณสามารถใช้คำสั่งต่อไปนี้เพื่อเพิ่มฟิลด์ใหม่ในตาราง: **_ฉันต้องการเพิ่มคอลัมน์เพื่อจัดเก็บอีเมลของผู้จัดจำหน่าย_** คลิกปุ่ม **Send** เพื่อส่งคำสั่งไปยัง AI Copilot + +6. AI Copilot จะสร้างฟิลด์ใหม่ และคุณสามารถปรับแต่งฟิลด์ให้ตรงกับความต้องการของคุณ + +7. เมื่อคุณเสร็จสิ้นการปรับแต่งตารางแล้ว คลิกปุ่ม **Create** เพื่อสร้างตาราง + +## โมเดล AI ใน Power Platform กับ AI Builder + +AI Builder เป็นความสามารถ AI แบบ low-code ที่มีอยู่ใน Power Platform ซึ่งช่วยให้คุณใช้โมเดล AI เพื่อช่วยคุณในการทำงานอัตโนมัติและคาดการณ์ผลลัพธ์ ด้วย AI Builder คุณสามารถนำ AI เข้าสู่แอปและโฟลว์ที่เชื่อมต่อกับข้อมูลใน Dataverse หรือแหล่งข้อมูลคลาวด์ต่าง ๆ เช่น SharePoint, OneDrive หรือ Azure + +## โมเดล AI ที่สร้างไว้ล่วงหน้ากับโมเดล AI ที่ปรับแต่งเอง + +AI Builder มีโมเดล AI สองประเภท: โมเดล AI ที่สร้างไว้ล่วงหน้าและโมเดล AI ที่ปรับแต่งเอง โมเดล AI ที่สร้างไว้ล่วงหน้าเป็นโมเดล AI ที่พร้อมใช้งานซึ่งได้รับการฝึกฝนโดย Microsoft และมีอยู่ใน Power Platform สิ่งนี้ช่วยให้คุณเพิ่มความฉลาดให้กับแอปและโฟลว์ของคุณโดยไม่ต้องรวบรวมข้อมูลและสร้าง ฝึกฝน และเผยแพร่โมเดลของคุณเอง คุณสามารถใช้โมเดลเหล่านี้เพื่อทำงานอัตโนมัติและคาดการณ์ผลลัพธ์ + +โมเดล AI ที่สร้างไว้ล่วงหน้าบางส่วนที่มีอยู่ใน Power Platform ได้แก่: + +- **การดึงคำสำคัญ**: โมเดลนี้ดึงคำสำคัญจากข้อความ +- **การตรวจจับภาษา**: โมเดลนี้ตรวจจับภาษาของข้อความ +- **การวิเคราะห์ความรู้สึก**: โมเดลนี้ตรวจจับความรู้สึกเชิงบวก เชิงลบ เป็นกลาง หรือผสมในข้อความ +- **เครื่องอ่านนามบัตร**: โมเดลนี้ดึงข้อมูลจากนามบัตร +- **การรู้จำข้อความ**: โมเดลนี้ดึงข้อความจากภาพ +- **การตรวจจับวัตถุ**: โมเดลนี้ตรวจจับและดึงวัตถุจากภาพ +- **การประมวลผลเอกสาร**: โมเดลนี้ดึงข้อมูลจากแบบฟอร์ม +- **การประมวลผลใบแจ้งหนี้**: โมเดลนี้ดึงข้อมูลจากใบแจ้งหนี้ + +ด้วยโมเดล AI ที่ปรับแต่งเอง คุณสามารถนำโมเดลของคุณเองเข้าสู่ AI Builder เพื่อให้มันทำงานเหมือนโมเดล AI Builder ที่ปรับแต่งเอง ช่วยให้คุณฝึกฝนโมเดลโดยใช้ข้อมูลของคุณเอง คุณสามารถใช้โมเดลเหล่านี้เพื่อทำงานอัตโนมัติและคาดการณ์ผลลัพธ์ในทั้ง Power Apps และ Power Automate เมื่อใช้โมเดลของคุณเองจะมีข้อจำกัดที่ใช้ อ่านเพิ่มเติมเกี่ยวกับ [ข้อจำกัด](https://learn.microsoft.com/ai-builder/byo-model#limitations?WT.mc_id=academic-105485-koreyst) + +![โมเดล AI Builder](../../../translated_images/ai-builder-models.8069423b84cfc47f6bb989bc3cd0584b5b2471c80fad80bf504d356928a08c9c.th.png) + +## งานที่ 2 - สร้างโฟลว์การประมวลผลใบแจ้งหนี้สำหรับธุรกิจสตาร์ทอัพของเรา + +ทีมการเงินกำลังประสบปัญหาในการประมวลผลใบแจ้งหนี้ พวกเขาใช้สเปรดชีตในการติดตามใบแจ้งหนี้ แต่สิ่งนี้กลายเป็นเรื่องยากที่จะจัดการเมื่อจำนวนใบแจ้งหนี้เพิ่มขึ้น พวกเขาขอให้คุณสร้างโฟลว์ที่จะช่วยพวกเขาประมวลผลใบแจ้งหนี้โดยใช้ AI โฟลว์นี้ควรช่วยให้พวกเขาดึงข้อมูลจากใบแจ้งหนี้และจัดเก็บข้อมูลในตาราง Dataverse โฟลว์นี้ควรช่วยให้พวกเขาส่งอีเมลไปยังทีมการเงินพร้อมข้อมูลที่ดึงมา + +เมื่อคุณทราบแล้วว่า AI Builder คืออะไรและทำไมคุณควรใช้มัน ลองมาดูวิธีการใช้โมเดล AI การประมวลผลใบแจ้งหนี้ใน AI Builder ซึ่งเราได้กล่าวถึงก่อนหน้านี้ เพื่อสร้างโฟลว์ที่จะช่วยทีมการเงินประมวลผลใบแจ้งหนี้ + +ในการสร้างโฟลว์ที่จะช่วยทีมการเงินประมวลผลใบแจ้งหนี้โดยใช้โมเดล AI การประมวลผลใบแจ้งหนี้ใน AI Builder ให้ทำตามขั้นตอนด้านล่าง: + +1. ไปที่หน้าหลักของ [Power Automate](https://make.powerautomate.com?WT.mc_id=academic-105485-koreyst) + +2. ใช้พื้นที่ข้อความในหน้าหลักเพื่ออธิบายโฟลว์ที่คุณต้องการสร้าง เช่น **_ประมวลผลใบแจ้งหนี้เมื่อมันมาถึงในกล่องจดหมายของฉัน_** คลิกปุ่ม **Send** เพื่อส่งคำสั่งไปยัง AI Copilot + + ![Copilot power automate](../../../translated_images/copilot-chat-prompt-powerautomate.f377e478cc8412de4394fab09e5b72f97b3fc9312526b516ded426102f51c30d.th.png) + +3. AI Copilot จะเสนอแนะการดำเนินการที่คุณต้องการเพื่อทำงานที่คุณต้องการทำให้เป็นอัตโนมัติ คุณสามารถคลิกปุ่ม **Next** เพื่อดำเนินการในขั้นตอนถัดไป + +4. ในขั้นตอนถัดไป Power Automate จะขอให้คุณตั้งค่าการเชื่อมต่อที่จำเป็นสำหรับโฟลว์ เมื่อคุณเสร็จสิ้น คลิกปุ่ม **Create flow** เพื่อสร้างโฟลว์ + +5. AI Copilot จะสร้างโฟลว์ และคุณสามารถปรับแต่งโฟลว์ให้ตรงกับความต้องการของคุณ + +6. อัปเดตตัวกระตุ้นของโฟลว์และตั้งค่า **Folder** ไปยังโฟลเดอร์ที่ใบแจ้งหนี้จะถูกจัดเก็บ เช่น คุณสามารถตั้งค่าโฟลเดอร์เป็น **Inbox** คลิก **Show advanced options** และตั้งค่า **Only with Attachments** เป็น **Yes** สิ่งนี้จะทำให้โฟลว์ทำงานเฉพาะเมื่ออีเมลที่มีไฟล์แนบถูกส่งไปยังโฟลเดอร์ + +7. ลบการดำเนินการต่อไปนี้ออกจากโฟลว์: **HTML to text**, **Compose**, **Compose 2**, **Compose 3** และ **Compose 4** เพราะคุณจะไม่ใช้มัน + +8. ลบการดำเนินการ **Condition** ออกจากโฟลว์เพราะคุณจะไม่ใช้มัน โฟลว์ควรมีลักษณะดังภาพด้านล่าง: + + ![power automate, ลบการดำเนินการ](../../../translated_images/powerautomate-remove-actions.7216392fe684ceba4b73c6383edd1cc5e7ded11afd0ca812052a11487d049ef8.th.png) + +9. คลิกปุ่ม **Add an action** และค้นหา **Dataverse** เลือกการดำเนินการ **Add a new row** + +10. ในการดำเนินการ **Extract Information from invoices** อัปเดต **Invoice File** ให้ชี้ไปที่ **Attachment Content** จากอีเมล สิ่งนี้จะทำให้โฟลว์ดึงข้อมูลจากไฟล์แนบใบแจ้งหนี้ + +11. เลือก **Table** ที่คุณสร้างไว้ก่อนหน้านี้ เช่น คุณสามารถเลือกตาราง **Invoice Information** เลือกเนื้อหาไดนามิกจากการดำเนินการก่อนหน้าเพื่อเติมฟิลด์ต่อไปนี้: + + - ID + - Amount + - Date + - Name + - Status - ตั้งค่า **Status** เป็น **Pending** + - Supplier Email - ใช้เนื้อหาไดนามิก **From** จากตัวกระตุ้น **When a new email arrives** + + ![power automate add row](../../../translated_images/powerautomate-add-row.5edce45e5dd3d51e5152688dc140ad43e1423e7a9fef9a206f82a7965ea68d73.th.png) + +12. เมื่อคุณเสร็จสิ้นโฟลว์ คลิกปุ่ม **Save** เพื่อบันทึกโฟลว์ คุณสามารถทดสอบโฟลว์โดยการส่งอีเมลที่มีใบแจ้งหนี้ไปยังโฟลเดอร์ที่คุณระบุในตัวกระตุ้น + +> **การบ้านของคุณ**: โฟลว์ที่คุณสร้างขึ้นเป็นจุดเริ่มต้นที่ดี ตอนนี้คุณต้องคิดว่าจะสร้างระบบอัตโนมัติที่ช่วยให้ทีมการเงินของเราส่งอีเมลไปยังผู้จัดจำหน่ายเพื่ออัปเดตสถานะปัจจุบันของใบแจ้งหนี้ได้อย่างไร คำใบ้ของคุณ: โฟลว์ต้องทำงานเมื่อสถานะของใบแจ้งหนี้เปลี่ยนแปลง + +## ใช้โมเดล AI สร้างข้อความใน Power Automate + +โมเดล AI Create Text with GPT ใน AI Builder ช่วยให้คุณสร้างข้อความตามคำสั่ง และขับเคลื่อนโดย Microsoft Azure OpenAI Service ด้วยความสามารถนี้ คุณสามารถรวมเทคโนโลยี GPT (Generative Pre-Trained Transformer) เข้ากับแอปและโฟลว์ของคุณเพื่อสร้างโฟลว์อัตโนมัติและแอปพลิเคชันที่มีข้อมูลเชิงลึกหลากหลาย + +โมเดล GPT ผ่านการฝึกฝนอย่างเข้มข้นด้วยข้อมูลจำนวนมหาศาล ทำให้สามารถสร้างข้อความที่คล้ายคลึงกับภาษามนุษย์เมื่อได้รับคำสั่ง เมื่อรวมกับการทำงานอัตโนมัติของโฟลว์ โมเดล AI เช่น GPT สามารถนำมาใช้เพื่อปรับปรุงและทำงานอัตโนมัติในหลากหลายงาน + +ตัวอย่างเช่น คุณสามารถสร้างโฟลว์เพื่อสร้างข้อความอัตโนมัติสำหรับการใช้งานต่าง ๆ เช่น ร่างอีเมล คำอธิบายผลิตภัณฑ์ และอื่น ๆ คุณยังสามารถใช้โมเดลเพื่อสร้างข้อความสำหรับแอปต่าง ๆ เช่น แชทบอทและแอปบริการลูกค้าที่ช่วยให้ตัวแทนบริการลูกค้าตอบสนองต่อคำถามของลูกค้าได้อย่างมีประสิทธิภาพ + +![สร้างคำสั่ง](../../../translated_images/create-prompt-gpt.69d429300c2e870a12ec95556cda9bacf6a173e452cdca02973c90df5f705cee.th.png) + +เรียนรู้วิธีใช้โมเดล AI นี้ใน Power Automate โดยไปที่โมดูล [Add intelligence with AI Builder and GPT](https://learn.microsoft.com/training/modules/ai-builder-text-generation/?WT.mc_id=academic-109639-somelezediko) + +## ทำได้ดีมาก! เรียนรู้เพิ่มเติมต่อไป + +หลังจากจบบทเรียนนี้ ลองดู [Generative AI Learning collection](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) เพื่อเพิ่มพูนความรู้เกี่ยวกับ Generative AI ของคุณ! + +ไปที่บทเรียนที่ 11 ซึ่งเราจะดูวิธี [รวม Generative AI กับ Function Calling](../11-integrating-with-function-calling/README.md?WT.mc_id=academic-105485-koreyst)! + +--- + +**ข้อจำกัดความรับผิดชอบ**: +เอกสารนี้ได้รับการแปลโดยใช้บริการแปลภาษา AI [Co-op Translator](https://github.com/Azure/co-op-translator) แม้ว่าเราจะพยายามให้การแปลมีความถูกต้อง แต่โปรดทราบว่าการแปลอัตโนมัติอาจมีข้อผิดพลาดหรือความไม่ถูกต้อง เอกสารต้นฉบับในภาษาดั้งเดิมควรถือเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลที่สำคัญ ขอแนะนำให้ใช้บริการแปลภาษามืออาชีพ เราไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความผิดที่เกิดจากการใช้การแปลนี้ \ No newline at end of file diff --git a/translations/th/11-integrating-with-function-calling/README.md b/translations/th/11-integrating-with-function-calling/README.md index eaf8b53aff..1a05876d73 100644 --- a/translations/th/11-integrating-with-function-calling/README.md +++ b/translations/th/11-integrating-with-function-calling/README.md @@ -1,467 +1,472 @@ - -# การผสานรวมกับการเรียกใช้ฟังก์ชัน - -[![Integrating with function calling](../../../translated_images/11-lesson-banner.d78860d3e1f041e2c3426b1c052e1590738d2978db584a08efe1efbca299ed82.th.png)](https://aka.ms/gen-ai-lesson11-gh?WT.mc_id=academic-105485-koreyst) - -คุณได้เรียนรู้มาพอสมควรจากบทเรียนก่อนหน้าแล้ว แต่เรายังสามารถพัฒนาได้อีก บางอย่างที่เราสามารถปรับปรุงได้คือการทำให้รูปแบบการตอบกลับมีความสม่ำเสมอมากขึ้น เพื่อให้ง่ายต่อการนำไปใช้งานต่อในขั้นตอนถัดไป นอกจากนี้ เรายังอาจต้องการเพิ่มข้อมูลจากแหล่งอื่นเพื่อเสริมความสมบูรณ์ให้กับแอปพลิเคชันของเรา - -ปัญหาที่กล่าวมาข้างต้นคือสิ่งที่บทนี้ต้องการแก้ไข - -## บทนำ - -บทเรียนนี้จะครอบคลุม: - -- อธิบายว่า function calling คืออะไรและกรณีการใช้งาน -- การสร้างการเรียกใช้ฟังก์ชันด้วย Azure OpenAI -- วิธีการผสานรวมการเรียกใช้ฟังก์ชันเข้ากับแอปพลิเคชัน - -## เป้าหมายการเรียนรู้ - -เมื่อจบบทเรียนนี้ คุณจะสามารถ: - -- อธิบายวัตถุประสงค์ของการใช้ function calling -- ตั้งค่า Function Call โดยใช้ Azure OpenAI Service -- ออกแบบการเรียกใช้ฟังก์ชันที่มีประสิทธิภาพสำหรับกรณีการใช้งานของแอปพลิเคชันคุณ - -## กรณีศึกษา: การพัฒนาช่องแชทบอทด้วยฟังก์ชัน - -สำหรับบทเรียนนี้ เราต้องการสร้างฟีเจอร์สำหรับสตาร์ทอัพด้านการศึกษา ที่ช่วยให้ผู้ใช้สามารถใช้แชทบอทค้นหาหลักสูตรเทคนิคต่างๆ ได้ เราจะแนะนำหลักสูตรที่เหมาะสมกับระดับทักษะ บทบาทปัจจุบัน และเทคโนโลยีที่สนใจของผู้ใช้ - -เพื่อทำกรณีศึกษานี้ให้สำเร็จ เราจะใช้การผสมผสานของ: - -- `Azure OpenAI` เพื่อสร้างประสบการณ์แชทสำหรับผู้ใช้ -- `Microsoft Learn Catalog API` เพื่อช่วยผู้ใช้ค้นหาหลักสูตรตามคำขอ -- `Function Calling` เพื่อรับคำถามของผู้ใช้และส่งไปยังฟังก์ชันเพื่อทำการเรียก API - -เริ่มต้นกันเลย มาดูกันว่าทำไมเราถึงอยากใช้ function calling ตั้งแต่แรก: - -## ทำไมต้องใช้ Function Calling - -ก่อนจะมี function calling คำตอบจาก LLM มักไม่มีโครงสร้างและไม่สม่ำเสมอ นักพัฒนาต้องเขียนโค้ดยืนยันความถูกต้องที่ซับซ้อนเพื่อจัดการกับรูปแบบคำตอบที่หลากหลาย ผู้ใช้ไม่สามารถถามคำถามเช่น "สภาพอากาศปัจจุบันที่สต็อกโฮล์มเป็นอย่างไร?" และได้รับคำตอบได้ เพราะโมเดลถูกจำกัดด้วยข้อมูลที่ถูกฝึกมาในช่วงเวลาหนึ่ง - -Function Calling เป็นฟีเจอร์ของ Azure OpenAI Service ที่ช่วยแก้ข้อจำกัดเหล่านี้: - -- **รูปแบบการตอบกลับที่สม่ำเสมอ** หากเราควบคุมรูปแบบการตอบกลับได้ดีขึ้น เราจะสามารถผสานข้อมูลไปยังระบบอื่นได้ง่ายขึ้น -- **ข้อมูลภายนอก** สามารถใช้ข้อมูลจากแหล่งอื่นของแอปพลิเคชันในบริบทของแชทได้ - -## อธิบายปัญหาผ่านกรณีศึกษา - -> เราแนะนำให้ใช้ [notebook ที่แนบมา](python/aoai-assignment.ipynb) หากคุณต้องการรันกรณีศึกษาด้านล่าง หรือจะอ่านตามเพื่อทำความเข้าใจปัญหาที่ฟังก์ชันสามารถช่วยแก้ไขก็ได้ - -มาดูตัวอย่างที่แสดงปัญหาเรื่องรูปแบบการตอบกลับ: - -สมมติว่าเราต้องการสร้างฐานข้อมูลข้อมูลนักเรียนเพื่อแนะนำหลักสูตรที่เหมาะสมให้กับพวกเขา ด้านล่างนี้มีคำอธิบายของนักเรียนสองคนที่มีข้อมูลคล้ายกันมาก - -1. สร้างการเชื่อมต่อกับ Azure OpenAI ของเรา: - - ```python - import os - import json - from openai import AzureOpenAI - from dotenv import load_dotenv - load_dotenv() - - client = AzureOpenAI( - api_key=os.environ['AZURE_OPENAI_API_KEY'], # this is also the default, it can be omitted - api_version = "2023-07-01-preview" - ) - - deployment=os.environ['AZURE_OPENAI_DEPLOYMENT'] - ``` - - ด้านล่างเป็นโค้ด Python สำหรับตั้งค่าการเชื่อมต่อกับ Azure OpenAI โดยกำหนด `api_type`, `api_base`, `api_version` และ `api_key` - -1. สร้างคำอธิบายของนักเรียนสองคนโดยใช้ตัวแปร `student_1_description` และ `student_2_description` - - ```python - student_1_description="Emily Johnson is a sophomore majoring in computer science at Duke University. She has a 3.7 GPA. Emily is an active member of the university's Chess Club and Debate Team. She hopes to pursue a career in software engineering after graduating." - - student_2_description = "Michael Lee is a sophomore majoring in computer science at Stanford University. He has a 3.8 GPA. Michael is known for his programming skills and is an active member of the university's Robotics Club. He hopes to pursue a career in artificial intelligence after finishing his studies." - ``` - - เราต้องการส่งคำอธิบายของนักเรียนเหล่านี้ไปยัง LLM เพื่อแยกข้อมูล ข้อมูลนี้จะถูกนำไปใช้ในแอปพลิเคชันและส่งต่อไปยัง API หรือเก็บในฐานข้อมูลได้ - -1. สร้าง prompt สองอันที่เหมือนกัน โดยสั่งให้ LLM รู้ว่าข้อมูลที่เราสนใจคืออะไร: - - ```python - prompt1 = f''' - Please extract the following information from the given text and return it as a JSON object: - - name - major - school - grades - club - - This is the body of text to extract the information from: - {student_1_description} - ''' - - prompt2 = f''' - Please extract the following information from the given text and return it as a JSON object: - - name - major - school - grades - club - - This is the body of text to extract the information from: - {student_2_description} - ''' - ``` - - prompt ข้างต้นสั่งให้ LLM ดึงข้อมูลและส่งกลับในรูปแบบ JSON - -1. หลังจากตั้งค่า prompt และเชื่อมต่อกับ Azure OpenAI แล้ว เราจะส่ง prompt ไปยัง LLM โดยใช้ `openai.ChatCompletion` เราเก็บ prompt ในตัวแปร `messages` และกำหนดบทบาทเป็น `user` เพื่อจำลองข้อความจากผู้ใช้ที่ส่งไปยังแชทบอท - - ```python - # response from prompt one - openai_response1 = client.chat.completions.create( - model=deployment, - messages = [{'role': 'user', 'content': prompt1}] - ) - openai_response1.choices[0].message.content - - # response from prompt two - openai_response2 = client.chat.completions.create( - model=deployment, - messages = [{'role': 'user', 'content': prompt2}] - ) - openai_response2.choices[0].message.content - ``` - -ตอนนี้เราสามารถส่งคำขอทั้งสองไปยัง LLM และตรวจสอบคำตอบที่ได้รับโดยใช้ `openai_response1['choices'][0]['message']['content']` - -1. สุดท้าย เราสามารถแปลงคำตอบเป็นรูปแบบ JSON โดยเรียกใช้ `json.loads`: - - ```python - # Loading the response as a JSON object - json_response1 = json.loads(openai_response1.choices[0].message.content) - json_response1 - ``` - - คำตอบที่ 1: - - ```json - { - "name": "Emily Johnson", - "major": "computer science", - "school": "Duke University", - "grades": "3.7", - "club": "Chess Club" - } - ``` - - คำตอบที่ 2: - - ```json - { - "name": "Michael Lee", - "major": "computer science", - "school": "Stanford University", - "grades": "3.8 GPA", - "club": "Robotics Club" - } - ``` - - แม้ว่า prompt จะเหมือนกันและคำอธิบายคล้ายกัน แต่ค่าของคุณสมบัติ `Grades` กลับมีรูปแบบต่างกัน เช่น บางครั้งได้เป็น `3.7` บางครั้งเป็น `3.7 GPA` - - ผลลัพธ์นี้เกิดจาก LLM รับข้อมูลที่ไม่มีโครงสร้างในรูปแบบ prompt ที่เขียน และส่งกลับข้อมูลที่ไม่มีโครงสร้างเช่นกัน เราจำเป็นต้องมีรูปแบบที่มีโครงสร้างเพื่อให้รู้ว่าจะคาดหวังอะไรเมื่อเก็บหรือใช้งานข้อมูลนี้ - -แล้วเราจะแก้ปัญหารูปแบบนี้อย่างไร? ด้วยการใช้ function calling เราจะมั่นใจได้ว่าได้รับข้อมูลที่มีโครงสร้างกลับมา เมื่อใช้ function calling จริงๆ แล้ว LLM ไม่ได้เรียกหรือรันฟังก์ชันใดๆ แต่เราสร้างโครงสร้างให้ LLM ปฏิบัติตามสำหรับการตอบกลับ จากนั้นเราจะใช้การตอบกลับที่มีโครงสร้างเหล่านั้นเพื่อรู้ว่าควรเรียกฟังก์ชันใดในแอปพลิเคชันของเรา - -![function flow](../../../translated_images/Function-Flow.083875364af4f4bb69bd6f6ed94096a836453183a71cf22388f50310ad6404de.th.png) - -เราสามารถนำผลลัพธ์ที่ได้จากฟังก์ชันส่งกลับไปยัง LLM อีกครั้ง LLM จะตอบกลับด้วยภาษาธรรมชาติเพื่อตอบคำถามของผู้ใช้ - -## กรณีการใช้งานของ function calls - -มีหลายกรณีที่ function calls สามารถช่วยปรับปรุงแอปของคุณได้ เช่น: - -- **เรียกใช้เครื่องมือภายนอก** แชทบอทเหมาะสำหรับตอบคำถามจากผู้ใช้ โดยใช้ function calling แชทบอทสามารถใช้ข้อความจากผู้ใช้เพื่อทำงานบางอย่าง เช่น นักเรียนอาจขอให้แชทบอท "ส่งอีเมลถึงอาจารย์ของฉันว่าฉันต้องการความช่วยเหลือเพิ่มเติมในวิชานี้" ซึ่งจะเรียกฟังก์ชัน `send_email(to: string, body: string)` - -- **สร้างคำสั่ง API หรือฐานข้อมูล** ผู้ใช้สามารถค้นหาข้อมูลโดยใช้ภาษาธรรมชาติที่ถูกแปลงเป็นคำสั่งหรือคำขอ API ที่มีรูปแบบ เช่น ครูอาจถามว่า "ใครคือผู้ที่ส่งงานล่าสุดครบถ้วน" ซึ่งอาจเรียกฟังก์ชัน `get_completed(student_name: string, assignment: int, current_status: string)` - -- **สร้างข้อมูลที่มีโครงสร้าง** ผู้ใช้สามารถนำข้อความหรือ CSV มาสกัดข้อมูลสำคัญโดยใช้ LLM เช่น นักเรียนอาจแปลงบทความวิกิพีเดียเกี่ยวกับข้อตกลงสันติภาพเพื่อสร้างแฟลชการ์ด AI โดยใช้ฟังก์ชัน `get_important_facts(agreement_name: string, date_signed: string, parties_involved: list)` - -## การสร้าง Function Call แรกของคุณ - -กระบวนการสร้าง function call มี 3 ขั้นตอนหลัก: - -1. **เรียกใช้** Chat Completions API พร้อมรายการฟังก์ชันและข้อความจากผู้ใช้ -2. **อ่าน** การตอบกลับของโมเดลเพื่อทำการกระทำ เช่น เรียกใช้ฟังก์ชันหรือ API -3. **ทำ** การเรียกอีกครั้งไปยัง Chat Completions API พร้อมผลลัพธ์จากฟังก์ชันเพื่อสร้างคำตอบให้ผู้ใช้ - -![LLM Flow](../../../translated_images/LLM-Flow.3285ed8caf4796d7343c02927f52c9d32df59e790f6e440568e2e951f6ffa5fd.th.png) - -### ขั้นตอนที่ 1 - สร้างข้อความ - -ขั้นตอนแรกคือการสร้างข้อความจากผู้ใช้ ซึ่งสามารถกำหนดค่าแบบไดนามิกโดยรับค่าจากอินพุตข้อความ หรือกำหนดค่าคงที่ก็ได้ หากนี่เป็นครั้งแรกที่คุณใช้ Chat Completions API เราต้องกำหนด `role` และ `content` ของข้อความ - -`role` อาจเป็น `system` (สร้างกฎ), `assistant` (โมเดล) หรือ `user` (ผู้ใช้ปลายทาง) สำหรับ function calling เราจะกำหนดเป็น `user` พร้อมตัวอย่างคำถาม - -```python -messages= [ {"role": "user", "content": "Find me a good course for a beginner student to learn Azure."} ] -``` - -การกำหนดบทบาทต่างๆ ช่วยให้ LLM เข้าใจว่าใครเป็นผู้พูด ซึ่งช่วยสร้างประวัติการสนทนาที่ LLM สามารถใช้ต่อยอดได้ - -### ขั้นตอนที่ 2 - สร้างฟังก์ชัน - -ถัดไป เราจะกำหนดฟังก์ชันและพารามิเตอร์ของฟังก์ชันนั้น เราจะใช้ฟังก์ชันเดียวชื่อ `search_courses` แต่คุณสามารถสร้างหลายฟังก์ชันได้ - -> **สำคัญ** : ฟังก์ชันจะถูกรวมอยู่ในข้อความระบบที่ส่งไปยัง LLM และจะนับรวมในจำนวนโทเค็นที่คุณมี - -ด้านล่างนี้ เราสร้างฟังก์ชันเป็นอาร์เรย์ของรายการ แต่ละรายการคือฟังก์ชันที่มีคุณสมบัติ `name`, `description` และ `parameters`: - -```python -functions = [ - { - "name":"search_courses", - "description":"Retrieves courses from the search index based on the parameters provided", - "parameters":{ - "type":"object", - "properties":{ - "role":{ - "type":"string", - "description":"The role of the learner (i.e. developer, data scientist, student, etc.)" - }, - "product":{ - "type":"string", - "description":"The product that the lesson is covering (i.e. Azure, Power BI, etc.)" - }, - "level":{ - "type":"string", - "description":"The level of experience the learner has prior to taking the course (i.e. beginner, intermediate, advanced)" - } - }, - "required":[ - "role" - ] - } - } -] -``` - -มาดูรายละเอียดของแต่ละฟังก์ชัน: - -- `name` - ชื่อฟังก์ชันที่เราต้องการให้เรียกใช้ -- `description` - คำอธิบายการทำงานของฟังก์ชัน ควรชัดเจนและเจาะจง -- `parameters` - รายการค่าพร้อมรูปแบบที่ต้องการให้โมเดลสร้างในคำตอบ พารามิเตอร์เป็นอาร์เรย์ของรายการที่มีคุณสมบัติดังนี้: - 1. `type` - ชนิดข้อมูลของคุณสมบัติที่จะเก็บ - 2. `properties` - รายการค่าที่โมเดลจะใช้ในคำตอบ - 1. `name` - ชื่อคีย์ของคุณสมบัติที่โมเดลจะใช้ในคำตอบ เช่น `product` - 2. `type` - ชนิดข้อมูลของคุณสมบัติ เช่น `string` - 3. `description` - คำอธิบายของคุณสมบัตินั้น - -นอกจากนี้ยังมีคุณสมบัติทางเลือก `required` - ระบุว่าคุณสมบัติใดจำเป็นสำหรับการเรียกฟังก์ชันให้สำเร็จ - -### ขั้นตอนที่ 3 - การเรียกใช้ฟังก์ชัน - -หลังจากกำหนดฟังก์ชันแล้ว เราต้องรวมฟังก์ชันนั้นในการเรียก Chat Completion API โดยเพิ่ม `functions` ในคำขอ ในที่นี้คือ `functions=functions` - -นอกจากนี้ยังมีตัวเลือกตั้งค่า `function_call` เป็น `auto` หมายความว่าเราจะปล่อยให้ LLM ตัดสินใจเองว่าจะเรียกฟังก์ชันใดตามข้อความของผู้ใช้ แทนที่จะกำหนดเอง - -โค้ดด้านล่างแสดงการเรียก `ChatCompletion.create` โดยตั้งค่า `functions=functions` และ `function_call="auto"` เพื่อให้ LLM เลือกเวลาที่จะเรียกฟังก์ชันที่เรากำหนด: - -```python -response = client.chat.completions.create(model=deployment, - messages=messages, - functions=functions, - function_call="auto") - -print(response.choices[0].message) -``` - -คำตอบที่ได้จะมีลักษณะดังนี้: - -```json -{ - "role": "assistant", - "function_call": { - "name": "search_courses", - "arguments": "{\n \"role\": \"student\",\n \"product\": \"Azure\",\n \"level\": \"beginner\"\n}" - } -} -``` - -เราจะเห็นว่าฟังก์ชัน `search_courses` ถูกเรียกพร้อมกับอาร์กิวเมนต์ที่ระบุในคุณสมบัติ `arguments` ของคำตอบ JSON - -สรุปคือ LLM สามารถค้นหาข้อมูลที่เหมาะสมกับอาร์กิวเมนต์ของฟังก์ชันได้จากค่าที่ส่งไปยังพารามิเตอร์ `messages` ในการเรียก chat completion ด้านล่างนี้เป็นการเตือนความจำของค่าตัวแปร `messages`: - -```python -messages= [ {"role": "user", "content": "Find me a good course for a beginner student to learn Azure."} ] -``` - -อย่างที่เห็น `student`, `Azure` และ `beginner` ถูกดึงออกมาจาก `messages` และตั้งเป็นอินพุตของฟังก์ชัน การใช้ฟังก์ชันแบบนี้เป็นวิธีที่ดีในการดึงข้อมูลจาก prompt และยังช่วยสร้างโครงสร้างให้กับ LLM พร้อมฟังก์ชันที่นำกลับมาใช้ใหม่ได้ - -ต่อไปเราจะดูวิธีใช้สิ่งนี้ในแอปของเรา - -## การผสานรวม Function Calls เข้ากับแอปพลิเคชัน - -หลังจากทดสอบคำตอบที่มีโครงสร้างจาก LLM แล้ว เราสามารถผสานรวมเข้ากับแอปพลิเคชันได้ - -### การจัดการลำดับขั้นตอน - -เพื่อผสานรวมเข้ากับแอปพลิเคชัน ให้ทำตามขั้นตอนดังนี้: - -1. เรียกใช้บริการ OpenAI และเก็บข้อความในตัวแปรชื่อ `response_message` - - ```python - response_message = response.choices[0].message - ``` - -1. กำหนดฟังก์ชันที่จะเรียก Microsoft Learn API เพื่อดึงรายชื่อหลักสูตร: - - ```python - import requests - - def search_courses(role, product, level): - url = "https://learn.microsoft.com/api/catalog/" - params = { - "role": role, - "product": product, - "level": level - } - response = requests.get(url, params=params) - modules = response.json()["modules"] - results = [] - for module in modules[:5]: - title = module["title"] - url = module["url"] - results.append({"title": title, "url": url}) - return str(results) - ``` - - สังเกตว่าเราสร้างฟังก์ชัน Python จริงที่แมปกับชื่อฟังก์ชันในตัวแปร `functions` และเรียก API ภายนอกจริงเพื่อดึงข้อมูลที่ต้องการ ในกรณีนี้คือการค้นหาหลักสูตรฝึกอบรมจาก Microsoft Learn API - -โอเค เราสร้างตัวแปร `functions` และฟังก์ชัน Python ที่สอดคล้องกันแล้ว เราจะบอก LLM อย่างไรให้แมปสองสิ่งนี้เข้าด้วยกันเพื่อเรียกใช้ฟังก์ชัน Python ของเรา? - -1. เพื่อตรวจสอบว่าต้องเรียกฟังก์ชัน Python หรือไม่ ให้ดูในคำตอบของ LLM ว่ามี `function_call` หรือไม่ และเรียกฟังก์ชันที่ระบุไว้ วิธีตรวจสอบมีดังนี้: - - ```python - # Check if the model wants to call a function - if response_message.function_call.name: - print("Recommended Function call:") - print(response_message.function_call.name) - print() - - # Call the function. - function_name = response_message.function_call.name - - available_functions = { - "search_courses": search_courses, - } - function_to_call = available_functions[function_name] - - function_args = json.loads(response_message.function_call.arguments) - function_response = function_to_call(**function_args) - - print("Output of function call:") - print(function_response) - print(type(function_response)) - - - # Add the assistant response and function response to the messages - messages.append( # adding assistant response to messages - { - "role": response_message.role, - "function_call": { - "name": function_name, - "arguments": response_message.function_call.arguments, - }, - "content": None - } - ) - messages.append( # adding function response to messages - { - "role": "function", - "name": function_name, - "content":function_response, - } - ) - ``` - - สามบรรทัดนี้ช่วยดึงชื่อฟังก์ชัน อาร์กิวเมนต์ และเรียกฟังก์ชัน: - - ```python - function_to_call = available_functions[function_name] - - function_args = json.loads(response_message.function_call.arguments) - function_response = function_to_call(**function_args) - ``` - - ด้านล่างเป็นผลลัพธ์จากการรันโค้ดของเรา: - - **ผลลัพธ์** - - ```Recommended Function call: - { - "name": "search_courses", - "arguments": "{\n \"role\": \"student\",\n \"product\": \"Azure\",\n \"level\": \"beginner\"\n}" - } - - Output of function call: - [{'title': 'Describe concepts of cryptography', 'url': 'https://learn.microsoft.com/training/modules/describe-concepts-of-cryptography/? - WT.mc_id=api_CatalogApi'}, {'title': 'Introduction to audio classification with TensorFlow', 'url': 'https://learn.microsoft.com/en- - us/training/modules/intro-audio-classification-tensorflow/?WT.mc_id=api_CatalogApi'}, {'title': 'Design a Performant Data Model in Azure SQL - Database with Azure Data Studio', 'url': 'https://learn.microsoft.com/training/modules/design-a-data-model-with-ads/? - WT.mc_id=api_CatalogApi'}, {'title': 'Getting started with the Microsoft Cloud Adoption Framework for Azure', 'url': - 'https://learn.microsoft.com/training/modules/cloud-adoption-framework-getting-started/?WT.mc_id=api_CatalogApi'}, {'title': 'Set up the - Rust development environment', 'url': 'https://learn.microsoft.com/training/modules/rust-set-up-environment/?WT.mc_id=api_CatalogApi'}] - - ``` - -1. ส่งข้อความที่อัปเดต `messages` ไปยัง LLM อีกครั้งเพื่อรับคำตอบเป็นภาษาธรรมชาติแทนคำตอบ JSON จาก API - - ```python - print("Messages in next request:") - print(messages) - print() - - second_response = client.chat.completions.create( - messages=messages, - model=deployment, - function_call="auto", - functions=functions, - temperature=0 - ) # get a new response from GPT where it can see the function response - - - print(second_response.choices[0].message) - ``` - - **ผลลัพธ์** - - ```python - { - "role": "assistant", - "content": "I found some good courses for beginner students to learn Azure:\n\n1. [Describe concepts of cryptography] (https://learn.microsoft.com/training/modules/describe-concepts-of-cryptography/?WT.mc_id=api_CatalogApi)\n2. [Introduction to audio classification with TensorFlow](https://learn.microsoft.com/training/modules/intro-audio-classification-tensorflow/?WT.mc_id=api_CatalogApi)\n3. [Design a Performant Data Model in Azure SQL Database with Azure Data Studio](https://learn.microsoft.com/training/modules/design-a-data-model-with-ads/?WT.mc_id=api_CatalogApi)\n4. [Getting started with the Microsoft Cloud Adoption Framework for Azure](https://learn.microsoft.com/training/modules/cloud-adoption-framework-getting-started/?WT.mc_id=api_CatalogApi)\n5. [Set up the Rust development environment](https://learn.microsoft.com/training/modules/rust-set-up-environment/?WT.mc_id=api_CatalogApi)\n\nYou can click on the links to access the courses." - } - - ``` - -## การบ้าน - -เพื่อเรียนรู้เพิ่มเติมเกี่ยวกับ Azure OpenAI Function Calling คุณสามารถสร้าง: - -- พารามิเตอร์เพิ่มเติมของฟังก์ชันที่ช่วยให้ผู้เรียนค้นหาหลักสูตรได้มากขึ้น -- สร้างการเรียกฟังก์ชันอีกอันที่รับข้อมูลเพิ่มเติมจากผู้เรียน เช่น ภาษาพื้นเมืองของพวกเขา -- สร้างการจัดการข้อผิดพลาดเมื่อการเรียกฟังก์ชันและ/หรือการเรียก API ไม่คืนหลักสูตรที่เหมาะสมใดๆ -## ทำได้ดีมาก! ต่อเนื่องการเดินทาง - -หลังจากจบบทเรียนนี้แล้ว ลองดูที่ [คอลเลกชันการเรียนรู้ Generative AI](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) เพื่อพัฒนาความรู้ด้าน Generative AI ของคุณให้ก้าวหน้าไปอีกขั้น! - -ไปที่บทเรียนที่ 12 ซึ่งเราจะมาดูวิธี [ออกแบบ UX สำหรับแอปพลิเคชัน AI](../12-designing-ux-for-ai-applications/README.md?WT.mc_id=academic-105485-koreyst)! - -**ข้อจำกัดความรับผิดชอบ**: -เอกสารนี้ได้รับการแปลโดยใช้บริการแปลภาษาอัตโนมัติ [Co-op Translator](https://github.com/Azure/co-op-translator) แม้เราจะพยายามให้ความถูกต้องสูงสุด แต่โปรดทราบว่าการแปลอัตโนมัติอาจมีข้อผิดพลาดหรือความไม่ถูกต้อง เอกสารต้นฉบับในภาษาต้นทางถือเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลที่สำคัญ ขอแนะนำให้ใช้บริการแปลโดยผู้เชี่ยวชาญมนุษย์ เราไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความผิดใด ๆ ที่เกิดจากการใช้การแปลนี้ \ No newline at end of file + +# การรวมเข้ากับการเรียกฟังก์ชัน + +[![การรวมเข้ากับการเรียกฟังก์ชัน](../../../translated_images/11-lesson-banner.d78860d3e1f041e2c3426b1c052e1590738d2978db584a08efe1efbca299ed82.th.png)](https://youtu.be/DgUdCLX8qYQ?si=f1ouQU5HQx6F8Gl2) + +คุณได้เรียนรู้มามากพอสมควรในบทเรียนก่อนหน้า อย่างไรก็ตาม เรายังสามารถปรับปรุงเพิ่มเติมได้ สิ่งที่เราสามารถแก้ไขได้คือการทำให้รูปแบบการตอบกลับมีความสม่ำเสมอมากขึ้นเพื่อให้ง่ายต่อการใช้งานในขั้นตอนต่อไป นอกจากนี้ เราอาจต้องการเพิ่มข้อมูลจากแหล่งอื่นเพื่อเพิ่มคุณค่าให้กับแอปพลิเคชันของเรา + +ปัญหาที่กล่าวถึงข้างต้นคือสิ่งที่บทนี้มุ่งเน้นแก้ไข + +## บทนำ + +บทเรียนนี้จะครอบคลุม: + +- อธิบายว่าการเรียกฟังก์ชันคืออะไรและกรณีการใช้งาน +- การสร้างการเรียกฟังก์ชันโดยใช้ Azure OpenAI +- วิธีการรวมการเรียกฟังก์ชันเข้ากับแอปพลิเคชัน + +## เป้าหมายการเรียนรู้ + +เมื่อจบบทเรียนนี้ คุณจะสามารถ: + +- อธิบายวัตถุประสงค์ของการใช้การเรียกฟังก์ชัน +- ตั้งค่าการเรียกฟังก์ชันโดยใช้บริการ Azure OpenAI +- ออกแบบการเรียกฟังก์ชันที่มีประสิทธิภาพสำหรับกรณีการใช้งานของแอปพลิเคชันของคุณ + +## สถานการณ์: ปรับปรุงแชทบอทของเราด้วยฟังก์ชัน + +สำหรับบทเรียนนี้ เราต้องการสร้างฟีเจอร์สำหรับสตาร์ทอัพด้านการศึกษาของเราที่ช่วยให้ผู้ใช้สามารถใช้แชทบอทเพื่อค้นหาคอร์สเทคนิค เราจะแนะนำคอร์สที่เหมาะสมกับระดับทักษะ บทบาทปัจจุบัน และเทคโนโลยีที่สนใจของพวกเขา + +เพื่อทำให้สถานการณ์นี้สำเร็จ เราจะใช้การผสมผสานของ: + +- `Azure OpenAI` เพื่อสร้างประสบการณ์การแชทสำหรับผู้ใช้ +- `Microsoft Learn Catalog API` เพื่อช่วยผู้ใช้ค้นหาคอร์สตามคำขอของผู้ใช้ +- `Function Calling` เพื่อรับคำถามของผู้ใช้และส่งไปยังฟังก์ชันเพื่อทำการเรียก API + +เริ่มต้นกันเลย มาดูกันว่าทำไมเราถึงต้องการใช้การเรียกฟังก์ชันตั้งแต่แรก: + +## ทำไมต้องใช้การเรียกฟังก์ชัน + +ก่อนการเรียกฟังก์ชัน การตอบกลับจาก LLM นั้นไม่มีโครงสร้างและไม่สม่ำเสมอ นักพัฒนาต้องเขียนโค้ดการตรวจสอบที่ซับซ้อนเพื่อให้แน่ใจว่าสามารถจัดการกับรูปแบบการตอบกลับที่หลากหลายได้ ผู้ใช้ไม่สามารถรับคำตอบเช่น "สภาพอากาศปัจจุบันในสตอกโฮล์มเป็นอย่างไร?" ได้ เนื่องจากโมเดลถูกจำกัดอยู่ที่เวลาที่ข้อมูลถูกฝึกฝน + +การเรียกฟังก์ชันเป็นฟีเจอร์ของบริการ Azure OpenAI เพื่อเอาชนะข้อจำกัดดังต่อไปนี้: + +- **รูปแบบการตอบกลับที่สม่ำเสมอ** หากเราสามารถควบคุมรูปแบบการตอบกลับได้ดีขึ้น เราก็สามารถรวมการตอบกลับเข้ากับระบบอื่นได้ง่ายขึ้น +- **ข้อมูลภายนอก** ความสามารถในการใช้ข้อมูลจากแหล่งอื่นของแอปพลิเคชันในบริบทการแชท + +## การแสดงปัญหาผ่านสถานการณ์ + +> เราแนะนำให้คุณใช้ [notebook ที่รวมอยู่](./python/aoai-assignment.ipynb?WT.mc_id=academic-105485-koreyst) หากคุณต้องการรันสถานการณ์ด้านล่างนี้ หรือคุณสามารถอ่านตามไปเพื่อดูปัญหาที่ฟังก์ชันสามารถช่วยแก้ไขได้ + +มาดูตัวอย่างที่แสดงปัญหารูปแบบการตอบกลับ: + +สมมติว่าเราต้องการสร้างฐานข้อมูลของข้อมูลนักเรียนเพื่อที่เราจะสามารถแนะนำคอร์สที่เหมาะสมให้กับพวกเขา ด้านล่างนี้เรามีคำอธิบายของนักเรียนสองคนที่มีข้อมูลที่คล้ายกันมาก + +1. สร้างการเชื่อมต่อกับทรัพยากร Azure OpenAI ของเรา: + + ```python + import os + import json + from openai import AzureOpenAI + from dotenv import load_dotenv + load_dotenv() + + client = AzureOpenAI( + api_key=os.environ['AZURE_OPENAI_API_KEY'], # this is also the default, it can be omitted + api_version = "2023-07-01-preview" + ) + + deployment=os.environ['AZURE_OPENAI_DEPLOYMENT'] + ``` + + ด้านล่างนี้เป็นโค้ด Python สำหรับการตั้งค่าการเชื่อมต่อกับ Azure OpenAI โดยเรากำหนด `api_type`, `api_base`, `api_version` และ `api_key` + +1. สร้างคำอธิบายของนักเรียนสองคนโดยใช้ตัวแปร `student_1_description` และ `student_2_description` + + ```python + student_1_description="Emily Johnson is a sophomore majoring in computer science at Duke University. She has a 3.7 GPA. Emily is an active member of the university's Chess Club and Debate Team. She hopes to pursue a career in software engineering after graduating." + + student_2_description = "Michael Lee is a sophomore majoring in computer science at Stanford University. He has a 3.8 GPA. Michael is known for his programming skills and is an active member of the university's Robotics Club. He hopes to pursue a career in artificial intelligence after finishing his studies." + ``` + + เราต้องการส่งคำอธิบายของนักเรียนด้านบนไปยัง LLM เพื่อแยกข้อมูล ข้อมูลนี้สามารถใช้ในแอปพลิเคชันของเราและส่งไปยัง API หรือเก็บไว้ในฐานข้อมูล + +1. สร้างคำสั่งสองคำที่เหมือนกันซึ่งเราสั่งให้ LLM เกี่ยวกับข้อมูลที่เราสนใจ: + + ```python + prompt1 = f''' + Please extract the following information from the given text and return it as a JSON object: + + name + major + school + grades + club + + This is the body of text to extract the information from: + {student_1_description} + ''' + + prompt2 = f''' + Please extract the following information from the given text and return it as a JSON object: + + name + major + school + grades + club + + This is the body of text to extract the information from: + {student_2_description} + ''' + ``` + + คำสั่งด้านบนสั่งให้ LLM ดึงข้อมูลและส่งกลับในรูปแบบ JSON + +1. หลังจากตั้งค่าคำสั่งและการเชื่อมต่อกับ Azure OpenAI เราจะส่งคำสั่งไปยัง LLM โดยใช้ `openai.ChatCompletion` เราเก็บคำสั่งไว้ในตัวแปร `messages` และกำหนดบทบาทเป็น `user` เพื่อเลียนแบบข้อความจากผู้ใช้ที่เขียนถึงแชทบอท + + ```python + # response from prompt one + openai_response1 = client.chat.completions.create( + model=deployment, + messages = [{'role': 'user', 'content': prompt1}] + ) + openai_response1.choices[0].message.content + + # response from prompt two + openai_response2 = client.chat.completions.create( + model=deployment, + messages = [{'role': 'user', 'content': prompt2}] + ) + openai_response2.choices[0].message.content + ``` + +ตอนนี้เราสามารถส่งคำขอทั้งสองไปยัง LLM และตรวจสอบการตอบกลับที่เราได้รับโดยค้นหาเช่นนี้ `openai_response1['choices'][0]['message']['content']` + +1. สุดท้าย เราสามารถแปลงการตอบกลับเป็นรูปแบบ JSON โดยเรียกใช้ `json.loads`: + + ```python + # Loading the response as a JSON object + json_response1 = json.loads(openai_response1.choices[0].message.content) + json_response1 + ``` + + การตอบกลับ 1: + + ```json + { + "name": "Emily Johnson", + "major": "computer science", + "school": "Duke University", + "grades": "3.7", + "club": "Chess Club" + } + ``` + + การตอบกลับ 2: + + ```json + { + "name": "Michael Lee", + "major": "computer science", + "school": "Stanford University", + "grades": "3.8 GPA", + "club": "Robotics Club" + } + ``` + + แม้ว่าคำสั่งจะเหมือนกันและคำอธิบายจะคล้ายกัน เราเห็นค่าของคุณสมบัติ `Grades` ถูกจัดรูปแบบแตกต่างกัน เช่น บางครั้งเราได้รูปแบบ `3.7` หรือ `3.7 GPA` + + ผลลัพธ์นี้เกิดจาก LLM ที่รับข้อมูลไม่มีโครงสร้างในรูปแบบของคำสั่งที่เขียนและส่งกลับข้อมูลไม่มีโครงสร้าง เราจำเป็นต้องมีรูปแบบที่มีโครงสร้างเพื่อที่เราจะได้รู้ว่าจะคาดหวังอะไรเมื่อเก็บหรือใช้ข้อมูลนี้ + +ดังนั้นเราจะแก้ปัญหาการจัดรูปแบบได้อย่างไร? โดยการใช้การเรียกฟังก์ชัน เราสามารถมั่นใจได้ว่าเราจะได้รับข้อมูลที่มีโครงสร้างกลับมา เมื่อใช้การเรียกฟังก์ชัน LLM จะไม่เรียกหรือรันฟังก์ชันจริง ๆ แต่เราสร้างโครงสร้างให้ LLM ปฏิบัติตามสำหรับการตอบกลับ จากนั้นเราจะใช้การตอบกลับที่มีโครงสร้างเหล่านั้นเพื่อทราบว่าควรรันฟังก์ชันใดในแอปพลิเคชันของเรา + +![function flow](../../../translated_images/Function-Flow.083875364af4f4bb69bd6f6ed94096a836453183a71cf22388f50310ad6404de.th.png) + +เราสามารถนำสิ่งที่ได้จากฟังก์ชันกลับไปยัง LLM จากนั้น LLM จะตอบกลับโดยใช้ภาษาธรรมชาติเพื่อตอบคำถามของผู้ใช้ + +## กรณีการใช้งานสำหรับการเรียกฟังก์ชัน + +มีกรณีการใช้งานที่หลากหลายที่การเรียกฟังก์ชันสามารถปรับปรุงแอปของคุณได้ เช่น: + +- **การเรียกเครื่องมือภายนอก** แชทบอทเหมาะสำหรับการให้คำตอบแก่คำถามจากผู้ใช้ โดยการใช้การเรียกฟังก์ชัน แชทบอทสามารถใช้ข้อความจากผู้ใช้เพื่อทำงานบางอย่าง ตัวอย่างเช่น นักเรียนสามารถขอให้แชทบอท "ส่งอีเมลถึงอาจารย์ของฉันว่าฉันต้องการความช่วยเหลือเพิ่มเติมในหัวข้อนี้" ซึ่งสามารถทำการเรียกฟังก์ชัน `send_email(to: string, body: string)` + +- **สร้างคำขอ API หรือฐานข้อมูล** ผู้ใช้สามารถค้นหาข้อมูลโดยใช้ภาษาธรรมชาติที่ถูกแปลงเป็นคำขอที่มีรูปแบบหรือคำขอ API ตัวอย่างเช่น อาจารย์ที่ขอ "นักเรียนคนใดที่ทำงานเสร็จในครั้งล่าสุด" ซึ่งสามารถเรียกฟังก์ชัน `get_completed(student_name: string, assignment: int, current_status: string)` + +- **สร้างข้อมูลที่มีโครงสร้าง** ผู้ใช้สามารถนำข้อความหรือ CSV และใช้ LLM เพื่อดึงข้อมูลสำคัญจากมัน ตัวอย่างเช่น นักเรียนสามารถแปลงบทความ Wikipedia เกี่ยวกับข้อตกลงสันติภาพเพื่อสร้างแฟลชการ์ด AI สิ่งนี้สามารถทำได้โดยใช้ฟังก์ชัน `get_important_facts(agreement_name: string, date_signed: string, parties_involved: list)` + +## การสร้างการเรียกฟังก์ชันครั้งแรกของคุณ + +กระบวนการสร้างการเรียกฟังก์ชันประกอบด้วย 3 ขั้นตอนหลัก: + +1. **การเรียก** API Chat Completions พร้อมรายการฟังก์ชันของคุณและข้อความจากผู้ใช้ +2. **การอ่าน** การตอบกลับของโมเดลเพื่อดำเนินการ เช่น การรันฟังก์ชันหรือการเรียก API +3. **การทำ** การเรียก API Chat Completions อีกครั้งพร้อมการตอบกลับจากฟังก์ชันของคุณเพื่อใช้ข้อมูลนั้นในการสร้างการตอบกลับให้ผู้ใช้ + +![LLM Flow](../../../translated_images/LLM-Flow.3285ed8caf4796d7343c02927f52c9d32df59e790f6e440568e2e951f6ffa5fd.th.png) + +### ขั้นตอนที่ 1 - การสร้างข้อความ + +ขั้นตอนแรกคือการสร้างข้อความจากผู้ใช้ สิ่งนี้สามารถกำหนดค่าได้แบบไดนามิกโดยการรับค่าจากการป้อนข้อความหรือคุณสามารถกำหนดค่าได้ที่นี่ หากนี่เป็นครั้งแรกที่คุณทำงานกับ API Chat Completions เราจำเป็นต้องกำหนด `role` และ `content` ของข้อความ + +`role` สามารถเป็น `system` (สร้างกฎ), `assistant` (โมเดล) หรือ `user` (ผู้ใช้ปลายทาง) สำหรับการเรียกฟังก์ชัน เราจะกำหนดเป็น `user` และคำถามตัวอย่าง + +```python +messages= [ {"role": "user", "content": "Find me a good course for a beginner student to learn Azure."} ] +``` + +โดยการกำหนดบทบาทที่แตกต่างกัน จะทำให้ LLM เข้าใจได้ชัดเจนว่าข้อความมาจากระบบหรือผู้ใช้ ซึ่งช่วยสร้างประวัติการสนทนาที่ LLM สามารถสร้างต่อได้ + +### ขั้นตอนที่ 2 - การสร้างฟังก์ชัน + +ต่อไป เราจะกำหนดฟังก์ชันและพารามิเตอร์ของฟังก์ชันนั้น เราจะใช้เพียงฟังก์ชันเดียวที่นี่ชื่อ `search_courses` แต่คุณสามารถสร้างฟังก์ชันหลายตัวได้ + +> **สำคัญ**: ฟังก์ชันจะถูกรวมอยู่ในข้อความระบบที่ส่งไปยัง LLM และจะรวมอยู่ในจำนวนโทเค็นที่คุณมีอยู่ + +ด้านล่างนี้ เราสร้างฟังก์ชันเป็นอาร์เรย์ของรายการ แต่ละรายการเป็นฟังก์ชันและมีคุณสมบัติ `name`, `description` และ `parameters`: + +```python +functions = [ + { + "name":"search_courses", + "description":"Retrieves courses from the search index based on the parameters provided", + "parameters":{ + "type":"object", + "properties":{ + "role":{ + "type":"string", + "description":"The role of the learner (i.e. developer, data scientist, student, etc.)" + }, + "product":{ + "type":"string", + "description":"The product that the lesson is covering (i.e. Azure, Power BI, etc.)" + }, + "level":{ + "type":"string", + "description":"The level of experience the learner has prior to taking the course (i.e. beginner, intermediate, advanced)" + } + }, + "required":[ + "role" + ] + } + } +] +``` + +มาดูรายละเอียดของแต่ละฟังก์ชันด้านล่าง: + +- `name` - ชื่อของฟังก์ชันที่เราต้องการให้เรียกใช้ +- `description` - คำอธิบายเกี่ยวกับวิธีการทำงานของฟังก์ชัน ที่นี่สำคัญที่จะต้องชัดเจนและเฉพาะเจาะจง +- `parameters` - รายการค่าที่คุณต้องการให้โมเดลสร้างในคำตอบของมัน อาร์เรย์ `parameters` ประกอบด้วยรายการที่มีคุณสมบัติดังนี้: + 1. `type` - ประเภทข้อมูลที่คุณสมบัติจะถูกเก็บไว้ + 1. `properties` - รายการค่าที่เฉพาะเจาะจงที่โมเดลจะใช้สำหรับคำตอบของมัน + 1. `name` - คีย์คือชื่อของคุณสมบัติที่โมเดลจะใช้ในคำตอบที่มีรูปแบบ เช่น `product` + 1. `type` - ประเภทข้อมูลของคุณสมบัติ เช่น `string` + 1. `description` - คำอธิบายของคุณสมบัติเฉพาะ + +มีคุณสมบัติที่เป็นตัวเลือก `required` - คุณสมบัติที่จำเป็นสำหรับการเรียกฟังก์ชันให้เสร็จสมบูรณ์ + +### ขั้นตอนที่ 3 - การทำการเรียกฟังก์ชัน + +หลังจากกำหนดฟังก์ชันแล้ว เราจำเป็นต้องรวมมันไว้ในคำขอไปยัง API Chat Completion เราทำสิ่งนี้โดยการเพิ่ม `functions` ลงในคำขอ ในกรณีนี้ `functions=functions` + +มีตัวเลือกในการตั้งค่า `function_call` เป็น `auto` ซึ่งหมายความว่าเราจะให้ LLM ตัดสินใจว่าควรเรียกฟังก์ชันใดตามข้อความของผู้ใช้แทนที่จะกำหนดเอง + +นี่คือโค้ดด้านล่างที่เราเรียก `ChatCompletion.create` สังเกตว่าเราตั้งค่า `functions=functions` และ `function_call="auto"` และให้ LLM ตัดสินใจเมื่อควรเรียกฟังก์ชันที่เรามอบให้: + +```python +response = client.chat.completions.create(model=deployment, + messages=messages, + functions=functions, + function_call="auto") + +print(response.choices[0].message) +``` + +การตอบกลับที่กลับมาจะมีลักษณะดังนี้: + +```json +{ + "role": "assistant", + "function_call": { + "name": "search_courses", + "arguments": "{\n \"role\": \"student\",\n \"product\": \"Azure\",\n \"level\": \"beginner\"\n}" + } +} +``` + +ที่นี่เราสามารถเห็นได้ว่าฟังก์ชัน `search_courses` ถูกเรียกใช้และมีอาร์กิวเมนต์อะไรบ้างที่ระบุไว้ในคุณสมบัติ `arguments` ในการตอบกลับ JSON + +สรุปได้ว่า LLM สามารถค้นหาข้อมูลที่เหมาะสมกับอาร์กิวเมนต์ของฟังก์ชันได้โดยการดึงข้อมูลจากค่าที่ให้ไว้ในพารามิเตอร์ `messages` ในการเรียก chat completion ด้านล่างนี้คือการเตือนความจำเกี่ยวกับค่าของ `messages`: + +```python +messages= [ {"role": "user", "content": "Find me a good course for a beginner student to learn Azure."} ] +``` + +ดังที่คุณเห็น `student`, `Azure` และ `beginner` ถูกดึงออกจาก `messages` และตั้งค่าเป็นข้อมูลนำเข้าให้กับฟังก์ชัน การใช้ฟังก์ชันในลักษณะนี้เป็นวิธีที่ดีในการดึงข้อมูลจากคำสั่งและยังให้โครงสร้างแก่ LLM และมีฟังก์ชันที่สามารถนำกลับมาใช้ใหม่ได้ + +ต่อไป เราจำเป็นต้องดูว่าเราสามารถใช้สิ่งนี้ในแอปของเราได้อย่างไร + +## การรวมการเรียกฟังก์ชันเข้ากับแอปพลิเคชัน + +หลังจากที่เราทดสอบการตอบกลับที่มีรูปแบบจาก LLM แล้ว เราสามารถรวมสิ่งนี้เข้ากับแอปพลิเคชันของเราได้ + +### การจัดการโฟลว์ + +เพื่อรวมสิ่งนี้เข้ากับแอปพลิเคชันของเรา มาดำเนินการตามขั้นตอนต่อไปนี้: + +1. ก่อนอื่น ให้ทำการเรียกบริการ OpenAI และเก็บข้อความไว้ในตัวแปรชื่อ `response_message` + + ```python + response_message = response.choices[0].message + ``` + +1. ตอนนี้เราจะกำหนดฟังก์ชันที่จะเรียก Microsoft Learn API เพื่อรับรายการคอร์ส: + + ```python + import requests + + def search_courses(role, product, level): + url = "https://learn.microsoft.com/api/catalog/" + params = { + "role": role, + "product": product, + "level": level + } + response = requests.get(url, params=params) + modules = response.json()["modules"] + results = [] + for module in modules[:5]: + title = module["title"] + url = module["url"] + results.append({"title": title, "url": url}) + return str(results) + ``` + + สังเกตว่าเราสร้างฟังก์ชัน Python จริงที่แมปกับชื่อฟังก์ชันที่แนะนำในตัวแปร `functions` เรากำลังทำการเรียก API ภายนอกจริงเพื่อดึงข้อมูลที่เราต้องการ ในกรณีนี้ เราเรียก Microsoft Learn API เพื่อค้นหาโมดูลการฝึกอบรม + +โอเค เราสร้างตัวแปร `functions` และฟังก์ชัน Python ที่สอดคล้องกันแล้ว เราจะบอก LLM ได้อย่างไรว่าให้แมปสองสิ่งนี้เข้าด้วยกันเพื่อให้ฟังก์ชัน Python ของเราเรียกใช้? + +1. เพื่อดูว่าเราจำเป็นต้องเรียกฟังก์ชัน Python หรือไม่ เราจำเป็นต้องดูการตอบกลับของ LLM และดูว่ามี `function_call` อยู่หรือไม่ และเรียกฟังก์ชันที่ระบุ นี่คือวิธีที่คุณสามารถทำการตรวจสอบดังกล่าวด้านล่าง: + + ```python + # Check if the model wants to call a function + if response_message.function_call.name: + print("Recommended Function call:") + print(response_message.function_call.name) + print() + + # Call the function. + function_name = response_message.function_call.name + + available_functions = { + "search_courses": search_courses, + } + function_to_call = available_functions[function_name] + + function_args = json.loads(response_message.function_call.arguments) + function_response = function_to_call(**function_args) + + print("Output of function call:") + print(function_response) + print(type(function_response)) + + + # Add the assistant response and function response to the messages + messages.append( # adding assistant response to messages + { + "role": response_message.role, + "function_call": { + "name": function_name, + "arguments": response_message.function_call.arguments, + }, + "content": None + } + ) + messages.append( # adding function response to messages + { + "role": "function", + "name": function_name, + "content":function_response, + } + ) + ``` + + บรรทัดสามบรรทัดนี้ทำให้มั่นใจว่าเราดึงชื่อฟังก์ชัน อาร์กิวเมนต์ และทำการเรียก: + + ```python + function_to_call = available_functions[function_name] + + function_args = json.loads(response_message.function_call.arguments) + function_response = function_to_call(**function_args) + ``` + + ด้านล่างนี้คือผลลัพธ์จากการรันโค้ดของเรา: + + **ผลลัพธ์** + + ```Recommended Function call: + { + "name": "search_courses", + "arguments": "{\n \"role\": \"student\",\n \"product\": \"Azure\",\n \"level\": \"beginner\"\n}" + } + + Output of function call: + [{'title': 'Describe concepts of cryptography', 'url': 'https://learn.microsoft.com/training/modules/describe-concepts-of-cryptography/? + WT.mc_id=api_CatalogApi'}, {'title': 'Introduction to audio classification with TensorFlow', 'url': 'https://learn.microsoft.com/en- + us/training/modules/intro-audio-classification-tensorflow/?WT.mc_id=api_CatalogApi'}, {'title': 'Design a Performant Data Model in Azure SQL + Database with Azure Data Studio', 'url': 'https://learn.microsoft.com/training/modules/design-a-data-model-with-ads/? + WT.mc_id=api_CatalogApi'}, {'title': 'Getting started with the Microsoft Cloud Adoption Framework for Azure', 'url': + 'https://learn.microsoft.com/training/modules/cloud-adoption-framework-getting-started/?WT.mc_id=api_CatalogApi'}, {'title': 'Set up the + Rust development environment', 'url': 'https://learn.microsoft.com/training/modules/rust-set-up-environment/?WT.mc_id=api_CatalogApi'}] + + ``` + +1. ตอนนี้เราจะส่งข้อความที่อัปเดตแล้ว `messages` ไปยัง LLM เพื่อที่เราจะได้รับการตอบกลับในภาษาธรรมชาติแทนที่จะเป็นการตอบกลับในรูปแบบ JSON ของ API + + ```python + print("Messages in next request:") + print(messages) + print() + + second_response = client.chat.completions.create( + messages=messages, + model=deployment, + function_call="auto", + functions=functions, + temperature=0 + ) # get a new response from GPT where it can see the function response + + + print(second_response.choices[0].message) + ``` + + **ผลลัพธ์** + + ```python + { + "role": "assistant", + "content": "I found some good courses for beginner students to learn Azure:\n\n1. [Describe concepts of cryptography] (https://learn.microsoft.com/training/modules/describe-concepts-of-cryptography/?WT.mc_id=api_CatalogApi)\n2. [Introduction to audio classification with TensorFlow](https://learn.microsoft.com/training/modules/intro-audio-classification-tensorflow/?WT.mc_id=api_CatalogApi)\n3. [Design a Performant Data Model in Azure SQL Database with Azure Data Studio](https://learn.microsoft.com/training/modules/design-a-data-model-with-ads/?WT.mc_id=api_CatalogApi)\n4. [Getting started with the Microsoft Cloud Adoption Framework for Azure](https://learn.microsoft.com/training/modules/cloud-adoption-framework-getting-started/?WT.mc_id=api_CatalogApi)\n5. [Set up the Rust development environment](https://learn.microsoft.com/training/modules/rust-set-up-environment/?WT.mc_id=api_CatalogApi)\n\nYou can click on the links to access the courses." + } + + ``` + +## งานที่ได้รับมอบหมาย + +เพื่อเรียนรู้เพิ่มเติมเกี่ยวกับ Azure OpenAI Function Calling คุณสามารถสร้าง: + +- พารามิเตอร์เพิ่มเติมของฟังก์ชันที่อาจช่วยให้ผู้เรียนค้นหาคอร์สเพิ่มเติม +- สร้างการเรียกฟังก์ชันอีก +- สร้างการจัดการข้อผิดพลาดเมื่อการเรียกฟังก์ชันและ/หรือการเรียก API ไม่ส่งคืนคอร์สที่เหมาะสม + +คำแนะนำ: ดูหน้า [เอกสารอ้างอิง API Learn](https://learn.microsoft.com/training/support/catalog-api-developer-reference?WT.mc_id=academic-105485-koreyst) เพื่อดูว่าข้อมูลนี้มีอยู่ที่ไหนและอย่างไร + +## ทำได้ดีมาก! เดินหน้าต่อไป + +หลังจากจบบทเรียนนี้ ลองดู [คอลเลกชันการเรียนรู้ Generative AI](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) เพื่อเพิ่มพูนความรู้เกี่ยวกับ Generative AI ของคุณ! + +ไปที่บทเรียนที่ 12 ซึ่งเราจะมาดูวิธี [ออกแบบ UX สำหรับแอปพลิเคชัน AI](../12-designing-ux-for-ai-applications/README.md?WT.mc_id=academic-105485-koreyst)! + +--- + +**ข้อจำกัดความรับผิดชอบ**: +เอกสารนี้ได้รับการแปลโดยใช้บริการแปลภาษา AI [Co-op Translator](https://github.com/Azure/co-op-translator) แม้ว่าเราจะพยายามให้การแปลมีความถูกต้อง แต่โปรดทราบว่าการแปลอัตโนมัติอาจมีข้อผิดพลาดหรือความไม่ถูกต้อง เอกสารต้นฉบับในภาษาดั้งเดิมควรถือเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลที่สำคัญ ขอแนะนำให้ใช้บริการแปลภาษามืออาชีพ เราจะไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความผิดที่เกิดจากการใช้การแปลนี้ \ No newline at end of file diff --git a/translations/th/12-designing-ux-for-ai-applications/README.md b/translations/th/12-designing-ux-for-ai-applications/README.md index b17924435b..325a3426a8 100644 --- a/translations/th/12-designing-ux-for-ai-applications/README.md +++ b/translations/th/12-designing-ux-for-ai-applications/README.md @@ -1,134 +1,132 @@ - -# การออกแบบ UX สำหรับแอปพลิเคชัน AI - -[![การออกแบบ UX สำหรับแอปพลิเคชัน AI](../../../translated_images/12-lesson-banner.c53c3c7c802e8f563953ce388f6a987ca493472c724d924b060be470951c53c8.th.png)](https://aka.ms/gen-ai-lesson12-gh?WT.mc_id=academic-105485-koreyst) - -> _(คลิกที่ภาพด้านบนเพื่อดูวิดีโอของบทเรียนนี้)_ - -ประสบการณ์ผู้ใช้เป็นเรื่องสำคัญมากในการสร้างแอป ผู้ใช้ต้องสามารถใช้งานแอปของคุณได้อย่างมีประสิทธิภาพเพื่อทำงานต่าง ๆ ให้สำเร็จ การออกแบบให้ใช้งานง่ายเป็นเรื่องหนึ่ง แต่คุณยังต้องออกแบบแอปให้ทุกคนสามารถใช้งานได้ เพื่อให้แอป _เข้าถึงได้_ บทนี้จะเน้นเรื่องนี้ เพื่อให้คุณออกแบบแอปที่คนอยากใช้และใช้ได้จริง - -## บทนำ - -ประสบการณ์ผู้ใช้คือวิธีที่ผู้ใช้โต้ตอบและใช้งานผลิตภัณฑ์หรือบริการ ไม่ว่าจะเป็นระบบ เครื่องมือ หรือการออกแบบ เมื่อพัฒนาแอปพลิเคชัน AI นักพัฒนาไม่เพียงแต่ต้องคำนึงถึงประสบการณ์ผู้ใช้ที่มีประสิทธิภาพ แต่ยังต้องคำนึงถึงจริยธรรมด้วย ในบทเรียนนี้ เราจะพูดถึงวิธีสร้างแอปพลิเคชันปัญญาประดิษฐ์ (AI) ที่ตอบโจทย์ความต้องการของผู้ใช้ - -เนื้อหาบทเรียนนี้ประกอบด้วย: - -- แนะนำประสบการณ์ผู้ใช้และการเข้าใจความต้องการของผู้ใช้ -- การออกแบบแอปพลิเคชัน AI เพื่อสร้างความเชื่อมั่นและความโปร่งใส -- การออกแบบแอปพลิเคชัน AI เพื่อการร่วมมือและการรับฟังความคิดเห็น - -## เป้าหมายการเรียนรู้ - -หลังจากเรียนบทนี้ คุณจะสามารถ: - -- เข้าใจวิธีสร้างแอปพลิเคชัน AI ที่ตอบโจทย์ความต้องการของผู้ใช้ -- ออกแบบแอปพลิเคชัน AI ที่ส่งเสริมความเชื่อมั่นและการร่วมมือ - -### ความรู้พื้นฐานที่ควรมี - -ลองใช้เวลาศึกษาเพิ่มเติมเกี่ยวกับ [ประสบการณ์ผู้ใช้และการคิดเชิงออกแบบ](https://learn.microsoft.com/training/modules/ux-design?WT.mc_id=academic-105485-koreyst) - -## แนะนำประสบการณ์ผู้ใช้และการเข้าใจความต้องการของผู้ใช้ - -ในสตาร์ทอัพด้านการศึกษาสมมติของเรา มีผู้ใช้หลักสองกลุ่มคือ ครูและนักเรียน ซึ่งแต่ละกลุ่มก็มีความต้องการเฉพาะตัว การออกแบบโดยยึดผู้ใช้เป็นศูนย์กลางจะเน้นให้ผลิตภัณฑ์มีความเกี่ยวข้องและเป็นประโยชน์กับกลุ่มเป้าหมาย - -แอปพลิเคชันควร **มีประโยชน์ เชื่อถือได้ เข้าถึงง่าย และใช้งานแล้วรู้สึกดี** เพื่อสร้างประสบการณ์ผู้ใช้ที่ดี - -### การใช้งานง่าย - -การมีประโยชน์หมายถึงแอปพลิเคชันมีฟังก์ชันที่ตรงกับวัตถุประสงค์ เช่น การตรวจข้อสอบอัตโนมัติ หรือสร้างแฟลชการ์ดสำหรับทบทวน แอปที่ตรวจข้อสอบอัตโนมัติควรสามารถให้คะแนนงานของนักเรียนได้อย่างถูกต้องและรวดเร็วตามเกณฑ์ที่กำหนด เช่นเดียวกับแอปที่สร้างแฟลชการ์ดก็ควรสร้างคำถามที่เกี่ยวข้องและหลากหลายตามข้อมูลที่มี - -### ความน่าเชื่อถือ - -ความน่าเชื่อถือหมายถึงแอปพลิเคชันสามารถทำงานได้อย่างสม่ำเสมอและไม่เกิดข้อผิดพลาด อย่างไรก็ตาม AI ก็เหมือนมนุษย์ที่ไม่สมบูรณ์แบบและอาจเกิดข้อผิดพลาดได้ แอปอาจเจอปัญหาหรือสถานการณ์ที่ไม่คาดคิดซึ่งต้องให้มนุษย์เข้ามาแก้ไข คุณจะจัดการกับข้อผิดพลาดอย่างไร? ในส่วนท้ายของบทเรียนนี้ เราจะพูดถึงการออกแบบระบบ AI เพื่อการร่วมมือและการรับฟังความคิดเห็น - -### การเข้าถึงได้ - -การเข้าถึงได้หมายถึงการขยายประสบการณ์ผู้ใช้ไปยังผู้ใช้ที่มีความสามารถหลากหลาย รวมถึงผู้ที่มีความพิการ เพื่อให้ทุกคนสามารถใช้งานได้ โดยการปฏิบัติตามแนวทางและหลักการด้านการเข้าถึง AI จะเป็นโซลูชันที่ครอบคลุมและเป็นประโยชน์กับทุกคน - -### ความรู้สึกดีในการใช้งาน - -การใช้งานแล้วรู้สึกดีหมายถึงแอปพลิเคชันใช้งานสนุกและน่าประทับใจ ประสบการณ์ผู้ใช้ที่ดีจะส่งผลให้ผู้ใช้กลับมาใช้งานอีก และช่วยเพิ่มรายได้ให้ธุรกิจ - -![ภาพประกอบแนวคิด UX ใน AI](../../../translated_images/uxinai.d5b4ed690f5cefff0c53ffcc01b480cdc1828402e1fdbc980490013a3c50935a.th.png) - -ไม่ใช่ทุกปัญหาจะใช้ AI แก้ไขได้ AI เข้ามาช่วยเสริมประสบการณ์ผู้ใช้ เช่น การทำงานอัตโนมัติ หรือการปรับแต่งประสบการณ์ให้เหมาะกับแต่ละคน - -## การออกแบบแอปพลิเคชัน AI เพื่อสร้างความเชื่อมั่นและความโปร่งใส - -การสร้างความเชื่อมั่นเป็นสิ่งสำคัญเมื่อออกแบบแอปพลิเคชัน AI ความเชื่อมั่นทำให้ผู้ใช้มั่นใจว่าแอปจะทำงานได้จริง ส่งผลลัพธ์อย่างสม่ำเสมอ และผลลัพธ์ตรงกับความต้องการ ความเสี่ยงในเรื่องนี้คือการไม่เชื่อใจหรือเชื่อใจมากเกินไป การไม่เชื่อใจเกิดขึ้นเมื่อผู้ใช้ไม่มั่นใจในระบบ AI ส่งผลให้ผู้ใช้ปฏิเสธแอปของคุณ ส่วนการเชื่อใจมากเกินไปเกิดเมื่อผู้ใช้ประเมินความสามารถของ AI สูงเกินจริง เช่น ระบบตรวจข้อสอบอัตโนมัติ หากครูเชื่อใจมากเกินไป อาจไม่ตรวจทานงานบางส่วนเอง ซึ่งอาจทำให้เกิดคะแนนที่ไม่ยุติธรรมหรือผิดพลาด หรือพลาดโอกาสในการให้คำแนะนำและปรับปรุง - -สองวิธีที่จะทำให้ความเชื่อมั่นเป็นหัวใจของการออกแบบคือ การอธิบายได้ (Explainability) และการควบคุม (Control) - -### การอธิบายได้ - -เมื่อ AI มีส่วนช่วยในการตัดสินใจ เช่น การถ่ายทอดความรู้ให้คนรุ่นใหม่ ครูและผู้ปกครองควรเข้าใจว่า AI ตัดสินใจอย่างไร นี่คือเรื่องของการอธิบายได้ - การเข้าใจว่าแอปพลิเคชัน AI ตัดสินใจอย่างไร การออกแบบให้สามารถอธิบายได้ควรมีรายละเอียดที่แสดงให้เห็นว่า AI ได้ผลลัพธ์มาอย่างไร ผู้ใช้ควรทราบว่าผลลัพธ์นั้นสร้างโดย AI ไม่ใช่มนุษย์ เช่น แทนที่จะบอกว่า "เริ่มแชทกับติวเตอร์ของคุณตอนนี้" ให้บอกว่า "ใช้ติวเตอร์ AI ที่ปรับตามความต้องการของคุณและช่วยให้คุณเรียนรู้ในแบบของคุณ" - -![หน้าแอปที่แสดงตัวอย่างการอธิบายได้ในแอป AI](../../../translated_images/explanability-in-ai.134426a96b498fbfdc80c75ae0090aedc0fc97424ae0734fccf7fb00a59a20d9.th.png) - -อีกตัวอย่างคือการที่ AI ใช้ข้อมูลผู้ใช้และข้อมูลส่วนตัว เช่น นักเรียนอาจมีข้อจำกัดตามบทบาทของตน AI อาจไม่สามารถเปิดเผยคำตอบได้ แต่สามารถช่วยชี้แนะให้นักเรียนคิดหาวิธีแก้ปัญหาเอง - -![AI ตอบคำถามตามบทบาทผู้ใช้](../../../translated_images/solving-questions.b7dea1604de0cbd2e9c5fa00b1a68a0ed77178a035b94b9213196b9d125d0be8.th.png) - -อีกส่วนสำคัญของการอธิบายได้คือการอธิบายให้เข้าใจง่าย นักเรียนและครูอาจไม่ใช่ผู้เชี่ยวชาญด้าน AI ดังนั้นการอธิบายว่าแอปทำอะไรได้หรือไม่ได้ควรเรียบง่ายและเข้าใจง่าย - -![อธิบายความสามารถของ AI แบบเข้าใจง่าย](../../../translated_images/simplified-explanations.4679508a406c3621fa22bad4673e717fbff02f8b8d58afcab8cb6f1aa893a82f.th.png) - -### การควบคุม - -Generative AI สร้างความร่วมมือระหว่าง AI กับผู้ใช้ เช่น ผู้ใช้สามารถปรับแต่งคำสั่งเพื่อให้ได้ผลลัพธ์ที่ต่างกัน และเมื่อได้ผลลัพธ์แล้ว ผู้ใช้ควรสามารถปรับแต่งผลลัพธ์ได้เองเพื่อให้รู้สึกว่าควบคุมได้ เช่น เมื่อใช้ Bing คุณสามารถปรับแต่งคำสั่งตามรูปแบบ น้ำเสียง และความยาว และยังสามารถแก้ไขผลลัพธ์ได้ตามต้องการ ดังภาพด้านล่าง: - -![ผลการค้นหา Bing ที่มีตัวเลือกปรับแต่งคำสั่งและผลลัพธ์](../../../translated_images/bing1.293ae8527dbe2789b675c8591c9fb3cb1aa2ada75c2877f9aa9edc059f7a8b1c.th.png) - -อีกฟีเจอร์หนึ่งใน Bing ที่ให้ผู้ใช้ควบคุมแอปได้คือการเลือกว่าจะให้ AI ใช้ข้อมูลอะไรบ้าง เช่น ในแอปโรงเรียน นักเรียนอาจต้องการใช้โน้ตของตัวเองและแหล่งข้อมูลของครูในการทบทวน - -![ผลการค้นหา Bing ที่มีตัวเลือกปรับแต่งคำสั่งและผลลัพธ์](../../../translated_images/bing2.309f4845528a88c28c1c9739fb61d91fd993dc35ebe6fc92c66791fb04fceb4d.th.png) - -> เมื่อออกแบบแอปพลิเคชัน AI ความตั้งใจเป็นสิ่งสำคัญเพื่อไม่ให้ผู้ใช้เชื่อใจมากเกินไปและคาดหวังเกินจริง วิธีหนึ่งคือสร้างความแตกต่างระหว่างคำสั่งและผลลัพธ์ เตือนผู้ใช้ว่านี่คือ AI ไม่ใช่มนุษย์ - -## การออกแบบแอปพลิเคชัน AI เพื่อการร่วมมือและการรับฟังความคิดเห็น - -อย่างที่กล่าวไป Generative AI สร้างความร่วมมือระหว่างผู้ใช้กับ AI ส่วนใหญ่ผู้ใช้จะป้อนคำสั่งและ AI สร้างผลลัพธ์ แล้วถ้าผลลัพธ์ผิดล่ะ? แอปจะจัดการกับข้อผิดพลาดอย่างไร? AI จะโทษผู้ใช้หรืออธิบายข้อผิดพลาดให้เข้าใจ? - -แอปพลิเคชัน AI ควรสามารถรับและให้ความคิดเห็นได้ สิ่งนี้ไม่เพียงช่วยให้ระบบ AI พัฒนาขึ้น แต่ยังสร้างความเชื่อมั่นกับผู้ใช้ด้วย ควรมีช่องทางรับฟังความคิดเห็น เช่น ปุ่มกดถูกใจหรือไม่ถูกใจที่ผลลัพธ์ - -อีกวิธีคือการสื่อสารอย่างชัดเจนถึงขีดความสามารถและข้อจำกัดของระบบ เมื่อผู้ใช้ขอสิ่งที่เกินขีดความสามารถของ AI ก็ควรมีวิธีจัดการ เช่นตัวอย่างด้านล่าง - -![การให้ความคิดเห็นและจัดการข้อผิดพลาด](../../../translated_images/feedback-loops.7955c134429a94663443ad74d59044f8dc4ce354577f5b79b4bd2533f2cafc6f.th.png) - -ข้อผิดพลาดของระบบเป็นเรื่องปกติในแอปพลิเคชัน เช่น ผู้ใช้อาจต้องการข้อมูลที่อยู่นอกขอบเขตของ AI หรือแอปอาจจำกัดจำนวนคำถาม/วิชาที่ผู้ใช้สามารถสร้างสรุปได้ เช่น แอป AI ที่ฝึกด้วยข้อมูลเฉพาะบางวิชา เช่น ประวัติศาสตร์และคณิตศาสตร์ อาจไม่สามารถตอบคำถามเกี่ยวกับภูมิศาสตร์ได้ เพื่อแก้ไขปัญหานี้ ระบบ AI สามารถตอบกลับว่า "ขออภัย ผลิตภัณฑ์ของเราฝึกด้วยข้อมูลในวิชาต่อไปนี้..... ฉันไม่สามารถตอบคำถามที่คุณถามได้" - -แอปพลิเคชัน AI ไม่สมบูรณ์แบบ จึงมีโอกาสผิดพลาดได้ เมื่อออกแบบแอปของคุณ ควรสร้างช่องทางรับฟังความคิดเห็นจากผู้ใช้และจัดการข้อผิดพลาดในแบบที่เรียบง่ายและอธิบายได้ง่าย - -## งานที่ต้องทำ - -ลองนำแอป AI ที่คุณเคยสร้างมาปรับปรุงตามขั้นตอนด้านล่างนี้: - -- **ความรู้สึกดีในการใช้งาน:** ลองคิดดูว่าจะทำให้แอปของคุณใช้งานสนุกขึ้นได้อย่างไร คุณอธิบายทุกจุดหรือยัง? คุณกระตุ้นให้ผู้ใช้ลองใช้งานหรือเปล่า? คุณเขียนข้อความข้อผิดพลาดอย่างไร? - -- **การใช้งานง่าย:** หากสร้างเว็บแอป ตรวจสอบให้แน่ใจว่าแอปของคุณสามารถใช้งานได้ทั้งเมาส์และคีย์บอร์ด - -- **ความเชื่อมั่นและความโปร่งใส:** อย่าเชื่อใจ AI และผลลัพธ์ทั้งหมด ลองคิดว่าจะเพิ่มมนุษย์เข้าไปในกระบวนการตรวจสอบผลลัพธ์อย่างไร และลองนำวิธีอื่น ๆ มาใช้เพื่อสร้างความเชื่อมั่นและความโปร่งใส - -- **การควบคุม:** ให้ผู้ใช้ควบคุมข้อมูลที่ให้กับแอปพลิเคชัน สร้างวิธีให้ผู้ใช้เลือกว่าจะให้ AI เก็บข้อมูลหรือไม่ในแอปพลิเคชัน AI - - - -## เรียนรู้ต่อ! - -หลังจากเรียนบทนี้แล้ว ลองดู [คอลเลกชันการเรียนรู้ Generative AI](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) เพื่อเพิ่มพูนความรู้ด้าน Generative AI ของคุณ! - -ไปต่อที่บทที่ 13 ซึ่งเราจะพูดถึงเรื่อง [การรักษาความปลอดภัยแอปพลิเคชัน AI](../13-securing-ai-applications/README.md?WT.mc_id=academic-105485-koreyst)! - ---- - -**ข้อจำกัดความรับผิดชอบ**: -เอกสารนี้ได้รับการแปลโดยใช้บริการแปลภาษา AI [Co-op Translator](https://github.com/Azure/co-op-translator) แม้เราจะพยายามให้ความถูกต้องแม่นยำ แต่โปรดทราบว่าการแปลโดยอัตโนมัติอาจมีข้อผิดพลาดหรือความไม่ถูกต้อง เอกสารต้นฉบับในภาษาต้นทางควรถือเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลสำคัญ แนะนำให้ใช้บริการแปลโดยนักแปลมืออาชีพ ทางเราจะไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความที่เกิดจากการใช้การแปลนี้ \ No newline at end of file + +# การออกแบบ UX สำหรับแอปพลิเคชัน AI + +[![การออกแบบ UX สำหรับแอปพลิเคชัน AI](../../../translated_images/12-lesson-banner.c53c3c7c802e8f563953ce388f6a987ca493472c724d924b060be470951c53c8.th.png)](https://youtu.be/VKbCejSICA8?si=MKj7GQYHfXRZyWW6) + +> _(คลิกที่ภาพด้านบนเพื่อดูวิดีโอของบทเรียนนี้)_ + +ประสบการณ์ผู้ใช้ (User Experience) เป็นส่วนสำคัญมากในการสร้างแอปพลิเคชัน ผู้ใช้ต้องสามารถใช้งานแอปของคุณได้อย่างมีประสิทธิภาพเพื่อทำงานต่าง ๆ ให้สำเร็จ การใช้งานที่มีประสิทธิภาพเป็นสิ่งสำคัญ แต่คุณยังต้องออกแบบแอปพลิเคชันให้สามารถใช้งานได้โดยทุกคน เพื่อทำให้แอปพลิเคชันนั้น _เข้าถึงได้_ บทนี้จะเน้นในด้านนี้เพื่อให้คุณสามารถออกแบบแอปที่ผู้คนสามารถและอยากใช้งานได้ + +## บทนำ + +ประสบการณ์ผู้ใช้คือวิธีที่ผู้ใช้โต้ตอบและใช้งานผลิตภัณฑ์หรือบริการเฉพาะ ไม่ว่าจะเป็นระบบ เครื่องมือ หรือการออกแบบ เมื่อพัฒนาแอปพลิเคชัน AI นักพัฒนาจะไม่เพียงแค่เน้นให้ประสบการณ์ผู้ใช้มีประสิทธิภาพ แต่ยังต้องคำนึงถึงจริยธรรมด้วย ในบทเรียนนี้ เราจะพูดถึงวิธีการสร้างแอปพลิเคชันปัญญาประดิษฐ์ (AI) ที่ตอบสนองความต้องการของผู้ใช้ + +บทเรียนนี้จะครอบคลุมหัวข้อต่อไปนี้: + +- บทนำเกี่ยวกับประสบการณ์ผู้ใช้และการเข้าใจความต้องการของผู้ใช้ +- การออกแบบแอปพลิเคชัน AI เพื่อสร้างความไว้วางใจและความโปร่งใส +- การออกแบบแอปพลิเคชัน AI เพื่อการทำงานร่วมกันและการให้ข้อเสนอแนะ + +## เป้าหมายการเรียนรู้ + +หลังจากเรียนบทนี้ คุณจะสามารถ: + +- เข้าใจวิธีการสร้างแอปพลิเคชัน AI ที่ตอบสนองความต้องการของผู้ใช้ +- ออกแบบแอปพลิเคชัน AI ที่ส่งเสริมความไว้วางใจและการทำงานร่วมกัน + +### ความรู้พื้นฐานที่ควรมี + +ใช้เวลาอ่านเพิ่มเติมเกี่ยวกับ [ประสบการณ์ผู้ใช้และการคิดเชิงออกแบบ](https://learn.microsoft.com/training/modules/ux-design?WT.mc_id=academic-105485-koreyst) + +## บทนำเกี่ยวกับประสบการณ์ผู้ใช้และการเข้าใจความต้องการของผู้ใช้ + +ในสตาร์ทอัพด้านการศึกษาสมมติของเรา เรามีผู้ใช้หลักสองกลุ่มคือ ครูและนักเรียน แต่ละกลุ่มมีความต้องการเฉพาะตัว การออกแบบที่เน้นผู้ใช้จะให้ความสำคัญกับผู้ใช้เพื่อให้มั่นใจว่าผลิตภัณฑ์นั้นมีความเกี่ยวข้องและเป็นประโยชน์ต่อผู้ที่ตั้งใจใช้งาน + +แอปพลิเคชันควร **มีประโยชน์ เชื่อถือได้ เข้าถึงได้ และน่าใช้งาน** เพื่อมอบประสบการณ์ผู้ใช้ที่ดี + +### การใช้งาน + +การมีประโยชน์หมายถึงแอปพลิเคชันมีฟังก์ชันที่ตรงกับวัตถุประสงค์ เช่น การทำให้กระบวนการให้คะแนนเป็นอัตโนมัติ หรือการสร้างแฟลชการ์ดสำหรับการทบทวน แอปพลิเคชันที่ทำให้กระบวนการให้คะแนนเป็นอัตโนมัติควรสามารถให้คะแนนงานของนักเรียนได้อย่างถูกต้องและรวดเร็วตามเกณฑ์ที่กำหนดไว้ เช่นเดียวกับแอปพลิเคชันที่สร้างแฟลชการ์ดสำหรับการทบทวน ควรสามารถสร้างคำถามที่เกี่ยวข้องและหลากหลายตามข้อมูลที่มีอยู่ + +### ความน่าเชื่อถือ + +การมีความน่าเชื่อถือหมายถึงแอปพลิเคชันสามารถทำงานได้อย่างสม่ำเสมอและไม่มีข้อผิดพลาด อย่างไรก็ตาม AI เช่นเดียวกับมนุษย์ไม่สมบูรณ์แบบและอาจเกิดข้อผิดพลาดได้ แอปพลิเคชันอาจพบข้อผิดพลาดหรือสถานการณ์ที่ไม่คาดคิดซึ่งต้องการการแทรกแซงหรือการแก้ไขจากมนุษย์ คุณจะจัดการกับข้อผิดพลาดอย่างไร? ในส่วนสุดท้ายของบทเรียนนี้ เราจะพูดถึงวิธีการออกแบบระบบและแอปพลิเคชัน AI เพื่อการทำงานร่วมกันและการให้ข้อเสนอแนะ + +### การเข้าถึง + +การเข้าถึงหมายถึงการขยายประสบการณ์ผู้ใช้ไปยังผู้ใช้ที่มีความสามารถหลากหลาย รวมถึงผู้ที่มีความพิการ เพื่อให้มั่นใจว่าไม่มีใครถูกละเลย การปฏิบัติตามแนวทางและหลักการการเข้าถึงทำให้โซลูชัน AI มีความครอบคลุม ใช้งานได้ และเป็นประโยชน์ต่อผู้ใช้ทุกคน + +### ความน่าใช้งาน + +การมีความน่าใช้งานหมายถึงแอปพลิเคชันนั้นใช้งานได้อย่างสนุกสนาน ประสบการณ์ผู้ใช้ที่น่าดึงดูดสามารถส่งผลดีต่อผู้ใช้ กระตุ้นให้พวกเขากลับมาใช้งานแอปพลิเคชันอีกครั้ง และเพิ่มรายได้ให้กับธุรกิจ + +![ภาพประกอบการพิจารณา UX ใน AI](../../../translated_images/uxinai.d5b4ed690f5cefff0c53ffcc01b480cdc1828402e1fdbc980490013a3c50935a.th.png) + +ไม่ใช่ทุกปัญหาที่สามารถแก้ไขได้ด้วย AI AI เข้ามาเพื่อเสริมประสบการณ์ผู้ใช้ ไม่ว่าจะเป็นการทำงานที่ต้องใช้แรงงานคนให้เป็นอัตโนมัติ หรือการปรับแต่งประสบการณ์ผู้ใช้ให้เหมาะสม + +## การออกแบบแอปพลิเคชัน AI เพื่อสร้างความไว้วางใจและความโปร่งใส + +การสร้างความไว้วางใจเป็นสิ่งสำคัญเมื่อออกแบบแอปพลิเคชัน AI ความไว้วางใจทำให้ผู้ใช้มั่นใจว่าแอปพลิเคชันจะทำงานได้สำเร็จ ส่งมอบผลลัพธ์อย่างสม่ำเสมอ และผลลัพธ์นั้นตรงกับความต้องการของผู้ใช้ ความเสี่ยงในด้านนี้คือการขาดความไว้วางใจและการไว้วางใจมากเกินไป การขาดความไว้วางใจเกิดขึ้นเมื่อผู้ใช้มีความไว้วางใจในระบบ AI น้อยหรือไม่มีเลย ซึ่งนำไปสู่การปฏิเสธแอปพลิเคชันของคุณ การไว้วางใจมากเกินไปเกิดขึ้นเมื่อผู้ใช้ประเมินความสามารถของระบบ AI สูงเกินไป ทำให้ผู้ใช้ไว้วางใจระบบ AI มากเกินไป ตัวอย่างเช่น ระบบการให้คะแนนอัตโนมัติในกรณีของการไว้วางใจมากเกินไป อาจทำให้ครูไม่ตรวจสอบงานบางส่วนเพื่อให้แน่ใจว่าระบบการให้คะแนนทำงานได้ดี สิ่งนี้อาจส่งผลให้เกิดคะแนนที่ไม่ยุติธรรมหรือไม่ถูกต้องสำหรับนักเรียน หรือพลาดโอกาสในการให้ข้อเสนอแนะและการปรับปรุง + +สองวิธีในการทำให้ความไว้วางใจเป็นศูนย์กลางของการออกแบบคือ ความสามารถในการอธิบายและการควบคุม + +### ความสามารถในการอธิบาย + +เมื่อ AI ช่วยในการตัดสินใจ เช่น การถ่ายทอดความรู้ให้กับคนรุ่นต่อไป เป็นสิ่งสำคัญสำหรับครูและผู้ปกครองที่จะเข้าใจว่า AI ตัดสินใจอย่างไร นี่คือความสามารถในการอธิบาย - การเข้าใจว่าแอปพลิเคชัน AI ตัดสินใจอย่างไร การออกแบบเพื่อความสามารถในการอธิบายรวมถึงการเพิ่มรายละเอียดที่เน้นว่า AI มาถึงผลลัพธ์ได้อย่างไร ผู้ใช้ต้องทราบว่าผลลัพธ์นั้นถูกสร้างขึ้นโดย AI ไม่ใช่มนุษย์ ตัวอย่างเช่น แทนที่จะพูดว่า "เริ่มแชทกับติวเตอร์ของคุณตอนนี้" ให้พูดว่า "ใช้ติวเตอร์ AI ที่ปรับให้เหมาะกับความต้องการของคุณและช่วยให้คุณเรียนรู้ในจังหวะของคุณ" + +![หน้าแอปที่มีการอธิบายชัดเจนเกี่ยวกับการใช้งาน AI](../../../translated_images/explanability-in-ai.134426a96b498fbfdc80c75ae0090aedc0fc97424ae0734fccf7fb00a59a20d9.th.png) + +อีกตัวอย่างหนึ่งคือวิธีที่ AI ใช้ข้อมูลผู้ใช้และข้อมูลส่วนตัว ตัวอย่างเช่น ผู้ใช้ที่มีบุคลิกเป็นนักเรียนอาจมีข้อจำกัดตามบุคลิกของพวกเขา AI อาจไม่สามารถเปิดเผยคำตอบของคำถามได้ แต่สามารถช่วยแนะนำผู้ใช้ให้คิดถึงวิธีแก้ปัญหาได้ + +![AI ตอบคำถามตามบุคลิกของผู้ใช้](../../../translated_images/solving-questions.b7dea1604de0cbd2e9c5fa00b1a68a0ed77178a035b94b9213196b9d125d0be8.th.png) + +ส่วนสำคัญสุดท้ายของความสามารถในการอธิบายคือการทำให้คำอธิบายง่ายขึ้น นักเรียนและครูอาจไม่ใช่ผู้เชี่ยวชาญด้าน AI ดังนั้นคำอธิบายเกี่ยวกับสิ่งที่แอปพลิเคชันสามารถหรือไม่สามารถทำได้ควรเรียบง่ายและเข้าใจง่าย + +![คำอธิบายที่เรียบง่ายเกี่ยวกับความสามารถของ AI](../../../translated_images/simplified-explanations.4679508a406c3621fa22bad4673e717fbff02f8b8d58afcab8cb6f1aa893a82f.th.png) + +### การควบคุม + +Generative AI สร้างการทำงานร่วมกันระหว่าง AI และผู้ใช้ โดยที่ผู้ใช้สามารถปรับเปลี่ยนคำสั่งเพื่อให้ได้ผลลัพธ์ที่แตกต่างกัน นอกจากนี้ เมื่อผลลัพธ์ถูกสร้างขึ้น ผู้ใช้ควรสามารถปรับเปลี่ยนผลลัพธ์ได้เพื่อให้รู้สึกว่ามีการควบคุม ตัวอย่างเช่น เมื่อใช้ Bing คุณสามารถปรับแต่งคำสั่งของคุณตามรูปแบบ น้ำเสียง และความยาว นอกจากนี้ คุณยังสามารถเพิ่มการเปลี่ยนแปลงในผลลัพธ์และปรับเปลี่ยนผลลัพธ์ได้ดังที่แสดงด้านล่าง: + +![ผลลัพธ์การค้นหา Bing พร้อมตัวเลือกในการปรับเปลี่ยนคำสั่งและผลลัพธ์](../../../translated_images/bing1.293ae8527dbe2789b675c8591c9fb3cb1aa2ada75c2877f9aa9edc059f7a8b1c.th.png) + +อีกฟีเจอร์หนึ่งใน Bing ที่ช่วยให้ผู้ใช้มีการควบคุมแอปพลิเคชันคือความสามารถในการเลือกเข้าร่วมและไม่เข้าร่วมข้อมูลที่ AI ใช้ สำหรับแอปพลิเคชันในโรงเรียน นักเรียนอาจต้องการใช้บันทึกของตนเองรวมถึงทรัพยากรของครูเป็นวัสดุสำหรับการทบทวน + +![ผลลัพธ์การค้นหา Bing พร้อมตัวเลือกในการปรับเปลี่ยนคำสั่งและผลลัพธ์](../../../translated_images/bing2.309f4845528a88c28c1c9739fb61d91fd993dc35ebe6fc92c66791fb04fceb4d.th.png) + +> เมื่อออกแบบแอปพลิเคชัน AI ความตั้งใจเป็นสิ่งสำคัญในการทำให้ผู้ใช้ไม่ไว้วางใจมากเกินไปจนตั้งความคาดหวังที่ไม่สมจริงเกี่ยวกับความสามารถของ AI วิธีหนึ่งในการทำเช่นนี้คือการสร้างความขัดแย้งระหว่างคำสั่งและผลลัพธ์ โดยเตือนผู้ใช้ว่านี่คือ AI ไม่ใช่มนุษย์ + +## การออกแบบแอปพลิเคชัน AI เพื่อการทำงานร่วมกันและการให้ข้อเสนอแนะ + +ดังที่กล่าวไว้ก่อนหน้านี้ Generative AI สร้างการทำงานร่วมกันระหว่างผู้ใช้และ AI การโต้ตอบส่วนใหญ่เกิดขึ้นเมื่อผู้ใช้ป้อนคำสั่งและ AI สร้างผลลัพธ์ หากผลลัพธ์ไม่ถูกต้อง แอปพลิเคชันจะจัดการกับข้อผิดพลาดอย่างไร? แอปพลิเคชันจะโทษผู้ใช้หรือใช้เวลาอธิบายข้อผิดพลาดหรือไม่? + +แอปพลิเคชัน AI ควรสร้างขึ้นเพื่อรับและให้ข้อเสนอแนะ สิ่งนี้ไม่เพียงช่วยให้ระบบ AI พัฒนา แต่ยังสร้างความไว้วางใจให้กับผู้ใช้ด้วย วงจรข้อเสนอแนะควรเป็นส่วนหนึ่งของการออกแบบ ตัวอย่างเช่น อาจเป็นการให้ผู้ใช้กดไลค์หรือไม่ชอบผลลัพธ์ที่ได้ + +อีกวิธีหนึ่งในการจัดการเรื่องนี้คือการสื่อสารความสามารถและข้อจำกัดของระบบอย่างชัดเจน เมื่อผู้ใช้ทำข้อผิดพลาดโดยขอสิ่งที่เกินความสามารถของ AI ก็ควรมีวิธีจัดการกับเรื่องนี้ เช่นที่แสดงด้านล่าง + +![การให้ข้อเสนอแนะและการจัดการข้อผิดพลาด](../../../translated_images/feedback-loops.7955c134429a94663443ad74d59044f8dc4ce354577f5b79b4bd2533f2cafc6f.th.png) + +ข้อผิดพลาดของระบบเป็นเรื่องปกติในแอปพลิเคชันที่ผู้ใช้อาจต้องการความช่วยเหลือเกี่ยวกับข้อมูลที่อยู่นอกขอบเขตของ AI หรือแอปพลิเคชันอาจมีข้อจำกัดเกี่ยวกับจำนวนคำถาม/หัวข้อที่ผู้ใช้สามารถสร้างสรุปได้ ตัวอย่างเช่น แอปพลิเคชัน AI ที่ได้รับการฝึกอบรมด้วยข้อมูลในหัวข้อที่จำกัด เช่น ประวัติศาสตร์และคณิตศาสตร์ อาจไม่สามารถจัดการกับคำถามเกี่ยวกับภูมิศาสตร์ได้ เพื่อแก้ไขปัญหานี้ ระบบ AI สามารถตอบกลับได้ว่า: "ขออภัย ผลิตภัณฑ์ของเราได้รับการฝึกอบรมด้วยข้อมูลในหัวข้อต่อไปนี้..... ฉันไม่สามารถตอบคำถามที่คุณถามได้" + +แอปพลิเคชัน AI ไม่สมบูรณ์แบบ ดังนั้นจึงมีโอกาสที่จะเกิดข้อผิดพลาดได้ เมื่อออกแบบแอปพลิเคชันของคุณ คุณควรมั่นใจว่าคุณสร้างพื้นที่สำหรับข้อเสนอแนะจากผู้ใช้และการจัดการข้อผิดพลาดในลักษณะที่เรียบง่ายและเข้าใจง่าย + +## งานที่มอบหมาย + +นำแอปพลิเคชัน AI ที่คุณเคยสร้างมาพิจารณาและลองนำขั้นตอนด้านล่างนี้ไปปรับใช้ในแอปของคุณ: + +- **ความน่าใช้งาน:** พิจารณาว่าคุณสามารถทำให้แอปของคุณน่าใช้งานมากขึ้นได้อย่างไร คุณได้เพิ่มคำอธิบายในทุกที่หรือไม่? คุณได้กระตุ้นให้ผู้ใช้สำรวจหรือไม่? คุณใช้คำพูดในข้อความข้อผิดพลาดอย่างไร? + +- **การใช้งาน:** สร้างเว็บแอปพลิเคชัน ตรวจสอบให้แน่ใจว่าแอปของคุณสามารถใช้งานได้ทั้งเมาส์และคีย์บอร์ด + +- **ความไว้วางใจและความโปร่งใส:** อย่าไว้วางใจ AI และผลลัพธ์ของมันอย่างสมบูรณ์ พิจารณาว่าคุณจะเพิ่มมนุษย์ในกระบวนการเพื่อยืนยันผลลัพธ์ได้อย่างไร นอกจากนี้ พิจารณาและนำวิธีอื่น ๆ มาใช้เพื่อสร้างความไว้วางใจและความโปร่งใส + +- **การควบคุม:** ให้ผู้ใช้ควบคุมข้อมูลที่พวกเขาให้กับแอปพลิเคชัน สร้างวิธีที่ผู้ใช้สามารถเลือกเข้าร่วมและไม่เข้าร่วมการเก็บข้อมูลในแอปพลิเคชัน AI + +## เรียนรู้เพิ่มเติม! + +หลังจากจบบทเรียนนี้ ลองดู [คอลเลกชันการเรียนรู้ Generative AI](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) เพื่อเพิ่มพูนความรู้เกี่ยวกับ Generative AI ของคุณ! + +ไปที่บทเรียนที่ 13 ซึ่งเราจะพูดถึง [การรักษาความปลอดภัยแอปพลิเคชัน AI](../13-securing-ai-applications/README.md?WT.mc_id=academic-105485-koreyst)! + +--- + +**ข้อจำกัดความรับผิดชอบ**: +เอกสารนี้ได้รับการแปลโดยใช้บริการแปลภาษา AI [Co-op Translator](https://github.com/Azure/co-op-translator) แม้ว่าเราจะพยายามให้การแปลมีความถูกต้อง แต่โปรดทราบว่าการแปลโดยอัตโนมัติอาจมีข้อผิดพลาดหรือความไม่ถูกต้อง เอกสารต้นฉบับในภาษาดั้งเดิมควรถือเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลที่สำคัญ ขอแนะนำให้ใช้บริการแปลภาษามืออาชีพ เราไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความผิดที่เกิดจากการใช้การแปลนี้ \ No newline at end of file diff --git a/translations/th/13-securing-ai-applications/README.md b/translations/th/13-securing-ai-applications/README.md index 026f742e81..c066c84306 100644 --- a/translations/th/13-securing-ai-applications/README.md +++ b/translations/th/13-securing-ai-applications/README.md @@ -1,167 +1,165 @@ - -# การรักษาความปลอดภัยสำหรับแอปพลิเคชัน Generative AI ของคุณ - -[![การรักษาความปลอดภัยสำหรับแอปพลิเคชัน Generative AI ของคุณ](../../../translated_images/13-lesson-banner.14103e36b4bbf17398b64ed2b0531f6f2c6549e7f7342f797c40bcae5a11862e.th.png)](https://aka.ms/gen-ai-lesson13-gh?WT.mc_id=academic-105485-koreyst) - -## บทนำ - -บทเรียนนี้จะครอบคลุม: - -- ความปลอดภัยในบริบทของระบบ AI -- ความเสี่ยงและภัยคุกคามทั่วไปต่อระบบ AI -- วิธีการและข้อควรพิจารณาในการรักษาความปลอดภัยของระบบ AI - -## เป้าหมายการเรียนรู้ - -หลังจากเรียนบทเรียนนี้จบ คุณจะเข้าใจเกี่ยวกับ: - -- ภัยคุกคามและความเสี่ยงต่อระบบ AI -- วิธีการและแนวปฏิบัติทั่วไปในการรักษาความปลอดภัยของระบบ AI -- วิธีการทดสอบความปลอดภัยเพื่อป้องกันผลลัพธ์ที่ไม่คาดคิดและการเสื่อมความเชื่อมั่นของผู้ใช้ - -## ความหมายของความปลอดภัยในบริบทของ generative AI คืออะไร? - -เมื่อเทคโนโลยีปัญญาประดิษฐ์ (AI) และการเรียนรู้ของเครื่อง (ML) มีบทบาทมากขึ้นในชีวิตประจำวัน การปกป้องไม่เพียงแต่ข้อมูลลูกค้าเท่านั้น แต่รวมถึงระบบ AI เองก็เป็นสิ่งสำคัญ AI/ML ถูกนำมาใช้สนับสนุนกระบวนการตัดสินใจที่มีมูลค่าสูงในอุตสาหกรรมที่การตัดสินใจผิดพลาดอาจส่งผลร้ายแรง - -ประเด็นสำคัญที่ควรพิจารณามีดังนี้: - -- **ผลกระทบของ AI/ML**: AI/ML มีผลกระทบอย่างมากต่อชีวิตประจำวัน ดังนั้นการปกป้องจึงเป็นสิ่งจำเป็น -- **ความท้าทายด้านความปลอดภัย**: ผลกระทบนี้ต้องได้รับความสนใจอย่างเหมาะสมเพื่อปกป้องผลิตภัณฑ์ที่ใช้ AI จากการโจมตีที่ซับซ้อน ไม่ว่าจะเป็นจากผู้ก่อกวนหรือกลุ่มที่มีการจัดตั้ง -- **ปัญหาทางยุทธศาสตร์**: อุตสาหกรรมเทคโนโลยีต้องแก้ไขปัญหาทางยุทธศาสตร์อย่างรอบคอบเพื่อความปลอดภัยของลูกค้าและข้อมูลในระยะยาว - -นอกจากนี้ โมเดลการเรียนรู้ของเครื่องส่วนใหญ่ไม่สามารถแยกแยะระหว่างข้อมูลที่เป็นอันตรายกับข้อมูลผิดปกติที่ไม่มีเจตนาได้ แหล่งข้อมูลฝึกสอนส่วนใหญ่ได้มาจากชุดข้อมูลสาธารณะที่ไม่ได้รับการคัดกรองหรือควบคุม ซึ่งเปิดให้บุคคลที่สามเข้ามามีส่วนร่วมได้ ผู้โจมตีไม่จำเป็นต้องเจาะชุดข้อมูลเมื่อพวกเขาสามารถส่งข้อมูลเข้ามาได้เอง เมื่อเวลาผ่านไป ข้อมูลที่เป็นอันตรายซึ่งมีความน่าเชื่อถือต่ำจะกลายเป็นข้อมูลที่เชื่อถือได้ถ้ารูปแบบและโครงสร้างข้อมูลยังถูกต้อง - -นี่คือเหตุผลที่การรักษาความสมบูรณ์และการปกป้องฐานข้อมูลที่โมเดลของคุณใช้ในการตัดสินใจจึงเป็นสิ่งสำคัญอย่างยิ่ง - -## ทำความเข้าใจภัยคุกคามและความเสี่ยงของ AI - -ในแง่ของ AI และระบบที่เกี่ยวข้อง การโจมตีด้วยการปนเปื้อนข้อมูล (data poisoning) ถือเป็นภัยคุกคามด้านความปลอดภัยที่สำคัญที่สุดในปัจจุบัน การปนเปื้อนข้อมูลคือการที่ใครบางคนเปลี่ยนแปลงข้อมูลที่ใช้ฝึก AI โดยเจตนา ทำให้ AI ทำงานผิดพลาด เนื่องจากไม่มีวิธีการตรวจจับและบรรเทาที่เป็นมาตรฐาน และเรายังต้องพึ่งพาชุดข้อมูลสาธารณะที่ไม่ได้รับการตรวจสอบในการฝึกสอน เพื่อรักษาความสมบูรณ์ของข้อมูลและป้องกันกระบวนการฝึกที่ผิดพลาด จำเป็นต้องติดตามแหล่งที่มาและประวัติของข้อมูล มิฉะนั้นคำกล่าวที่ว่า “ขยะเข้า ขยะออก” จะเป็นจริง ส่งผลให้ประสิทธิภาพของโมเดลลดลง - -ตัวอย่างของผลกระทบจากการปนเปื้อนข้อมูลต่อโมเดลของคุณ ได้แก่: - -1. **การสลับป้ายกำกับ (Label Flipping)**: ในงานจำแนกประเภทแบบไบนารี ผู้โจมตีจะสลับป้ายกำกับของข้อมูลฝึกสอนบางส่วน เช่น ตัวอย่างที่ไม่มีอันตรายถูกติดป้ายว่าเป็นอันตราย ทำให้โมเดลเรียนรู้ความสัมพันธ์ผิดพลาด\ - **ตัวอย่าง**: ระบบกรองสแปมที่จำแนกอีเมลที่ถูกต้องเป็นสแปมเนื่องจากป้ายกำกับถูกแก้ไข -2. **การปนเปื้อนคุณลักษณะ (Feature Poisoning)**: ผู้โจมตีแก้ไขคุณลักษณะในข้อมูลฝึกสอนอย่างละเอียดเพื่อสร้างอคติหรือหลอกโมเดล\ - **ตัวอย่าง**: การเพิ่มคำสำคัญที่ไม่เกี่ยวข้องในคำอธิบายสินค้าเพื่อบิดเบือนระบบแนะนำสินค้า -3. **การฉีดข้อมูล (Data Injection)**: การแทรกข้อมูลที่เป็นอันตรายเข้าไปในชุดข้อมูลฝึกสอนเพื่อเปลี่ยนพฤติกรรมของโมเดล\ - **ตัวอย่าง**: การแทรกรีวิวปลอมเพื่อบิดเบือนผลวิเคราะห์ความรู้สึก -4. **การโจมตีแบบประตูหลัง (Backdoor Attacks)**: ผู้โจมตีแทรกแบบแผนซ่อนเร้น (backdoor) ลงในข้อมูลฝึกสอน โมเดลจะเรียนรู้และตอบสนองอย่างเป็นอันตรายเมื่อเจอแบบแผนนั้น\ - **ตัวอย่าง**: ระบบจดจำใบหน้าที่ถูกฝึกด้วยภาพที่มีประตูหลัง ทำให้ระบุบุคคลเฉพาะผิดพลาด - -MITRE Corporation ได้สร้าง [ATLAS (Adversarial Threat Landscape for Artificial-Intelligence Systems)](https://atlas.mitre.org/?WT.mc_id=academic-105485-koreyst) ซึ่งเป็นฐานความรู้เกี่ยวกับยุทธวิธีและเทคนิคที่ผู้โจมตีใช้ในการโจมตีระบบ AI ในโลกจริง - -> มีช่องโหว่ในระบบที่ใช้ AI เพิ่มขึ้นเรื่อยๆ เนื่องจากการผนวก AI ทำให้พื้นผิวการโจมตีของระบบขยายกว่าการโจมตีไซเบอร์แบบดั้งเดิม เราพัฒนา ATLAS เพื่อเพิ่มความตระหนักถึงช่องโหว่เฉพาะและที่กำลังพัฒนาเหล่านี้ เนื่องจากชุมชนทั่วโลกนำ AI ไปใช้ในระบบต่างๆ ATLAS ถูกออกแบบตามกรอบ MITRE ATT&CK® โดยยุทธวิธี เทคนิค และขั้นตอน (TTPs) ของ ATLAS จะเสริมกับ ATT&CK - -เช่นเดียวกับกรอบ MITRE ATT&CK® ที่ใช้กันอย่างแพร่หลายในความปลอดภัยไซเบอร์แบบดั้งเดิมสำหรับวางแผนการจำลองภัยคุกคามขั้นสูง ATLAS ให้ชุด TTPs ที่ค้นหาได้ง่าย ช่วยให้เข้าใจและเตรียมพร้อมป้องกันการโจมตีที่เกิดขึ้นใหม่ได้ดีขึ้น - -นอกจากนี้ Open Web Application Security Project (OWASP) ได้สร้าง "[รายชื่อ 10 อันดับแรก](https://llmtop10.com/?WT.mc_id=academic-105485-koreyst)" ของช่องโหว่ที่สำคัญที่สุดในแอปพลิเคชันที่ใช้ LLM รายการนี้เน้นความเสี่ยงจากภัยคุกคาม เช่น การปนเปื้อนข้อมูลที่กล่าวมา รวมถึง: - -- **Prompt Injection**: เทคนิคที่ผู้โจมตีใช้ป้อนข้อมูลที่ออกแบบมาอย่างระมัดระวังเพื่อบังคับให้ Large Language Model (LLM) ทำงานนอกเหนือจากพฤติกรรมที่ตั้งใจไว้ -- **ช่องโหว่ในห่วงโซ่อุปทาน (Supply Chain Vulnerabilities)**: ส่วนประกอบและซอฟต์แวร์ที่ประกอบเป็นแอปพลิเคชันที่ LLM ใช้ เช่น โมดูล Python หรือชุดข้อมูลภายนอก อาจถูกโจมตี ทำให้เกิดผลลัพธ์ที่ไม่คาดคิด อคติ หรือช่องโหว่ในโครงสร้างพื้นฐาน -- **การพึ่งพามากเกินไป (Overreliance)**: LLM มีข้อผิดพลาดและมักสร้างข้อมูลที่ไม่ถูกต้องหรือไม่ปลอดภัย ในหลายกรณีที่มีการบันทึกไว้ ผู้คนเชื่อผลลัพธ์โดยไม่ตรวจสอบ ส่งผลให้เกิดผลเสียในโลกจริงโดยไม่ตั้งใจ - -Microsoft Cloud Advocate Rod Trent ได้เขียนหนังสืออิเล็กทรอนิกส์ฟรี [Must Learn AI Security](https://github.com/rod-trent/OpenAISecurity/tree/main/Must_Learn/Book_Version?WT.mc_id=academic-105485-koreyst) ที่เจาะลึกภัยคุกคาม AI ที่เกิดขึ้นใหม่และให้คำแนะนำอย่างละเอียดเกี่ยวกับวิธีจัดการกับสถานการณ์เหล่านี้ - -## การทดสอบความปลอดภัยสำหรับระบบ AI และ LLM - -ปัญญาประดิษฐ์ (AI) กำลังเปลี่ยนแปลงหลายสาขาและอุตสาหกรรม เปิดโอกาสและประโยชน์ใหม่ๆ ให้กับสังคม อย่างไรก็ตาม AI ก็สร้างความท้าทายและความเสี่ยงที่สำคัญ เช่น ความเป็นส่วนตัวของข้อมูล อคติ ขาดความสามารถในการอธิบาย และการใช้งานในทางที่ผิด ดังนั้นจึงจำเป็นต้องมั่นใจว่าระบบ AI มีความปลอดภัยและรับผิดชอบ หมายถึงปฏิบัติตามมาตรฐานทางจริยธรรมและกฎหมาย และได้รับความไว้วางใจจากผู้ใช้และผู้มีส่วนได้ส่วนเสีย - -การทดสอบความปลอดภัยคือกระบวนการประเมินความปลอดภัยของระบบ AI หรือ LLM โดยการระบุและใช้ประโยชน์จากช่องโหว่ ซึ่งสามารถทำได้โดยนักพัฒนา ผู้ใช้ หรือผู้ตรวจสอบภายนอก ขึ้นอยู่กับวัตถุประสงค์และขอบเขตของการทดสอบ วิธีการทดสอบความปลอดภัยที่พบบ่อยสำหรับระบบ AI และ LLM ได้แก่: - -- **การทำความสะอาดข้อมูล (Data sanitization)**: กระบวนการลบหรือทำให้ข้อมูลที่เป็นความลับหรือส่วนตัวในข้อมูลฝึกสอนหรือข้อมูลนำเข้าของระบบ AI หรือ LLM เป็นนิรนาม การทำความสะอาดข้อมูลช่วยป้องกันการรั่วไหลของข้อมูลและการแก้ไขข้อมูลโดยเจตนาโดยลดการเปิดเผยข้อมูลที่เป็นความลับหรือส่วนบุคคล -- **การทดสอบแบบโจมตี (Adversarial testing)**: กระบวนการสร้างและใช้ตัวอย่างโจมตีกับข้อมูลนำเข้าหรือผลลัพธ์ของระบบ AI หรือ LLM เพื่อประเมินความทนทานและความแข็งแกร่งต่อการโจมตี การทดสอบแบบโจมตีช่วยระบุและบรรเทาช่องโหว่และจุดอ่อนที่ผู้โจมตีอาจใช้ประโยชน์ -- **การตรวจสอบโมเดล (Model verification)**: กระบวนการตรวจสอบความถูกต้องและความสมบูรณ์ของพารามิเตอร์หรือสถาปัตยกรรมของโมเดล AI หรือ LLM การตรวจสอบโมเดลช่วยป้องกันการขโมยโมเดลโดยการรับรองว่าโมเดลได้รับการปกป้องและยืนยันตัวตน -- **การตรวจสอบผลลัพธ์ (Output validation)**: กระบวนการตรวจสอบคุณภาพและความน่าเชื่อถือของผลลัพธ์จากระบบ AI หรือ LLM การตรวจสอบผลลัพธ์ช่วยตรวจจับและแก้ไขการแก้ไขผลลัพธ์โดยเจตนาโดยมั่นใจว่าผลลัพธ์มีความสอดคล้องและถูกต้อง - -OpenAI ซึ่งเป็นผู้นำด้านระบบ AI ได้ตั้งชุด _การประเมินความปลอดภัย_ เป็นส่วนหนึ่งของโครงการ red teaming เพื่อทดสอบผลลัพธ์ของระบบ AI โดยหวังว่าจะช่วยเสริมสร้างความปลอดภัยของ AI - -> การประเมินสามารถมีตั้งแต่การทดสอบถามตอบง่ายๆ ไปจนถึงการจำลองสถานการณ์ที่ซับซ้อน ตัวอย่างที่ชัดเจน ได้แก่ การประเมินที่ OpenAI พัฒนาขึ้นเพื่อประเมินพฤติกรรม AI จากหลายมุมมอง: - -#### การชักจูง - -- [MakeMeSay](https://github.com/openai/evals/tree/main/evals/elsuite/make_me_say/readme.md?WT.mc_id=academic-105485-koreyst): ระบบ AI สามารถหลอกอีกระบบ AI ให้พูดคำลับได้ดีแค่ไหน? -- [MakeMePay](https://github.com/openai/evals/tree/main/evals/elsuite/make_me_pay/readme.md?WT.mc_id=academic-105485-koreyst): ระบบ AI สามารถชักชวนอีกระบบ AI ให้บริจาคเงินได้ดีแค่ไหน? -- [Ballot Proposal](https://github.com/openai/evals/tree/main/evals/elsuite/ballots/readme.md?WT.mc_id=academic-105485-koreyst): ระบบ AI สามารถมีอิทธิพลต่อการสนับสนุนข้อเสนอทางการเมืองของอีกระบบ AI ได้ดีแค่ไหน? - -#### การซ่อนข้อความ (Steganography) - -- [Steganography](https://github.com/openai/evals/tree/main/evals/elsuite/steganography/readme.md?WT.mc_id=academic-105485-koreyst): ระบบ AI สามารถส่งข้อความลับโดยไม่ถูกจับได้จากอีกระบบ AI ได้ดีแค่ไหน? -- [Text Compression](https://github.com/openai/evals/tree/main/evals/elsuite/text_compression/readme.md?WT.mc_id=academic-105485-koreyst): ระบบ AI สามารถบีบอัดและขยายข้อความเพื่อซ่อนข้อความลับได้ดีแค่ไหน? -- [Schelling Point](https://github.com/openai/evals/blob/main/evals/elsuite/schelling_point/README.md?WT.mc_id=academic-105485-koreyst): ระบบ AI สามารถประสานงานกับอีกระบบ AI โดยไม่ต้องสื่อสารโดยตรงได้ดีแค่ไหน? - -### ความปลอดภัยของ AI - -เราจำเป็นต้องปกป้องระบบ AI จากการโจมตีที่เป็นอันตราย การใช้งานผิดวัตถุประสงค์ หรือผลลัพธ์ที่ไม่ตั้งใจ ซึ่งรวมถึงการดำเนินการเพื่อให้ระบบ AI มีความปลอดภัย เชื่อถือได้ และน่าไว้วางใจ เช่น: - -- รักษาความปลอดภัยของข้อมูลและอัลกอริทึมที่ใช้ฝึกและใช้งานโมเดล AI -- ป้องกันการเข้าถึง การแก้ไข หรือการทำลายระบบ AI โดยไม่ได้รับอนุญาต -- ตรวจจับและลดอคติ การเลือกปฏิบัติ หรือปัญหาทางจริยธรรมในระบบ AI -- รับผิดชอบ โปร่งใส และสามารถอธิบายการตัดสินใจและการกระทำของ AI ได้ -- สอดคล้องเป้าหมายและค่านิยมของระบบ AI กับมนุษย์และสังคม - -ความปลอดภัยของ AI มีความสำคัญต่อการรักษาความสมบูรณ์ การเข้าถึง และความลับของระบบ AI และข้อมูล ความท้าทายและโอกาสของความปลอดภัย AI ได้แก่: - -- โอกาส: การนำ AI มาใช้ในกลยุทธ์ความปลอดภัยไซเบอร์ เพราะ AI สามารถช่วยระบุภัยคุกคามและปรับปรุงเวลาตอบสนองได้ AI ช่วยอัตโนมัติและเสริมการตรวจจับและบรรเทาการโจมตีไซเบอร์ เช่น ฟิชชิง มัลแวร์ หรือแรนซัมแวร์ -- ความท้าทาย: AI อาจถูกใช้โดยผู้โจมตีเพื่อสร้างการโจมตีที่ซับซ้อน เช่น การสร้างเนื้อหาปลอม หรือนำเสนอข้อมูลผิด การแอบอ้างผู้ใช้ หรือใช้ประโยชน์จากช่องโหว่ในระบบ AI ดังนั้นนักพัฒนา AI มีความรับผิดชอบพิเศษในการออกแบบระบบที่แข็งแกร่งและทนทานต่อการใช้งานผิดวัตถุประสงค์ - -### การปกป้องข้อมูล - -LLM อาจก่อให้เกิดความเสี่ยงต่อความเป็นส่วนตัวและความปลอดภัยของข้อมูลที่ใช้ เช่น LLM อาจจดจำและรั่วไหลข้อมูลที่ละเอียดอ่อนจากชุดข้อมูลฝึก เช่น ชื่อ ที่อยู่ รหัสผ่าน หรือหมายเลขบัตรเครดิต นอกจากนี้ยังอาจถูกโจมตีหรือถูกใช้โดยผู้ประสงค์ร้ายที่ต้องการใช้ประโยชน์จากช่องโหว่หรืออคติของมัน ดังนั้นจึงสำคัญที่จะต้องตระหนักถึงความเสี่ยงเหล่านี้และดำเนินมาตรการที่เหมาะสมเพื่อปกป้องข้อมูลที่ใช้กับ LLM - -มีขั้นตอนหลายอย่างที่คุณสามารถทำได้เพื่อปกป้องข้อมูลที่ใช้กับ LLM ได้แก่: - -- **จำกัดปริมาณและประเภทของข้อมูลที่แชร์กับ LLM**: แชร์เฉพาะข้อมูลที่จำเป็นและเกี่ยวข้องกับวัตถุประสงค์เท่านั้น หลีกเลี่ยงการแชร์ข้อมูลที่ละเอียดอ่อน เป็นความลับ หรือส่วนบุคคล ผู้ใช้ควรทำให้ข้อมูลที่แชร์กับ LLM เป็นนิรนามหรือเข้ารหัส เช่น การลบหรือปกปิดข้อมูลระบุตัวตน หรือใช้ช่องทางสื่อสารที่ปลอดภัย -- **ตรวจสอบข้อมูลที่ LLM สร้างขึ้น**: ตรวจสอบความถูกต้องและคุณภาพของผลลัพธ์ที่ LLM สร้างขึ้นเสมอ เพื่อให้แน่ -> การทำ AI red teaming ได้พัฒนาไปสู่ความหมายที่กว้างขึ้น: ไม่เพียงแต่ตรวจสอบหาช่องโหว่ด้านความปลอดภัยเท่านั้น แต่ยังรวมถึงการตรวจสอบความล้มเหลวอื่น ๆ ของระบบ เช่น การสร้างเนื้อหาที่อาจเป็นอันตราย ระบบ AI มาพร้อมกับความเสี่ยงใหม่ ๆ และ red teaming เป็นหัวใจสำคัญในการเข้าใจความเสี่ยงเหล่านั้น เช่น การโจมตีด้วย prompt injection และการสร้างเนื้อหาที่ไม่มีพื้นฐาน - [Microsoft AI Red Team building future of safer AI](https://www.microsoft.com/security/blog/2023/08/07/microsoft-ai-red-team-building-future-of-safer-ai/?WT.mc_id=academic-105485-koreyst) -[![Guidance and resources for red teaming](../../../translated_images/13-AI-red-team.642ed54689d7e8a4d83bdf0635768c4fd8aa41ea539d8e3ffe17514aec4b4824.th.png)]() - -ด้านล่างนี้คือข้อมูลเชิงลึกสำคัญที่เป็นแนวทางในการพัฒนาโปรแกรม AI Red Team ของ Microsoft - -1. **ขอบเขตที่กว้างของ AI Red Teaming:** - AI red teaming ในปัจจุบันครอบคลุมทั้งด้านความปลอดภัยและผลลัพธ์ของ Responsible AI (RAI) โดยในอดีต red teaming มุ่งเน้นที่ด้านความปลอดภัยเป็นหลัก โดยมองโมเดลเป็นช่องทางโจมตี (เช่น การขโมยโมเดลพื้นฐาน) อย่างไรก็ตาม ระบบ AI นำมาซึ่งช่องโหว่ด้านความปลอดภัยรูปแบบใหม่ (เช่น การโจมตีด้วย prompt injection, poisoning) ที่ต้องให้ความสนใจเป็นพิเศษ นอกจากความปลอดภัยแล้ว AI red teaming ยังตรวจสอบประเด็นความเป็นธรรม (เช่น การเหมารวม) และเนื้อหาที่เป็นอันตราย (เช่น การยกย่องความรุนแรง) การระบุปัญหาเหล่านี้ตั้งแต่เนิ่นๆ ช่วยให้สามารถจัดลำดับความสำคัญในการลงทุนป้องกันได้ - -2. **ความล้มเหลวทั้งที่เกิดจากเจตนาร้ายและไม่เจตนา:** - AI red teaming พิจารณาความล้มเหลวทั้งจากมุมมองของผู้ประสงค์ร้ายและผู้ใช้ทั่วไป เช่น เมื่อทำ red teaming กับ Bing รุ่นใหม่ เราจะสำรวจไม่เพียงแต่การที่ผู้โจมตีสามารถบิดเบือนระบบได้ แต่ยังรวมถึงการที่ผู้ใช้ทั่วไปอาจเจอเนื้อหาที่มีปัญหาหรือเป็นอันตราย แตกต่างจาก red teaming ด้านความปลอดภัยแบบดั้งเดิมที่เน้นเฉพาะผู้ประสงค์ร้าย AI red teaming จึงครอบคลุมบุคลิกและความล้มเหลวที่หลากหลายมากขึ้น - -3. **ธรรมชาติที่เปลี่ยนแปลงตลอดเวลาของระบบ AI:** - แอปพลิเคชัน AI มีการพัฒนาอย่างต่อเนื่อง ในแอปพลิเคชันที่ใช้ large language model นักพัฒนาจะปรับตัวตามความต้องการที่เปลี่ยนไป การทำ red teaming อย่างต่อเนื่องช่วยให้สามารถเฝ้าระวังและปรับตัวรับความเสี่ยงที่เปลี่ยนแปลงได้ - -AI red teaming ไม่ใช่การครอบคลุมทุกอย่างและควรถูกมองว่าเป็นการเสริมควบคู่ไปกับมาตรการควบคุมอื่นๆ เช่น [role-based access control (RBAC)](https://learn.microsoft.com/azure/ai-services/openai/how-to/role-based-access-control?WT.mc_id=academic-105485-koreyst) และโซลูชันการจัดการข้อมูลอย่างครบถ้วน โดยมีเป้าหมายเพื่อสนับสนุนกลยุทธ์ความปลอดภัยที่เน้นการใช้ AI ที่ปลอดภัยและรับผิดชอบ ซึ่งคำนึงถึงความเป็นส่วนตัวและความปลอดภัย พร้อมทั้งลดอคติ เนื้อหาที่เป็นอันตราย และข้อมูลผิดพลาดที่อาจทำลายความเชื่อมั่นของผู้ใช้ - -นี่คือรายการอ่านเพิ่มเติมที่จะช่วยให้คุณเข้าใจดีขึ้นว่า red teaming สามารถช่วยระบุและลดความเสี่ยงในระบบ AI ของคุณได้อย่างไร: - -- [การวางแผน red teaming สำหรับ large language models (LLMs) และแอปพลิเคชันของพวกเขา](https://learn.microsoft.com/azure/ai-services/openai/concepts/red-teaming?WT.mc_id=academic-105485-koreyst) -- [OpenAI Red Teaming Network คืออะไร?](https://openai.com/blog/red-teaming-network?WT.mc_id=academic-105485-koreyst) -- [AI Red Teaming - แนวปฏิบัติสำคัญในการสร้างโซลูชัน AI ที่ปลอดภัยและรับผิดชอบมากขึ้น](https://rodtrent.substack.com/p/ai-red-teaming?WT.mc_id=academic-105485-koreyst) -- MITRE [ATLAS (Adversarial Threat Landscape for Artificial-Intelligence Systems)](https://atlas.mitre.org/?WT.mc_id=academic-105485-koreyst) ฐานความรู้เกี่ยวกับยุทธวิธีและเทคนิคที่ผู้โจมตีใช้ในการโจมตีระบบ AI ในโลกจริง - -## ตรวจสอบความรู้ - -วิธีที่ดีในการรักษาความสมบูรณ์ของข้อมูลและป้องกันการใช้งานผิดวัตถุประสงค์คืออะไร? - -1. มีการควบคุมการเข้าถึงข้อมูลและการจัดการข้อมูลโดยใช้บทบาทที่ชัดเจน -1. ดำเนินการและตรวจสอบการติดป้ายข้อมูลเพื่อป้องกันการบิดเบือนหรือใช้งานข้อมูลผิดวัตถุประสงค์ -1. ตรวจสอบให้แน่ใจว่าโครงสร้างพื้นฐาน AI ของคุณรองรับการกรองเนื้อหา - -คำตอบ: 1 แม้ว่าทั้งสามข้อจะเป็นคำแนะนำที่ดี แต่การกำหนดสิทธิ์การเข้าถึงข้อมูลที่เหมาะสมให้กับผู้ใช้จะช่วยป้องกันการบิดเบือนและการแสดงข้อมูลผิดพลาดที่ใช้โดย LLMs ได้อย่างมาก - -## 🚀 ความท้าทาย - -อ่านเพิ่มเติมเกี่ยวกับวิธีที่คุณสามารถ [บริหารจัดการและปกป้องข้อมูลที่ละเอียดอ่อน](https://learn.microsoft.com/training/paths/purview-protect-govern-ai/?WT.mc_id=academic-105485-koreyst) ในยุค AI - -## ทำได้ดีมาก ต่อเนื่องกับการเรียนรู้ของคุณ - -หลังจากเรียนบทนี้เสร็จแล้ว ลองดู [คอลเลกชันการเรียนรู้ Generative AI](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) เพื่อพัฒนาความรู้ด้าน Generative AI ของคุณต่อไป! - -ไปที่บทที่ 14 ซึ่งเราจะพูดถึง [วงจรชีวิตของแอปพลิเคชัน Generative AI](../14-the-generative-ai-application-lifecycle/README.md?WT.mc_id=academic-105485-koreyst)! - -**ข้อจำกัดความรับผิดชอบ**: -เอกสารนี้ได้รับการแปลโดยใช้บริการแปลภาษาอัตโนมัติ [Co-op Translator](https://github.com/Azure/co-op-translator) แม้เราจะพยายามให้ความถูกต้องสูงสุด แต่โปรดทราบว่าการแปลอัตโนมัติอาจมีข้อผิดพลาดหรือความไม่ถูกต้อง เอกสารต้นฉบับในภาษาต้นทางถือเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลที่สำคัญ ขอแนะนำให้ใช้บริการแปลโดยผู้เชี่ยวชาญมนุษย์ เราไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความผิดใด ๆ ที่เกิดจากการใช้การแปลนี้ \ No newline at end of file + +# การรักษาความปลอดภัยให้กับแอปพลิเคชัน AI เชิงสร้างสรรค์ของคุณ + +[![การรักษาความปลอดภัยให้กับแอปพลิเคชัน AI เชิงสร้างสรรค์ของคุณ](../../../translated_images/13-lesson-banner.14103e36b4bbf17398b64ed2b0531f6f2c6549e7f7342f797c40bcae5a11862e.th.png)](https://youtu.be/m0vXwsx5DNg?si=TYkr936GMKz15K0L) + +## บทนำ + +บทเรียนนี้จะครอบคลุมถึง: + +- ความปลอดภัยในบริบทของระบบ AI +- ความเสี่ยงและภัยคุกคามที่พบบ่อยต่อระบบ AI +- วิธีการและข้อควรพิจารณาในการรักษาความปลอดภัยของระบบ AI + +## เป้าหมายการเรียนรู้ + +หลังจากจบบทเรียนนี้ คุณจะมีความเข้าใจเกี่ยวกับ: + +- ภัยคุกคามและความเสี่ยงต่อระบบ AI +- วิธีการและแนวปฏิบัติทั่วไปในการรักษาความปลอดภัยของระบบ AI +- วิธีการทดสอบความปลอดภัยที่สามารถป้องกันผลลัพธ์ที่ไม่คาดคิดและการสูญเสียความไว้วางใจจากผู้ใช้ + +## ความหมายของความปลอดภัยในบริบทของ AI เชิงสร้างสรรค์คืออะไร? + +เมื่อเทคโนโลยีปัญญาประดิษฐ์ (AI) และการเรียนรู้ของเครื่อง (ML) มีบทบาทสำคัญในชีวิตของเรามากขึ้น การปกป้องข้อมูลลูกค้าและระบบ AI เองจึงเป็นสิ่งสำคัญ AI/ML ถูกนำมาใช้มากขึ้นในการสนับสนุนกระบวนการตัดสินใจที่มีมูลค่าสูงในอุตสาหกรรมที่การตัดสินใจผิดพลาดอาจส่งผลกระทบอย่างร้ายแรง + +นี่คือประเด็นสำคัญที่ควรพิจารณา: + +- **ผลกระทบของ AI/ML**: AI/ML มีผลกระทบอย่างมากต่อชีวิตประจำวัน ดังนั้นการปกป้องระบบเหล่านี้จึงกลายเป็นสิ่งจำเป็น +- **ความท้าทายด้านความปลอดภัย**: ผลกระทบที่ AI/ML มีต่อชีวิตประจำวันต้องได้รับการดูแลอย่างเหมาะสมเพื่อป้องกันผลิตภัณฑ์ที่ใช้ AI จากการโจมตีที่ซับซ้อน ไม่ว่าจะเป็นโดยกลุ่มผู้ก่อกวนหรือกลุ่มที่มีการจัดตั้ง +- **ปัญหาทางยุทธศาสตร์**: อุตสาหกรรมเทคโนโลยีต้องแก้ไขปัญหาทางยุทธศาสตร์อย่างเชิงรุกเพื่อให้มั่นใจในความปลอดภัยของลูกค้าและข้อมูลในระยะยาว + +นอกจากนี้ โมเดลการเรียนรู้ของเครื่องส่วนใหญ่ไม่สามารถแยกแยะระหว่างข้อมูลที่เป็นอันตรายและข้อมูลที่ผิดปกติแต่ไม่เป็นอันตรายได้ แหล่งข้อมูลการฝึกอบรมที่สำคัญมักมาจากชุดข้อมูลสาธารณะที่ไม่ได้รับการคัดกรองและตรวจสอบ ซึ่งเปิดโอกาสให้บุคคลที่สามสามารถมีส่วนร่วมได้ ผู้โจมตีไม่จำเป็นต้องเจาะชุดข้อมูลเมื่อพวกเขาสามารถเพิ่มข้อมูลลงไปได้ เมื่อเวลาผ่านไป ข้อมูลที่เป็นอันตรายที่มีความมั่นใจต่ำอาจกลายเป็นข้อมูลที่ได้รับความไว้วางใจสูง หากโครงสร้างหรือรูปแบบของข้อมูลยังคงถูกต้อง + +นี่คือเหตุผลที่การรักษาความสมบูรณ์และการปกป้องแหล่งข้อมูลที่โมเดลของคุณใช้ในการตัดสินใจเป็นสิ่งสำคัญอย่างยิ่ง + +## การทำความเข้าใจภัยคุกคามและความเสี่ยงของ AI + +ในแง่ของ AI และระบบที่เกี่ยวข้อง การปนเปื้อนข้อมูลถือเป็นภัยคุกคามด้านความปลอดภัยที่สำคัญที่สุดในปัจจุบัน การปนเปื้อนข้อมูลเกิดขึ้นเมื่อมีผู้ตั้งใจเปลี่ยนแปลงข้อมูลที่ใช้ในการฝึกอบรม AI ทำให้ AI เกิดข้อผิดพลาด นี่เป็นผลมาจากการขาดวิธีการตรวจจับและลดผลกระทบที่ได้มาตรฐาน รวมถึงการพึ่งพาชุดข้อมูลสาธารณะที่ไม่ได้รับการตรวจสอบหรือคัดกรองสำหรับการฝึกอบรม เพื่อรักษาความสมบูรณ์ของข้อมูลและป้องกันกระบวนการฝึกอบรมที่มีข้อบกพร่อง การติดตามแหล่งที่มาและสายสัมพันธ์ของข้อมูลจึงเป็นสิ่งสำคัญ มิฉะนั้นคำกล่าวที่ว่า "ข้อมูลขยะเข้า ผลลัพธ์ขยะออก" จะเป็นจริง ส่งผลให้ประสิทธิภาพของโมเดลลดลง + +ตัวอย่างของการปนเปื้อนข้อมูลที่อาจส่งผลต่อโมเดลของคุณ: + +1. **การพลิกกลับป้ายกำกับ**: ในงานการจำแนกประเภทแบบไบนารี ผู้ไม่หวังดีตั้งใจพลิกกลับป้ายกำกับของข้อมูลฝึกอบรมบางส่วน เช่น ตัวอย่างที่ไม่เป็นอันตรายถูกระบุว่าเป็นอันตราย ทำให้โมเดลเรียนรู้ความสัมพันธ์ที่ไม่ถูกต้อง\ + **ตัวอย่าง**: ตัวกรองสแปมที่ระบุอีเมลที่ถูกต้องว่าเป็นสแปมเนื่องจากป้ายกำกับที่ถูกปรับเปลี่ยน +2. **การปนเปื้อนคุณลักษณะ**: ผู้โจมตีปรับเปลี่ยนคุณลักษณะในข้อมูลฝึกอบรมอย่างละเอียดเพื่อแนะนำอคติหรือทำให้โมเดลเข้าใจผิด\ + **ตัวอย่าง**: การเพิ่มคำสำคัญที่ไม่เกี่ยวข้องในคำอธิบายผลิตภัณฑ์เพื่อจัดการระบบแนะนำสินค้า +3. **การฉีดข้อมูล**: การฉีดข้อมูลที่เป็นอันตรายลงในชุดข้อมูลฝึกอบรมเพื่อมีอิทธิพลต่อพฤติกรรมของโมเดล\ + **ตัวอย่าง**: การเพิ่มรีวิวผู้ใช้ปลอมเพื่อบิดเบือนผลลัพธ์การวิเคราะห์ความรู้สึก +4. **การโจมตีแบบฝังหลัง**: ผู้ไม่หวังดีแทรกลวดลายที่ซ่อนอยู่ (ฝังหลัง) ลงในข้อมูลฝึกอบรม โมเดลเรียนรู้ที่จะจดจำลวดลายนี้และแสดงพฤติกรรมที่เป็นอันตรายเมื่อถูกกระตุ้น\ + **ตัวอย่าง**: ระบบจดจำใบหน้าที่ฝึกด้วยภาพที่มีลวดลายฝังหลังซึ่งระบุบุคคลผิดพลาด + +องค์กร MITRE Corporation ได้สร้าง [ATLAS (Adversarial Threat Landscape for Artificial-Intelligence Systems)](https://atlas.mitre.org/?WT.mc_id=academic-105485-koreyst) ซึ่งเป็นฐานข้อมูลความรู้เกี่ยวกับยุทธวิธีและเทคนิคที่ผู้ไม่หวังดีใช้ในการโจมตีระบบ AI ในโลกจริง + +> มีช่องโหว่ในระบบที่ใช้ AI เพิ่มขึ้นเรื่อย ๆ เนื่องจากการรวม AI เข้ากับระบบที่มีอยู่ทำให้พื้นที่การโจมตีขยายตัวเกินกว่าการโจมตีทางไซเบอร์แบบดั้งเดิม เราได้พัฒนา ATLAS เพื่อสร้างความตระหนักถึงช่องโหว่ที่เป็นเอกลักษณ์และพัฒนาอย่างต่อเนื่องเหล่านี้ เนื่องจากชุมชนทั่วโลกได้รวม AI เข้ากับระบบต่าง ๆ มากขึ้นเรื่อย ๆ ATLAS ถูกสร้างแบบจำลองตามกรอบ MITRE ATT&CK® และยุทธวิธี เทคนิค และกระบวนการ (TTPs) ของมันเป็นส่วนเสริมของ ATT&CK + +เช่นเดียวกับกรอบ MITRE ATT&CK® ซึ่งถูกใช้กันอย่างแพร่หลายในด้านความปลอดภัยไซเบอร์แบบดั้งเดิมสำหรับการวางแผนสถานการณ์จำลองการเลียนแบบภัยคุกคามขั้นสูง ATLAS ให้ชุด TTPs ที่สามารถค้นหาได้ง่ายเพื่อช่วยให้เข้าใจและเตรียมพร้อมสำหรับการป้องกันการโจมตีที่เกิดขึ้นใหม่ + +นอกจากนี้ โครงการ Open Web Application Security Project (OWASP) ได้สร้าง "[รายการ 10 อันดับแรก](https://llmtop10.com/?WT.mc_id=academic-105485-koreyst)" ของช่องโหว่ที่สำคัญที่สุดที่พบในแอปพลิเคชันที่ใช้ LLMs รายการนี้เน้นถึงความเสี่ยงของภัยคุกคาม เช่น การปนเปื้อนข้อมูลที่กล่าวถึงข้างต้น รวมถึงภัยคุกคามอื่น ๆ เช่น: + +- **การฉีดคำสั่ง**: เทคนิคที่ผู้โจมตีจัดการโมเดลภาษาขนาดใหญ่ (LLM) ผ่านการป้อนข้อมูลที่ถูกสร้างขึ้นอย่างรอบคอบ ทำให้มันแสดงพฤติกรรมที่อยู่นอกเหนือพฤติกรรมที่ตั้งใจไว้ +- **ช่องโหว่ในห่วงโซ่อุปทาน**: ส่วนประกอบและซอฟต์แวร์ที่ประกอบขึ้นเป็นแอปพลิเคชันที่ใช้ LLM เช่น โมดูล Python หรือชุดข้อมูลภายนอก อาจถูกโจมตีได้เอง ส่งผลให้เกิดผลลัพธ์ที่ไม่คาดคิด อคติที่ถูกแนะนำ และแม้กระทั่งช่องโหว่ในโครงสร้างพื้นฐานพื้นฐาน +- **การพึ่งพามากเกินไป**: LLMs มีข้อผิดพลาดและมีแนวโน้มที่จะสร้างข้อมูลที่ไม่ถูกต้องหรือไม่ปลอดภัย ในหลายกรณีที่มีการบันทึกไว้ ผู้คนมักเชื่อผลลัพธ์โดยไม่ตรวจสอบ นำไปสู่ผลกระทบเชิงลบในโลกจริงที่ไม่ได้ตั้งใจ + +Rod Trent ผู้สนับสนุนระบบคลาวด์ของ Microsoft ได้เขียนหนังสืออิเล็กทรอนิกส์ฟรี [Must Learn AI Security](https://github.com/rod-trent/OpenAISecurity/tree/main/Must_Learn/Book_Version?WT.mc_id=academic-105485-koreyst) ซึ่งเจาะลึกถึงภัยคุกคาม AI ที่เกิดขึ้นใหม่เหล่านี้และให้คำแนะนำอย่างละเอียดเกี่ยวกับวิธีการจัดการสถานการณ์เหล่านี้อย่างดีที่สุด + +## การทดสอบความปลอดภัยสำหรับระบบ AI และ LLMs + +ปัญญาประดิษฐ์ (AI) กำลังเปลี่ยนแปลงหลาย ๆ ด้านและอุตสาหกรรม โดยนำเสนอความเป็นไปได้และประโยชน์ใหม่ ๆ ให้กับสังคม อย่างไรก็ตาม AI ก็สร้างความท้าทายและความเสี่ยงที่สำคัญ เช่น ความเป็นส่วนตัวของข้อมูล อคติ การขาดความสามารถในการอธิบาย และการใช้งานในทางที่ผิด ดังนั้นจึงเป็นสิ่งสำคัญที่จะต้องมั่นใจว่าระบบ AI มีความปลอดภัยและมีความรับผิดชอบ หมายถึงการปฏิบัติตามมาตรฐานทางจริยธรรมและกฎหมาย และสามารถได้รับความไว้วางใจจากผู้ใช้และผู้มีส่วนได้ส่วนเสีย + +การทดสอบความปลอดภัยคือกระบวนการประเมินความปลอดภัยของระบบ AI หรือ LLM โดยการระบุและใช้ประโยชน์จากช่องโหว่ของมัน การทดสอบนี้สามารถดำเนินการโดยนักพัฒนา ผู้ใช้ หรือผู้ตรวจสอบบุคคลที่สาม ขึ้นอยู่กับวัตถุประสงค์และขอบเขตของการทดสอบ วิธีการทดสอบความปลอดภัยที่พบบ่อยที่สุดสำหรับระบบ AI และ LLMs ได้แก่: + +- **การทำความสะอาดข้อมูล**: กระบวนการลบหรือทำให้ข้อมูลที่ละเอียดอ่อนหรือส่วนตัวในชุดข้อมูลฝึกอบรมหรือข้อมูลที่ป้อนเข้าสู่ระบบ AI หรือ LLM เป็นนิรนาม การทำความสะอาดข้อมูลสามารถช่วยป้องกันการรั่วไหลของข้อมูลและการจัดการที่เป็นอันตรายโดยลดการเปิดเผยข้อมูลที่เป็นความลับหรือข้อมูลส่วนบุคคล +- **การทดสอบเชิงรุก**: กระบวนการสร้างและใช้ตัวอย่างเชิงรุกกับข้อมูลที่ป้อนหรือผลลัพธ์ของระบบ AI หรือ LLM เพื่อประเมินความแข็งแกร่งและความยืดหยุ่นต่อการโจมตีเชิงรุก การทดสอบเชิงรุกสามารถช่วยระบุและลดช่องโหว่และจุดอ่อนของระบบ AI หรือ LLM ที่อาจถูกโจมตีโดยผู้ไม่หวังดี +- **การตรวจสอบโมเดล**: กระบวนการตรวจสอบความถูกต้องและความสมบูรณ์ของพารามิเตอร์หรือสถาปัตยกรรมของโมเดลในระบบ AI หรือ LLM การตรวจสอบโมเดลสามารถช่วยตรวจจับและป้องกันการขโมยโมเดลโดยการรับรองว่าโมเดลได้รับการปกป้องและรับรองความถูกต้อง +- **การตรวจสอบผลลัพธ์**: กระบวนการตรวจสอบคุณภาพและความน่าเชื่อถือของผลลัพธ์ของระบบ AI หรือ LLM การตรวจสอบผลลัพธ์สามารถช่วยตรวจจับและแก้ไขการจัดการที่เป็นอันตรายโดยการรับรองว่าผลลัพธ์มีความสม่ำเสมอและถูกต้อง + +OpenAI ซึ่งเป็นผู้นำในระบบ AI ได้จัดตั้งชุดการประเมินความปลอดภัยเป็นส่วนหนึ่งของโครงการเครือข่าย red teaming โดยมีเป้าหมายเพื่อทดสอบผลลัพธ์ของระบบ AI เพื่อมีส่วนร่วมในการรักษาความปลอดภัยของ AI + +> การประเมินสามารถมีตั้งแต่การทดสอบ Q&A แบบง่ายไปจนถึงการจำลองที่ซับซ้อน ตัวอย่างที่เป็นรูปธรรมคือการประเมินตัวอย่างที่พัฒนาโดย OpenAI เพื่อประเมินพฤติกรรมของ AI จากหลายมุมมอง: + +#### การโน้มน้าวใจ + +- [MakeMeSay](https://github.com/openai/evals/tree/main/evals/elsuite/make_me_say/readme.md?WT.mc_id=academic-105485-koreyst): AI สามารถหลอก AI อีกตัวให้พูดคำลับได้ดีแค่ไหน? +- [MakeMePay](https://github.com/openai/evals/tree/main/evals/elsuite/make_me_pay/readme.md?WT.mc_id=academic-105485-koreyst): AI สามารถโน้มน้าว AI อีกตัวให้บริจาคเงินได้ดีแค่ไหน? +- [Ballot Proposal](https://github.com/openai/evals/tree/main/evals/elsuite/ballots/readme.md?WT.mc_id=academic-105485-koreyst): AI สามารถมีอิทธิพลต่อการสนับสนุนข้อเสนอทางการเมืองของ AI อีกตัวได้ดีแค่ไหน? + +#### สเตกาโนกราฟี (การส่งข้อความที่ซ่อนอยู่) + +- [Steganography](https://github.com/openai/evals/tree/main/evals/elsuite/steganography/readme.md?WT.mc_id=academic-105485-koreyst): AI สามารถส่งข้อความลับโดยไม่ถูกจับได้ดีแค่ไหน? +- [Text Compression](https://github.com/openai/evals/tree/main/evals/elsuite/text_compression/readme.md?WT.mc_id=academic-105485-koreyst): AI สามารถบีบอัดและคลายข้อความเพื่อซ่อนข้อความลับได้ดีแค่ไหน? +- [Schelling Point](https://github.com/openai/evals/blob/main/evals/elsuite/schelling_point/README.md?WT.mc_id=academic-105485-koreyst): AI สามารถประสานงานกับ AI อีกตัวโดยไม่ต้องสื่อสารโดยตรงได้ดีแค่ไหน? + +### ความปลอดภัยของ AI + +สิ่งสำคัญคือเราต้องมุ่งมั่นที่จะปกป้องระบบ AI จากการโจมตีที่เป็นอันตราย การใช้งานในทางที่ผิด หรือผลลัพธ์ที่ไม่ตั้งใจ ซึ่งรวมถึงการดำเนินการเพื่อให้มั่นใจในความปลอดภัย ความน่าเชื่อถือ และความไว้วางใจในระบบ AI เช่น: + +- การรักษาความปลอดภัยของข้อมูลและอัลกอริทึมที่ใช้ในการฝึกอบรมและใช้งานโมเดล AI +- การป้องกันการเข้าถึง การจัดการ หรือการก่อวินาศกรรมระบบ AI โดยไม่ได้รับอนุญาต +- การตรวจจับและลดอคติ การเลือกปฏิบัติ หรือปัญหาด้านจริยธรรมในระบบ AI +- การรับรองความรับผิดชอบ ความโปร่งใส และความสามารถในการอธิบายของการตัดสินใจและการกระทำของ AI +- การปรับเป้าหมายและค่านิยมของระบบ AI ให้สอดคล้องกับมนุษย์และสังคม + +ความปลอดภัยของ AI มีความสำคัญต่อการรักษาความสมบูรณ์ ความพร้อมใช้งาน และความลับของระบบ AI และข้อมูล ความท้าทายและโอกาสของความปลอดภัยของ AI ได้แก่: + +- **โอกาส**: การรวม AI เข้ากับกลยุทธ์ความปลอดภัยไซเบอร์ เนื่องจาก AI สามารถมีบทบาทสำคัญในการระบุภัยคุกคามและปรับปรุงเวลาการตอบสนอง AI สามารถช่วยทำให้การตรวจจับและลดการโจมตีทางไซเบอร์ เช่น ฟิชชิง มัลแวร์ หรือแรนซัมแวร์ เป็นไปโดยอัตโนมัติและมีประสิทธิภาพมากขึ้น +- **ความท้าทาย**: AI ยังสามารถถูกใช้โดยผู้ไม่หวังดีในการเปิดตัวการโจมตีที่ซับซ้อน เช่น การสร้างเนื้อหาปลอมหรือทำให้เข้าใจผิด การแอบอ้างเป็นผู้ใช้ หรือการใช้ช่องโหว่ในระบบ AI ดังนั้นนักพัฒนา AI จึงมีความรับผิดชอบพิเศษในการออกแบบระบบที่แข็งแกร่งและยืดหยุ่นต่อการใช้งานในทางที่ผิด + +### การปกป้องข้อมูล + +LLMs อาจก่อให้เกิดความเสี่ยงต่อความเป็นส่วนตัวและความปลอดภัยของข้อมูลที่พวกเขาใช้ ตัวอย่างเช่น LLMs อาจจดจำและเปิดเผยข้อมูลที่ละเอียดอ่อนจาก +การจำลองภัยคุกคามในโลกจริงถือเป็นแนวปฏิบัติมาตรฐานในการสร้างระบบ AI ที่มีความยืดหยุ่น โดยใช้เครื่องมือ กลยุทธ์ และกระบวนการที่คล้ายคลึงกันเพื่อระบุความเสี่ยงต่อระบบและทดสอบการตอบสนองของผู้ป้องกัน + +> การปฏิบัติของ AI red teaming ได้พัฒนาไปสู่ความหมายที่กว้างขึ้น: ไม่เพียงแต่ครอบคลุมการตรวจสอบช่องโหว่ด้านความปลอดภัย แต่ยังรวมถึงการตรวจสอบความล้มเหลวอื่น ๆ ของระบบ เช่น การสร้างเนื้อหาที่อาจเป็นอันตราย ระบบ AI มาพร้อมกับความเสี่ยงใหม่ ๆ และ red teaming เป็นหัวใจสำคัญในการทำความเข้าใจความเสี่ยงใหม่เหล่านั้น เช่น การฉีดคำสั่ง (prompt injection) และการสร้างเนื้อหาที่ไม่มีพื้นฐาน - [Microsoft AI Red Team building future of safer AI](https://www.microsoft.com/security/blog/2023/08/07/microsoft-ai-red-team-building-future-of-safer-ai/?WT.mc_id=academic-105485-koreyst) + +[![คำแนะนำและทรัพยากรสำหรับ red teaming](../../../translated_images/13-AI-red-team.642ed54689d7e8a4d83bdf0635768c4fd8aa41ea539d8e3ffe17514aec4b4824.th.png)]() + +ด้านล่างนี้คือข้อมูลสำคัญที่ได้หล่อหลอมโปรแกรม AI Red Team ของ Microsoft + +1. **ขอบเขตที่กว้างขวางของ AI Red Teaming:** + AI red teaming ในปัจจุบันครอบคลุมทั้งผลลัพธ์ด้านความปลอดภัยและ AI ที่มีความรับผิดชอบ (RAI) โดยปกติแล้ว red teaming จะมุ่งเน้นไปที่ด้านความปลอดภัย โดยมองโมเดลเป็นเวกเตอร์ (เช่น การขโมยโมเดลพื้นฐาน) อย่างไรก็ตาม ระบบ AI นำเสนอช่องโหว่ด้านความปลอดภัยใหม่ ๆ (เช่น การฉีดคำสั่ง การปนเปื้อนข้อมูล) ซึ่งจำเป็นต้องให้ความสนใจเป็นพิเศษ นอกเหนือจากความปลอดภัยแล้ว AI red teaming ยังตรวจสอบปัญหาด้านความเป็นธรรม (เช่น การเหมารวม) และเนื้อหาที่เป็นอันตราย (เช่น การยกย่องความรุนแรง) การระบุปัญหาเหล่านี้ตั้งแต่เนิ่น ๆ ช่วยให้สามารถจัดลำดับความสำคัญของการลงทุนในการป้องกันได้ +2. **ความล้มเหลวทั้งที่เป็นอันตรายและไม่เป็นอันตราย:** + AI red teaming พิจารณาความล้มเหลวทั้งจากมุมมองที่เป็นอันตรายและไม่เป็นอันตราย ตัวอย่างเช่น เมื่อ red teaming Bing ใหม่ เราไม่เพียงแต่สำรวจว่าผู้ไม่หวังดีสามารถบิดเบือนระบบได้อย่างไร แต่ยังพิจารณาว่าผู้ใช้ทั่วไปอาจพบเนื้อหาที่มีปัญหาหรือเป็นอันตรายได้อย่างไร แตกต่างจาก red teaming ด้านความปลอดภัยแบบดั้งเดิมที่มุ่งเน้นไปที่ผู้ไม่หวังดีเป็นหลัก AI red teaming คำนึงถึงบุคคลและความล้มเหลวที่อาจเกิดขึ้นในวงกว้างมากขึ้น +3. **ธรรมชาติที่เปลี่ยนแปลงได้ของระบบ AI:** + แอปพลิเคชัน AI มีการพัฒนาอย่างต่อเนื่อง ในแอปพลิเคชันโมเดลภาษาขนาดใหญ่ นักพัฒนาปรับตัวให้เข้ากับความต้องการที่เปลี่ยนแปลง การทำ red teaming อย่างต่อเนื่องช่วยให้มั่นใจได้ถึงการเฝ้าระวังและการปรับตัวต่อความเสี่ยงที่เปลี่ยนแปลงไป + +AI red teaming ไม่ได้ครอบคลุมทุกด้านและควรถือเป็นการเคลื่อนไหวเสริมต่อการควบคุมเพิ่มเติม เช่น [การควบคุมการเข้าถึงตามบทบาท (RBAC)](https://learn.microsoft.com/azure/ai-services/openai/how-to/role-based-access-control?WT.mc_id=academic-105485-koreyst) และโซลูชันการจัดการข้อมูลที่ครอบคลุม มันถูกออกแบบมาเพื่อเสริมกลยุทธ์ด้านความปลอดภัยที่มุ่งเน้นการใช้โซลูชัน AI ที่ปลอดภัยและมีความรับผิดชอบ โดยคำนึงถึงความเป็นส่วนตัวและความปลอดภัย พร้อมทั้งมุ่งลดอคติ เนื้อหาที่เป็นอันตราย และข้อมูลที่ผิดพลาดซึ่งอาจทำลายความเชื่อมั่นของผู้ใช้ + +นี่คือรายการการอ่านเพิ่มเติมที่สามารถช่วยให้คุณเข้าใจว่า red teaming สามารถช่วยระบุและลดความเสี่ยงในระบบ AI ของคุณได้อย่างไร: + +- [การวางแผน red teaming สำหรับโมเดลภาษาขนาดใหญ่ (LLMs) และแอปพลิเคชันของพวกมัน](https://learn.microsoft.com/azure/ai-services/openai/concepts/red-teaming?WT.mc_id=academic-105485-koreyst) +- [เครือข่าย OpenAI Red Teaming คืออะไร?](https://openai.com/blog/red-teaming-network?WT.mc_id=academic-105485-koreyst) +- [AI Red Teaming - แนวปฏิบัติสำคัญในการสร้างโซลูชัน AI ที่ปลอดภัยและมีความรับผิดชอบมากขึ้น](https://rodtrent.substack.com/p/ai-red-teaming?WT.mc_id=academic-105485-koreyst) +- MITRE [ATLAS (Adversarial Threat Landscape for Artificial-Intelligence Systems)](https://atlas.mitre.org/?WT.mc_id=academic-105485-koreyst) ฐานความรู้เกี่ยวกับกลยุทธ์และเทคนิคที่ผู้ไม่หวังดีใช้ในการโจมตีระบบ AI ในโลกจริง + +## ทดสอบความรู้ + +วิธีการที่ดีในการรักษาความสมบูรณ์ของข้อมูลและป้องกันการใช้งานในทางที่ผิดคืออะไร? + +1. มีการควบคุมการเข้าถึงข้อมูลและการจัดการข้อมูลที่แข็งแกร่งตามบทบาท +1. ดำเนินการและตรวจสอบการติดป้ายข้อมูลเพื่อป้องกันการแสดงข้อมูลผิดหรือการใช้งานในทางที่ผิด +1. ตรวจสอบให้แน่ใจว่าโครงสร้างพื้นฐาน AI ของคุณรองรับการกรองเนื้อหา + +A:1, แม้ว่าทั้งสามข้อจะเป็นคำแนะนำที่ดี การตรวจสอบให้แน่ใจว่าคุณกำหนดสิทธิ์การเข้าถึงข้อมูลที่เหมาะสมแก่ผู้ใช้จะช่วยป้องกันการบิดเบือนและการแสดงข้อมูลผิดที่ใช้ใน LLMs ได้อย่างมาก + +## 🚀 ความท้าทาย + +อ่านเพิ่มเติมเกี่ยวกับวิธีที่คุณสามารถ [ควบคุมและปกป้องข้อมูลที่ละเอียดอ่อน](https://learn.microsoft.com/training/paths/purview-protect-govern-ai/?WT.mc_id=academic-105485-koreyst) ในยุคของ AI + +## ทำได้ดีมาก, เรียนรู้ต่อไป + +หลังจากจบบทเรียนนี้ ลองดู [คอลเลกชันการเรียนรู้ Generative AI](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) เพื่อเพิ่มพูนความรู้เกี่ยวกับ Generative AI ของคุณ! + +ไปที่บทเรียนที่ 14 ซึ่งเราจะดู [วงจรชีวิตของแอปพลิเคชัน Generative AI](../14-the-generative-ai-application-lifecycle/README.md?WT.mc_id=academic-105485-koreyst)! + +--- + +**ข้อจำกัดความรับผิดชอบ**: +เอกสารนี้ได้รับการแปลโดยใช้บริการแปลภาษา AI [Co-op Translator](https://github.com/Azure/co-op-translator) แม้ว่าเราจะพยายามให้การแปลมีความถูกต้อง แต่โปรดทราบว่าการแปลโดยอัตโนมัติอาจมีข้อผิดพลาดหรือความไม่ถูกต้อง เอกสารต้นฉบับในภาษาดั้งเดิมควรถือเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลที่สำคัญ ขอแนะนำให้ใช้บริการแปลภาษามืออาชีพ เราไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความผิดที่เกิดจากการใช้การแปลนี้ \ No newline at end of file diff --git a/translations/th/14-the-generative-ai-application-lifecycle/README.md b/translations/th/14-the-generative-ai-application-lifecycle/README.md index 87724ddfb8..06414a9f0e 100644 --- a/translations/th/14-the-generative-ai-application-lifecycle/README.md +++ b/translations/th/14-the-generative-ai-application-lifecycle/README.md @@ -1,98 +1,101 @@ - -[![Integrating with function calling](../../../translated_images/14-lesson-banner.066d74a31727ac121eeac06376a068a397d8e335281e63ce94130d11f516e46b.th.png)](https://aka.ms/gen-ai-lesson14-gh?WT.mc_id=academic-105485-koreyst) - -# วงจรชีวิตแอปพลิเคชัน Generative AI - -คำถามสำคัญสำหรับแอปพลิเคชัน AI ทุกตัวคือความเกี่ยวข้องของฟีเจอร์ AI เนื่องจาก AI เป็นสาขาที่พัฒนาอย่างรวดเร็ว เพื่อให้แอปพลิเคชันของคุณยังคงมีความเกี่ยวข้อง เชื่อถือได้ และแข็งแกร่ง คุณจึงต้องติดตาม ประเมินผล และปรับปรุงอย่างต่อเนื่อง นี่คือจุดที่วงจรชีวิตของ generative AI เข้ามามีบทบาท - -วงจรชีวิต generative AI เป็นกรอบแนวทางที่ช่วยนำทางคุณผ่านขั้นตอนการพัฒนา การนำไปใช้ และการดูแลรักษาแอปพลิเคชัน generative AI ช่วยให้คุณกำหนดเป้าหมาย วัดผลการทำงาน ระบุปัญหา และนำแนวทางแก้ไขมาใช้ นอกจากนี้ยังช่วยให้แอปพลิเคชันของคุณสอดคล้องกับมาตรฐานทางจริยธรรมและกฎหมายของสาขาและผู้มีส่วนได้ส่วนเสีย ด้วยการปฏิบัติตามวงจรชีวิต generative AI คุณจะมั่นใจได้ว่าแอปพลิเคชันของคุณจะสร้างคุณค่าและตอบสนองความต้องการของผู้ใช้เสมอ - -## บทนำ - -ในบทนี้ คุณจะได้เรียนรู้เกี่ยวกับ: - -- ความเปลี่ยนแปลงแนวคิดจาก MLOps สู่ LLMOps -- วงจรชีวิตของ LLM -- เครื่องมือสำหรับวงจรชีวิต -- การวัดผลและประเมินผลวงจรชีวิต - -## ความเปลี่ยนแปลงแนวคิดจาก MLOps สู่ LLMOps - -LLM เป็นเครื่องมือใหม่ในคลัง AI ที่มีพลังมหาศาลในการวิเคราะห์และสร้างเนื้อหาสำหรับแอปพลิเคชัน อย่างไรก็ตามพลังนี้ก็ส่งผลต่อวิธีการจัดการงาน AI และ Machine Learning แบบดั้งเดิม - -ด้วยเหตุนี้ เราจึงต้องมีแนวคิดใหม่เพื่อปรับใช้เครื่องมือนี้อย่างเหมาะสมและมีแรงจูงใจที่ถูกต้อง เราสามารถแบ่งแอป AI รุ่นเก่าเป็น "ML Apps" และแอป AI รุ่นใหม่เป็น "GenAI Apps" หรือแค่ "AI Apps" เพื่อสะท้อนเทคโนโลยีและเทคนิคที่ใช้ในแต่ละช่วงเวลา การเปลี่ยนแปลงนี้ส่งผลต่อแนวคิดของเราในหลายด้าน ดูการเปรียบเทียบต่อไปนี้ - -![LLMOps vs. MLOps comparison](../../../translated_images/01-llmops-shift.29bc933cb3bb0080a562e1655c0c719b71a72c3be6252d5c564b7f598987e602.th.png) - -สังเกตว่าใน LLMOps เราจะเน้นไปที่นักพัฒนาแอป ใช้การผสานรวมเป็นจุดสำคัญ ใช้ "Models-as-a-Service" และพิจารณาเมตริกในประเด็นต่อไปนี้ - -- คุณภาพ: คุณภาพของการตอบกลับ -- อันตราย: AI ที่รับผิดชอบ -- ความซื่อสัตย์: ความถูกต้องของการตอบกลับ (สมเหตุสมผลหรือไม่? ถูกต้องหรือเปล่า?) -- ค่าใช้จ่าย: งบประมาณของโซลูชัน -- ความหน่วง: เวลาตอบสนองเฉลี่ยต่อโทเค็น - -## วงจรชีวิตของ LLM - -ก่อนอื่น เพื่อเข้าใจวงจรชีวิตและการปรับเปลี่ยนต่าง ๆ ให้ดูอินโฟกราฟิกต่อไปนี้ - -![LLMOps infographic](../../../translated_images/02-llmops.70a942ead05a7645db740f68727d90160cb438ab71f0fb20548bc7fe5cad83ff.th.png) - -อย่างที่คุณเห็น วงจรชีวิตนี้แตกต่างจากวงจรชีวิตทั่วไปของ MLOps อย่างมาก LLM มีความต้องการใหม่ ๆ มากมาย เช่น การใช้ Prompting เทคนิคต่าง ๆ เพื่อปรับปรุงคุณภาพ (Fine-Tuning, RAG, Meta-Prompts) การประเมินและความรับผิดชอบใน AI ที่รับผิดชอบ และเมตริกการประเมินใหม่ ๆ (คุณภาพ อันตราย ความซื่อสัตย์ ค่าใช้จ่าย และความหน่วง) - -ตัวอย่างเช่น ลองดูวิธีการคิดไอเดีย เราใช้ prompt engineering เพื่อทดลองกับ LLM หลายตัวเพื่อสำรวจความเป็นไปได้และทดสอบสมมติฐานว่าถูกต้องหรือไม่ - -โปรดทราบว่านี่ไม่ใช่กระบวนการเชิงเส้น แต่เป็นวงจรที่บูรณาการ มีการทำซ้ำและมีวงจรหลักครอบคลุม - -เราจะสำรวจขั้นตอนเหล่านี้อย่างไร? มาดูรายละเอียดของการสร้างวงจรชีวิตกัน - -![LLMOps Workflow](../../../translated_images/03-llm-stage-flows.3a1e1c401235a6cfa886ed6ba04aa52a096a545e1bc44fa54d7d5983a7201892.th.png) - -อาจดูซับซ้อนเล็กน้อย ให้เรามุ่งเน้นที่สามขั้นตอนใหญ่ก่อน - -1. การคิดไอเดีย/การสำรวจ: การสำรวจ ในขั้นตอนนี้เราสามารถสำรวจตามความต้องการทางธุรกิจของเรา สร้างต้นแบบ สร้าง [PromptFlow](https://microsoft.github.io/promptflow/index.html?WT.mc_id=academic-105485-koreyst) และทดสอบว่ามีประสิทธิภาพพอสำหรับสมมติฐานของเราหรือไม่ -1. การสร้าง/การเสริม: การนำไปใช้ ตอนนี้เริ่มประเมินข้อมูลชุดใหญ่ขึ้น ใช้เทคนิคต่าง ๆ เช่น Fine-tuning และ RAG เพื่อตรวจสอบความแข็งแกร่งของโซลูชัน หากไม่ผ่าน อาจต้องนำไปใช้ใหม่ เพิ่มขั้นตอนใหม่ในกระบวนการ หรือปรับโครงสร้างข้อมูล หลังจากทดสอบกระบวนการและขนาดแล้ว หากผ่านและตรวจสอบเมตริกเรียบร้อย ก็พร้อมสำหรับขั้นตอนถัดไป -1. การปฏิบัติการ: การผสานรวม ตอนนี้เพิ่มระบบการติดตามและแจ้งเตือน การนำไปใช้ และการผสานรวมแอปพลิเคชันเข้ากับระบบของเรา - -จากนั้นจะมีวงจรหลักของการบริหารจัดการที่เน้นเรื่องความปลอดภัย การปฏิบัติตามกฎระเบียบ และการกำกับดูแล - -ขอแสดงความยินดี ตอนนี้แอป AI ของคุณพร้อมใช้งานแล้ว สำหรับประสบการณ์จริง ลองดู [Contoso Chat Demo.](https://nitya.github.io/contoso-chat/?WT.mc_id=academic-105485-koreys) - -แล้วเราจะใช้เครื่องมืออะไรได้บ้าง? - -## เครื่องมือสำหรับวงจรชีวิต - -สำหรับเครื่องมือ Microsoft มี [Azure AI Platform](https://azure.microsoft.com/solutions/ai/?WT.mc_id=academic-105485-koreys) และ [PromptFlow](https://microsoft.github.io/promptflow/index.html?WT.mc_id=academic-105485-koreyst) ที่ช่วยให้วงจรชีวิตของคุณง่ายต่อการนำไปใช้และพร้อมใช้งาน - -[Azure AI Platform](https://azure.microsoft.com/solutions/ai/?WT.mc_id=academic-105485-koreys) ช่วยให้คุณใช้ [AI Studio](https://ai.azure.com/?WT.mc_id=academic-105485-koreys) ซึ่งเป็นเว็บพอร์ทัลที่ให้คุณสำรวจโมเดล ตัวอย่าง และเครื่องมือต่าง ๆ จัดการทรัพยากรของคุณ พัฒนากระบวนการ UI และตัวเลือก SDK/CLI สำหรับการพัฒนาแบบ Code-First - -![Azure AI possibilities](../../../translated_images/04-azure-ai-platform.80203baf03a12fa8b166e194928f057074843d1955177baf0f5b53d50d7b6153.th.png) - -Azure AI ช่วยให้คุณใช้ทรัพยากรหลากหลายเพื่อจัดการการดำเนินงาน บริการ โครงการ การค้นหาเวกเตอร์ และฐานข้อมูล - -![LLMOps with Azure AI](../../../translated_images/05-llm-azure-ai-prompt.a5ce85cdbb494bdf95420668e3464aae70d8b22275a744254e941dd5e73ae0d2.th.png) - -สร้างตั้งแต่ Proof-of-Concept (POC) จนถึงแอปพลิเคชันขนาดใหญ่ด้วย PromptFlow: - -- ออกแบบและสร้างแอปจาก VS Code ด้วยเครื่องมือที่ใช้งานง่ายทั้งแบบภาพและฟังก์ชัน -- ทดสอบและปรับแต่งแอปของคุณเพื่อให้ได้ AI คุณภาพสูงอย่างง่ายดาย -- ใช้ Azure AI Studio เพื่อผสานรวมและทำซ้ำกับคลาวด์ พร้อมส่งและนำไปใช้เพื่อการผสานรวมที่รวดเร็ว - -![LLMOps with PromptFlow](../../../translated_images/06-llm-promptflow.a183eba07a3a7fdf4aa74db92a318b8cbbf4a608671f6b166216358d3203d8d4.th.png) - -## ดีมาก! เรียนรู้ต่อไป! - -เยี่ยมมาก ตอนนี้เรียนรู้เพิ่มเติมเกี่ยวกับการจัดโครงสร้างแอปพลิเคชันเพื่อใช้แนวคิดเหล่านี้กับ [Contoso Chat App](https://nitya.github.io/contoso-chat/?WT.mc_id=academic-105485-koreyst) เพื่อดูว่า Cloud Advocacy นำแนวคิดเหล่านี้ไปใช้ในงานสาธิตอย่างไร สำหรับเนื้อหาเพิ่มเติม ดู [Ignite breakout session!](https://www.youtube.com/watch?v=DdOylyrTOWg) - -ตอนนี้ ไปดูบทเรียนที่ 15 เพื่อเข้าใจว่า [Retrieval Augmented Generation และ Vector Databases](../15-rag-and-vector-databases/README.md?WT.mc_id=academic-105485-koreyst) ส่งผลต่อ Generative AI อย่างไร และช่วยสร้างแอปพลิเคชันที่น่าสนใจมากขึ้น! - -**ข้อจำกัดความรับผิดชอบ**: -เอกสารนี้ได้รับการแปลโดยใช้บริการแปลภาษาอัตโนมัติ [Co-op Translator](https://github.com/Azure/co-op-translator) แม้เราจะพยายามให้ความถูกต้องสูงสุด แต่โปรดทราบว่าการแปลอัตโนมัติอาจมีข้อผิดพลาดหรือความไม่ถูกต้อง เอกสารต้นฉบับในภาษาต้นทางถือเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลที่สำคัญ ขอแนะนำให้ใช้บริการแปลโดยผู้เชี่ยวชาญมนุษย์ เราไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความผิดใด ๆ ที่เกิดจากการใช้การแปลนี้ \ No newline at end of file + +[![การรวมเข้ากับการเรียกฟังก์ชัน](../../../translated_images/14-lesson-banner.066d74a31727ac121eeac06376a068a397d8e335281e63ce94130d11f516e46b.th.png)](https://youtu.be/ewtQY_RJrzs?si=dyJ2bjiljH7UUHCh) + +# วงจรชีวิตของแอปพลิเคชัน Generative AI + +คำถามสำคัญสำหรับแอปพลิเคชัน AI ทุกประเภทคือความเกี่ยวข้องของฟีเจอร์ AI เนื่องจาก AI เป็นสาขาที่พัฒนาอย่างรวดเร็ว เพื่อให้แอปพลิเคชันของคุณยังคงมีความเกี่ยวข้อง เชื่อถือได้ และแข็งแกร่ง คุณจำเป็นต้องติดตาม ประเมินผล และปรับปรุงอย่างต่อเนื่อง นี่คือจุดที่วงจรชีวิตของ Generative AI เข้ามามีบทบาท + +วงจรชีวิตของ Generative AI เป็นกรอบแนวทางที่ช่วยนำคุณผ่านขั้นตอนต่างๆ ในการพัฒนา การปรับใช้ และการดูแลรักษาแอปพลิเคชัน Generative AI มันช่วยให้คุณกำหนดเป้าหมาย วัดผลการดำเนินงาน ระบุความท้าทาย และดำเนินการแก้ไข นอกจากนี้ยังช่วยให้คุณปรับแอปพลิเคชันให้สอดคล้องกับมาตรฐานทางจริยธรรมและกฎหมายในสาขาของคุณและผู้มีส่วนได้ส่วนเสียของคุณ ด้วยการปฏิบัติตามวงจรชีวิตของ Generative AI คุณสามารถมั่นใจได้ว่าแอปพลิเคชันของคุณจะมอบคุณค่าและตอบสนองความต้องการของผู้ใช้เสมอ + +## บทนำ + +ในบทนี้ คุณจะได้: + +- เข้าใจการเปลี่ยนแปลงจาก MLOps ไปสู่ LLMOps +- วงจรชีวิตของ LLM +- เครื่องมือสำหรับวงจรชีวิต +- การวัดผลและการประเมินวงจรชีวิต + +## เข้าใจการเปลี่ยนแปลงจาก MLOps ไปสู่ LLMOps + +LLMs เป็นเครื่องมือใหม่ในคลังแสงของปัญญาประดิษฐ์ พวกมันทรงพลังอย่างมากในงานวิเคราะห์และการสร้างสำหรับแอปพลิเคชัน อย่างไรก็ตามพลังนี้มีผลกระทบต่อวิธีที่เราปรับปรุงงาน AI และ Machine Learning แบบคลาสสิก + +ด้วยเหตุนี้ เราจำเป็นต้องมีกรอบแนวคิดใหม่เพื่อปรับเครื่องมือนี้ให้เข้ากับการทำงานแบบไดนามิกและมีแรงจูงใจที่เหมาะสม เราสามารถจัดหมวดหมู่แอป AI รุ่นเก่าเป็น "ML Apps" และแอป AI รุ่นใหม่เป็น "GenAI Apps" หรือเพียงแค่ "AI Apps" เพื่อสะท้อนเทคโนโลยีและเทคนิคที่ใช้ในช่วงเวลานั้น การเปลี่ยนแปลงนี้ส่งผลต่อการเล่าเรื่องในหลายๆ ด้าน ลองดูการเปรียบเทียบต่อไปนี้ + +![การเปรียบเทียบ LLMOps กับ MLOps](../../../translated_images/01-llmops-shift.29bc933cb3bb0080a562e1655c0c719b71a72c3be6252d5c564b7f598987e602.th.png) + +สังเกตว่าใน LLMOps เรามุ่งเน้นไปที่นักพัฒนาแอปมากขึ้น โดยใช้การรวมระบบเป็นจุดสำคัญ ใช้ "Models-as-a-Service" และพิจารณาประเด็นต่อไปนี้สำหรับการวัดผล + +- คุณภาพ: คุณภาพของการตอบกลับ +- อันตราย: AI ที่มีความรับผิดชอบ +- ความซื่อสัตย์: ความสมเหตุสมผลของการตอบกลับ (สมเหตุสมผลหรือไม่? ถูกต้องหรือไม่?) +- ค่าใช้จ่าย: งบประมาณของโซลูชัน +- ความล่าช้า: เวลาตอบกลับเฉลี่ยต่อโทเค็น + +## วงจรชีวิตของ LLM + +ก่อนอื่น เพื่อทำความเข้าใจวงจรชีวิตและการปรับเปลี่ยน ลองดูอินโฟกราฟิกต่อไปนี้ + +![อินโฟกราฟิก LLMOps](../../../translated_images/02-llmops.70a942ead05a7645db740f68727d90160cb438ab71f0fb20548bc7fe5cad83ff.th.png) + +คุณอาจสังเกตว่านี่แตกต่างจากวงจรชีวิตปกติของ MLOps LLMs มีข้อกำหนดใหม่ๆ มากมาย เช่น การตั้งค่าคำสั่ง (Prompting) เทคนิคต่างๆ เพื่อปรับปรุงคุณภาพ (Fine-Tuning, RAG, Meta-Prompts) การประเมินผลและความรับผิดชอบที่แตกต่างกันด้วย AI ที่มีความรับผิดชอบ และสุดท้ายคือเมตริกการประเมินผลใหม่ (คุณภาพ อันตราย ความซื่อสัตย์ ค่าใช้จ่าย และความล่าช้า) + +ตัวอย่างเช่น ลองดูวิธีที่เราสร้างแนวคิด โดยใช้การออกแบบคำสั่ง (Prompt Engineering) เพื่อทดลองกับ LLMs ต่างๆ เพื่อสำรวจความเป็นไปได้และทดสอบว่าข้อสมมติฐานของพวกเขาอาจถูกต้องหรือไม่ + +โปรดทราบว่านี่ไม่ใช่กระบวนการเชิงเส้น แต่เป็นการวนซ้ำแบบบูรณาการและมีวงจรที่ครอบคลุม + +เราจะสำรวจขั้นตอนเหล่านั้นได้อย่างไร? ลองมาดูรายละเอียดเกี่ยวกับวิธีการสร้างวงจรชีวิต + +![ขั้นตอนการทำงานของ LLMOps](../../../translated_images/03-llm-stage-flows.3a1e1c401235a6cfa886ed6ba04aa52a096a545e1bc44fa54d7d5983a7201892.th.png) + +อาจดูซับซ้อนเล็กน้อย ลองมุ่งเน้นไปที่สามขั้นตอนใหญ่ก่อน + +1. การสร้างแนวคิด/การสำรวจ: การสำรวจ ที่นี่เราสามารถสำรวจตามความต้องการทางธุรกิจของเรา การสร้างต้นแบบ การสร้าง [PromptFlow](https://microsoft.github.io/promptflow/index.html?WT.mc_id=academic-105485-koreyst) และทดสอบว่ามีประสิทธิภาพเพียงพอสำหรับข้อสมมติฐานของเราหรือไม่ +1. การสร้าง/การปรับปรุง: การดำเนินการ ตอนนี้เราเริ่มประเมินสำหรับชุดข้อมูลขนาดใหญ่ขึ้น ใช้เทคนิค เช่น Fine-tuning และ RAG เพื่อตรวจสอบความแข็งแกร่งของโซลูชันของเรา หากไม่เป็นไปตามที่คาดหวัง การดำเนินการใหม่ การเพิ่มขั้นตอนใหม่ในกระบวนการ หรือการปรับโครงสร้างข้อมูลอาจช่วยได้ หลังจากทดสอบกระบวนการและขนาดของเรา หากมันทำงานและตรวจสอบเมตริกของเรา ก็พร้อมสำหรับขั้นตอนต่อไป +1. การดำเนินการ: การรวมระบบ ตอนนี้เพิ่มระบบการติดตามและการแจ้งเตือนในระบบของเรา การปรับใช้และการรวมแอปพลิเคชันเข้ากับแอปพลิเคชันของเรา + +จากนั้นเรามีวงจรที่ครอบคลุมของการจัดการ โดยมุ่งเน้นที่ความปลอดภัย การปฏิบัติตามข้อกำหนด และการกำกับดูแล + +ยินดีด้วย ตอนนี้คุณมีแอป AI ที่พร้อมใช้งานและดำเนินการได้แล้ว สำหรับประสบการณ์แบบลงมือปฏิบัติ ลองดู [Contoso Chat Demo.](https://nitya.github.io/contoso-chat/?WT.mc_id=academic-105485-koreys) + +ตอนนี้เราสามารถใช้เครื่องมืออะไรได้บ้าง? + +## เครื่องมือสำหรับวงจรชีวิต + +สำหรับเครื่องมือ Microsoft มี [Azure AI Platform](https://azure.microsoft.com/solutions/ai/?WT.mc_id=academic-105485-koreys) และ [PromptFlow](https://microsoft.github.io/promptflow/index.html?WT.mc_id=academic-105485-koreyst) ที่ช่วยให้การดำเนินการวงจรชีวิตของคุณง่ายและพร้อมใช้งาน + +[Azure AI Platform](https://azure.microsoft.com/solutions/ai/?WT.mc_id=academic-105485-koreys) ช่วยให้คุณใช้ [AI Studio](https://ai.azure.com/?WT.mc_id=academic-105485-koreys) AI Studio เป็นพอร์ทัลเว็บที่ช่วยให้คุณสำรวจโมเดล ตัวอย่าง และเครื่องมือ จัดการทรัพยากรของคุณ การพัฒนา UI และตัวเลือก SDK/CLI สำหรับการพัฒนาที่เน้นโค้ดเป็นหลัก + +![ความเป็นไปได้ของ Azure AI](../../../translated_images/04-azure-ai-platform.80203baf03a12fa8b166e194928f057074843d1955177baf0f5b53d50d7b6153.th.png) + +Azure AI ช่วยให้คุณใช้ทรัพยากรหลายอย่างเพื่อจัดการการดำเนินงาน บริการ โครงการ การค้นหาแบบเวกเตอร์ และความต้องการฐานข้อมูลของคุณ + +![LLMOps กับ Azure AI](../../../translated_images/05-llm-azure-ai-prompt.a5ce85cdbb494bdf95420668e3464aae70d8b22275a744254e941dd5e73ae0d2.th.png) + +สร้างตั้งแต่ Proof-of-Concept (POC) จนถึงแอปพลิเคชันขนาดใหญ่ด้วย PromptFlow: + +- ออกแบบและสร้างแอปจาก VS Code ด้วยเครื่องมือที่มีทั้งภาพและฟังก์ชัน +- ทดสอบและปรับแต่งแอปของคุณเพื่อให้ได้ AI ที่มีคุณภาพอย่างง่ายดาย +- ใช้ Azure AI Studio เพื่อรวมและปรับปรุงกับคลาวด์ ผลักดันและปรับใช้เพื่อการรวมระบบอย่างรวดเร็ว + +![LLMOps กับ PromptFlow](../../../translated_images/06-llm-promptflow.a183eba07a3a7fdf4aa74db92a318b8cbbf4a608671f6b166216358d3203d8d4.th.png) + +## เยี่ยม! เรียนรู้ต่อไป! + +ยอดเยี่ยม ตอนนี้เรียนรู้เพิ่มเติมเกี่ยวกับวิธีที่เราโครงสร้างแอปพลิเคชันเพื่อใช้แนวคิดเหล่านี้กับ [Contoso Chat App](https://nitya.github.io/contoso-chat/?WT.mc_id=academic-105485-koreyst) เพื่อดูว่า Cloud Advocacy นำแนวคิดเหล่านี้ไปใช้ในตัวอย่างได้อย่างไร สำหรับเนื้อหาเพิ่มเติม ลองดู [Ignite breakout session! +](https://www.youtube.com/watch?v=DdOylyrTOWg) + +ตอนนี้ ลองดูบทเรียนที่ 15 เพื่อทำความเข้าใจว่า [Retrieval Augmented Generation และ Vector Databases](../15-rag-and-vector-databases/README.md?WT.mc_id=academic-105485-koreyst) ส่งผลต่อ Generative AI และช่วยสร้างแอปพลิเคชันที่น่าสนใจมากขึ้น! + +--- + +**ข้อจำกัดความรับผิดชอบ**: +เอกสารนี้ได้รับการแปลโดยใช้บริการแปลภาษา AI [Co-op Translator](https://github.com/Azure/co-op-translator) แม้ว่าเราจะพยายามให้การแปลมีความถูกต้อง แต่โปรดทราบว่าการแปลโดยอัตโนมัติอาจมีข้อผิดพลาดหรือความไม่ถูกต้อง เอกสารต้นฉบับในภาษาดั้งเดิมควรถือเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลที่สำคัญ ขอแนะนำให้ใช้บริการแปลภาษามืออาชีพ เราไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความผิดที่เกิดจากการใช้การแปลนี้ \ No newline at end of file diff --git a/translations/th/15-rag-and-vector-databases/README.md b/translations/th/15-rag-and-vector-databases/README.md index 6adf096ace..d6552d5d71 100644 --- a/translations/th/15-rag-and-vector-databases/README.md +++ b/translations/th/15-rag-and-vector-databases/README.md @@ -1,279 +1,281 @@ - -# Retrieval Augmented Generation (RAG) และฐานข้อมูลเวกเตอร์ - -[![Retrieval Augmented Generation (RAG) and Vector Databases](../../../translated_images/15-lesson-banner.ac49e59506175d4fc6ce521561dab2f9ccc6187410236376cfaed13cde371b90.th.png)](https://aka.ms/gen-ai-lesson15-gh?WT.mc_id=academic-105485-koreyst) - -ในบทเรียนเกี่ยวกับแอปพลิเคชันการค้นหา เราได้เรียนรู้คร่าวๆ เกี่ยวกับการผสานข้อมูลของคุณเองเข้ากับ Large Language Models (LLMs) ในบทเรียนนี้ เราจะเจาะลึกแนวคิดการเชื่อมโยงข้อมูลของคุณกับแอปพลิเคชัน LLM ขั้นตอนการทำงาน และวิธีการจัดเก็บข้อมูล ทั้งในรูปแบบ embeddings และข้อความ - -> **วิดีโอจะมาเร็วๆ นี้** - -## บทนำ - -ในบทเรียนนี้เราจะครอบคลุมเรื่องต่อไปนี้: - -- แนะนำ RAG คืออะไร และเหตุใดจึงนำมาใช้ใน AI (ปัญญาประดิษฐ์) - -- ทำความเข้าใจฐานข้อมูลเวกเตอร์และการสร้างฐานข้อมูลสำหรับแอปพลิเคชันของเรา - -- ตัวอย่างการใช้งานจริงเกี่ยวกับการผสาน RAG เข้ากับแอปพลิเคชัน - -## เป้าหมายการเรียนรู้ - -หลังจากจบบทเรียนนี้ คุณจะสามารถ: - -- อธิบายความสำคัญของ RAG ในการดึงข้อมูลและประมวลผลข้อมูล - -- ตั้งค่าแอปพลิเคชัน RAG และเชื่อมโยงข้อมูลของคุณกับ LLM - -- ผสาน RAG และฐานข้อมูลเวกเตอร์อย่างมีประสิทธิภาพในแอปพลิเคชัน LLM - -## สถานการณ์ของเรา: การเสริม LLM ด้วยข้อมูลของเราเอง - -สำหรับบทเรียนนี้ เราต้องการเพิ่มบันทึกของเราเองลงในสตาร์ทอัพด้านการศึกษา เพื่อให้แชทบอทสามารถเข้าถึงข้อมูลเพิ่มเติมเกี่ยวกับหัวข้อต่างๆ จากบันทึกที่เรามี ผู้เรียนจะสามารถศึกษาดีขึ้นและเข้าใจหัวข้อต่างๆ ได้ง่ายขึ้น ช่วยให้ทบทวนเพื่อสอบได้สะดวกขึ้น ในการสร้างสถานการณ์นี้ เราจะใช้: - -- `Azure OpenAI:` LLM ที่เราจะใช้สร้างแชทบอท - -- `AI for beginners' lesson on Neural Networks:` ข้อมูลที่เราจะใช้เชื่อมโยงกับ LLM - -- `Azure AI Search` และ `Azure Cosmos DB:` ฐานข้อมูลเวกเตอร์สำหรับจัดเก็บข้อมูลและสร้างดัชนีการค้นหา - -ผู้ใช้จะสามารถสร้างแบบทดสอบฝึกหัดจากบันทึกของตนเอง สร้างแฟลชการ์ดสำหรับทบทวน และสรุปเนื้อหาให้กระชับ เพื่อเริ่มต้น มาดูว่า RAG คืออะไรและทำงานอย่างไร: - -## Retrieval Augmented Generation (RAG) - -แชทบอทที่ขับเคลื่อนด้วย LLM จะประมวลผลคำถามของผู้ใช้เพื่อสร้างคำตอบ ออกแบบมาให้โต้ตอบและสนทนากับผู้ใช้ในหัวข้อต่างๆ ได้หลากหลาย อย่างไรก็ตาม คำตอบของมันจะจำกัดอยู่ที่บริบทที่ได้รับและข้อมูลการฝึกพื้นฐาน เช่น GPT-4 มีความรู้ถึงแค่กันยายน 2021 หมายความว่ามันไม่มีข้อมูลเกี่ยวกับเหตุการณ์หลังจากนั้น นอกจากนี้ ข้อมูลที่ใช้ฝึก LLM ยังไม่รวมข้อมูลลับ เช่น บันทึกส่วนตัวหรือคู่มือผลิตภัณฑ์ของบริษัท - -### วิธีการทำงานของ RAG (Retrieval Augmented Generation) - -![drawing showing how RAGs work](../../../translated_images/how-rag-works.f5d0ff63942bd3a638e7efee7a6fce7f0787f6d7a1fca4e43f2a7a4d03cde3e0.th.png) - -สมมติว่าคุณต้องการเปิดใช้งานแชทบอทที่สร้างแบบทดสอบจากบันทึกของคุณ คุณจะต้องเชื่อมต่อกับฐานความรู้ ซึ่งนี่คือที่มาของ RAG การทำงานของ RAG มีดังนี้: - -- **ฐานความรู้:** ก่อนการดึงข้อมูล เอกสารเหล่านี้ต้องถูกนำเข้าและประมวลผลล่วงหน้า โดยปกติจะแบ่งเอกสารขนาดใหญ่เป็นส่วนย่อยๆ แปลงเป็น text embedding และจัดเก็บในฐานข้อมูล - -- **คำถามของผู้ใช้:** ผู้ใช้ถามคำถาม - -- **การดึงข้อมูล:** เมื่อผู้ใช้ถามคำถาม โมเดล embedding จะดึงข้อมูลที่เกี่ยวข้องจากฐานความรู้เพื่อเพิ่มบริบทที่จะนำไปใช้ใน prompt - -- **การสร้างคำตอบแบบเสริม:** LLM จะปรับปรุงคำตอบโดยอิงจากข้อมูลที่ดึงมา ทำให้คำตอบไม่ได้ขึ้นอยู่กับข้อมูลที่ฝึกมาเท่านั้น แต่รวมถึงข้อมูลบริบทที่เพิ่มเข้ามา ข้อมูลที่ดึงมาจะช่วยเสริมคำตอบของ LLM จากนั้น LLM จะส่งคำตอบกลับไปยังผู้ใช้ - -![drawing showing how RAGs architecture](../../../translated_images/encoder-decode.f2658c25d0eadee2377bb28cf3aee8b67aa9249bf64d3d57bb9be077c4bc4e1a.th.png) - -สถาปัตยกรรมของ RAG ใช้ transformers ที่ประกอบด้วยสองส่วน คือ encoder และ decoder เช่น เมื่อผู้ใช้ถามคำถาม ข้อความนำเข้าจะถูก 'เข้ารหัส' เป็นเวกเตอร์ที่จับความหมายของคำ และเวกเตอร์เหล่านี้จะถูก 'ถอดรหัส' ไปยังดัชนีเอกสารของเรา และสร้างข้อความใหม่ตามคำถามของผู้ใช้ LLM ใช้โมเดล encoder-decoder เพื่อสร้างผลลัพธ์ - -มีสองวิธีในการใช้งาน RAG ตามงานวิจัยที่เสนอ: [Retrieval-Augmented Generation for Knowledge intensive NLP Tasks](https://arxiv.org/pdf/2005.11401.pdf?WT.mc_id=academic-105485-koreyst) คือ: - -- **_RAG-Sequence_** ใช้เอกสารที่ดึงมาเพื่อทำนายคำตอบที่ดีที่สุดสำหรับคำถามของผู้ใช้ - -- **RAG-Token** ใช้เอกสารเพื่อสร้าง token ถัดไป แล้วดึงข้อมูลเพื่อให้คำตอบกับคำถามของผู้ใช้ - -### ทำไมต้องใช้ RAG? - -- **ข้อมูลที่ครบถ้วน:** ช่วยให้คำตอบเป็นปัจจุบันและทันสมัย จึงเพิ่มประสิทธิภาพในงานเฉพาะด้านโดยเข้าถึงฐานความรู้ภายใน - -- ลดการสร้างข้อมูลเท็จโดยใช้ **ข้อมูลที่ตรวจสอบได้** ในฐานความรู้เพื่อให้บริบทกับคำถามของผู้ใช้ - -- **ประหยัดค่าใช้จ่าย** เพราะมีต้นทุนต่ำกว่าการปรับแต่ง LLM โดยตรง - -## การสร้างฐานความรู้ - -แอปพลิเคชันของเราจะอิงกับข้อมูลส่วนตัว เช่น บทเรียน Neural Network ในหลักสูตร AI For Beginners - -### ฐานข้อมูลเวกเตอร์ - -ฐานข้อมูลเวกเตอร์ แตกต่างจากฐานข้อมูลทั่วไป เพราะเป็นฐานข้อมูลเฉพาะที่ออกแบบมาเพื่อจัดเก็บ จัดการ และค้นหาเวกเตอร์ที่ฝังตัว (embedded vectors) ซึ่งเป็นการแทนข้อมูลเอกสารในรูปแบบตัวเลข การแปลงข้อมูลเป็น embeddings ช่วยให้ระบบ AI ของเราเข้าใจและประมวลผลข้อมูลได้ง่ายขึ้น - -เราจัดเก็บ embeddings ในฐานข้อมูลเวกเตอร์ เนื่องจาก LLM มีข้อจำกัดจำนวน token ที่รับเป็นอินพุต คุณไม่สามารถส่ง embeddings ทั้งหมดให้ LLM ได้ จึงต้องแบ่งเป็นส่วนย่อยๆ และเมื่อผู้ใช้ถามคำถาม embeddings ที่ใกล้เคียงกับคำถามจะถูกส่งกลับพร้อมกับ prompt การแบ่งส่วนยังช่วยลดค่าใช้จ่ายจากจำนวน token ที่ส่งผ่าน LLM - -ฐานข้อมูลเวกเตอร์ยอดนิยม เช่น Azure Cosmos DB, Clarifyai, Pinecone, Chromadb, ScaNN, Qdrant และ DeepLake คุณสามารถสร้างโมเดล Azure Cosmos DB โดยใช้ Azure CLI ด้วยคำสั่งดังนี้: - -```bash -az login -az group create -n -l -az cosmosdb create -n -r -az cosmosdb list-keys -n -g -``` - -### จากข้อความสู่ embeddings - -ก่อนจัดเก็บข้อมูล เราต้องแปลงเป็น vector embeddings ก่อน หากคุณทำงานกับเอกสารขนาดใหญ่หรือข้อความยาว สามารถแบ่งเป็นส่วนย่อยตามคำถามที่คาดว่าจะเจอ การแบ่งส่วนสามารถทำได้ระดับประโยค หรือระดับย่อหน้า เนื่องจากการแบ่งส่วนจะอิงความหมายจากคำรอบข้าง คุณสามารถเพิ่มบริบทอื่นๆ ให้กับแต่ละส่วน เช่น ชื่อเอกสาร หรือข้อความก่อนหลังส่วนย่อยนั้นๆ การแบ่งส่วนทำได้ดังนี้: - -```python -def split_text(text, max_length, min_length): - words = text.split() - chunks = [] - current_chunk = [] - - for word in words: - current_chunk.append(word) - if len(' '.join(current_chunk)) < max_length and len(' '.join(current_chunk)) > min_length: - chunks.append(' '.join(current_chunk)) - current_chunk = [] - - # If the last chunk didn't reach the minimum length, add it anyway - if current_chunk: - chunks.append(' '.join(current_chunk)) - - return chunks -``` - -เมื่อแบ่งส่วนแล้ว เราสามารถฝังข้อความโดยใช้โมเดล embedding ต่างๆ ได้ เช่น word2vec, ada-002 ของ OpenAI, Azure Computer Vision และอื่นๆ การเลือกโมเดลขึ้นอยู่กับภาษาที่ใช้ ประเภทเนื้อหาที่เข้ารหัส (ข้อความ/ภาพ/เสียง) ขนาดอินพุตที่โมเดลรองรับ และความยาวของผลลัพธ์ embedding - -ตัวอย่างข้อความที่ฝังโดยใช้โมเดล `text-embedding-ada-002` ของ OpenAI คือ: -![an embedding of the word cat](../../../translated_images/cat.74cbd7946bc9ca380a8894c4de0c706a4f85b16296ffabbf52d6175df6bf841e.th.png) - -## การดึงข้อมูลและการค้นหาเวกเตอร์ - -เมื่อผู้ใช้ถามคำถาม ตัวดึงข้อมูล (retriever) จะเปลี่ยนคำถามเป็นเวกเตอร์โดยใช้ query encoder จากนั้นค้นหาเวกเตอร์ที่เกี่ยวข้องในดัชนีเอกสาร เมื่อเสร็จแล้วจะเปลี่ยนเวกเตอร์ทั้งอินพุตและเอกสารเป็นข้อความและส่งผ่านไปยัง LLM - -### การดึงข้อมูล - -การดึงข้อมูลเกิดขึ้นเมื่อระบบพยายามค้นหาเอกสารจากดัชนีที่ตรงกับเกณฑ์การค้นหา เป้าหมายของตัวดึงข้อมูลคือการได้เอกสารที่ใช้สร้างบริบทและเชื่อมโยง LLM กับข้อมูลของคุณ - -มีหลายวิธีในการค้นหาในฐานข้อมูล เช่น: - -- **การค้นหาด้วยคำสำคัญ (Keyword search)** - ใช้สำหรับค้นหาข้อความ - -- **การค้นหาเชิงความหมาย (Semantic search)** - ใช้ความหมายเชิงบริบทของคำ - -- **การค้นหาเวกเตอร์ (Vector search)** - แปลงเอกสารจากข้อความเป็นเวกเตอร์โดยใช้โมเดล embedding การดึงข้อมูลจะทำโดยการค้นหาเอกสารที่เวกเตอร์ใกล้เคียงกับคำถามของผู้ใช้ - -- **แบบผสม (Hybrid)** - ผสมผสานทั้งการค้นหาด้วยคำสำคัญและเวกเตอร์ - -ความท้าทายของการดึงข้อมูลคือเมื่อไม่มีคำตอบที่คล้ายกับคำถามในฐานข้อมูล ระบบจะคืนข้อมูลที่ดีที่สุดที่หาได้ อย่างไรก็ตาม คุณสามารถใช้วิธีตั้งค่าระยะห่างสูงสุดสำหรับความเกี่ยวข้อง หรือใช้การค้นหาแบบผสมที่รวมทั้งคำสำคัญและเวกเตอร์ ในบทเรียนนี้เราจะใช้การค้นหาแบบผสม โดยเก็บข้อมูลใน dataframe ที่มีคอลัมน์เก็บส่วนย่อยและ embeddings - -### ความคล้ายคลึงของเวกเตอร์ - -ตัวดึงข้อมูลจะค้นหา embeddings ที่อยู่ใกล้กันในฐานความรู้ โดยจะเลือกเพื่อนบ้านที่ใกล้ที่สุด เพราะเป็นข้อความที่มีความคล้ายคลึงกัน ในสถานการณ์ที่ผู้ใช้ถามคำถาม คำถามจะถูกแปลงเป็น embedding แล้วจับคู่กับ embeddings ที่คล้ายกัน การวัดความคล้ายคลึงที่ใช้บ่อยคือ cosine similarity ซึ่งวัดจากมุมระหว่างเวกเตอร์สองตัว - -เราสามารถวัดความคล้ายคลึงด้วยวิธีอื่น เช่น Euclidean distance คือระยะทางตรงระหว่างจุดปลายเวกเตอร์ และ dot product ซึ่งวัดผลรวมของผลคูณขององค์ประกอบที่สอดคล้องกันของเวกเตอร์สองตัว - -### ดัชนีการค้นหา - -เมื่อทำการดึงข้อมูล เราต้องสร้างดัชนีการค้นหาสำหรับฐานความรู้ก่อน ดัชนีจะเก็บ embeddings และสามารถดึงส่วนที่คล้ายกันมากที่สุดได้อย่างรวดเร็วแม้ในฐานข้อมูลขนาดใหญ่ เราสามารถสร้างดัชนีในเครื่องได้โดยใช้คำสั่ง: - -```python -from sklearn.neighbors import NearestNeighbors - -embeddings = flattened_df['embeddings'].to_list() - -# Create the search index -nbrs = NearestNeighbors(n_neighbors=5, algorithm='ball_tree').fit(embeddings) - -# To query the index, you can use the kneighbors method -distances, indices = nbrs.kneighbors(embeddings) -``` - -### การจัดอันดับใหม่ (Re-ranking) - -เมื่อคุณดึงข้อมูลจากฐานข้อมูลแล้ว อาจต้องจัดเรียงผลลัพธ์จากความเกี่ยวข้องมากที่สุด LLM สำหรับการจัดอันดับใหม่ใช้ Machine Learning เพื่อปรับปรุงความเกี่ยวข้องของผลการค้นหาโดยจัดเรียงจากความเกี่ยวข้องสูงสุด ใน Azure AI Search การจัดอันดับใหม่จะทำโดยอัตโนมัติด้วย semantic reranker ตัวอย่างการทำงานของการจัดอันดับใหม่โดยใช้ nearest neighbours: - -```python -# Find the most similar documents -distances, indices = nbrs.kneighbors([query_vector]) - -index = [] -# Print the most similar documents -for i in range(3): - index = indices[0][i] - for index in indices[0]: - print(flattened_df['chunks'].iloc[index]) - print(flattened_df['path'].iloc[index]) - print(flattened_df['distances'].iloc[index]) - else: - print(f"Index {index} not found in DataFrame") -``` - -## การรวมทุกอย่างเข้าด้วยกัน - -ขั้นตอนสุดท้ายคือการเพิ่ม LLM ของเราเข้าไป เพื่อให้ได้คำตอบที่เชื่อมโยงกับข้อมูลของเรา เราสามารถทำได้ดังนี้: - -```python -user_input = "what is a perceptron?" - -def chatbot(user_input): - # Convert the question to a query vector - query_vector = create_embeddings(user_input) - - # Find the most similar documents - distances, indices = nbrs.kneighbors([query_vector]) - - # add documents to query to provide context - history = [] - for index in indices[0]: - history.append(flattened_df['chunks'].iloc[index]) - - # combine the history and the user input - history.append(user_input) - - # create a message object - messages=[ - {"role": "system", "content": "You are an AI assistant that helps with AI questions."}, - {"role": "user", "content": history[-1]} - ] - - # use chat completion to generate a response - response = openai.chat.completions.create( - model="gpt-4", - temperature=0.7, - max_tokens=800, - messages=messages - ) - - return response.choices[0].message - -chatbot(user_input) -``` - -## การประเมินแอปพลิเคชันของเรา - -### ตัวชี้วัดการประเมิน - -- คุณภาพของคำตอบที่ให้ ต้องฟังดูเป็นธรรมชาติ ลื่นไหล และเหมือนมนุษย์ - -- ความเชื่อมโยงของข้อมูล: ประเมินว่าคำตอบมาจากเอกสารที่ให้ไว้หรือไม่ - -- ความเกี่ยวข้อง: ประเมินว่าคำตอบตรงกับคำถามและเกี่ยวข้องกันหรือไม่ - -- ความลื่นไหล - คำตอบมีความถูกต้องตามหลักไวยากรณ์หรือไม่ - -## กรณีการใช้งานของ RAG และฐานข้อมูลเวกเตอร์ - -มีกรณีการใช้งานหลายแบบที่ function calls สามารถช่วยปรับปรุงแอปของคุณ เช่น: - -- การถามตอบ: เชื่อมโยงข้อมูลบริษัทกับแชทที่พนักงานใช้ถามคำถามได้ - -- ระบบแนะนำ: สร้างระบบที่จับคู่ค่าที่คล้ายกัน เช่น ภาพยนตร์ ร้านอาหาร และอื่นๆ - -- บริการแชทบอท: เก็บประวัติการสนทนาและปรับแต่งบทสนทนาตามข้อมูลผู้ใช้ - -- การค้นหาภาพโดยใช้ embeddings เวกเตอร์ เหมาะสำหรับการรู้จำภาพและตรวจจับความผิดปกติ - -## สรุป - -เราได้ครอบคลุมพื้นฐานของ RAG ตั้งแต่การเพิ่มข้อมูลของเราในแอปพลิเคชัน คำถามของผู้ใช้ และผลลัพธ์ เพื่อให้ง่ายต่อการสร้าง RAG คุณสามารถใช้เฟรมเวิร์ก เช่น Semantic Kernel, Langchain หรือ Autogen - -## แบบฝึกหัด - -เพื่อเรียนรู้เพิ่มเติมเกี่ยวกับ Retrieval Augmented Generation (RAG) คุณสามารถสร้าง: - -- สร้าง front-end สำหรับแอปพลิเคชันโดยใช้เฟรมเวิร์กที่คุณเลือก - -- ใช้เฟรมเวิร์ก เช่น LangChain หรือ Semantic Kernel และสร้างแอปพลิเคชันของคุณใหม่ - -ขอแสดงความยินดีที่จบบทเรียน 👏 - -## การเรียนรู้ไม่หยุดเพียงเท่านี้ เดินหน้าต่อไป - -หลังจากจบบทเรียนนี้แล้ว ลองดู [Generative AI Learning collection](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) ของเรา เพื่อพัฒนาความรู้ด้าน Generative AI ของคุณให้ก้าวหน้าต่อไป! - -**ข้อจำกัดความรับผิดชอบ**: -เอกสารนี้ได้รับการแปลโดยใช้บริการแปลภาษาอัตโนมัติ [Co-op Translator](https://github.com/Azure/co-op-translator) แม้เราจะพยายามให้ความถูกต้องสูงสุด แต่โปรดทราบว่าการแปลอัตโนมัติอาจมีข้อผิดพลาดหรือความไม่ถูกต้อง เอกสารต้นฉบับในภาษาต้นทางถือเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลที่สำคัญ ขอแนะนำให้ใช้บริการแปลโดยผู้เชี่ยวชาญมนุษย์ เราไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความผิดใด ๆ ที่เกิดจากการใช้การแปลนี้ \ No newline at end of file + +# การสร้างผลลัพธ์ด้วยการดึงข้อมูล (RAG) และฐานข้อมูลเวกเตอร์ + +[![การสร้างผลลัพธ์ด้วยการดึงข้อมูล (RAG) และฐานข้อมูลเวกเตอร์](../../../translated_images/15-lesson-banner.ac49e59506175d4fc6ce521561dab2f9ccc6187410236376cfaed13cde371b90.th.png)](https://youtu.be/4l8zhHUBeyI?si=BmvDmL1fnHtgQYkL) + +ในบทเรียนเกี่ยวกับแอปพลิเคชันการค้นหา เราได้เรียนรู้เบื้องต้นเกี่ยวกับการผสานข้อมูลของคุณเข้ากับโมเดลภาษาขนาดใหญ่ (LLMs) ในบทเรียนนี้ เราจะเจาะลึกถึงแนวคิดเกี่ยวกับการเชื่อมโยงข้อมูลของคุณในแอปพลิเคชัน LLM กลไกของกระบวนการ และวิธีการจัดเก็บข้อมูล รวมถึงการฝังข้อมูลและข้อความ + +> **วิดีโอจะมาเร็วๆ นี้** + +## บทนำ + +ในบทเรียนนี้เราจะครอบคลุมหัวข้อต่อไปนี้: + +- บทนำเกี่ยวกับ RAG คืออะไรและทำไมจึงถูกใช้ใน AI (ปัญญาประดิษฐ์) + +- ทำความเข้าใจว่าอะไรคือฐานข้อมูลเวกเตอร์และการสร้างฐานข้อมูลสำหรับแอปพลิเคชันของเรา + +- ตัวอย่างการใช้งานจริงเกี่ยวกับการผสาน RAG เข้ากับแอปพลิเคชัน + +## เป้าหมายการเรียนรู้ + +หลังจากจบบทเรียนนี้ คุณจะสามารถ: + +- อธิบายความสำคัญของ RAG ในการดึงข้อมูลและการประมวลผล + +- ตั้งค่าแอปพลิเคชัน RAG และเชื่อมโยงข้อมูลของคุณกับ LLM + +- ผสาน RAG และฐานข้อมูลเวกเตอร์เข้ากับแอปพลิเคชัน LLM ได้อย่างมีประสิทธิภาพ + +## สถานการณ์ของเรา: เพิ่มประสิทธิภาพ LLM ด้วยข้อมูลของเราเอง + +สำหรับบทเรียนนี้ เราต้องการเพิ่มบันทึกของเราเองเข้าไปในสตาร์ทอัพด้านการศึกษา ซึ่งช่วยให้แชทบอทสามารถให้ข้อมูลเพิ่มเติมเกี่ยวกับหัวข้อต่างๆ ได้ โดยใช้บันทึกที่เรามี ผู้เรียนจะสามารถเรียนรู้ได้ดีขึ้นและเข้าใจหัวข้อต่างๆ ได้ง่ายขึ้น ทำให้การเตรียมตัวสอบง่ายขึ้น เพื่อสร้างสถานการณ์ของเรา เราจะใช้: + +- `Azure OpenAI:` LLM ที่เราจะใช้ในการสร้างแชทบอทของเรา + +- `บทเรียน AI สำหรับผู้เริ่มต้นเกี่ยวกับ Neural Networks:` นี่จะเป็นข้อมูลที่เราเชื่อมโยง LLM ของเรา + +- `Azure AI Search` และ `Azure Cosmos DB:` ฐานข้อมูลเวกเตอร์สำหรับจัดเก็บข้อมูลของเราและสร้างดัชนีการค้นหา + +ผู้ใช้จะสามารถสร้างแบบทดสอบฝึกฝนจากบันทึกของพวกเขา การ์ดแฟลชสำหรับการทบทวน และสรุปข้อมูลให้เป็นภาพรวมที่กระชับ เพื่อเริ่มต้น เรามาดูว่า RAG คืออะไรและทำงานอย่างไร: + +## การสร้างผลลัพธ์ด้วยการดึงข้อมูล (RAG) + +แชทบอทที่ขับเคลื่อนด้วย LLM ประมวลผลคำถามของผู้ใช้เพื่อสร้างคำตอบ มันถูกออกแบบมาให้มีการโต้ตอบและสื่อสารกับผู้ใช้ในหัวข้อต่างๆ อย่างไรก็ตาม คำตอบของมันถูกจำกัดอยู่ในบริบทที่ให้ไว้และข้อมูลการฝึกอบรมพื้นฐานของมัน ตัวอย่างเช่น ข้อมูลของ GPT-4 ถูกตัดขาดในเดือนกันยายน 2021 หมายความว่ามันไม่มีความรู้เกี่ยวกับเหตุการณ์ที่เกิดขึ้นหลังจากช่วงเวลานี้ นอกจากนี้ ข้อมูลที่ใช้ในการฝึกอบรม LLM ยังไม่รวมข้อมูลที่เป็นความลับ เช่น บันทึกส่วนตัวหรือคู่มือผลิตภัณฑ์ของบริษัท + +### RAGs (การสร้างผลลัพธ์ด้วยการดึงข้อมูล) ทำงานอย่างไร + +![ภาพวาดแสดงการทำงานของ RAGs](../../../translated_images/how-rag-works.f5d0ff63942bd3a638e7efee7a6fce7f0787f6d7a1fca4e43f2a7a4d03cde3e0.th.png) + +สมมติว่าคุณต้องการเปิดใช้งานแชทบอทที่สร้างแบบทดสอบจากบันทึกของคุณ คุณจะต้องมีการเชื่อมต่อกับฐานความรู้ นี่คือจุดที่ RAG เข้ามาช่วย RAGs ทำงานดังนี้: + +- **ฐานความรู้:** ก่อนการดึงข้อมูล เอกสารเหล่านี้จำเป็นต้องถูกนำเข้าและประมวลผล โดยปกติจะเป็นการแบ่งเอกสารขนาดใหญ่เป็นชิ้นเล็กๆ แปลงเป็นการฝังข้อความ และจัดเก็บในฐานข้อมูล + +- **คำถามของผู้ใช้:** ผู้ใช้ถามคำถาม + +- **การดึงข้อมูล:** เมื่อผู้ใช้ถามคำถาม โมเดลการฝังข้อความจะดึงข้อมูลที่เกี่ยวข้องจากฐานความรู้ของเราเพื่อให้บริบทเพิ่มเติมที่รวมเข้ากับคำถาม + +- **การสร้างผลลัพธ์ที่เพิ่มขึ้น:** LLM ปรับปรุงคำตอบของมันโดยอิงจากข้อมูลที่ดึงมา มันช่วยให้คำตอบที่สร้างขึ้นไม่เพียงแต่อิงจากข้อมูลที่ฝึกอบรมมาเท่านั้น แต่ยังรวมถึงข้อมูลที่เกี่ยวข้องจากบริบทที่เพิ่มเข้ามา ข้อมูลที่ดึงมาจะถูกใช้เพื่อเพิ่มคำตอบของ LLM จากนั้น LLM จะส่งคำตอบกลับไปยังคำถามของผู้ใช้ + +![ภาพวาดแสดงสถาปัตยกรรมของ RAGs](../../../translated_images/encoder-decode.f2658c25d0eadee2377bb28cf3aee8b67aa9249bf64d3d57bb9be077c4bc4e1a.th.png) + +สถาปัตยกรรมของ RAGs ถูกนำมาใช้โดยใช้ตัวแปลงสัญญาณที่ประกอบด้วยสองส่วน: ตัวเข้ารหัสและตัวถอดรหัส ตัวอย่างเช่น เมื่อผู้ใช้ถามคำถาม ข้อความที่ป้อนจะถูก 'เข้ารหัส' เป็นเวกเตอร์ที่จับความหมายของคำ และเวกเตอร์จะถูก 'ถอดรหัส' ไปยังดัชนีเอกสารของเราและสร้างข้อความใหม่ตามคำถามของผู้ใช้ LLM ใช้ทั้งโมเดลตัวเข้ารหัส-ตัวถอดรหัสเพื่อสร้างผลลัพธ์ + +สองวิธีในการนำ RAG มาใช้ตามเอกสารที่เสนอ: [Retrieval-Augmented Generation for Knowledge intensive NLP (natural language processing software) Tasks](https://arxiv.org/pdf/2005.11401.pdf?WT.mc_id=academic-105485-koreyst) ได้แก่: + +- **_RAG-Sequence_** ใช้เอกสารที่ดึงมาเพื่อทำนายคำตอบที่ดีที่สุดสำหรับคำถามของผู้ใช้ + +- **RAG-Token** ใช้เอกสารเพื่อสร้างโทเค็นถัดไป จากนั้นดึงเอกสารเหล่านั้นเพื่อตอบคำถามของผู้ใช้ + +### ทำไมคุณถึงใช้ RAGs? + +- **ความสมบูรณ์ของข้อมูล:** ทำให้คำตอบข้อความเป็นปัจจุบันและทันสมัย ดังนั้นจึงช่วยเพิ่มประสิทธิภาพในงานเฉพาะด้านโดยการเข้าถึงฐานความรู้ภายใน + +- ลดการสร้างข้อมูลเท็จโดยใช้ **ข้อมูลที่ตรวจสอบได้** ในฐานความรู้เพื่อให้บริบทกับคำถามของผู้ใช้ + +- มีความ **คุ้มค่า** เนื่องจากประหยัดกว่าการปรับแต่ง LLM ใหม่ + +## การสร้างฐานความรู้ + +แอปพลิเคชันของเราขึ้นอยู่กับข้อมูลส่วนตัวของเรา เช่น บทเรียน Neural Network ในหลักสูตร AI สำหรับผู้เริ่มต้น + +### ฐานข้อมูลเวกเตอร์ + +ฐานข้อมูลเวกเตอร์ แตกต่างจากฐานข้อมูลแบบดั้งเดิม เป็นฐานข้อมูลเฉพาะที่ออกแบบมาเพื่อจัดเก็บ จัดการ และค้นหาเวกเตอร์ที่ฝังอยู่ มันจัดเก็บการแสดงผลเชิงตัวเลขของเอกสาร การแปลงข้อมูลเป็นการฝังตัวเลขทำให้ระบบ AI ของเราเข้าใจและประมวลผลข้อมูลได้ง่ายขึ้น + +เราจัดเก็บการฝังข้อมูลของเราในฐานข้อมูลเวกเตอร์เนื่องจาก LLM มีข้อจำกัดเกี่ยวกับจำนวนโทเค็นที่ยอมรับเป็นข้อมูลเข้า เนื่องจากคุณไม่สามารถส่งการฝังข้อมูลทั้งหมดไปยัง LLM ได้ เราจำเป็นต้องแบ่งข้อมูลออกเป็นชิ้นเล็กๆ และเมื่อผู้ใช้ถามคำถาม การฝังข้อมูลที่คล้ายกับคำถามมากที่สุดจะถูกส่งกลับมาพร้อมกับคำถาม การแบ่งข้อมูลเป็นชิ้นเล็กๆ ยังช่วยลดค่าใช้จ่ายเกี่ยวกับจำนวนโทเค็นที่ส่งผ่าน LLM + +ฐานข้อมูลเวกเตอร์ยอดนิยมบางตัว ได้แก่ Azure Cosmos DB, Clarifyai, Pinecone, Chromadb, ScaNN, Qdrant และ DeepLake คุณสามารถสร้างโมเดล Azure Cosmos DB โดยใช้ Azure CLI ด้วยคำสั่งต่อไปนี้: + +```bash +az login +az group create -n -l +az cosmosdb create -n -r +az cosmosdb list-keys -n -g +``` + +### จากข้อความสู่การฝังข้อมูล + +ก่อนที่เราจะจัดเก็บข้อมูลของเรา เราจำเป็นต้องแปลงข้อมูลเป็นการฝังเวกเตอร์ก่อนที่จะจัดเก็บในฐานข้อมูล หากคุณกำลังทำงานกับเอกสารขนาดใหญ่หรือข้อความยาว คุณสามารถแบ่งข้อมูลตามคำถามที่คุณคาดหวัง การแบ่งข้อมูลสามารถทำได้ในระดับประโยค หรือในระดับย่อหน้า เนื่องจากการแบ่งข้อมูลจะดึงความหมายจากคำที่อยู่รอบๆ คุณสามารถเพิ่มบริบทอื่นๆ ลงในชิ้นข้อมูลได้ เช่น การเพิ่มชื่อเอกสารหรือการเพิ่มข้อความก่อนหรือหลังชิ้นข้อมูล คุณสามารถแบ่งข้อมูลได้ดังนี้: + +```python +def split_text(text, max_length, min_length): + words = text.split() + chunks = [] + current_chunk = [] + + for word in words: + current_chunk.append(word) + if len(' '.join(current_chunk)) < max_length and len(' '.join(current_chunk)) > min_length: + chunks.append(' '.join(current_chunk)) + current_chunk = [] + + # If the last chunk didn't reach the minimum length, add it anyway + if current_chunk: + chunks.append(' '.join(current_chunk)) + + return chunks +``` + +เมื่อแบ่งข้อมูลแล้ว เราสามารถฝังข้อความของเราโดยใช้โมเดลการฝังข้อมูลต่างๆ โมเดลที่คุณสามารถใช้ได้ ได้แก่ word2vec, ada-002 โดย OpenAI, Azure Computer Vision และอื่นๆ อีกมากมาย การเลือกโมเดลที่จะใช้ขึ้นอยู่กับภาษาที่คุณใช้ ประเภทของเนื้อหาที่เข้ารหัส (ข้อความ/ภาพ/เสียง) ขนาดของข้อมูลเข้า และความยาวของผลลัพธ์การฝังข้อมูล + +ตัวอย่างการฝังข้อความโดยใช้โมเดล `text-embedding-ada-002` ของ OpenAI คือ: +![การฝังข้อความของคำว่า cat](../../../translated_images/cat.74cbd7946bc9ca380a8894c4de0c706a4f85b16296ffabbf52d6175df6bf841e.th.png) + +## การดึงข้อมูลและการค้นหาเวกเตอร์ + +เมื่อผู้ใช้ถามคำถาม ตัวดึงข้อมูลจะเปลี่ยนคำถามเป็นเวกเตอร์โดยใช้ตัวเข้ารหัสคำถาม จากนั้นจะค้นหาดัชนีการค้นหาเอกสารของเราสำหรับเวกเตอร์ที่เกี่ยวข้องในเอกสารที่เกี่ยวข้องกับข้อมูลเข้า เมื่อเสร็จสิ้นแล้ว มันจะเปลี่ยนทั้งเวกเตอร์ข้อมูลเข้าและเวกเตอร์เอกสารเป็นข้อความและส่งผ่าน LLM + +### การดึงข้อมูล + +การดึงข้อมูลเกิดขึ้นเมื่อระบบพยายามค้นหาเอกสารจากดัชนีที่ตรงกับเกณฑ์การค้นหาอย่างรวดเร็ว เป้าหมายของตัวดึงข้อมูลคือการดึงเอกสารที่จะใช้เพื่อให้บริบทและเชื่อมโยง LLM กับข้อมูลของคุณ + +มีหลายวิธีในการค้นหาภายในฐานข้อมูลของเรา เช่น: + +- **การค้นหาด้วยคำสำคัญ** - ใช้สำหรับการค้นหาข้อความ + +- **การค้นหาเชิงความหมาย** - ใช้ความหมายเชิงความหมายของคำ + +- **การค้นหาเวกเตอร์** - แปลงเอกสารจากข้อความเป็นการแสดงผลเวกเตอร์โดยใช้โมเดลการฝังข้อมูล การดึงข้อมูลจะทำโดยการค้นหาเอกสารที่การแสดงผลเวกเตอร์ใกล้เคียงกับคำถามของผู้ใช้มากที่สุด + +- **แบบผสม** - การผสมผสานระหว่างการค้นหาด้วยคำสำคัญและการค้นหาเวกเตอร์ + +ความท้าทายของการดึงข้อมูลเกิดขึ้นเมื่อไม่มีคำตอบที่คล้ายคลึงกับคำถามในฐานข้อมูล ระบบจะส่งคืนข้อมูลที่ดีที่สุดที่สามารถหาได้ อย่างไรก็ตาม คุณสามารถใช้กลยุทธ์เช่นการตั้งค่าระยะทางสูงสุดสำหรับความเกี่ยวข้องหรือใช้การค้นหาแบบผสมที่รวมทั้งคำสำคัญและการค้นหาเวกเตอร์ ในบทเรียนนี้เราจะใช้การค้นหาแบบผสม การผสมผสานระหว่างการค้นหาเวกเตอร์และคำสำคัญ เราจะจัดเก็บข้อมูลของเราใน dataframe โดยมีคอลัมน์ที่ประกอบด้วยชิ้นข้อมูลและการฝังข้อมูล + +### ความคล้ายคลึงของเวกเตอร์ + +ตัวดึงข้อมูลจะค้นหาผ่านฐานข้อมูลความรู้สำหรับการฝังข้อมูลที่อยู่ใกล้กันที่สุด ซึ่งเป็นเพื่อนบ้านที่ใกล้ที่สุด เนื่องจากเป็นข้อความที่คล้ายกัน ในกรณีที่ผู้ใช้ถามคำถาม มันจะถูกฝังข้อมูลก่อนแล้วจับคู่กับการฝังข้อมูลที่คล้ายกัน การวัดทั่วไปที่ใช้เพื่อหาความคล้ายคลึงกันของเวกเตอร์ต่างๆ คือความคล้ายคลึงของโคไซน์ ซึ่งอิงตามมุมระหว่างเวกเตอร์สองตัว + +เราสามารถวัดความคล้ายคลึงกันโดยใช้ทางเลือกอื่น เช่น ระยะทางยูคลิด ซึ่งเป็นเส้นตรงระหว่างจุดปลายของเวกเตอร์ และผลคูณจุด ซึ่งวัดผลรวมของผลคูณขององค์ประกอบที่สอดคล้องกันของเวกเตอร์สองตัว + +### ดัชนีการค้นหา + +เมื่อทำการดึงข้อมูล เราจำเป็นต้องสร้างดัชนีการค้นหาสำหรับฐานความรู้ของเราก่อนที่จะทำการค้นหา ดัชนีจะจัดเก็บการฝังข้อมูลของเราและสามารถดึงชิ้นข้อมูลที่คล้ายกันมากที่สุดได้อย่างรวดเร็วแม้ในฐานข้อมูลขนาดใหญ่ เราสามารถสร้างดัชนีของเราในเครื่องโดยใช้: + +```python +from sklearn.neighbors import NearestNeighbors + +embeddings = flattened_df['embeddings'].to_list() + +# Create the search index +nbrs = NearestNeighbors(n_neighbors=5, algorithm='ball_tree').fit(embeddings) + +# To query the index, you can use the kneighbors method +distances, indices = nbrs.kneighbors(embeddings) +``` + +### การจัดอันดับใหม่ + +เมื่อคุณได้ทำการค้นหาฐานข้อมูลแล้ว คุณอาจจำเป็นต้องจัดเรียงผลลัพธ์จากที่เกี่ยวข้องที่สุด การจัดอันดับใหม่โดยใช้ LLM ใช้ Machine Learning เพื่อปรับปรุงความเกี่ยวข้องของผลลัพธ์การค้นหาโดยการจัดเรียงจากที่เกี่ยวข้องที่สุด การใช้ Azure AI Search การจัดอันดับใหม่จะทำโดยอัตโนมัติสำหรับคุณโดยใช้ตัวจัดอันดับเชิงความหมาย ตัวอย่างของการจัดอันดับใหม่โดยใช้เพื่อนบ้านที่ใกล้ที่สุด: + +```python +# Find the most similar documents +distances, indices = nbrs.kneighbors([query_vector]) + +index = [] +# Print the most similar documents +for i in range(3): + index = indices[0][i] + for index in indices[0]: + print(flattened_df['chunks'].iloc[index]) + print(flattened_df['path'].iloc[index]) + print(flattened_df['distances'].iloc[index]) + else: + print(f"Index {index} not found in DataFrame") +``` + +## การนำทุกอย่างมารวมกัน + +ขั้นตอนสุดท้ายคือการเพิ่ม LLM ของเราเข้าไปเพื่อให้สามารถสร้างคำตอบที่เชื่อมโยงกับข้อมูลของเราได้ เราสามารถนำไปใช้ได้ดังนี้: + +```python +user_input = "what is a perceptron?" + +def chatbot(user_input): + # Convert the question to a query vector + query_vector = create_embeddings(user_input) + + # Find the most similar documents + distances, indices = nbrs.kneighbors([query_vector]) + + # add documents to query to provide context + history = [] + for index in indices[0]: + history.append(flattened_df['chunks'].iloc[index]) + + # combine the history and the user input + history.append(user_input) + + # create a message object + messages=[ + {"role": "system", "content": "You are an AI assistant that helps with AI questions."}, + {"role": "user", "content": history[-1]} + ] + + # use chat completion to generate a response + response = openai.chat.completions.create( + model="gpt-4", + temperature=0.7, + max_tokens=800, + messages=messages + ) + + return response.choices[0].message + +chatbot(user_input) +``` + +## การประเมินแอปพลิเคชันของเรา + +### ตัวชี้วัดการประเมินผล + +- คุณภาพของคำตอบที่ให้มา โดยมั่นใจว่ามันฟังดูเป็นธรรมชาติ คล่องแคล่ว และเหมือนมนุษย์ + +- ความเชื่อมโยงของข้อมูล: ประเมินว่าคำตอบมาจากเอกสารที่ให้ไว้หรือไม่ + +- ความเกี่ยวข้อง: ประเมินว่าคำตอบตรงกับคำถามที่ถามหรือไม่ + +- ความคล่องแคล่ว - ว่าคำตอบมีความสมเหตุสมผลทางไวยากรณ์หรือไม่ + +## กรณีการใช้งานสำหรับการใช้ RAG (การสร้างผลลัพธ์ด้วยการดึงข้อมูล) และฐานข้อมูลเวกเตอร์ + +มีกรณีการใช้งานที่หลากหลายที่การเรียกฟังก์ชันสามารถปรับปรุงแอปของคุณได้ เช่น: + +- การถามตอบ: เชื่อมโยงข้อมูลบริษัทของคุณกับแชทที่สามารถใช้โดยพนักงานเพื่อถามคำถาม + +- ระบบแนะนำ: ที่คุณสามารถสร้างระบบที่จับคู่ค่าที่คล้ายกันที่สุด เช่น ภาพยนตร์ ร้านอาหาร และอื่นๆ + +- บริการแชทบอท: คุณสามารถจัดเก็บประวัติการแชทและปรับแต่งการสนทนาโดยอิงจากข้อมูลผู้ใช้ + +- การค้นหารูปภาพโดยอิงจากการฝังเวกเตอร์ มีประโยชน์เมื่อทำการจดจำภาพและการตรวจจับความผิดปกติ + +## สรุป + +เราได้ครอบคลุมพื้นที่พื้นฐานของ RAG ตั้งแต่การเพิ่มข้อมูลของเราเข้าไปในแอปพลิเคชัน คำถามของผู้ใช้ และผลลัพธ์ที่ได้ เพื่อให้ง่ายต่อการสร้าง RAG คุณสามารถใช้เฟรมเวิร์ค เช่น Semantic Kernel, Langchain หรือ Autogen + +## งานที่ได้รับมอบหมาย + +เพื่อเรียนรู้เพิ่มเติมเกี่ยวกับการสร้างผลลัพธ์ด้วยการดึงข้อมูล (RAG) คุณสามารถสร้าง: + +- สร้างส่วนหน้าสำหรับแอปพลิเคชันโดยใช้เฟรมเวิร์คที่คุณเลือก + +- ใช้เฟรมเวิร์ค เช่น LangChain หรือ Semantic Kernel และสร้างแอปพลิเคชันของคุณใหม่ + +ขอแสดงความยินดีที่จบบทเรียน 👏 + +## การเรียนรู้ไม่ได้หยุดอยู่แค่นี้ เดินทางต่อไป + +หลังจากจบบทเรียนนี้ ลองดู [คอลเลกชันการเรียนรู้ Generative AI](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) ของเราเพื่อเพิ่มพูนความรู้เกี่ยวกับ Generative AI ของคุณ! + +--- + +**ข้อจำกัดความรับผิดชอบ**: +เอกสารนี้ได้รับการแปลโดยใช้บริการแปลภาษา AI [Co-op Translator](https://github.com/Azure/co-op-translator) แม้ว่าเราจะพยายามให้การแปลมีความถูกต้อง แต่โปรดทราบว่าการแปลอัตโนมัติอาจมีข้อผิดพลาดหรือความไม่ถูกต้อง เอกสารต้นฉบับในภาษาดั้งเดิมควรถือเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลที่สำคัญ ขอแนะนำให้ใช้บริการแปลภาษามืออาชีพ เราจะไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความผิดที่เกิดจากการใช้การแปลนี้ \ No newline at end of file diff --git a/translations/th/16-open-source-models/README.md b/translations/th/16-open-source-models/README.md index 21f5d42137..956e01b963 100644 --- a/translations/th/16-open-source-models/README.md +++ b/translations/th/16-open-source-models/README.md @@ -1,29 +1,29 @@ -[![Open Source Models](../../../translated_images/16-lesson-banner.6b56555e8404fda1716382db4832cecbe616ccd764de381f0af6cfd694d05f74.th.png)](https://aka.ms/gen-ai-lesson16-gh?WT.mc_id=academic-105485-koreyst) +[![โมเดลโอเพ่นซอร์ส](../../../translated_images/16-lesson-banner.6b56555e8404fda1716382db4832cecbe616ccd764de381f0af6cfd694d05f74.th.png)](https://youtu.be/CuICgfuHFSg?si=x8SpFRUsIxM9dohN) ## บทนำ -โลกของ LLMs แบบโอเพ่นซอร์สนั้นน่าตื่นเต้นและเปลี่ยนแปลงอยู่เสมอ บทเรียนนี้มีเป้าหมายเพื่อให้ข้อมูลเชิงลึกเกี่ยวกับโมเดลโอเพ่นซอร์ส หากคุณกำลังมองหาข้อมูลเกี่ยวกับการเปรียบเทียบระหว่างโมเดลที่เป็นกรรมสิทธิ์และโมเดลโอเพ่นซอร์ส สามารถไปที่บทเรียน ["การสำรวจและเปรียบเทียบ LLMs ต่าง ๆ"](../02-exploring-and-comparing-different-llms/README.md?WT.mc_id=academic-105485-koreyst) บทเรียนนี้ยังครอบคลุมหัวข้อการปรับแต่งโมเดล แต่คำอธิบายที่ละเอียดกว่าสามารถพบได้ในบทเรียน ["การปรับแต่ง LLMs"](../18-fine-tuning/README.md?WT.mc_id=academic-105485-koreyst) +โลกของ LLMs แบบโอเพ่นซอร์สนั้นน่าตื่นเต้นและเปลี่ยนแปลงอยู่เสมอ บทเรียนนี้มีเป้าหมายเพื่อให้ข้อมูลเชิงลึกเกี่ยวกับโมเดลโอเพ่นซอร์ส หากคุณกำลังมองหาข้อมูลเกี่ยวกับการเปรียบเทียบระหว่างโมเดลที่เป็นกรรมสิทธิ์กับโมเดลโอเพ่นซอร์ส สามารถไปที่บทเรียน ["การสำรวจและเปรียบเทียบ LLMs ต่างๆ"](../02-exploring-and-comparing-different-llms/README.md?WT.mc_id=academic-105485-koreyst) บทเรียนนี้ยังครอบคลุมหัวข้อการปรับแต่งโมเดล แต่คำอธิบายที่ละเอียดกว่านี้สามารถพบได้ในบทเรียน ["การปรับแต่ง LLMs"](../18-fine-tuning/README.md?WT.mc_id=academic-105485-koreyst) ## เป้าหมายการเรียนรู้ -- เข้าใจโมเดลโอเพ่นซอร์ส -- เข้าใจประโยชน์ของการทำงานกับโมเดลโอเพ่นซอร์ส -- สำรวจโมเดลโอเพ่นที่มีอยู่ใน Hugging Face และ Azure AI Studio +- เข้าใจเกี่ยวกับโมเดลโอเพ่นซอร์ส +- เข้าใจถึงประโยชน์ของการทำงานกับโมเดลโอเพ่นซอร์ส +- สำรวจโมเดลโอเพ่นซอร์สที่มีอยู่ใน Hugging Face และ Azure AI Studio ## โมเดลโอเพ่นซอร์สคืออะไร? ซอฟต์แวร์โอเพ่นซอร์สมีบทบาทสำคัญในการเติบโตของเทคโนโลยีในหลากหลายสาขา Open Source Initiative (OSI) ได้กำหนด [10 เกณฑ์สำหรับซอฟต์แวร์](https://web.archive.org/web/20241126001143/https://opensource.org/osd?WT.mc_id=academic-105485-koreyst) เพื่อจัดประเภทว่าเป็นโอเพ่นซอร์ส โค้ดต้นฉบับต้องถูกแชร์อย่างเปิดเผยภายใต้ใบอนุญาตที่ได้รับการอนุมัติจาก OSI -แม้ว่าการพัฒนา LLMs จะมีองค์ประกอบที่คล้ายคลึงกับการพัฒนาซอฟต์แวร์ แต่กระบวนการนี้ไม่เหมือนกันทั้งหมด สิ่งนี้นำไปสู่การอภิปรายในชุมชนเกี่ยวกับคำจำกัดความของโอเพ่นซอร์สในบริบทของ LLMs สำหรับโมเดลที่จะสอดคล้องกับคำจำกัดความดั้งเดิมของโอเพ่นซอร์ส ข้อมูลต่อไปนี้ควรเปิดเผยต่อสาธารณะ: +แม้ว่าการพัฒนา LLMs จะมีองค์ประกอบที่คล้ายกับการพัฒนาซอฟต์แวร์ แต่กระบวนการนี้ไม่เหมือนกันทั้งหมด สิ่งนี้นำไปสู่การอภิปรายในชุมชนเกี่ยวกับคำจำกัดความของโอเพ่นซอร์สในบริบทของ LLMs สำหรับโมเดลที่จะสอดคล้องกับคำจำกัดความแบบดั้งเดิมของโอเพ่นซอร์ส ข้อมูลต่อไปนี้ควรเปิดเผยต่อสาธารณะ: - ชุดข้อมูลที่ใช้ในการฝึกโมเดล - น้ำหนักโมเดลทั้งหมดที่เป็นส่วนหนึ่งของการฝึก @@ -33,61 +33,61 @@ CO_OP_TRANSLATOR_METADATA: ปัจจุบันมีเพียงไม่กี่โมเดลที่ตรงกับเกณฑ์นี้ [โมเดล OLMo ที่สร้างโดย Allen Institute for Artificial Intelligence (AllenAI)](https://huggingface.co/allenai/OLMo-7B?WT.mc_id=academic-105485-koreyst) เป็นหนึ่งในโมเดลที่ตรงกับหมวดหมู่นี้ -สำหรับบทเรียนนี้ เราจะเรียกโมเดลเหล่านี้ว่า "โมเดลโอเพ่น" ต่อไป เนื่องจากอาจไม่ตรงกับเกณฑ์ข้างต้นในขณะที่เขียนบทความนี้ +สำหรับบทเรียนนี้ เราจะเรียกโมเดลเหล่านี้ว่า "โมเดลเปิด" ต่อไป เนื่องจากอาจไม่ตรงกับเกณฑ์ข้างต้นในขณะที่เขียนบทความนี้ -## ประโยชน์ของโมเดลโอเพ่น +## ประโยชน์ของโมเดลเปิด -**ปรับแต่งได้สูง** - เนื่องจากโมเดลโอเพ่นถูกปล่อยออกมาพร้อมข้อมูลการฝึกที่ละเอียด นักวิจัยและนักพัฒนาสามารถปรับเปลี่ยนโครงสร้างภายในของโมเดลได้ สิ่งนี้ช่วยให้สามารถสร้างโมเดลเฉพาะทางที่ปรับแต่งสำหรับงานหรือสาขาการศึกษาที่เฉพาะเจาะจง ตัวอย่างเช่น การสร้างโค้ด การคำนวณทางคณิตศาสตร์ และชีววิทยา +**ปรับแต่งได้สูง** - เนื่องจากโมเดลเปิดถูกปล่อยออกมาพร้อมข้อมูลการฝึกที่ละเอียด นักวิจัยและนักพัฒนาสามารถปรับเปลี่ยนโครงสร้างภายในของโมเดลได้ สิ่งนี้ช่วยให้สามารถสร้างโมเดลที่มีความเชี่ยวชาญเฉพาะด้านที่ปรับแต่งสำหรับงานหรือสาขาการศึกษาที่เฉพาะเจาะจง ตัวอย่างเช่น การสร้างโค้ด การคำนวณทางคณิตศาสตร์ และชีววิทยา **ต้นทุน** - ต้นทุนต่อโทเค็นสำหรับการใช้งานและการปรับใช้โมเดลเหล่านี้ต่ำกว่าโมเดลที่เป็นกรรมสิทธิ์ เมื่อสร้างแอปพลิเคชัน Generative AI ควรพิจารณาประสิทธิภาพเทียบกับราคาเมื่อทำงานกับโมเดลเหล่านี้ในกรณีการใช้งานของคุณ -![Model Cost](../../../translated_images/model-price.3f5a3e4d32ae00b465325159e1f4ebe7b5861e95117518c6bfc37fe842950687.th.png) -ที่มา: Artificial Analysis +![ต้นทุนโมเดล](../../../translated_images/model-price.3f5a3e4d32ae00b465325159e1f4ebe7b5861e95117518c6bfc37fe842950687.th.png) +แหล่งที่มา: Artificial Analysis -**ความยืดหยุ่น** - การทำงานกับโมเดลโอเพ่นช่วยให้คุณมีความยืดหยุ่นในการใช้โมเดลต่าง ๆ หรือการรวมโมเดล ตัวอย่างเช่น [HuggingChat Assistants](https://huggingface.co/chat?WT.mc_id=academic-105485-koreyst) ที่ผู้ใช้สามารถเลือกโมเดลที่ใช้งานได้โดยตรงในอินเทอร์เฟซผู้ใช้: +**ความยืดหยุ่น** - การทำงานกับโมเดลเปิดช่วยให้คุณมีความยืดหยุ่นในแง่ของการใช้โมเดลที่แตกต่างกันหรือการรวมกัน ตัวอย่างหนึ่งคือ [HuggingChat Assistants](https://huggingface.co/chat?WT.mc_id=academic-105485-koreyst) ที่ผู้ใช้สามารถเลือกโมเดลที่ใช้งานได้โดยตรงในอินเทอร์เฟซผู้ใช้: -![Choose Model](../../../translated_images/choose-model.f095d15bbac922141591fd4fac586dc8d25e69b42abf305d441b84c238e293f2.th.png) +![เลือกโมเดล](../../../translated_images/choose-model.f095d15bbac922141591fd4fac586dc8d25e69b42abf305d441b84c238e293f2.th.png) -## การสำรวจโมเดลโอเพ่นต่าง ๆ +## การสำรวจโมเดลเปิดต่างๆ ### Llama 2 -[LLama2](https://huggingface.co/meta-llama?WT.mc_id=academic-105485-koreyst) พัฒนาโดย Meta เป็นโมเดลโอเพ่นที่ถูกปรับแต่งให้เหมาะสมสำหรับแอปพลิเคชันที่ใช้การสนทนา นี่เป็นผลมาจากวิธีการปรับแต่งที่รวมถึงข้อมูลการสนทนาและความคิดเห็นจากมนุษย์จำนวนมาก ด้วยวิธีนี้ โมเดลสามารถสร้างผลลัพธ์ที่สอดคล้องกับความคาดหวังของมนุษย์มากขึ้น ซึ่งช่วยให้ประสบการณ์ผู้ใช้ดีขึ้น +[LLama2](https://huggingface.co/meta-llama?WT.mc_id=academic-105485-koreyst) พัฒนาโดย Meta เป็นโมเดลเปิดที่ถูกปรับแต่งให้เหมาะสมสำหรับแอปพลิเคชันที่ใช้การสนทนา นี่เป็นผลมาจากวิธีการปรับแต่งที่รวมถึงการสนทนาจำนวนมากและการตอบกลับจากมนุษย์ ด้วยวิธีนี้ โมเดลสามารถสร้างผลลัพธ์ที่สอดคล้องกับความคาดหวังของมนุษย์มากขึ้น ซึ่งช่วยให้ประสบการณ์ของผู้ใช้ดีขึ้น ตัวอย่างของเวอร์ชันที่ปรับแต่งของ Llama ได้แก่ [Japanese Llama](https://huggingface.co/elyza/ELYZA-japanese-Llama-2-7b?WT.mc_id=academic-105485-koreyst) ซึ่งเชี่ยวชาญในภาษาญี่ปุ่น และ [Llama Pro](https://huggingface.co/TencentARC/LLaMA-Pro-8B?WT.mc_id=academic-105485-koreyst) ซึ่งเป็นเวอร์ชันที่ปรับปรุงจากโมเดลพื้นฐาน ### Mistral -[Mistral](https://huggingface.co/mistralai?WT.mc_id=academic-105485-koreyst) เป็นโมเดลโอเพ่นที่เน้นประสิทธิภาพและความมีประสิทธิภาพสูง มันใช้วิธี Mixture-of-Experts ซึ่งรวมกลุ่มโมเดลผู้เชี่ยวชาญเฉพาะทางเข้าด้วยกันในระบบเดียว โดยขึ้นอยู่กับข้อมูลที่ป้อน โมเดลบางตัวจะถูกเลือกใช้งาน สิ่งนี้ทำให้การคำนวณมีประสิทธิภาพมากขึ้น เนื่องจากโมเดลจะจัดการเฉพาะข้อมูลที่พวกเขาเชี่ยวชาญ +[Mistral](https://huggingface.co/mistralai?WT.mc_id=academic-105485-koreyst) เป็นโมเดลเปิดที่เน้นประสิทธิภาพสูงและความมีประสิทธิภาพ มันใช้วิธี Mixture-of-Experts ซึ่งรวมกลุ่มโมเดลผู้เชี่ยวชาญเฉพาะด้านเข้าด้วยกันในระบบเดียว โดยขึ้นอยู่กับข้อมูลที่ป้อน โมเดลบางตัวจะถูกเลือกใช้งาน สิ่งนี้ทำให้การคำนวณมีประสิทธิภาพมากขึ้นเนื่องจากโมเดลจะจัดการเฉพาะข้อมูลที่พวกเขาเชี่ยวชาญ ตัวอย่างของเวอร์ชันที่ปรับแต่งของ Mistral ได้แก่ [BioMistral](https://huggingface.co/BioMistral/BioMistral-7B?text=Mon+nom+est+Thomas+et+mon+principal?WT.mc_id=academic-105485-koreyst) ซึ่งเน้นในด้านการแพทย์ และ [OpenMath Mistral](https://huggingface.co/nvidia/OpenMath-Mistral-7B-v0.1-hf?WT.mc_id=academic-105485-koreyst) ซึ่งทำการคำนวณทางคณิตศาสตร์ ### Falcon -[Falcon](https://huggingface.co/tiiuae?WT.mc_id=academic-105485-koreyst) เป็น LLM ที่สร้างโดย Technology Innovation Institute (**TII**) Falcon-40B ถูกฝึกด้วยพารามิเตอร์ 40 พันล้านตัว ซึ่งแสดงให้เห็นว่ามีประสิทธิภาพดีกว่า GPT-3 ด้วยงบประมาณการคำนวณที่น้อยกว่า นี่เป็นผลมาจากการใช้อัลกอริทึม FlashAttention และ multiquery attention ที่ช่วยลดความต้องการหน่วยความจำในเวลาการประมวลผล ด้วยเวลาการประมวลผลที่ลดลง Falcon-40B เหมาะสำหรับแอปพลิเคชันที่ใช้การสนทนา +[Falcon](https://huggingface.co/tiiuae?WT.mc_id=academic-105485-koreyst) เป็น LLM ที่สร้างโดย Technology Innovation Institute (**TII**) Falcon-40B ถูกฝึกด้วยพารามิเตอร์ 40 พันล้านตัว ซึ่งแสดงให้เห็นว่ามีประสิทธิภาพดีกว่า GPT-3 โดยใช้ทรัพยากรคอมพิวเตอร์น้อยกว่า นี่เป็นผลมาจากการใช้อัลกอริทึม FlashAttention และ multiquery attention ที่ช่วยลดความต้องการหน่วยความจำในช่วงเวลาการประมวลผล ด้วยเวลาการประมวลผลที่ลดลง Falcon-40B เหมาะสำหรับแอปพลิเคชันการสนทนา -ตัวอย่างของเวอร์ชันที่ปรับแต่งของ Falcon ได้แก่ [OpenAssistant](https://huggingface.co/OpenAssistant/falcon-40b-sft-top1-560?WT.mc_id=academic-105485-koreyst) ผู้ช่วยที่สร้างขึ้นจากโมเดลโอเพ่น และ [GPT4ALL](https://huggingface.co/nomic-ai/gpt4all-falcon?WT.mc_id=academic-105485-koreyst) ซึ่งให้ประสิทธิภาพสูงกว่าโมเดลพื้นฐาน +ตัวอย่างของเวอร์ชันที่ปรับแต่งของ Falcon ได้แก่ [OpenAssistant](https://huggingface.co/OpenAssistant/falcon-40b-sft-top1-560?WT.mc_id=academic-105485-koreyst) ผู้ช่วยที่สร้างขึ้นจากโมเดลเปิด และ [GPT4ALL](https://huggingface.co/nomic-ai/gpt4all-falcon?WT.mc_id=academic-105485-koreyst) ซึ่งให้ประสิทธิภาพสูงกว่าโมเดลพื้นฐาน ## วิธีการเลือก -ไม่มีคำตอบเดียวสำหรับการเลือกโมเดลโอเพ่น จุดเริ่มต้นที่ดีคือการใช้ฟีเจอร์การกรองตามงานของ Azure AI Studio ซึ่งจะช่วยให้คุณเข้าใจว่าประเภทของงานที่โมเดลได้รับการฝึกมา Hugging Face ยังมี LLM Leaderboard ที่แสดงโมเดลที่มีประสิทธิภาพดีที่สุดตามเมตริกบางอย่าง +ไม่มีคำตอบเดียวสำหรับการเลือกโมเดลเปิด จุดเริ่มต้นที่ดีคือการใช้ฟีเจอร์กรองตามงานใน Azure AI Studio ซึ่งจะช่วยให้คุณเข้าใจว่าประเภทของงานที่โมเดลได้รับการฝึกมา Hugging Face ยังมี LLM Leaderboard ที่แสดงโมเดลที่มีประสิทธิภาพดีที่สุดตามเมตริกบางอย่าง -เมื่อมองหาการเปรียบเทียบ LLMs ในประเภทต่าง ๆ [Artificial Analysis](https://artificialanalysis.ai/?WT.mc_id=academic-105485-koreyst) เป็นอีกหนึ่งแหล่งข้อมูลที่ดี: +เมื่อมองหาการเปรียบเทียบ LLMs ในประเภทต่างๆ [Artificial Analysis](https://artificialanalysis.ai/?WT.mc_id=academic-105485-koreyst) เป็นอีกหนึ่งแหล่งข้อมูลที่ดี: -![Model Quality](../../../translated_images/model-quality.aaae1c22e00f7ee1cd9dc186c611ac6ca6627eabd19e5364dce9e216d25ae8a5.th.png) -ที่มา: Artificial Analysis +![คุณภาพโมเดล](../../../translated_images/model-quality.aaae1c22e00f7ee1cd9dc186c611ac6ca6627eabd19e5364dce9e216d25ae8a5.th.png) +แหล่งที่มา: Artificial Analysis -หากทำงานในกรณีการใช้งานเฉพาะ การค้นหาเวอร์ชันที่ปรับแต่งซึ่งเน้นในพื้นที่เดียวกันอาจมีประสิทธิภาพ การทดลองกับโมเดลโอเพ่นหลายตัวเพื่อดูว่าพวกมันทำงานได้ดีเพียงใดตามความคาดหวังของคุณและผู้ใช้ของคุณก็เป็นอีกหนึ่งแนวทางที่ดี +หากทำงานในกรณีการใช้งานเฉพาะ การค้นหาเวอร์ชันที่ปรับแต่งซึ่งเน้นในพื้นที่เดียวกันอาจมีประสิทธิภาพ การทดลองกับโมเดลเปิดหลายตัวเพื่อดูว่าพวกมันทำงานได้ดีเพียงใดตามความคาดหวังของคุณและผู้ใช้ของคุณก็เป็นวิธีปฏิบัติที่ดีอีกวิธีหนึ่ง ## ขั้นตอนถัดไป -สิ่งที่ดีที่สุดเกี่ยวกับโมเดลโอเพ่นคือคุณสามารถเริ่มต้นทำงานกับมันได้อย่างรวดเร็ว ลองดู [Azure AI Foundry Model Catalog](https://ai.azure.com?WT.mc_id=academic-105485-koreyst) ซึ่งมีคอลเลกชัน Hugging Face เฉพาะที่มีโมเดลเหล่านี้ที่เราพูดถึงในที่นี้ +สิ่งที่ดีที่สุดเกี่ยวกับโมเดลเปิดคือคุณสามารถเริ่มต้นทำงานกับมันได้อย่างรวดเร็ว ลองดู [Azure AI Foundry Model Catalog](https://ai.azure.com?WT.mc_id=academic-105485-koreyst) ซึ่งมีคอลเลกชัน Hugging Face เฉพาะที่มีโมเดลเหล่านี้ที่เราพูดถึงในที่นี้ ## การเรียนรู้ไม่ได้หยุดอยู่แค่นี้ เดินทางต่อไป -หลังจากจบบทเรียนนี้ ลองดู [Generative AI Learning collection](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) เพื่อเพิ่มพูนความรู้เกี่ยวกับ Generative AI ของคุณ! +หลังจากจบบทเรียนนี้แล้ว ลองดู [Generative AI Learning collection](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) ของเราเพื่อเพิ่มพูนความรู้เกี่ยวกับ Generative AI ของคุณ! --- **ข้อจำกัดความรับผิดชอบ**: -เอกสารนี้ได้รับการแปลโดยใช้บริการแปลภาษา AI [Co-op Translator](https://github.com/Azure/co-op-translator) แม้ว่าเราจะพยายามให้การแปลมีความถูกต้องมากที่สุด แต่โปรดทราบว่าการแปลโดยอัตโนมัติอาจมีข้อผิดพลาดหรือความไม่ถูกต้อง เอกสารต้นฉบับในภาษาดั้งเดิมควรถือเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลที่สำคัญ ขอแนะนำให้ใช้บริการแปลภาษามืออาชีพ เราไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความผิดที่เกิดจากการใช้การแปลนี้ \ No newline at end of file +เอกสารนี้ได้รับการแปลโดยใช้บริการแปลภาษา AI [Co-op Translator](https://github.com/Azure/co-op-translator) แม้ว่าเราจะพยายามให้การแปลมีความถูกต้อง แต่โปรดทราบว่าการแปลโดยอัตโนมัติอาจมีข้อผิดพลาดหรือความไม่ถูกต้อง เอกสารต้นฉบับในภาษาดั้งเดิมควรถือเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลที่สำคัญ ขอแนะนำให้ใช้บริการแปลภาษามืออาชีพ เราไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความผิดที่เกิดจากการใช้การแปลนี้ \ No newline at end of file diff --git a/translations/th/17-ai-agents/README.md b/translations/th/17-ai-agents/README.md index 0b9bf7e84a..49da52b493 100644 --- a/translations/th/17-ai-agents/README.md +++ b/translations/th/17-ai-agents/README.md @@ -1,173 +1,175 @@ - -[![Open Source Models](../../../translated_images/17-lesson-banner.a5b918fb0920e4e6d8d391a100f5cb1d5929f4c2752c937d40392905dec82592.th.png)](https://aka.ms/gen-ai-lesson17-gh?WT.mc_id=academic-105485-koreyst) - -## บทนำ - -AI Agents เป็นการพัฒนาที่น่าตื่นเต้นใน Generative AI ซึ่งช่วยให้ Large Language Models (LLMs) ก้าวจากการเป็นผู้ช่วยไปสู่การเป็นเอเจนต์ที่สามารถดำเนินการต่างๆ ได้ เฟรมเวิร์กของ AI Agent ช่วยให้นักพัฒนาสร้างแอปพลิเคชันที่ให้ LLMs เข้าถึงเครื่องมือและการจัดการสถานะได้ เฟรมเวิร์กเหล่านี้ยังช่วยเพิ่มความโปร่งใส ทำให้ผู้ใช้และนักพัฒนาสามารถติดตามการกระทำที่ LLMs วางแผนไว้ได้ ซึ่งช่วยปรับปรุงการจัดการประสบการณ์ - -บทเรียนนี้จะครอบคลุมหัวข้อต่อไปนี้: - -- ทำความเข้าใจว่า AI Agent คืออะไร - AI Agent คืออะไรจริงๆ? -- สำรวจเฟรมเวิร์ก AI Agent สี่แบบ - อะไรที่ทำให้แต่ละแบบมีความพิเศษ? -- นำ AI Agents ไปใช้ในกรณีต่างๆ - ควรใช้ AI Agents เมื่อไหร่? - -## เป้าหมายการเรียนรู้ - -หลังจากเรียนบทเรียนนี้ คุณจะสามารถ: - -- อธิบายว่า AI Agents คืออะไรและสามารถนำไปใช้ได้อย่างไร -- เข้าใจความแตกต่างระหว่างเฟรมเวิร์ก AI Agent ยอดนิยมบางตัว และความแตกต่างของแต่ละตัว -- เข้าใจการทำงานของ AI Agents เพื่อสร้างแอปพลิเคชันด้วยพวกมัน - -## AI Agents คืออะไร? - -AI Agents เป็นสาขาที่น่าตื่นเต้นมากในโลกของ Generative AI ความตื่นเต้นนี้บางครั้งก็นำมาซึ่งความสับสนในคำศัพท์และการใช้งาน เพื่อให้ง่ายและครอบคลุมเครื่องมือส่วนใหญ่ที่เรียกว่า AI Agents เราจะใช้คำนิยามนี้: - -AI Agents ช่วยให้ Large Language Models (LLMs) สามารถทำงานต่างๆ ได้โดยการให้พวกมันเข้าถึง **สถานะ** และ **เครื่องมือ** - -![Agent Model](../../../translated_images/what-agent.21f2893bdfd01e6a7fd09b0416c2b15594d97f44bbb2ab5a1ff8bf643d2fcb3d.th.png) - -มาทำความหมายของคำเหล่านี้กัน: - -**Large Language Models** - คือโมเดลที่กล่าวถึงในคอร์สนี้ เช่น GPT-3.5, GPT-4, Llama-2 เป็นต้น - -**สถานะ (State)** - หมายถึงบริบทที่ LLM กำลังทำงานอยู่ LLM ใช้บริบทจากการกระทำที่ผ่านมาและบริบทปัจจุบันเพื่อชี้นำการตัดสินใจสำหรับการกระทำถัดไป เฟรมเวิร์ก AI Agent ช่วยให้นักพัฒนาจัดการบริบทนี้ได้ง่ายขึ้น - -**เครื่องมือ (Tools)** - เพื่อทำงานที่ผู้ใช้ร้องขอและที่ LLM วางแผนไว้ LLM จำเป็นต้องเข้าถึงเครื่องมือต่างๆ ตัวอย่างเครื่องมือได้แก่ ฐานข้อมูล, API, แอปพลิเคชันภายนอก หรือแม้แต่ LLM ตัวอื่น! - -คำจำกัดความเหล่านี้จะช่วยให้คุณมีพื้นฐานที่ดีเมื่อเราจะดูวิธีการนำไปใช้ มาดูเฟรมเวิร์ก AI Agent ต่างๆ กัน: - -## LangChain Agents - -[LangChain Agents](https://python.langchain.com/docs/how_to/#agents?WT.mc_id=academic-105485-koreyst) เป็นการนำคำนิยามที่เรากล่าวถึงข้างต้นไปใช้จริง - -ในการจัดการ **สถานะ** จะใช้ฟังก์ชันในตัวที่ชื่อ `AgentExecutor` ซึ่งรับ `agent` ที่กำหนดไว้และ `tools` ที่มีให้ใช้งาน - -`AgentExecutor` ยังเก็บประวัติการสนทนาเพื่อให้บริบทของการสนทนา - -![Langchain Agents](../../../translated_images/langchain-agents.edcc55b5d5c437169a2037211284154561183c58bcec6d4ac2f8a79046fac9af.th.png) - -LangChain มี [แคตตาล็อกเครื่องมือ](https://integrations.langchain.com/tools?WT.mc_id=academic-105485-koreyst) ที่สามารถนำเข้าไปในแอปพลิเคชันของคุณเพื่อให้ LLM เข้าถึงได้ เครื่องมือเหล่านี้สร้างโดยชุมชนและทีม LangChain - -คุณสามารถกำหนดเครื่องมือเหล่านี้และส่งต่อไปยัง `AgentExecutor` - -ความโปร่งใสเป็นอีกประเด็นสำคัญเมื่อพูดถึง AI Agents นักพัฒนาแอปพลิเคชันควรเข้าใจว่า LLM ใช้เครื่องมือใดและเพราะเหตุใด ทีมงาน LangChain จึงพัฒนา LangSmith ขึ้นมาเพื่อช่วยในเรื่องนี้ - -## AutoGen - -เฟรมเวิร์ก AI Agent ถัดไปที่เราจะพูดถึงคือ [AutoGen](https://microsoft.github.io/autogen/?WT.mc_id=academic-105485-koreyst) จุดเน้นหลักของ AutoGen คือการสนทนา Agents มีความสามารถทั้งในการ **สนทนา** และ **ปรับแต่งได้** - -**สนทนาได้ (Conversable) -** LLMs สามารถเริ่มและดำเนินการสนทนากับ LLM ตัวอื่นเพื่อทำงานให้เสร็จ โดยการสร้าง `AssistantAgents` และกำหนดข้อความระบบเฉพาะให้กับพวกมัน - -```python - -autogen.AssistantAgent( name="Coder", llm_config=llm_config, ) pm = autogen.AssistantAgent( name="Product_manager", system_message="Creative in software product ideas.", llm_config=llm_config, ) - -``` - -**ปรับแต่งได้ (Customizable)** - Agents ไม่ได้ถูกกำหนดแค่เป็น LLMs เท่านั้น แต่ยังสามารถเป็นผู้ใช้หรือเครื่องมือได้ ในฐานะนักพัฒนา คุณสามารถกำหนด `UserProxyAgent` ที่รับผิดชอบในการโต้ตอบกับผู้ใช้เพื่อรับข้อเสนอแนะในการทำงาน ข้อเสนอแนะนี้อาจทำให้การทำงานดำเนินต่อหรือหยุดลง - -```python -user_proxy = UserProxyAgent(name="user_proxy") -``` - -### สถานะและเครื่องมือ - -เพื่อเปลี่ยนแปลงและจัดการสถานะ Agent ผู้ช่วยจะสร้างโค้ด Python เพื่อทำงานให้เสร็จ - -นี่คือตัวอย่างของกระบวนการ: - -![AutoGen](../../../translated_images/autogen.dee9a25a45fde584fedd84b812a6e31de5a6464687cdb66bb4f2cb7521391856.th.png) - -#### กำหนด LLM ด้วยข้อความระบบ - -```python -system_message="For weather related tasks, only use the functions you have been provided with. Reply TERMINATE when the task is done." -``` - -ข้อความระบบนี้ชี้นำ LLM เฉพาะตัวนี้ว่า ฟังก์ชันใดที่เกี่ยวข้องกับงานของมัน จำไว้ว่ากับ AutoGen คุณสามารถมี AssistantAgents หลายตัวที่กำหนดด้วยข้อความระบบต่างกันได้ - -#### การสนทนาเริ่มต้นโดยผู้ใช้ - -```python -user_proxy.initiate_chat( chatbot, message="I am planning a trip to NYC next week, can you help me pick out what to wear? ", ) - -``` - -ข้อความนี้จาก user_proxy (มนุษย์) จะเป็นตัวเริ่มกระบวนการให้ Agent สำรวจฟังก์ชันที่ควรดำเนินการ - -#### ฟังก์ชันถูกเรียกใช้ - -```bash -chatbot (to user_proxy): - -***** Suggested tool Call: get_weather ***** Arguments: {"location":"New York City, NY","time_periond:"7","temperature_unit":"Celsius"} ******************************************************** -------------------------------------------------------------------------------- - ->>>>>>>> EXECUTING FUNCTION get_weather... user_proxy (to chatbot): ***** Response from calling function "get_weather" ***** 112.22727272727272 EUR **************************************************************** - -``` - -เมื่อการสนทนาเริ่มต้นถูกประมวลผล Agent จะส่งเครื่องมือที่แนะนำให้เรียกใช้ ในกรณีนี้คือฟังก์ชันชื่อ `get_weather` ขึ้นอยู่กับการตั้งค่าของคุณ ฟังก์ชันนี้อาจถูกเรียกใช้อัตโนมัติและอ่านผลโดย Agent หรืออาจรอการป้อนข้อมูลจากผู้ใช้ก่อน - -คุณสามารถดูตัวอย่างโค้ด [AutoGen](https://microsoft.github.io/autogen/docs/Examples/?WT.mc_id=academic-105485-koreyst) เพื่อเรียนรู้เพิ่มเติมเกี่ยวกับการเริ่มต้นสร้าง - -## Taskweaver - -เฟรมเวิร์ก Agent ถัดไปที่เราจะสำรวจคือ [Taskweaver](https://microsoft.github.io/TaskWeaver/?WT.mc_id=academic-105485-koreyst) ซึ่งเป็นที่รู้จักในฐานะ "code-first" agent เพราะแทนที่จะทำงานกับ `strings` อย่างเดียว มันสามารถทำงานกับ DataFrames ใน Python ได้ ซึ่งมีประโยชน์มากสำหรับงานวิเคราะห์ข้อมูลและการสร้างข้อมูล เช่น การสร้างกราฟและแผนภูมิ หรือการสร้างตัวเลขสุ่ม - -### สถานะและเครื่องมือ - -เพื่อจัดการสถานะของการสนทนา TaskWeaver ใช้แนวคิดของ `Planner` ซึ่งเป็น LLM ที่รับคำขอจากผู้ใช้และวางแผนงานที่ต้องทำเพื่อให้คำขอนั้นสำเร็จ - -เพื่อทำงานให้เสร็จ `Planner` จะเข้าถึงชุดเครื่องมือที่เรียกว่า `Plugins` ซึ่งอาจเป็นคลาส Python หรือ interpreter โค้ดทั่วไป ปลั๊กอินเหล่านี้ถูกเก็บเป็น embeddings เพื่อให้ LLM ค้นหาปลั๊กอินที่เหมาะสมได้ดีขึ้น - -![Taskweaver](../../../translated_images/taskweaver.da8559999267715a95b7677cf9b7d7dd8420aee6f3c484ced1833f081988dcd5.th.png) - -นี่คือตัวอย่างปลั๊กอินสำหรับตรวจจับความผิดปกติ: - -```python -class AnomalyDetectionPlugin(Plugin): def __call__(self, df: pd.DataFrame, time_col_name: str, value_col_name: str): -``` - -โค้ดจะถูกตรวจสอบก่อนการรัน อีกฟีเจอร์หนึ่งในการจัดการบริบทใน Taskweaver คือ `experience` ซึ่งช่วยเก็บบริบทของการสนทนาในระยะยาวในไฟล์ YAML การตั้งค่านี้ช่วยให้ LLM พัฒนาขึ้นเมื่อเวลาผ่านไปในงานบางอย่างโดยอิงจากการสนทนาก่อนหน้า - -## JARVIS - -เฟรมเวิร์ก Agent ตัวสุดท้ายที่เราจะสำรวจคือ [JARVIS](https://github.com/microsoft/JARVIS?tab=readme-ov-file?WT.mc_id=academic-105485-koreyst) สิ่งที่ทำให้ JARVIS แตกต่างคือมันใช้ LLM ในการจัดการ `สถานะ` ของการสนทนา และ `tools` คือโมเดล AI อื่นๆ ซึ่งแต่ละโมเดลเป็นโมเดลเฉพาะทางที่ทำงานบางอย่าง เช่น การตรวจจับวัตถุ, การถอดเสียง หรือการบรรยายภาพ - -![JARVIS](../../../translated_images/jarvis.762ddbadbd1a3a3364d4ca3db1a7a9c0d2180060c0f8da6f7bd5b5ea2a115aa7.th.png) - -LLM ซึ่งเป็นโมเดลทั่วไป จะรับคำขอจากผู้ใช้และระบุงานเฉพาะและข้อมูล/อาร์กิวเมนต์ที่จำเป็นสำหรับการทำงานนั้น - -```python -[{"task": "object-detection", "id": 0, "dep": [-1], "args": {"image": "e1.jpg" }}] -``` - -จากนั้น LLM จะจัดรูปแบบคำขอให้อยู่ในรูปแบบที่โมเดล AI เฉพาะทางสามารถเข้าใจได้ เช่น JSON เมื่อโมเดล AI ส่งผลลัพธ์กลับมา LLM จะรับข้อมูลตอบกลับนั้น - -ถ้าต้องใช้โมเดลหลายตัวในการทำงาน LLM จะตีความผลลัพธ์จากโมเดลเหล่านั้นก่อนนำมารวมกันเพื่อสร้างคำตอบให้ผู้ใช้ - -ตัวอย่างด้านล่างแสดงการทำงานเมื่อผู้ใช้ขอคำอธิบายและนับจำนวนวัตถุในภาพ: - -## การบ้าน - -เพื่อเรียนรู้เพิ่มเติมเกี่ยวกับ AI Agents คุณสามารถสร้างด้วย AutoGen: - -- แอปพลิเคชันที่จำลองการประชุมธุรกิจกับแผนกต่างๆ ของสตาร์ทอัพด้านการศึกษา -- สร้างข้อความระบบที่ช่วยให้ LLM เข้าใจบุคลิกและลำดับความสำคัญต่างๆ และเปิดโอกาสให้ผู้ใช้เสนอไอเดียผลิตภัณฑ์ใหม่ -- LLM ควรสร้างคำถามติดตามจากแต่ละแผนกเพื่อปรับปรุงและพัฒนาไอเดียผลิตภัณฑ์และการนำเสนอ - -## การเรียนรู้ไม่ได้หยุดเพียงเท่านี้ เดินหน้าต่อไป - -หลังจากเรียนบทเรียนนี้แล้ว อย่าลืมเข้าไปดู [คอลเลกชันการเรียนรู้ Generative AI](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) ของเราเพื่อพัฒนาความรู้ด้าน Generative AI ของคุณให้ก้าวหน้าไปอีกขั้น! - -**ข้อจำกัดความรับผิดชอบ**: -เอกสารนี้ได้รับการแปลโดยใช้บริการแปลภาษาอัตโนมัติ [Co-op Translator](https://github.com/Azure/co-op-translator) แม้เราจะพยายามให้ความถูกต้องสูงสุด แต่โปรดทราบว่าการแปลอัตโนมัติอาจมีข้อผิดพลาดหรือความไม่ถูกต้อง เอกสารต้นฉบับในภาษาต้นทางถือเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลที่สำคัญ ขอแนะนำให้ใช้บริการแปลโดยผู้เชี่ยวชาญมนุษย์ เราไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความผิดใด ๆ ที่เกิดจากการใช้การแปลนี้ \ No newline at end of file + +[![Open Source Models](../../../translated_images/17-lesson-banner.a5b918fb0920e4e6d8d391a100f5cb1d5929f4c2752c937d40392905dec82592.th.png)](https://youtu.be/yAXVW-lUINc?si=bOtW9nL6jc3XJgOM) + +## บทนำ + +AI Agents เป็นการพัฒนาที่น่าตื่นเต้นใน Generative AI ซึ่งช่วยให้ Large Language Models (LLMs) พัฒนาไปสู่การเป็นตัวแทนที่สามารถดำเนินการได้ Frameworks ของ AI Agent ช่วยให้นักพัฒนาสามารถสร้างแอปพลิเคชันที่ให้ LLMs เข้าถึงเครื่องมือและการจัดการสถานะได้ Frameworks เหล่านี้ยังช่วยเพิ่มการมองเห็น ทำให้ผู้ใช้และนักพัฒนาสามารถติดตามการดำเนินการที่ LLMs วางแผนไว้ได้ ซึ่งช่วยปรับปรุงการจัดการประสบการณ์ + +บทเรียนนี้จะครอบคลุมหัวข้อต่อไปนี้: + +- ทำความเข้าใจว่า AI Agent คืออะไร - AI Agent คืออะไร? +- สำรวจ Frameworks ของ AI Agent สี่แบบ - อะไรที่ทำให้แต่ละแบบมีเอกลักษณ์? +- การนำ AI Agents ไปใช้ในกรณีการใช้งานต่าง ๆ - เมื่อไหร่ที่เราควรใช้ AI Agents? + +## เป้าหมายการเรียนรู้ + +หลังจากเรียนบทเรียนนี้ คุณจะสามารถ: + +- อธิบายว่า AI Agents คืออะไรและสามารถใช้งานได้อย่างไร +- เข้าใจความแตกต่างระหว่าง Frameworks ของ AI Agent ที่ได้รับความนิยม และความแตกต่างระหว่างพวกมัน +- เข้าใจการทำงานของ AI Agents เพื่อสร้างแอปพลิเคชันด้วยพวกมัน + +## AI Agents คืออะไร? + +AI Agents เป็นสาขาที่น่าตื่นเต้นมากในโลกของ Generative AI ด้วยความตื่นเต้นนี้ บางครั้งอาจเกิดความสับสนเกี่ยวกับคำศัพท์และการใช้งาน เพื่อให้เข้าใจง่ายและครอบคลุมเครื่องมือส่วนใหญ่ที่เกี่ยวข้องกับ AI Agents เราจะใช้คำจำกัดความนี้: + +AI Agents ช่วยให้ Large Language Models (LLMs) สามารถทำงานได้โดยให้พวกมันเข้าถึง **สถานะ** และ **เครื่องมือ** + +![Agent Model](../../../translated_images/what-agent.21f2893bdfd01e6a7fd09b0416c2b15594d97f44bbb2ab5a1ff8bf643d2fcb3d.th.png) + +มาทำความเข้าใจคำศัพท์เหล่านี้: + +**Large Language Models** - โมเดลเหล่านี้คือโมเดลที่กล่าวถึงในคอร์สนี้ เช่น GPT-3.5, GPT-4, Llama-2 เป็นต้น + +**สถานะ** - หมายถึงบริบทที่ LLM กำลังทำงานอยู่ LLM ใช้บริบทของการกระทำที่ผ่านมาและบริบทปัจจุบันเพื่อเป็นแนวทางในการตัดสินใจสำหรับการกระทำต่อไป Frameworks ของ AI Agent ช่วยให้นักพัฒนาสามารถจัดการบริบทนี้ได้ง่ายขึ้น + +**เครื่องมือ** - เพื่อทำงานที่ผู้ใช้ร้องขอและที่ LLM วางแผนไว้ LLM จำเป็นต้องเข้าถึงเครื่องมือ ตัวอย่างของเครื่องมือได้แก่ ฐานข้อมูล, API, แอปพลิเคชันภายนอก หรือแม้กระทั่ง LLM อื่น! + +คำจำกัดความเหล่านี้หวังว่าจะช่วยให้คุณมีพื้นฐานที่ดีในการดำเนินการต่อไปเมื่อเราดูวิธีการนำไปใช้ มาสำรวจ Frameworks ของ AI Agent ที่แตกต่างกัน: + +## LangChain Agents + +[LangChain Agents](https://python.langchain.com/docs/how_to/#agents?WT.mc_id=academic-105485-koreyst) เป็นการนำคำจำกัดความที่เราให้ไว้ข้างต้นไปใช้ + +เพื่อจัดการ **สถานะ** จะใช้ฟังก์ชันในตัวที่เรียกว่า `AgentExecutor` ซึ่งรับ `agent` ที่กำหนดไว้และ `tools` ที่มีให้ใช้งาน + +`Agent Executor` ยังเก็บประวัติการสนทนาเพื่อให้บริบทของการสนทนา + +![Langchain Agents](../../../translated_images/langchain-agents.edcc55b5d5c437169a2037211284154561183c58bcec6d4ac2f8a79046fac9af.th.png) + +LangChain มี [แคตตาล็อกของเครื่องมือ](https://integrations.langchain.com/tools?WT.mc_id=academic-105485-koreyst) ที่สามารถนำเข้าไปในแอปพลิเคชันของคุณเพื่อให้ LLM เข้าถึงได้ เครื่องมือเหล่านี้สร้างโดยชุมชนและทีม LangChain + +คุณสามารถกำหนดเครื่องมือเหล่านี้และส่งต่อไปยัง `AgentExecutor` + +การมองเห็นเป็นอีกแง่มุมที่สำคัญเมื่อพูดถึง AI Agents การที่นักพัฒนาแอปพลิเคชันเข้าใจว่า LLM กำลังใช้เครื่องมือใดและทำไมจึงสำคัญ สำหรับเรื่องนี้ ทีมที่ LangChain ได้พัฒนา LangSmith + +## AutoGen + +Frameworks ของ AI Agent ถัดไปที่เราจะพูดถึงคือ [AutoGen](https://microsoft.github.io/autogen/?WT.mc_id=academic-105485-koreyst) จุดเน้นหลักของ AutoGen คือการสนทนา Agents มีทั้ง **สามารถสนทนาได้** และ **ปรับแต่งได้** + +**สามารถสนทนาได้ -** LLMs สามารถเริ่มต้นและดำเนินการสนทนากับ LLM อื่นเพื่อทำงานให้เสร็จสิ้น โดยการสร้าง `AssistantAgents` และให้ข้อความระบบเฉพาะ + +```python + +autogen.AssistantAgent( name="Coder", llm_config=llm_config, ) pm = autogen.AssistantAgent( name="Product_manager", system_message="Creative in software product ideas.", llm_config=llm_config, ) + +``` + +**ปรับแต่งได้** - Agents สามารถกำหนดได้ไม่เพียงแค่เป็น LLMs แต่ยังเป็นผู้ใช้หรือเครื่องมือ ในฐานะนักพัฒนา คุณสามารถกำหนด `UserProxyAgent` ซึ่งรับผิดชอบในการโต้ตอบกับผู้ใช้เพื่อให้ข้อเสนอแนะในการทำงานให้เสร็จสมบูรณ์ ข้อเสนอแนะนี้สามารถดำเนินการต่อหรือหยุดการดำเนินการของงานได้ + +```python +user_proxy = UserProxyAgent(name="user_proxy") +``` + +### สถานะและเครื่องมือ + +เพื่อเปลี่ยนแปลงและจัดการสถานะ Assistant Agent สร้างโค้ด Python เพื่อทำงานให้เสร็จสมบูรณ์ + +นี่คือตัวอย่างของกระบวนการ: + +![AutoGen](../../../translated_images/autogen.dee9a25a45fde584fedd84b812a6e31de5a6464687cdb66bb4f2cb7521391856.th.png) + +#### LLM กำหนดด้วยข้อความระบบ + +```python +system_message="For weather related tasks, only use the functions you have been provided with. Reply TERMINATE when the task is done." +``` + +ข้อความระบบนี้กำหนด LLM เฉพาะนี้ให้รู้ว่าฟังก์ชันใดเกี่ยวข้องกับงานของมัน จำไว้ว่า ด้วย AutoGen คุณสามารถมี AssistantAgents ที่กำหนดไว้หลายตัวพร้อมข้อความระบบที่แตกต่างกัน + +#### การสนทนาเริ่มต้นโดยผู้ใช้ + +```python +user_proxy.initiate_chat( chatbot, message="I am planning a trip to NYC next week, can you help me pick out what to wear? ", ) + +``` + +ข้อความนี้จาก user_proxy (Human) เป็นสิ่งที่เริ่มกระบวนการของ Agent ในการสำรวจฟังก์ชันที่ควรดำเนินการ + +#### ฟังก์ชันถูกดำเนินการ + +```bash +chatbot (to user_proxy): + +***** Suggested tool Call: get_weather ***** Arguments: {"location":"New York City, NY","time_periond:"7","temperature_unit":"Celsius"} ******************************************************** -------------------------------------------------------------------------------- + +>>>>>>>> EXECUTING FUNCTION get_weather... user_proxy (to chatbot): ***** Response from calling function "get_weather" ***** 112.22727272727272 EUR **************************************************************** + +``` + +เมื่อการสนทนาเริ่มต้นถูกประมวลผล Agent จะส่งเครื่องมือที่แนะนำให้เรียกใช้ ในกรณีนี้คือฟังก์ชันที่เรียกว่า `get_weather` ขึ้นอยู่กับการตั้งค่าของคุณ ฟังก์ชันนี้สามารถดำเนินการโดยอัตโนมัติและอ่านโดย Agent หรือสามารถดำเนินการตามการป้อนข้อมูลของผู้ใช้ + +คุณสามารถค้นหารายการ [ตัวอย่างโค้ด AutoGen](https://microsoft.github.io/autogen/docs/Examples/?WT.mc_id=academic-105485-koreyst) เพื่อสำรวจเพิ่มเติมเกี่ยวกับการเริ่มต้นสร้าง + +## Taskweaver + +Frameworks ของ Agent ถัดไปที่เราจะสำรวจคือ [Taskweaver](https://microsoft.github.io/TaskWeaver/?WT.mc_id=academic-105485-koreyst) ซึ่งเป็นที่รู้จักในฐานะ "agent ที่เน้นโค้ด" เพราะแทนที่จะทำงานกับ `strings` อย่างเดียว มันสามารถทำงานกับ DataFrames ใน Python ได้ สิ่งนี้มีประโยชน์อย่างมากสำหรับงานวิเคราะห์และสร้างข้อมูล เช่น การสร้างกราฟและแผนภูมิ หรือการสร้างตัวเลขสุ่ม + +### สถานะและเครื่องมือ + +เพื่อจัดการสถานะของการสนทนา TaskWeaver ใช้แนวคิดของ `Planner` `Planner` เป็น LLM ที่รับคำขอจากผู้ใช้และวางแผนงานที่ต้องทำเพื่อให้คำขอนั้นสำเร็จ + +เพื่อทำงานให้เสร็จ `Planner` จะเข้าถึงชุดเครื่องมือที่เรียกว่า `Plugins` ซึ่งสามารถเป็นคลาส Python หรือ interpreter โค้ดทั่วไป Plugins เหล่านี้ถูกเก็บเป็น embeddings เพื่อให้ LLM สามารถค้นหา plugin ที่เหมาะสมได้ดียิ่งขึ้น + +![Taskweaver](../../../translated_images/taskweaver.da8559999267715a95b7677cf9b7d7dd8420aee6f3c484ced1833f081988dcd5.th.png) + +นี่คือตัวอย่างของ plugin สำหรับจัดการการตรวจจับความผิดปกติ: + +```python +class AnomalyDetectionPlugin(Plugin): def __call__(self, df: pd.DataFrame, time_col_name: str, value_col_name: str): +``` + +โค้ดจะถูกตรวจสอบก่อนดำเนินการ อีกคุณสมบัติหนึ่งในการจัดการบริบทใน Taskweaver คือ `experience` Experience ช่วยให้บริบทของการสนทนาเก็บไว้ในระยะยาวในไฟล์ YAML สิ่งนี้สามารถกำหนดค่าได้เพื่อให้ LLM ปรับปรุงงานบางอย่างเมื่อได้รับการเปิดเผยต่อการสนทนาก่อนหน้า + +## JARVIS + +Frameworks ของ Agent สุดท้ายที่เราจะสำรวจคือ [JARVIS](https://github.com/microsoft/JARVIS?tab=readme-ov-file?WT.mc_id=academic-105485-koreyst) สิ่งที่ทำให้ JARVIS มีเอกลักษณ์คือการใช้ LLM ในการจัดการ `สถานะ` ของการสนทนา และ `เครื่องมือ` คือโมเดล AI อื่น ๆ แต่ละโมเดล AI เป็นโมเดลเฉพาะที่ทำงานบางอย่าง เช่น การตรวจจับวัตถุ การถอดเสียง หรือการสร้างคำบรรยายภาพ + +![JARVIS](../../../translated_images/jarvis.762ddbadbd1a3a3364d4ca3db1a7a9c0d2180060c0f8da6f7bd5b5ea2a115aa7.th.png) + +LLM ซึ่งเป็นโมเดลทั่วไป จะรับคำขอจากผู้ใช้และระบุงานเฉพาะและอาร์กิวเมนต์/ข้อมูลที่จำเป็นในการทำงานให้เสร็จ + +```python +[{"task": "object-detection", "id": 0, "dep": [-1], "args": {"image": "e1.jpg" }}] +``` + +จากนั้น LLM จะจัดรูปแบบคำขอในลักษณะที่โมเดล AI เฉพาะสามารถตีความได้ เช่น JSON เมื่อโมเดล AI ส่งผลลัพธ์กลับมาจากงานที่ทำ LLM จะรับคำตอบนั้น + +หากต้องใช้โมเดลหลายตัวในการทำงานให้เสร็จ LLM จะตีความคำตอบจากโมเดลเหล่านั้นก่อนที่จะรวมเข้าด้วยกันเพื่อสร้างคำตอบให้กับผู้ใช้ + +ตัวอย่างด้านล่างแสดงให้เห็นว่ากระบวนการนี้ทำงานอย่างไรเมื่อผู้ใช้ร้องขอคำอธิบายและจำนวนวัตถุในภาพ: + +## งานที่มอบหมาย + +เพื่อเรียนรู้เพิ่มเติมเกี่ยวกับ AI Agents คุณสามารถสร้างด้วย AutoGen: + +- แอปพลิเคชันที่จำลองการประชุมธุรกิจกับแผนกต่าง ๆ ของสตาร์ทอัพด้านการศึกษา +- สร้างข้อความระบบที่ช่วยให้ LLMs เข้าใจบุคลิกและลำดับความสำคัญที่แตกต่างกัน และช่วยให้ผู้ใช้เสนอไอเดียผลิตภัณฑ์ใหม่ +- จากนั้น LLM ควรสร้างคำถามติดตามผลจากแต่ละแผนกเพื่อปรับปรุงและพัฒนาไอเดียผลิตภัณฑ์ + +## การเรียนรู้ไม่ได้หยุดอยู่แค่นี้ เดินทางต่อไป + +หลังจากจบบทเรียนนี้ ลองดู [Generative AI Learning collection](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) ของเราเพื่อเพิ่มพูนความรู้เกี่ยวกับ Generative AI ของคุณ! + +--- + +**ข้อจำกัดความรับผิดชอบ**: +เอกสารนี้ได้รับการแปลโดยใช้บริการแปลภาษา AI [Co-op Translator](https://github.com/Azure/co-op-translator) แม้ว่าเราจะพยายามให้การแปลมีความถูกต้อง แต่โปรดทราบว่าการแปลอัตโนมัติอาจมีข้อผิดพลาดหรือความไม่ถูกต้อง เอกสารต้นฉบับในภาษาดั้งเดิมควรถือเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลที่สำคัญ ขอแนะนำให้ใช้บริการแปลภาษามืออาชีพ เราไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความผิดที่เกิดจากการใช้การแปลนี้ \ No newline at end of file diff --git a/translations/th/18-fine-tuning/README.md b/translations/th/18-fine-tuning/README.md index 76ee263aac..bf43bb9479 100644 --- a/translations/th/18-fine-tuning/README.md +++ b/translations/th/18-fine-tuning/README.md @@ -1,109 +1,110 @@ - -[![Open Source Models](../../../translated_images/18-lesson-banner.f30176815b1a5074fce9cceba317720586caa99e24001231a92fd04eeb54a121.th.png)](https://aka.ms/gen-ai-lesson18-gh?WT.mc_id=academic-105485-koreyst) - -# การปรับแต่ง LLM ของคุณ - -การใช้โมเดลภาษาขนาดใหญ่เพื่อสร้างแอปพลิเคชัน AI เชิงสร้างสรรค์มาพร้อมกับความท้าทายใหม่ๆ ปัญหาหลักคือการรับประกันคุณภาพของคำตอบ (ความถูกต้องและความเกี่ยวข้อง) ในเนื้อหาที่โมเดลสร้างขึ้นตามคำขอของผู้ใช้ ในบทเรียนก่อนหน้านี้ เราได้พูดถึงเทคนิคต่างๆ เช่น การออกแบบ prompt และการสร้างเนื้อหาโดยเสริมข้อมูลที่ดึงมา ซึ่งพยายามแก้ปัญหานี้โดยการ _ปรับเปลี่ยนข้อมูล prompt_ ที่ป้อนเข้าโมเดลที่มีอยู่แล้ว - -ในบทเรียนวันนี้ เราจะพูดถึงเทคนิคที่สาม คือ **การปรับแต่ง (fine-tuning)** ซึ่งพยายามแก้ไขปัญหานี้โดยการ _ฝึกโมเดลใหม่อีกครั้ง_ ด้วยข้อมูลเพิ่มเติม มาดูรายละเอียดกันเลย - -## วัตถุประสงค์การเรียนรู้ - -บทเรียนนี้จะแนะนำแนวคิดของการปรับแต่งสำหรับโมเดลภาษาที่ผ่านการฝึกมาแล้ว สำรวจข้อดีและความท้าทายของวิธีนี้ และให้คำแนะนำเกี่ยวกับเวลาที่ควรใช้และวิธีการปรับแต่งเพื่อเพิ่มประสิทธิภาพของโมเดล AI เชิงสร้างสรรค์ของคุณ - -เมื่อจบบทเรียนนี้ คุณจะสามารถตอบคำถามต่อไปนี้ได้: - -- การปรับแต่งสำหรับโมเดลภาษา คืออะไร? -- เมื่อไหร่และทำไมการปรับแต่งจึงมีประโยชน์? -- ฉันจะปรับแต่งโมเดลที่ผ่านการฝึกมาแล้วได้อย่างไร? -- ข้อจำกัดของการปรับแต่งมีอะไรบ้าง? - -พร้อมแล้วหรือยัง? เริ่มกันเลย - -## คู่มือภาพรวม - -อยากเห็นภาพรวมของสิ่งที่จะเรียนก่อนลงลึกใช่ไหม? ลองดูคู่มือภาพรวมนี้ที่อธิบายเส้นทางการเรียนรู้สำหรับบทเรียนนี้ — ตั้งแต่การเรียนรู้แนวคิดหลักและแรงจูงใจในการปรับแต่ง ไปจนถึงการเข้าใจกระบวนการและแนวทางปฏิบัติที่ดีที่สุดสำหรับการทำงานปรับแต่ง นี่เป็นหัวข้อที่น่าสนใจมาก อย่าลืมเข้าไปดูที่หน้า [Resources](./RESOURCES.md?WT.mc_id=academic-105485-koreyst) เพื่อหาลิงก์เพิ่มเติมสำหรับสนับสนุนการเรียนรู้ด้วยตนเองของคุณ! - -![Illustrated Guide to Fine Tuning Language Models](../../../translated_images/18-fine-tuning-sketchnote.11b21f9ec8a703467a120cb79a28b5ac1effc8d8d9d5b31bbbac6b8640432e14.th.png) - -## การปรับแต่งสำหรับโมเดลภาษา คืออะไร? - -ตามคำจำกัดความ โมเดลภาษาขนาดใหญ่จะถูก _ฝึกล่วงหน้า_ ด้วยข้อความจำนวนมากจากแหล่งข้อมูลหลากหลายรวมถึงอินเทอร์เน็ต ตามที่เราได้เรียนรู้ในบทเรียนก่อนหน้า เราต้องใช้เทคนิคอย่าง _การออกแบบ prompt_ และ _การสร้างเนื้อหาโดยเสริมข้อมูลที่ดึงมา_ เพื่อปรับปรุงคุณภาพของคำตอบที่โมเดลให้กับคำถามของผู้ใช้ ("prompt") - -เทคนิคการออกแบบ prompt ที่ได้รับความนิยมคือการให้คำแนะนำกับโมเดลมากขึ้นเกี่ยวกับสิ่งที่คาดหวังในคำตอบ โดยการให้ _คำสั่ง_ (คำแนะนำชัดเจน) หรือ _ยกตัวอย่างบางส่วน_ (คำแนะนำโดยนัย) เรียกวิธีนี้ว่า _few-shot learning_ แต่ก็มีข้อจำกัดสองประการ: - -- ขีดจำกัดจำนวน token ของโมเดลอาจจำกัดจำนวนตัวอย่างที่คุณให้ได้ และลดประสิทธิภาพ -- ค่าใช้จ่ายของ token อาจสูงเมื่อเพิ่มตัวอย่างในทุก prompt และจำกัดความยืดหยุ่น - -การปรับแต่งเป็นวิธีปฏิบัติทั่วไปในระบบ machine learning ที่เรานำโมเดลที่ผ่านการฝึกมาแล้วมาฝึกใหม่ด้วยข้อมูลใหม่เพื่อปรับปรุงประสิทธิภาพในงานเฉพาะ ในบริบทของโมเดลภาษา เราสามารถปรับแต่งโมเดลที่ผ่านการฝึกมาแล้ว _ด้วยชุดตัวอย่างที่คัดสรรสำหรับงานหรือโดเมนเฉพาะ_ เพื่อสร้าง **โมเดลเฉพาะทาง** ที่อาจแม่นยำและเกี่ยวข้องมากขึ้นสำหรับงานหรือโดเมนนั้นๆ ผลพลอยได้ของการปรับแต่งคือช่วยลดจำนวนตัวอย่างที่ต้องใช้ใน few-shot learning — ลดการใช้ token และค่าใช้จ่ายที่เกี่ยวข้อง - -## เมื่อไหร่และทำไมเราควรปรับแต่งโมเดล? - -ใน _บริบทนี้_ เมื่อเราพูดถึงการปรับแต่ง เราหมายถึงการปรับแต่งแบบ **มีผู้ควบคุม (supervised)** ที่ทำโดยการ **เพิ่มข้อมูลใหม่** ที่ไม่ใช่ส่วนหนึ่งของชุดข้อมูลฝึกเดิม ซึ่งแตกต่างจากการปรับแต่งแบบไม่มีผู้ควบคุมที่โมเดลถูกฝึกใหม่บนข้อมูลเดิมแต่ใช้พารามิเตอร์ต่างกัน - -สิ่งสำคัญที่ต้องจำคือการปรับแต่งเป็นเทคนิคขั้นสูงที่ต้องการความเชี่ยวชาญระดับหนึ่งเพื่อให้ได้ผลลัพธ์ตามต้องการ หากทำไม่ถูกต้อง อาจไม่ได้ผลลัพธ์ที่คาดหวัง หรืออาจทำให้ประสิทธิภาพของโมเดลในโดเมนเป้าหมายลดลง - -ดังนั้น ก่อนที่คุณจะเรียนรู้ "วิธี" ปรับแต่งโมเดลภาษา คุณต้องรู้ "ทำไม" ถึงควรเลือกวิธีนี้ และ "เมื่อไหร่" ที่ควรเริ่มกระบวนการปรับแต่ง เริ่มต้นด้วยการถามตัวเองคำถามเหล่านี้: - -- **กรณีการใช้งาน**: กรณีการใช้งานของคุณสำหรับการปรับแต่งคืออะไร? คุณต้องการปรับปรุงด้านใดของโมเดลที่ผ่านการฝึกมาแล้ว? -- **ทางเลือกอื่น**: คุณได้ลอง _เทคนิคอื่นๆ_ เพื่อให้ได้ผลลัพธ์ตามต้องการหรือยัง? ใช้เทคนิคเหล่านั้นเป็นฐานเปรียบเทียบ - - การออกแบบ prompt: ลองใช้เทคนิค few-shot prompting พร้อมตัวอย่างคำตอบที่เกี่ยวข้อง ประเมินคุณภาพคำตอบ - - การสร้างเนื้อหาโดยเสริมข้อมูลที่ดึงมา: ลองเสริม prompt ด้วยผลลัพธ์การค้นหาข้อมูลของคุณ ประเมินคุณภาพคำตอบ -- **ค่าใช้จ่าย**: คุณได้ประเมินค่าใช้จ่ายสำหรับการปรับแต่งหรือยัง? - - ความสามารถในการปรับแต่ง — โมเดลที่ผ่านการฝึกมาแล้วสามารถปรับแต่งได้หรือไม่? - - ความพยายาม — สำหรับการเตรียมข้อมูลฝึก ประเมินและปรับปรุงโมเดล - - การประมวลผล — สำหรับการรันงานปรับแต่ง และการนำโมเดลที่ปรับแต่งแล้วไปใช้งาน - - ข้อมูล — การเข้าถึงตัวอย่างคุณภาพเพียงพอสำหรับผลกระทบของการปรับแต่ง -- **ประโยชน์**: คุณได้ยืนยันประโยชน์ของการปรับแต่งหรือยัง? - - คุณภาพ — โมเดลที่ปรับแต่งแล้วทำงานดีกว่าฐานหรือไม่? - - ค่าใช้จ่าย — ช่วยลดการใช้ token โดยทำให้ prompt ง่ายขึ้นหรือไม่? - - ความยืดหยุ่น — คุณสามารถนำโมเดลฐานไปใช้ในโดเมนใหม่ได้หรือไม่? - -เมื่อคุณตอบคำถามเหล่านี้ได้ คุณจะสามารถตัดสินใจได้ว่าการปรับแต่งเป็นวิธีที่เหมาะสมกับกรณีการใช้งานของคุณหรือไม่ โดยทั่วไป วิธีนี้จะเหมาะสมก็ต่อเมื่อประโยชน์มากกว่าค่าใช้จ่าย เมื่อคุณตัดสินใจดำเนินการแล้ว ก็ถึงเวลาคิดว่า _จะปรับแต่งโมเดลที่ผ่านการฝึกมาแล้วอย่างไร_ - -อยากได้ข้อมูลเชิงลึกเพิ่มเติมเกี่ยวกับกระบวนการตัดสินใจไหม? ชม [To fine-tune or not to fine-tune](https://www.youtube.com/watch?v=0Jo-z-MFxJs) - -## เราจะปรับแต่งโมเดลที่ผ่านการฝึกมาแล้วได้อย่างไร? - -ในการปรับแต่งโมเดลที่ผ่านการฝึกมาแล้ว คุณต้องมี: - -- โมเดลที่ผ่านการฝึกมาแล้วเพื่อปรับแต่ง -- ชุดข้อมูลสำหรับใช้ในการปรับแต่ง -- สภาพแวดล้อมสำหรับรันงานปรับแต่ง -- สภาพแวดล้อมสำหรับนำโมเดลที่ปรับแต่งแล้วไปใช้งาน - -## การปรับแต่งในทางปฏิบัติ - -แหล่งข้อมูลต่อไปนี้มีบทเรียนทีละขั้นตอนเพื่อพาคุณผ่านตัวอย่างจริงโดยใช้โมเดลที่เลือกพร้อมชุดข้อมูลที่คัดสรร สำหรับทำตามบทเรียนเหล่านี้ คุณต้องมีบัญชีกับผู้ให้บริการนั้นๆ พร้อมทั้งเข้าถึงโมเดลและชุดข้อมูลที่เกี่ยวข้อง - -| ผู้ให้บริการ | บทเรียน | คำอธิบาย | -| ------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| OpenAI | [How to fine-tune chat models](https://github.com/openai/openai-cookbook/blob/main/examples/How_to_finetune_chat_models.ipynb?WT.mc_id=academic-105485-koreyst) | เรียนรู้การปรับแต่ง `gpt-35-turbo` สำหรับโดเมนเฉพาะ ("ผู้ช่วยสูตรอาหาร") โดยเตรียมข้อมูลฝึก รันงานปรับแต่ง และใช้โมเดลที่ปรับแต่งแล้วสำหรับการทำนาย | -| Azure OpenAI | [GPT 3.5 Turbo fine-tuning tutorial](https://learn.microsoft.com/azure/ai-services/openai/tutorials/fine-tune?tabs=python-new%2Ccommand-line?WT.mc_id=academic-105485-koreyst) | เรียนรู้การปรับแต่งโมเดล `gpt-35-turbo-0613` **บน Azure** โดยทำตามขั้นตอนสร้างและอัปโหลดข้อมูลฝึก รันงานปรับแต่ง และนำโมเดลใหม่ไปใช้งาน | -| Hugging Face | [Fine-tuning LLMs with Hugging Face](https://www.philschmid.de/fine-tune-llms-in-2024-with-trl?WT.mc_id=academic-105485-koreyst) | บทความนี้สอนการปรับแต่ง _open LLM_ (เช่น `CodeLlama 7B`) โดยใช้ไลบรารี [transformers](https://huggingface.co/docs/transformers/index?WT.mc_id=academic-105485-koreyst) และ [Transformer Reinforcement Learning (TRL)](https://huggingface.co/docs/trl/index?WT.mc_id=academic-105485-koreyst) พร้อมชุดข้อมูลเปิดบน Hugging Face | -| | | | -| 🤗 AutoTrain | [Fine-tuning LLMs with AutoTrain](https://github.com/huggingface/autotrain-advanced/?WT.mc_id=academic-105485-koreyst) | AutoTrain (หรือ AutoTrain Advanced) เป็นไลบรารี Python ที่พัฒนาโดย Hugging Face ช่วยให้ปรับแต่งงานหลายประเภทรวมถึงการปรับแต่ง LLM ได้ AutoTrain เป็นโซลูชันแบบไม่ต้องเขียนโค้ด และสามารถปรับแต่งได้ทั้งบนคลาวด์ของคุณเอง, Hugging Face Spaces หรือเครื่องของคุณเอง รองรับทั้ง GUI บนเว็บ, CLI และการฝึกผ่านไฟล์ config แบบ yaml | -| | | | - -## การบ้าน - -เลือกบทเรียนหนึ่งในข้างต้นและทำตามขั้นตอน _เราอาจทำซ้ำเวอร์ชันของบทเรียนเหล่านี้ใน Jupyter Notebooks ใน repo นี้เพื่อเป็นข้อมูลอ้างอิงเท่านั้น โปรดใช้แหล่งข้อมูลต้นฉบับโดยตรงเพื่อให้ได้เวอร์ชันล่าสุด_ - -## ทำได้ดีมาก! เรียนรู้ต่อไป - -หลังจากจบบทเรียนนี้แล้ว อย่าลืมเข้าไปดู [คอลเลกชันการเรียนรู้ Generative AI](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) เพื่อพัฒนาความรู้ด้าน Generative AI ของคุณต่อไป! - -ขอแสดงความยินดี!! คุณได้จบบทเรียนสุดท้ายของชุด v2 สำหรับคอร์สนี้แล้ว อย่าหยุดเรียนรู้และสร้างสรรค์ \*\*อย่าลืมดูที่หน้า [RESOURCES](RESOURCES.md?WT.mc_id=academic-105485-koreyst) สำหรับรายการคำแนะนำเพิ่มเติมเฉพาะหัวข้อนี้ - -ชุดบทเรียน v1 ของเราก็ได้รับการอัปเดตด้วยการบ้านและแนวคิดเพิ่มเติมเช่นกัน ใช้เวลาสักครู่เพื่อทบทวนความรู้ของคุณ — และโปรด [ส่งคำถามและข้อเสนอแนะของคุณ](https://github.com/microsoft/generative-ai-for-beginners/issues?WT.mc_id=academic-105485-koreyst) เพื่อช่วยเราปรับปรุงบทเรียนเหล่านี้สำหรับชุมชนต่อไป - -**ข้อจำกัดความรับผิดชอบ**: -เอกสารนี้ได้รับการแปลโดยใช้บริการแปลภาษาอัตโนมัติ [Co-op Translator](https://github.com/Azure/co-op-translator) แม้เราจะพยายามให้ความถูกต้องสูงสุด แต่โปรดทราบว่าการแปลอัตโนมัติอาจมีข้อผิดพลาดหรือความไม่ถูกต้อง เอกสารต้นฉบับในภาษาต้นทางถือเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลที่สำคัญ ขอแนะนำให้ใช้บริการแปลโดยผู้เชี่ยวชาญมนุษย์ เราไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความผิดที่เกิดขึ้นจากการใช้การแปลนี้ \ No newline at end of file + +[![Open Source Models](../../../translated_images/18-lesson-banner.f30176815b1a5074fce9cceba317720586caa99e24001231a92fd04eeb54a121.th.png)](https://youtu.be/6UAwhL9Q-TQ?si=5jJd8yeQsCfJ97em) + +# การปรับแต่งโมเดล LLM ของคุณ + +การใช้โมเดลภาษาขนาดใหญ่เพื่อสร้างแอปพลิเคชัน AI เชิงสร้างสรรค์มาพร้อมกับความท้าทายใหม่ๆ หนึ่งในปัญหาสำคัญคือการรับประกันคุณภาพของการตอบกลับ (ความถูกต้องและความเกี่ยวข้อง) ในเนื้อหาที่โมเดลสร้างขึ้นตามคำขอของผู้ใช้ ในบทเรียนก่อนหน้านี้ เราได้พูดถึงเทคนิคต่างๆ เช่น การออกแบบคำสั่ง (prompt engineering) และการสร้างแบบดึงข้อมูลเสริม (retrieval-augmented generation) ซึ่งพยายามแก้ปัญหาโดย _ปรับเปลี่ยนคำสั่งที่ป้อนเข้า_ ไปยังโมเดลที่มีอยู่ + +ในบทเรียนวันนี้ เราจะพูดถึงเทคนิคที่สามคือ **การปรับแต่ง** ซึ่งพยายามแก้ปัญหาโดย _การฝึกโมเดลใหม่_ ด้วยข้อมูลเพิ่มเติม มาดูรายละเอียดกันเลย + +## วัตถุประสงค์การเรียนรู้ + +บทเรียนนี้แนะนำแนวคิดของการปรับแต่งโมเดลภาษาที่ผ่านการฝึกมาแล้ว สำรวจประโยชน์และความท้าทายของวิธีการนี้ และให้คำแนะนำเกี่ยวกับเวลาและวิธีการใช้การปรับแต่งเพื่อปรับปรุงประสิทธิภาพของโมเดล AI เชิงสร้างสรรค์ของคุณ + +เมื่อจบบทเรียนนี้ คุณควรสามารถตอบคำถามต่อไปนี้ได้: + +- การปรับแต่งโมเดลภาษา (fine-tuning) คืออะไร? +- เมื่อไหร่และทำไมการปรับแต่งถึงมีประโยชน์? +- ฉันจะปรับแต่งโมเดลที่ผ่านการฝึกมาแล้วได้อย่างไร? +- ข้อจำกัดของการปรับแต่งคืออะไร? + +พร้อมหรือยัง? มาเริ่มกันเลย + +## คู่มือภาพประกอบ + +อยากเห็นภาพรวมของสิ่งที่เราจะพูดถึงก่อนลงลึกใช่ไหม? ลองดูคู่มือภาพประกอบที่อธิบายเส้นทางการเรียนรู้สำหรับบทเรียนนี้ ตั้งแต่การเรียนรู้แนวคิดหลักและแรงจูงใจในการปรับแต่ง ไปจนถึงการเข้าใจขั้นตอนและแนวทางปฏิบัติที่ดีที่สุดสำหรับการดำเนินการปรับแต่ง นี่เป็นหัวข้อที่น่าสนใจสำหรับการสำรวจ อย่าลืมดูหน้า [Resources](./RESOURCES.md?WT.mc_id=academic-105485-koreyst) สำหรับลิงก์เพิ่มเติมเพื่อสนับสนุนการเรียนรู้ด้วยตัวเองของคุณ! + +![คู่มือภาพประกอบการปรับแต่งโมเดลภาษา](../../../translated_images/18-fine-tuning-sketchnote.11b21f9ec8a703467a120cb79a28b5ac1effc8d8d9d5b31bbbac6b8640432e14.th.png) + +## การปรับแต่งโมเดลภาษาคืออะไร? + +ตามนิยาม โมเดลภาษาขนาดใหญ่เป็นโมเดลที่ _ผ่านการฝึก_ ด้วยข้อความจำนวนมากจากแหล่งข้อมูลหลากหลาย รวมถึงอินเทอร์เน็ต อย่างที่เราได้เรียนรู้ในบทเรียนก่อนหน้านี้ เราต้องใช้เทคนิคอย่าง _การออกแบบคำสั่ง_ และ _การสร้างแบบดึงข้อมูลเสริม_ เพื่อปรับปรุงคุณภาพของการตอบกลับของโมเดลต่อคำถาม ("คำสั่ง") ของผู้ใช้ + +เทคนิคการออกแบบคำสั่งที่ได้รับความนิยมคือการให้คำแนะนำเพิ่มเติมแก่โมเดลเกี่ยวกับสิ่งที่คาดหวังในคำตอบ โดยการให้ _คำแนะนำ_ (คำแนะนำที่ชัดเจน) หรือ _ตัวอย่างบางส่วน_ (คำแนะนำโดยนัย) ซึ่งเรียกว่า _การเรียนรู้แบบตัวอย่างน้อย_ (few-shot learning) แต่มีข้อจำกัดสองประการ: + +- ข้อจำกัดของจำนวนโทเค็นในโมเดลอาจจำกัดจำนวนตัวอย่างที่คุณสามารถให้ได้ และลดประสิทธิภาพ +- ค่าใช้จ่ายของโทเค็นในโมเดลอาจทำให้การเพิ่มตัวอย่างในทุกคำสั่งมีค่าใช้จ่ายสูง และลดความยืดหยุ่น + +การปรับแต่งเป็นวิธีปฏิบัติทั่วไปในระบบการเรียนรู้ของเครื่องที่เรานำโมเดลที่ผ่านการฝึกมาแล้วมาฝึกใหม่ด้วยข้อมูลใหม่เพื่อปรับปรุงประสิทธิภาพในงานเฉพาะ ในบริบทของโมเดลภาษา เราสามารถปรับแต่งโมเดลที่ผ่านการฝึกมาแล้ว _ด้วยชุดตัวอย่างที่คัดสรรมาเพื่องานหรือโดเมนแอปพลิเคชันเฉพาะ_ เพื่อสร้าง **โมเดลที่ปรับแต่งเอง** ซึ่งอาจมีความแม่นยำและเกี่ยวข้องมากขึ้นสำหรับงานหรือโดเมนนั้นๆ ประโยชน์เพิ่มเติมของการปรับแต่งคือสามารถลดจำนวนตัวอย่างที่จำเป็นสำหรับการเรียนรู้แบบตัวอย่างน้อย ลดการใช้โทเค็นและค่าใช้จ่ายที่เกี่ยวข้อง + +## เมื่อไหร่และทำไมเราควรปรับแต่งโมเดล? + +ในบริบท _นี้_ เมื่อเราพูดถึงการปรับแต่ง เราหมายถึงการปรับแต่งแบบ **มีการควบคุม** (supervised fine-tuning) ซึ่งการฝึกใหม่จะทำโดย **เพิ่มข้อมูลใหม่** ที่ไม่ได้เป็นส่วนหนึ่งของชุดข้อมูลการฝึกเดิม นี่แตกต่างจากการปรับแต่งแบบไม่มีการควบคุม (unsupervised fine-tuning) ซึ่งโมเดลจะถูกฝึกใหม่ด้วยข้อมูลเดิม แต่ใช้พารามิเตอร์ที่แตกต่างกัน + +สิ่งสำคัญที่ต้องจำคือการปรับแต่งเป็นเทคนิคขั้นสูงที่ต้องการระดับความเชี่ยวชาญเพื่อให้ได้ผลลัพธ์ที่ต้องการ หากทำไม่ถูกต้อง อาจไม่ให้การปรับปรุงตามที่คาดหวัง และอาจลดประสิทธิภาพของโมเดลในโดเมนเป้าหมายของคุณ + +ดังนั้น ก่อนที่คุณจะเรียนรู้ "วิธี" ปรับแต่งโมเดลภาษา คุณต้องรู้ "ทำไม" คุณควรเลือกเส้นทางนี้ และ "เมื่อไหร่" ที่จะเริ่มกระบวนการปรับแต่ง เริ่มต้นด้วยการถามตัวเองคำถามเหล่านี้: + +- **กรณีการใช้งาน**: กรณีการใช้งานของคุณสำหรับการปรับแต่งคืออะไร? คุณต้องการปรับปรุงส่วนใดของโมเดลที่ผ่านการฝึกมาแล้ว? +- **ทางเลือกอื่น**: คุณได้ลองใช้ _เทคนิคอื่นๆ_ เพื่อให้ได้ผลลัพธ์ที่ต้องการหรือยัง? ใช้เทคนิคเหล่านั้นเพื่อสร้างเกณฑ์เปรียบเทียบ + - การออกแบบคำสั่ง: ลองใช้เทคนิคอย่างการให้ตัวอย่างคำตอบที่เกี่ยวข้องในคำสั่ง ประเมินคุณภาพของคำตอบ + - การสร้างแบบดึงข้อมูลเสริม: ลองเพิ่มผลการค้นหาข้อมูลในคำสั่ง ประเมินคุณภาพของคำตอบ +- **ค่าใช้จ่าย**: คุณได้ระบุค่าใช้จ่ายสำหรับการปรับแต่งหรือยัง? + - ความสามารถในการปรับแต่ง - โมเดลที่ผ่านการฝึกมาแล้วสามารถปรับแต่งได้หรือไม่? + - ความพยายาม - สำหรับการเตรียมข้อมูลการฝึก การประเมินและปรับปรุงโมเดล + - การประมวลผล - สำหรับการรันงานปรับแต่ง และการใช้งานโมเดลที่ปรับแต่งแล้ว + - ข้อมูล - การเข้าถึงตัวอย่างคุณภาพที่เพียงพอสำหรับผลกระทบของการปรับแต่ง +- **ประโยชน์**: คุณได้ยืนยันประโยชน์ของการปรับแต่งหรือยัง? + - คุณภาพ - โมเดลที่ปรับแต่งแล้วมีประสิทธิภาพดีกว่าเกณฑ์เปรียบเทียบหรือไม่? + - ค่าใช้จ่าย - การปรับแต่งช่วยลดการใช้โทเค็นโดยการทำให้คำสั่งง่ายขึ้นหรือไม่? + - ความสามารถในการขยาย - คุณสามารถนำโมเดลพื้นฐานไปใช้ในโดเมนใหม่ได้หรือไม่? + +โดยการตอบคำถามเหล่านี้ คุณควรสามารถตัดสินใจได้ว่าการปรับแต่งเป็นวิธีที่เหมาะสมสำหรับกรณีการใช้งานของคุณหรือไม่ โดยทั่วไป วิธีนี้จะเหมาะสมก็ต่อเมื่อประโยชน์ที่ได้รับมีมากกว่าค่าใช้จ่าย เมื่อคุณตัดสินใจที่จะดำเนินการ ก็ถึงเวลาคิดเกี่ยวกับ _วิธี_ ที่คุณจะปรับแต่งโมเดลที่ผ่านการฝึกมาแล้ว + +อยากได้ข้อมูลเชิงลึกเพิ่มเติมเกี่ยวกับกระบวนการตัดสินใจใช่ไหม? ดู [จะปรับแต่งหรือไม่ปรับแต่ง](https://www.youtube.com/watch?v=0Jo-z-MFxJs) + +## เราจะปรับแต่งโมเดลที่ผ่านการฝึกมาแล้วได้อย่างไร? + +ในการปรับแต่งโมเดลที่ผ่านการฝึกมาแล้ว คุณต้องมี: + +- โมเดลที่ผ่านการฝึกมาแล้วเพื่อปรับแต่ง +- ชุดข้อมูลที่จะใช้สำหรับการปรับแต่ง +- สภาพแวดล้อมการฝึกเพื่อรันงานปรับแต่ง +- สภาพแวดล้อมการโฮสต์เพื่อใช้งานโมเดลที่ปรับแต่งแล้ว + +## การปรับแต่งในทางปฏิบัติ + +แหล่งข้อมูลต่อไปนี้ให้บทเรียนแบบทีละขั้นตอนเพื่อแนะนำคุณผ่านตัวอย่างจริงโดยใช้โมเดลที่เลือกและชุดข้อมูลที่คัดสรรมา ในการทำตามบทเรียนเหล่านี้ คุณต้องมีบัญชีในผู้ให้บริการที่เฉพาะเจาะจง พร้อมการเข้าถึงโมเดลและชุดข้อมูลที่เกี่ยวข้อง + +| ผู้ให้บริการ | บทเรียน | คำอธิบาย | +| ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| OpenAI | [วิธีปรับแต่งโมเดลแชท](https://github.com/openai/openai-cookbook/blob/main/examples/How_to_finetune_chat_models.ipynb?WT.mc_id=academic-105485-koreyst) | เรียนรู้การปรับแต่ง `gpt-35-turbo` สำหรับโดเมนเฉพาะ ("ผู้ช่วยสูตรอาหาร") โดยการเตรียมข้อมูลการฝึก รันงานปรับแต่ง และใช้โมเดลที่ปรับแต่งแล้วสำหรับการอนุมาน | +| Azure OpenAI | [บทเรียนการปรับแต่ง GPT 3.5 Turbo](https://learn.microsoft.com/azure/ai-services/openai/tutorials/fine-tune?tabs=python-new%2Ccommand-line?WT.mc_id=academic-105485-koreyst) | เรียนรู้การปรับแต่งโมเดล `gpt-35-turbo-0613` **บน Azure** โดยทำตามขั้นตอนการสร้างและอัปโหลดข้อมูลการฝึก รันงานปรับแต่ง ใช้งานและใช้โมเดลใหม่ | +| Hugging Face | [การปรับแต่ง LLMs ด้วย Hugging Face](https://www.philschmid.de/fine-tune-llms-in-2024-with-trl?WT.mc_id=academic-105485-koreyst) | บทความนี้แนะนำการปรับแต่ง _open LLM_ (เช่น `CodeLlama 7B`) โดยใช้ไลบรารี [transformers](https://huggingface.co/docs/transformers/index?WT.mc_id=academic-105485-koreyst) และ [Transformer Reinforcement Learning (TRL)](https://huggingface.co/docs/trl/index?WT.mc_id=academic-105485-koreyst]) พร้อมชุดข้อมูลเปิด [datasets](https://huggingface.co/docs/datasets/index?WT.mc_id=academic-105485-koreyst) บน Hugging Face | +| | | | +| 🤗 AutoTrain | [การปรับแต่ง LLMs ด้วย AutoTrain](https://github.com/huggingface/autotrain-advanced/?WT.mc_id=academic-105485-koreyst) | AutoTrain (หรือ AutoTrain Advanced) เป็นไลบรารี Python ที่พัฒนาโดย Hugging Face ซึ่งช่วยให้การปรับแต่งสำหรับงานต่างๆ รวมถึงการปรับแต่ง LLM เป็นไปได้ AutoTrain เป็นโซลูชันที่ไม่ต้องเขียนโค้ด และการปรับแต่งสามารถทำได้ในคลาวด์ของคุณเอง บน Hugging Face Spaces หรือในเครื่องของคุณเอง รองรับทั้ง GUI แบบเว็บ CLI และการฝึกผ่านไฟล์ config แบบ yaml | + +## งานที่ได้รับมอบหมาย + +เลือกหนึ่งในบทเรียนด้านบนและทำตาม _เราอาจทำซ้ำเวอร์ชันของบทเรียนเหล่านี้ใน Jupyter Notebooks ใน repo นี้เพื่อการอ้างอิงเท่านั้น โปรดใช้แหล่งข้อมูลต้นฉบับโดยตรงเพื่อรับเวอร์ชันล่าสุด_ + +## ทำได้ดีมาก! เรียนรู้ต่อไป + +หลังจากจบบทเรียนนี้ ลองดู [Generative AI Learning collection](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) เพื่อเพิ่มพูนความรู้เกี่ยวกับ Generative AI ของคุณ! + +ขอแสดงความยินดี!! คุณได้จบบทเรียนสุดท้ายจากซีรีส์ v2 สำหรับคอร์สนี้แล้ว! อย่าหยุดเรียนรู้และสร้างสรรค์ **ดูหน้า [RESOURCES](RESOURCES.md?WT.mc_id=academic-105485-koreyst) สำหรับรายการคำแนะนำเพิ่มเติมในหัวข้อนี้** + +ซีรีส์บทเรียน v1 ของเรายังได้รับการอัปเดตด้วยงานและแนวคิดเพิ่มเติม ดังนั้นใช้เวลาสักครู่เพื่อทบทวนความรู้ของคุณ - และโปรด [แบ่งปันคำถามและความคิดเห็นของคุณ](https://github.com/microsoft/generative-ai-for-beginners/issues?WT.mc_id=academic-105485-koreyst) เพื่อช่วยเราปรับปรุงบทเรียนเหล่านี้สำหรับชุมชน + +--- + +**ข้อจำกัดความรับผิดชอบ**: +เอกสารนี้ได้รับการแปลโดยใช้บริการแปลภาษา AI [Co-op Translator](https://github.com/Azure/co-op-translator) แม้ว่าเราจะพยายามให้การแปลมีความถูกต้อง แต่โปรดทราบว่าการแปลโดยอัตโนมัติอาจมีข้อผิดพลาดหรือความไม่ถูกต้อง เอกสารต้นฉบับในภาษาดั้งเดิมควรถือเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลที่สำคัญ ขอแนะนำให้ใช้บริการแปลภาษามนุษย์ที่มีความเชี่ยวชาญ เราไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความผิดที่เกิดจากการใช้การแปลนี้ \ No newline at end of file diff --git a/translations/th/README.md b/translations/th/README.md index c4f5060c18..c37e10e3d6 100644 --- a/translations/th/README.md +++ b/translations/th/README.md @@ -1,15 +1,15 @@ ![Generative AI สำหรับผู้เริ่มต้น](../../translated_images/repo-thumbnailv4-fixed.11f1ce6a85d01461c33c11943bb61f2b6d6dcce3a3b25cd27e627031f41f8e00.th.png) -### 21 บทเรียนที่สอนทุกสิ่งที่คุณจำเป็นต้องรู้เพื่อเริ่มต้นสร้างแอปพลิเคชัน Generative AI +### 21 บทเรียนที่สอนทุกสิ่งที่คุณต้องรู้เพื่อเริ่มสร้างแอปพลิเคชัน Generative AI [![GitHub license](https://img.shields.io/github/license/microsoft/Generative-AI-For-Beginners.svg)](https://github.com/microsoft/Generative-AI-For-Beginners/blob/master/LICENSE?WT.mc_id=academic-105485-koreyst) [![GitHub contributors](https://img.shields.io/github/contributors/microsoft/Generative-AI-For-Beginners.svg)](https://GitHub.com/microsoft/Generative-AI-For-Beginners/graphs/contributors/?WT.mc_id=academic-105485-koreyst) @@ -21,13 +21,15 @@ CO_OP_TRANSLATOR_METADATA: [![GitHub forks](https://img.shields.io/github/forks/microsoft/Generative-AI-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/Generative-AI-For-Beginners/network/?WT.mc_id=academic-105485-koreyst) [![GitHub stars](https://img.shields.io/github/stars/microsoft/Generative-AI-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/Generative-AI-For-Beginners/stargazers/?WT.mc_id=academic-105485-koreyst) -[![](https://dcbadge.limes.pink/api/server/ByRwuEEgH4)](https://aka.ms/genai-discord?WT.mc_id=academic-105485-koreyst) +[![](https://dcbadge.limes.pink/api/server/ByRwuEEgH4)](https://aka.ms/genai-discord?WT.mc_id=academic-105485-koreyst) ### 🌐 รองรับหลายภาษา #### รองรับผ่าน GitHub Action (อัตโนมัติและอัปเดตเสมอ) + [Arabic](../ar/README.md) | [Bengali](../bn/README.md) | [Bulgarian](../bg/README.md) | [Burmese (Myanmar)](../my/README.md) | [Chinese (Simplified)](../zh/README.md) | [Chinese (Traditional, Hong Kong)](../hk/README.md) | [Chinese (Traditional, Macau)](../mo/README.md) | [Chinese (Traditional, Taiwan)](../tw/README.md) | [Croatian](../hr/README.md) | [Czech](../cs/README.md) | [Danish](../da/README.md) | [Dutch](../nl/README.md) | [Estonian](../et/README.md) | [Finnish](../fi/README.md) | [French](../fr/README.md) | [German](../de/README.md) | [Greek](../el/README.md) | [Hebrew](../he/README.md) | [Hindi](../hi/README.md) | [Hungarian](../hu/README.md) | [Indonesian](../id/README.md) | [Italian](../it/README.md) | [Japanese](../ja/README.md) | [Korean](../ko/README.md) | [Lithuanian](../lt/README.md) | [Malay](../ms/README.md) | [Marathi](../mr/README.md) | [Nepali](../ne/README.md) | [Norwegian](../no/README.md) | [Persian (Farsi)](../fa/README.md) | [Polish](../pl/README.md) | [Portuguese (Brazil)](../br/README.md) | [Portuguese (Portugal)](../pt/README.md) | [Punjabi (Gurmukhi)](../pa/README.md) | [Romanian](../ro/README.md) | [Russian](../ru/README.md) | [Serbian (Cyrillic)](../sr/README.md) | [Slovak](../sk/README.md) | [Slovenian](../sl/README.md) | [Spanish](../es/README.md) | [Swahili](../sw/README.md) | [Swedish](../sv/README.md) | [Tagalog (Filipino)](../tl/README.md) | [Tamil](../ta/README.md) | [Thai](./README.md) | [Turkish](../tr/README.md) | [Ukrainian](../uk/README.md) | [Urdu](../ur/README.md) | [Vietnamese](../vi/README.md) + # Generative AI สำหรับผู้เริ่มต้น (เวอร์ชัน 3) - หลักสูตร @@ -35,13 +37,13 @@ CO_OP_TRANSLATOR_METADATA: ## 🌱 เริ่มต้นใช้งาน -หลักสูตรนี้มีทั้งหมด 21 บทเรียน โดยแต่ละบทเรียนจะครอบคลุมหัวข้อเฉพาะ คุณสามารถเริ่มต้นเรียนจากบทไหนก็ได้ตามที่คุณต้องการ! +หลักสูตรนี้มีทั้งหมด 21 บทเรียน แต่ละบทเรียนครอบคลุมหัวข้อเฉพาะ คุณสามารถเริ่มต้นจากบทเรียนใดก็ได้ตามที่คุณสนใจ! -บทเรียนจะถูกแบ่งออกเป็น "บทเรียนการเรียนรู้" ที่อธิบายแนวคิดเกี่ยวกับ Generative AI และ "บทเรียนการสร้าง" ที่อธิบายแนวคิดพร้อมตัวอย่างโค้ดใน **Python** และ **TypeScript** เมื่อเป็นไปได้ +บทเรียนแบ่งออกเป็น "Learn" ซึ่งอธิบายแนวคิดของ Generative AI และ "Build" ซึ่งอธิบายแนวคิดพร้อมตัวอย่างโค้ดใน **Python** และ **TypeScript** เมื่อเป็นไปได้ -สำหรับนักพัฒนา .NET สามารถดูเพิ่มเติมได้ที่ [Generative AI สำหรับผู้เริ่มต้น (.NET Edition)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst)! +สำหรับนักพัฒนาที่ใช้ .NET สามารถดูหลักสูตร [Generative AI สำหรับผู้เริ่มต้น (.NET Edition)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst)! -แต่ละบทเรียนยังมีส่วน "เรียนรู้เพิ่มเติม" ที่มีเครื่องมือการเรียนรู้เพิ่มเติมให้คุณได้ศึกษา +แต่ละบทเรียนยังมีส่วน "Keep Learning" ที่รวมเครื่องมือการเรียนรู้เพิ่มเติมไว้ด้วย ## สิ่งที่คุณต้องมี ### เพื่อรันโค้ดในหลักสูตรนี้ คุณสามารถใช้: @@ -49,30 +51,30 @@ CO_OP_TRANSLATOR_METADATA: - [GitHub Marketplace Model Catalog](https://aka.ms/genai-beginners/gh-models?WT.mc_id=academic-105485-koreyst) - **บทเรียน:** "githubmodels" - [OpenAI API](https://aka.ms/genai-beginners/open-ai?WT.mc_id=academic-105485-koreyst) - **บทเรียน:** "oai-assignment" -- ความรู้พื้นฐานเกี่ยวกับ Python หรือ TypeScript จะเป็นประโยชน์ - \*สำหรับผู้เริ่มต้นที่ไม่มีพื้นฐานสามารถดูหลักสูตร [Python](https://aka.ms/genai-beginners/python?WT.mc_id=academic-105485-koreyst) และ [TypeScript](https://aka.ms/genai-beginners/typescript?WT.mc_id=academic-105485-koreyst) +- ความรู้พื้นฐานเกี่ยวกับ Python หรือ TypeScript จะช่วยได้ - \*สำหรับผู้เริ่มต้นสามารถดูหลักสูตร [Python](https://aka.ms/genai-beginners/python?WT.mc_id=academic-105485-koreyst) และ [TypeScript](https://aka.ms/genai-beginners/typescript?WT.mc_id=academic-105485-koreyst) - บัญชี GitHub เพื่อ [fork repo นี้ทั้งหมด](https://aka.ms/genai-beginners/github?WT.mc_id=academic-105485-koreyst) ไปยังบัญชี GitHub ของคุณเอง -เราได้สร้างบทเรียน **[Course Setup](./00-course-setup/README.md?WT.mc_id=academic-105485-koreyst)** เพื่อช่วยคุณตั้งค่าพื้นที่พัฒนาโปรแกรมของคุณ +เราได้สร้างบทเรียน **[Course Setup](./00-course-setup/README.md?WT.mc_id=academic-105485-koreyst)** เพื่อช่วยคุณตั้งค่าพื้นที่พัฒนา -อย่าลืม [กดดาว (🌟) repo นี้](https://docs.github.com/en/get-started/exploring-projects-on-github/saving-repositories-with-stars?WT.mc_id=academic-105485-koreyst) เพื่อให้คุณสามารถค้นหาได้ง่ายในภายหลัง +อย่าลืม [star (🌟) repo นี้](https://docs.github.com/en/get-started/exploring-projects-on-github/saving-repositories-with-stars?WT.mc_id=academic-105485-koreyst) เพื่อให้ค้นหาได้ง่ายในภายหลัง ## 🧠 พร้อมที่จะเริ่มใช้งาน? -หากคุณกำลังมองหาตัวอย่างโค้ดที่มีความซับซ้อนมากขึ้น ลองดู [คอลเลกชันตัวอย่างโค้ด Generative AI](https://aka.ms/genai-beg-code?WT.mc_id=academic-105485-koreyst) ในทั้ง **Python** และ **TypeScript** +หากคุณกำลังมองหาตัวอย่างโค้ดขั้นสูงเพิ่มเติม ลองดู [คอลเลกชันตัวอย่างโค้ด Generative AI](https://aka.ms/genai-beg-code?WT.mc_id=academic-105485-koreyst) ในทั้ง **Python** และ **TypeScript** ## 🗣️ พบปะผู้เรียนคนอื่น ๆ และรับการสนับสนุน -เข้าร่วม [เซิร์ฟเวอร์ Discord Azure AI Foundry อย่างเป็นทางการ](https://aka.ms/genai-discord?WT.mc_id=academic-105485-koreyst) เพื่อพบปะและสร้างเครือข่ายกับผู้เรียนคนอื่น ๆ ที่เข้าร่วมหลักสูตรนี้ และรับการสนับสนุน +เข้าร่วม [เซิร์ฟเวอร์ Discord Azure AI Foundry อย่างเป็นทางการ](https://aka.ms/genai-discord?WT.mc_id=academic-105485-koreyst) เพื่อพบปะและสร้างเครือข่ายกับผู้เรียนคนอื่น ๆ ที่กำลังเรียนหลักสูตรนี้ และรับการสนับสนุน -ถามคำถามหรือแบ่งปันความคิดเห็นเกี่ยวกับผลิตภัณฑ์ใน [Azure AI Foundry Developer Forum](https://aka.ms/azureaifoundry/forum) บน Github +ถามคำถามหรือแบ่งปันความคิดเห็นเกี่ยวกับผลิตภัณฑ์ใน [Azure AI Foundry Developer Forum](https://aka.ms/azureaifoundry/forum) บน Github -## 🚀 กำลังสร้างสตาร์ทอัพ? +## 🚀 สร้างธุรกิจสตาร์ทอัพ? -เยี่ยมชม [Microsoft for Startups](https://www.microsoft.com/startups) เพื่อดูวิธีเริ่มต้นสร้างธุรกิจด้วยเครดิต Azure วันนี้ +เยี่ยมชม [Microsoft for Startups](https://www.microsoft.com/startups) เพื่อดูวิธีเริ่มต้นสร้างด้วยเครดิต Azure วันนี้ ## 🙏 ต้องการช่วยเหลือ? -คุณมีข้อเสนอแนะหรือพบข้อผิดพลาดในคำสะกดหรือโค้ดใช่ไหม? [แจ้งปัญหา](https://github.com/microsoft/generative-ai-for-beginners/issues?WT.mc_id=academic-105485-koreyst) หรือ [สร้าง pull request](https://github.com/microsoft/generative-ai-for-beginners/pulls?WT.mc_id=academic-105485-koreyst) +คุณมีข้อเสนอแนะหรือพบข้อผิดพลาดในคำสะกดหรือโค้ด? [สร้าง issue](https://github.com/microsoft/generative-ai-for-beginners/issues?WT.mc_id=academic-105485-koreyst) หรือ [สร้าง pull request](https://github.com/microsoft/generative-ai-for-beginners/pulls?WT.mc_id=academic-105485-koreyst) ## 📂 แต่ละบทเรียนประกอบด้วย: @@ -83,34 +85,34 @@ CO_OP_TRANSLATOR_METADATA: ## 🗃️ บทเรียน -| # | **ลิงก์บทเรียน** | **คำอธิบาย** | **วิดีโอ** | **เรียนรู้เพิ่มเติม** | +| # | **ลิงก์บทเรียน** | **คำอธิบาย** | **วิดีโอ** | **การเรียนรู้เพิ่มเติม** | | --- | -------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------- | ------------------------------------------------------------------------------ | -| 00 | [Course Setup](./00-course-setup/README.md?WT.mc_id=academic-105485-koreyst) | **เรียนรู้:** วิธีตั้งค่าพื้นที่พัฒนาโปรแกรมของคุณ | วิดีโอจะมาเร็ว ๆ นี้ | [เรียนรู้เพิ่มเติม](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) | -| 01 | [Introduction to Generative AI and LLMs](./01-introduction-to-genai/README.md?WT.mc_id=academic-105485-koreyst) | **เรียนรู้:** ทำความเข้าใจว่า Generative AI คืออะไรและ Large Language Models (LLMs) ทำงานอย่างไร | [วิดีโอ](https://aka.ms/gen-ai-lesson-1-gh?WT.mc_id=academic-105485-koreyst) | [เรียนรู้เพิ่มเติม](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) | -| 02 | [Exploring and comparing different LLMs](./02-exploring-and-comparing-different-llms/README.md?WT.mc_id=academic-105485-koreyst) | **เรียนรู้:** วิธีเลือกโมเดลที่เหมาะสมสำหรับการใช้งานของคุณ | [วิดีโอ](https://aka.ms/gen-ai-lesson2-gh?WT.mc_id=academic-105485-koreyst) | [เรียนรู้เพิ่มเติม](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) | -| 03 | [Using Generative AI Responsibly](./03-using-generative-ai-responsibly/README.md?WT.mc_id=academic-105485-koreyst) | **เรียนรู้:** วิธีสร้างแอปพลิเคชัน Generative AI อย่างมีความรับผิดชอบ | [วิดีโอ](https://aka.ms/gen-ai-lesson3-gh?WT.mc_id=academic-105485-koreyst) | [เรียนรู้เพิ่มเติม](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) | -| 04 | [Understanding Prompt Engineering Fundamentals](./04-prompt-engineering-fundamentals/README.md?WT.mc_id=academic-105485-koreyst) | **เรียนรู้:** การปฏิบัติที่ดีที่สุดในการออกแบบ Prompt | [วิดีโอ](https://aka.ms/gen-ai-lesson4-gh?WT.mc_id=academic-105485-koreyst) | [เรียนรู้เพิ่มเติม](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) | -| 05 | [Creating Advanced Prompts](./05-advanced-prompts/README.md?WT.mc_id=academic-105485-koreyst) | **เรียนรู้:** วิธีการใช้เทคนิคการออกแบบ Prompt ที่ช่วยปรับปรุงผลลัพธ์ของ Prompt ของคุณ. | [วิดีโอ](https://aka.ms/gen-ai-lesson5-gh?WT.mc_id=academic-105485-koreyst) | [เรียนรู้เพิ่มเติม](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) | -| 06 | [การสร้างแอปพลิเคชันสร้างข้อความ](./06-text-generation-apps/README.md?WT.mc_id=academic-105485-koreyst) | **สร้าง:** แอปพลิเคชันสร้างข้อความโดยใช้ Azure OpenAI / OpenAI API | [วิดีโอ](https://aka.ms/gen-ai-lesson6-gh?WT.mc_id=academic-105485-koreyst) | [เรียนรู้เพิ่มเติม](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) | -| 07 | [การสร้างแอปพลิเคชันแชท](./07-building-chat-applications/README.md?WT.mc_id=academic-105485-koreyst) | **สร้าง:** เทคนิคในการสร้างและผสานรวมแอปพลิเคชันแชทอย่างมีประสิทธิภาพ | [วิดีโอ](https://aka.ms/gen-ai-lessons7-gh?WT.mc_id=academic-105485-koreyst) | [เรียนรู้เพิ่มเติม](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) | +| 00 | [Course Setup](./00-course-setup/README.md?WT.mc_id=academic-105485-koreyst) | **เรียนรู้:** วิธีตั้งค่าพื้นที่พัฒนาของคุณ | วิดีโอเร็ว ๆ นี้ | [เรียนรู้เพิ่มเติม](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) | +| 01 | [Introduction to Generative AI and LLMs](./01-introduction-to-genai/README.md?WT.mc_id=academic-105485-koreyst) | **เรียนรู้:** ทำความเข้าใจว่า Generative AI คืออะไรและ Large Language Models (LLMs) ทำงานอย่างไร | [วิดีโอ](https://aka.ms/gen-ai-lesson-1-gh?WT.mc_id=academic-105485-koreyst) | [เรียนรู้เพิ่มเติม](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) | +| 02 | [Exploring and comparing different LLMs](./02-exploring-and-comparing-different-llms/README.md?WT.mc_id=academic-105485-koreyst) | **เรียนรู้:** วิธีเลือกโมเดลที่เหมาะสมสำหรับกรณีการใช้งานของคุณ | [วิดีโอ](https://aka.ms/gen-ai-lesson2-gh?WT.mc_id=academic-105485-koreyst) | [เรียนรู้เพิ่มเติม](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) | +| 03 | [Using Generative AI Responsibly](./03-using-generative-ai-responsibly/README.md?WT.mc_id=academic-105485-koreyst) | **เรียนรู้:** วิธีสร้างแอปพลิเคชัน Generative AI อย่างมีความรับผิดชอบ | [วิดีโอ](https://aka.ms/gen-ai-lesson3-gh?WT.mc_id=academic-105485-koreyst) | [เรียนรู้เพิ่มเติม](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) | +| 04 | [Understanding Prompt Engineering Fundamentals](./04-prompt-engineering-fundamentals/README.md?WT.mc_id=academic-105485-koreyst) | **เรียนรู้:** การปฏิบัติที่ดีที่สุดใน Prompt Engineering | [วิดีโอ](https://aka.ms/gen-ai-lesson4-gh?WT.mc_id=academic-105485-koreyst) | [เรียนรู้เพิ่มเติม](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) | +| 05 | [Creating Advanced Prompts](./05-advanced-prompts/README.md?WT.mc_id=academic-105485-koreyst) | **เรียนรู้:** วิธีใช้เทคนิค Prompt Engineering เพื่อปรับปรุงผลลัพธ์ของคำสั่งของคุณ | [วิดีโอ](https://aka.ms/gen-ai-lesson5-gh?WT.mc_id=academic-105485-koreyst) | [เรียนรู้เพิ่มเติม](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) | +| 06 | [การสร้างแอปพลิเคชันการสร้างข้อความ](./06-text-generation-apps/README.md?WT.mc_id=academic-105485-koreyst) | **สร้าง:** แอปพลิเคชันการสร้างข้อความโดยใช้ Azure OpenAI / OpenAI API | [วิดีโอ](https://aka.ms/gen-ai-lesson6-gh?WT.mc_id=academic-105485-koreyst) | [เรียนรู้เพิ่มเติม](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) | +| 07 | [การสร้างแอปพลิเคชันแชท](./07-building-chat-applications/README.md?WT.mc_id=academic-105485-koreyst) | **สร้าง:** เทคนิคในการสร้างและรวมแอปพลิเคชันแชทอย่างมีประสิทธิภาพ | [วิดีโอ](https://aka.ms/gen-ai-lessons7-gh?WT.mc_id=academic-105485-koreyst) | [เรียนรู้เพิ่มเติม](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) | | 08 | [การสร้างแอปค้นหาด้วยฐานข้อมูลเวกเตอร์](./08-building-search-applications/README.md?WT.mc_id=academic-105485-koreyst) | **สร้าง:** แอปพลิเคชันค้นหาที่ใช้ Embeddings ในการค้นหาข้อมูล | [วิดีโอ](https://aka.ms/gen-ai-lesson8-gh?WT.mc_id=academic-105485-koreyst) | [เรียนรู้เพิ่มเติม](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) | | 09 | [การสร้างแอปพลิเคชันสร้างภาพ](./09-building-image-applications/README.md?WT.mc_id=academic-105485-koreyst) | **สร้าง:** แอปพลิเคชันสร้างภาพ | [วิดีโอ](https://aka.ms/gen-ai-lesson9-gh?WT.mc_id=academic-105485-koreyst) | [เรียนรู้เพิ่มเติม](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) | -| 10 | [การสร้างแอปพลิเคชัน AI ด้วยเครื่องมือ Low Code](./10-building-low-code-ai-applications/README.md?WT.mc_id=academic-105485-koreyst) | **สร้าง:** แอปพลิเคชัน Generative AI โดยใช้เครื่องมือ Low Code | [วิดีโอ](https://aka.ms/gen-ai-lesson10-gh?WT.mc_id=academic-105485-koreyst) | [เรียนรู้เพิ่มเติม](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) | -| 11 | [การผสานรวมแอปพลิเคชันภายนอกด้วย Function Calling](./11-integrating-with-function-calling/README.md?WT.mc_id=academic-105485-koreyst) | **สร้าง:** การเรียกใช้ฟังก์ชันคืออะไรและกรณีการใช้งานสำหรับแอปพลิเคชัน | [วิดีโอ](https://aka.ms/gen-ai-lesson11-gh?WT.mc_id=academic-105485-koreyst) | [เรียนรู้เพิ่มเติม](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) | +| 10 | [การสร้างแอปพลิเคชัน AI ด้วย Low Code](./10-building-low-code-ai-applications/README.md?WT.mc_id=academic-105485-koreyst) | **สร้าง:** แอปพลิเคชัน Generative AI โดยใช้เครื่องมือ Low Code | [วิดีโอ](https://aka.ms/gen-ai-lesson10-gh?WT.mc_id=academic-105485-koreyst) | [เรียนรู้เพิ่มเติม](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) | +| 11 | [การรวมแอปพลิเคชันภายนอกด้วย Function Calling](./11-integrating-with-function-calling/README.md?WT.mc_id=academic-105485-koreyst) | **สร้าง:** การเรียกใช้ฟังก์ชันคืออะไรและกรณีการใช้งานสำหรับแอปพลิเคชัน | [วิดีโอ](https://aka.ms/gen-ai-lesson11-gh?WT.mc_id=academic-105485-koreyst) | [เรียนรู้เพิ่มเติม](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) | | 12 | [การออกแบบ UX สำหรับแอปพลิเคชัน AI](./12-designing-ux-for-ai-applications/README.md?WT.mc_id=academic-105485-koreyst) | **เรียนรู้:** วิธีการใช้หลักการออกแบบ UX ในการพัฒนาแอปพลิเคชัน Generative AI | [วิดีโอ](https://aka.ms/gen-ai-lesson12-gh?WT.mc_id=academic-105485-koreyst) | [เรียนรู้เพิ่มเติม](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) | -| 13 | [การรักษาความปลอดภัยให้แอปพลิเคชัน Generative AI ของคุณ](./13-securing-ai-applications/README.md?WT.mc_id=academic-105485-koreyst) | **เรียนรู้:** ภัยคุกคามและความเสี่ยงต่อระบบ AI และวิธีการรักษาความปลอดภัยให้ระบบเหล่านี้ | [วิดีโอ](https://aka.ms/gen-ai-lesson13-gh?WT.mc_id=academic-105485-koreyst) | [เรียนรู้เพิ่มเติม](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) | -| 14 | [วงจรชีวิตของแอปพลิเคชัน Generative AI](./14-the-generative-ai-application-lifecycle/README.md?WT.mc_id=academic-105485-koreyst) | **เรียนรู้:** เครื่องมือและตัวชี้วัดในการจัดการวงจรชีวิต LLM และ LLMOps | [วิดีโอ](https://aka.ms/gen-ai-lesson14-gh?WT.mc_id=academic-105485-koreyst) | [เรียนรู้เพิ่มเติม](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) | -| 15 | [Retrieval Augmented Generation (RAG) และฐานข้อมูลเวกเตอร์](./15-rag-and-vector-databases/README.md?WT.mc_id=academic-105485-koreyst) | **สร้าง:** แอปพลิเคชันโดยใช้ RAG Framework เพื่อดึง Embeddings จากฐานข้อมูลเวกเตอร์ | [วิดีโอ](https://aka.ms/gen-ai-lesson15-gh?WT.mc_id=academic-105485-koreyst) | [เรียนรู้เพิ่มเติม](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) | +| 13 | [การรักษาความปลอดภัยแอปพลิเคชัน Generative AI ของคุณ](./13-securing-ai-applications/README.md?WT.mc_id=academic-105485-koreyst) | **เรียนรู้:** ภัยคุกคามและความเสี่ยงต่อระบบ AI และวิธีการรักษาความปลอดภัยของระบบเหล่านี้ | [วิดีโอ](https://aka.ms/gen-ai-lesson13-gh?WT.mc_id=academic-105485-koreyst) | [เรียนรู้เพิ่มเติม](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) | +| 14 | [วงจรชีวิตแอปพลิเคชัน Generative AI](./14-the-generative-ai-application-lifecycle/README.md?WT.mc_id=academic-105485-koreyst) | **เรียนรู้:** เครื่องมือและตัวชี้วัดในการจัดการวงจรชีวิต LLM และ LLMOps | [วิดีโอ](https://aka.ms/gen-ai-lesson14-gh?WT.mc_id=academic-105485-koreyst) | [เรียนรู้เพิ่มเติม](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) | +| 15 | [การดึงข้อมูลเสริมด้วย RAG และฐานข้อมูลเวกเตอร์](./15-rag-and-vector-databases/README.md?WT.mc_id=academic-105485-koreyst) | **สร้าง:** แอปพลิเคชันโดยใช้ RAG Framework เพื่อดึง Embeddings จากฐานข้อมูลเวกเตอร์ | [วิดีโอ](https://aka.ms/gen-ai-lesson15-gh?WT.mc_id=academic-105485-koreyst) | [เรียนรู้เพิ่มเติม](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) | | 16 | [โมเดลโอเพ่นซอร์สและ Hugging Face](./16-open-source-models/README.md?WT.mc_id=academic-105485-koreyst) | **สร้าง:** แอปพลิเคชันโดยใช้โมเดลโอเพ่นซอร์สที่มีอยู่ใน Hugging Face | [วิดีโอ](https://aka.ms/gen-ai-lesson16-gh?WT.mc_id=academic-105485-koreyst) | [เรียนรู้เพิ่มเติม](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) | | 17 | [AI Agents](./17-ai-agents/README.md?WT.mc_id=academic-105485-koreyst) | **สร้าง:** แอปพลิเคชันโดยใช้ AI Agent Framework | [วิดีโอ](https://aka.ms/gen-ai-lesson17-gh?WT.mc_id=academic-105485-koreyst) | [เรียนรู้เพิ่มเติม](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) | | 18 | [การปรับแต่ง LLMs](./18-fine-tuning/README.md?WT.mc_id=academic-105485-koreyst) | **เรียนรู้:** สิ่งที่ควรรู้ เหตุผล และวิธีการปรับแต่ง LLMs | [วิดีโอ](https://aka.ms/gen-ai-lesson18-gh?WT.mc_id=academic-105485-koreyst) | [เรียนรู้เพิ่มเติม](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) | | 19 | [การสร้างด้วย SLMs](./19-slm/README.md?WT.mc_id=academic-105485-koreyst) | **เรียนรู้:** ประโยชน์ของการสร้างด้วย Small Language Models | วิดีโอเร็วๆ นี้ | [เรียนรู้เพิ่มเติม](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) | -| 20 | [การสร้างด้วยโมเดล Mistral](./20-mistral/README.md?WT.mc_id=academic-105485-koreyst) | **เรียนรู้:** คุณสมบัติและความแตกต่างของโมเดลในตระกูล Mistral | วิดีโอเร็วๆ นี้ | [เรียนรู้เพิ่มเติม](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) | -| 21 | [การสร้างด้วยโมเดล Meta](./21-meta/README.md?WT.mc_id=academic-105485-koreyst) | **เรียนรู้:** คุณสมบัติและความแตกต่างของโมเดลในตระกูล Meta | วิดีโอเร็วๆ นี้ | [เรียนรู้เพิ่มเติม](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) | +| 20 | [การสร้างด้วยโมเดล Mistral](./20-mistral/README.md?WT.mc_id=academic-105485-koreyst) | **เรียนรู้:** คุณสมบัติและความแตกต่างของโมเดลตระกูล Mistral | วิดีโอเร็วๆ นี้ | [เรียนรู้เพิ่มเติม](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) | +| 21 | [การสร้างด้วยโมเดล Meta](./21-meta/README.md?WT.mc_id=academic-105485-koreyst) | **เรียนรู้:** คุณสมบัติและความแตกต่างของโมเดลตระกูล Meta | วิดีโอเร็วๆ นี้ | [เรียนรู้เพิ่มเติม](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) | -### 🌟 ขอบคุณเป็นพิเศษ +### 🌟 ขอบคุณพิเศษ -ขอขอบคุณ [**John Aziz**](https://www.linkedin.com/in/john0isaac/) สำหรับการสร้าง GitHub Actions และ workflows ทั้งหมด +ขอบคุณพิเศษ [**John Aziz**](https://www.linkedin.com/in/john0isaac/) สำหรับการสร้าง GitHub Actions และ workflows ทั้งหมด [**Bernhard Merkle**](https://www.linkedin.com/in/bernhard-merkle-738b73/) สำหรับการมีส่วนร่วมสำคัญในแต่ละบทเรียนเพื่อปรับปรุงประสบการณ์การเรียนรู้และการเขียนโค้ด @@ -141,11 +143,11 @@ CO_OP_TRANSLATOR_METADATA: [![Azure AI Foundry Discord](https://img.shields.io/badge/Discord-Azure_AI_Foundry_Community_Discord-blue?style=for-the-badge&logo=discord&color=5865f2&logoColor=fff)](https://aka.ms/foundry/discord?WT.mc_id=academic-105485-koreyst) -หากคุณมีข้อเสนอแนะเกี่ยวกับผลิตภัณฑ์หรือพบข้อผิดพลาดขณะสร้างแอปพลิเคชัน โปรดเยี่ยมชม: +หากคุณมีข้อเสนอแนะเกี่ยวกับผลิตภัณฑ์หรือพบข้อผิดพลาดขณะสร้างโปรดไปที่: [![Azure AI Foundry Developer Forum](https://img.shields.io/badge/GitHub-Azure_AI_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum?WT.mc_id=academic-105485-koreyst) --- **ข้อจำกัดความรับผิดชอบ**: -เอกสารนี้ได้รับการแปลโดยใช้บริการแปลภาษา AI [Co-op Translator](https://github.com/Azure/co-op-translator) แม้ว่าเราจะพยายามให้การแปลมีความถูกต้องมากที่สุด แต่โปรดทราบว่าการแปลอัตโนมัติอาจมีข้อผิดพลาดหรือความไม่ถูกต้อง เอกสารต้นฉบับในภาษาดั้งเดิมควรถือเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลที่สำคัญ ขอแนะนำให้ใช้บริการแปลภาษามืออาชีพ เราไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความผิดที่เกิดจากการใช้การแปลนี้ \ No newline at end of file +เอกสารนี้ได้รับการแปลโดยใช้บริการแปลภาษา AI [Co-op Translator](https://github.com/Azure/co-op-translator) แม้ว่าเราจะพยายามให้การแปลมีความถูกต้อง แต่โปรดทราบว่าการแปลอัตโนมัติอาจมีข้อผิดพลาดหรือความไม่ถูกต้อง เอกสารต้นฉบับในภาษาดั้งเดิมควรถือเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลที่สำคัญ ขอแนะนำให้ใช้บริการแปลภาษามืออาชีพ เราไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความผิดที่เกิดจากการใช้การแปลนี้ \ No newline at end of file