Skip to content

Latest commit

 

History

History
581 lines (404 loc) · 38.3 KB

File metadata and controls

581 lines (404 loc) · 38.3 KB

Δημιουργία Εφαρμογών Παραγωγής Κειμένου

Δημιουργία Εφαρμογών Παραγωγής Κειμένου

(Κάντε κλικ στην εικόνα παραπάνω για να δείτε το βίντεο αυτού του μαθήματος)

Μέχρι τώρα, μέσα από αυτό το πρόγραμμα σπουδών, έχετε δει βασικές έννοιες όπως τα 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 για να την εγκαταστήσουμε.

pip install openai

Δημιουργία πόρου

Πρέπει να εκτελέσετε τα παρακάτω βήματα:

Εντοπισμός API key και endpoint

Σε αυτό το σημείο, πρέπει να πείτε στη βιβλιοθήκη openai ποιο API key να χρησιμοποιήσει. Για να βρείτε το API key σας, μεταβείτε στην ενότητα "Keys and Endpoint" του πόρου Azure OpenAI και αντιγράψτε την τιμή "Key 1".

Keys and Endpoint resource blade in Azure Portal

Τώρα που έχετε αντιγράψει αυτές τις πληροφορίες, ας δώσουμε οδηγίες στις βιβλιοθήκες να τις χρησιμοποιήσουν.

Note

Αξίζει να διαχωρίσετε το API key σας από τον κώδικα σας. Μπορείτε να το κάνετε χρησιμοποιώντας μεταβλητές περιβάλλοντος.

  • Ορίστε τη μεταβλητή περιβάλλοντος OPENAI_API_KEY στο API key σας. export OPENAI_API_KEY='sk-...'

Ρύθμιση παραμέτρων Azure

Αν χρησιμοποιείτε το Azure OpenAI, δείτε πώς να ρυθμίσετε τις παραμέτρους:

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. Δείτε ένα παράδειγμα:

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. Δείτε ένα παράδειγμα χρήσης της:

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:

    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/ και αναζητήστε Open AI, επιλέξτε τον πόρο Open AI και στη συνέχεια επιλέξτε Keys and Endpoint και αντιγράψτε την τιμή Key 1.

  2. Δημιουργήστε ένα αρχείο app.py και δώστε του τον παρακάτω κώδικα:

    import openai
    
    openai.api_key = "<replace this value with your open ai key or Azure OpenAI key>"
    
    openai.api_type = 'azure'
    openai.api_version = '2023-05-15'
    openai.api_base = "<endpoint found in Azure Portal where your API key is>"
    deployment_name = "<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 σας.

    Θα πρέπει να δείτε ένα αποτέλεσμα όπως το παρακάτω:

     very unhappy _____.
    
    Once upon a time there was a very unhappy mermaid.
    

Διαφορετικοί τύποι prompts για διαφορετικά πράγματα

Τώρα έχετε δει πώς να δημιουργείτε κείμενο χρησιμοποιώντας ένα prompt. Έχετε ακόμη και ένα πρόγραμμα που λειτουργεί και μπορείτε να το τροποποιήσετε και να το αλλάξετε για να δημιουργήσετε διαφορετικούς τύπους κειμένου.

Τα prompts μπορούν να χρησιμοποιηθούν για διάφορες εργασίες. Για παράδειγμα:

  • Δημιουργία τύπου κειμένου. Για παράδειγμα, μπορείτε να δημιουργήσετε ένα ποίημα, ερωτήσεις για ένα κουίζ κ.λπ.
  • Αναζήτηση πληροφοριών. Μπορείτε να χρησιμοποιήσετε prompts για να αναζητήσετε πληροφορίες όπως το παρακάτω παράδειγμα 'Τι σημαίνει CORS στην ανάπτυξη ιστού;'.
  • Δημιουργία κώδικα. Μπορείτε να χρησιμοποιήσετε prompts για να δημιουργήσετε κώδικα, για παράδειγμα να αναπτύξετε μια κανονική έκφραση που χρησιμοποιείται για την επικύρωση email ή γιατί όχι να δημιουργήσετε ένα ολόκληρο πρόγραμμα, όπως μια εφαρμογή ιστού;

Μια πιο πρακτική περίπτωση: δημιουργός συνταγών

Φανταστείτε ότι έχετε υλικά στο σπίτι και θέλετε να μαγειρέψετε κάτι. Για αυτό, χρειάζεστε μια συνταγή. Ένας τρόπος για να βρείτε συνταγές είναι να χρησιμοποιήσετε μια μηχανή αναζήτησης ή θα μπορούσατε να χρησιμοποιήσετε ένα LLM.

Θα μπορούσατε να γράψετε ένα prompt όπως το εξής:

"Δείξε μου 5 συνταγές για ένα πιάτο με τα εξής υλικά: κοτόπουλο, πατάτες και καρότα. Για κάθε συνταγή, απαρίθμησε όλα τα υλικά που χρησιμοποιούνται"

Δεδομένου του παραπάνω prompt, μπορεί να λάβετε μια απάντηση παρόμοια με:

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:

"Παρακαλώ αφαιρέστε συνταγές με σκόρδο καθώς είμαι αλλεργικός και αντικαταστήστε το με κάτι άλλο. Επίσης, δημιουργήστε μια λίστα αγορών για τις συνταγές, λαμβάνοντας υπόψη ότι ήδη έχω κοτόπουλο, πατάτες και καρότα στο σπίτι."

Τώρα έχετε ένα νέο αποτέλεσμα, δηλαδή:

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 ως σημείο εκκίνησης

  2. Εντοπίστε τη μεταβλητή prompt και αλλάξτε τον κώδικα της στο εξής:

    prompt = "Show me 5 recipes for a dish with the following ingredients: chicken, potatoes, and carrots. Per recipe, list all the ingredients used"

    Αν τώρα εκτελέσετε τον κώδικα, θα πρέπει να δείτε ένα αποτέλεσμα παρόμοιο με:

    -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 σας είναι μη ντετερμινιστικό, οπότε μπορεί να λάβετε διαφορετικά αποτελέσματα κάθε φορά που εκτελείτε το πρόγραμμα.

    Εξαιρετικά, ας δούμε πώς μπορούμε να βελτιώσουμε τα πράγματα. Για να βελτιώσουμε τα πράγματα, θέλουμε να βεβαιωθούμε ότι ο κώδικας είναι ευέλικτος, ώστε τα υλικά και ο αριθμός των συνταγών να μπορούν να βελτιωθούν και να αλλάξουν.

  3. Ας αλλάξουμε τον κώδικα με τον εξής τρόπο:

    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"

    Η εκτέλεση του κώδικα για δοκιμή θα μπορούσε να μοιάζει με αυτό:

    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
    

Βελτίωση με προσθήκη φίλτρου και λίστας αγορών

Τώρα έχουμε μια λειτουργική εφαρμογή ικανή να παράγει συνταγές και είναι ευέλικτη καθώς βασίζεται σε εισόδους από τον χρήστη, τόσο στον αριθμό των συνταγών όσο και στα

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:

    new_prompt = f"{old_prompt_result} {prompt}"
  2. Κάνουμε ένα νέο αίτημα, λαμβάνοντας υπόψη τον αριθμό των tokens που ζητήσαμε στο πρώτο prompt, οπότε αυτή τη φορά λέμε ότι το max_tokens είναι 1200.

    completion = openai.Completion.create(engine=deployment_name, prompt=new_prompt, max_tokens=1200)

    Δοκιμάζοντας αυτόν τον κώδικα, φτάνουμε στο παρακάτω αποτέλεσμα:

    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 με το παρακάτω περιεχόμενο:

      OPENAI_API_KEY=sk-...

      Σημείωση, για το Azure, πρέπει να ορίσετε τις παρακάτω μεταβλητές περιβάλλοντος:

      OPENAI_API_TYPE=azure
      OPENAI_API_VERSION=2023-05-15
      OPENAI_API_BASE=<replace>

      Στον κώδικα, θα φορτώνατε τις μεταβλητές περιβάλλοντος ως εξής:

      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, θα κάνατε:

    completion = client.chat.completions.create(model=deployment, messages=messages, max_tokens=100)
  • Πειραματισμός με τη θερμοκρασία. Η θερμοκρασία είναι κάτι που δεν έχουμε αναφέρει μέχρι στιγμής, αλλά είναι σημαντικό για το πώς λειτουργεί το πρόγραμμά μας. Όσο υψηλότερη είναι η τιμή της θερμοκρασίας, τόσο πιο τυχαίο θα είναι το αποτέλεσμα. Αντίθετα, όσο χαμηλότερη είναι η τιμή της θερμοκρασίας, τόσο πιο προβλέψιμο θα είναι το αποτέλεσμα. Σκεφτείτε αν θέλετε ποικιλία στο αποτέλεσμα ή όχι.

    Για να αλλάξετε τη θερμοκρασία, μπορείτε να χρησιμοποιήσετε την παράμετρο temperature. Για παράδειγμα, αν θέλετε να χρησιμοποιήσετε θερμοκρασία 0.5, θα κάνατε:

    completion = client.chat.completions.create(model=deployment, messages=messages, temperature=0.5)

    Σημείωση, όσο πιο κοντά στο 1.0, τόσο πιο ποικίλο το αποτέλεσμα.

Εργασία

Για αυτήν την εργασία, μπορείτε να επιλέξετε τι να δημιουργήσετε.

Ακολουθούν κάποιες προτάσεις:

  • Βελτιώστε την εφαρμογή δημιουργίας συνταγών περαιτέρω. Παίξτε με τις τιμές θερμοκρασίας και τα prompts για να δείτε τι μπορείτε να δημιουργήσετε.
  • Δημιουργήστε έναν "συνεργάτη μελέτης". Αυτή η εφαρμογή θα πρέπει να μπορεί να απαντά σε ερωτήσεις για ένα θέμα, για παράδειγμα Python. Θα μπορούσατε να έχετε prompts όπως "Τι είναι ένα συγκεκριμένο θέμα στην Python;", ή θα μπορούσατε να έχετε ένα prompt που λέει, δείξε μου κώδικα για ένα συγκεκριμένο θέμα κ.λπ.
  • Ιστορικό bot, κάντε την ιστορία να ζωντανέψει, δώστε οδηγίες στο bot να παίξει έναν συγκεκριμένο ιστορικό χαρακτήρα και κάντε του ερωτήσεις για τη ζωή και την εποχή του.

Λύση

Συνεργάτης μελέτης

Παρακάτω είναι ένα αρχικό prompt, δείτε πώς μπορείτε να το χρησιμοποιήσετε και να το προσαρμόσετε στις ανάγκες σας.

- "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 που θα μπορούσατε να χρησιμοποιήσετε:

- "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. Ελέγχει πόσο τυχαίο είναι το αποτέλεσμα.
  2. Ελέγχει πόσο μεγάλο είναι το αποτέλεσμα.
  3. Ελέγχει πόσα tokens χρησιμοποιούνται.

🚀 Πρόκληση

Όταν εργάζεστε στην εργασία, δοκιμάστε να διαφοροποιήσετε τη θερμοκρασία, δοκιμάστε να την ορίσετε στο 0, 0.5 και 1. Θυμηθείτε ότι το 0 είναι το λιγότερο ποικίλο και το 1 είναι το πιο ποικίλο. Ποια τιμή λειτουργεί καλύτερα για την εφαρμογή σας;

Μπράβο! Συνεχίστε τη μάθηση σας

Αφού ολοκληρώσετε αυτό το μάθημα, δείτε τη Συλλογή Μάθησης Γενετικής AI για να συνεχίσετε να αναβαθμίζετε τις γνώσεις σας στη Γενετική AI!

Προχωρήστε στο Μάθημα 7 όπου θα δούμε πώς να δημιουργούμε εφαρμογές συνομιλίας!


Αποποίηση ευθύνης:
Αυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία αυτόματης μετάφρασης Co-op Translator. Παρόλο που καταβάλλουμε προσπάθειες για ακρίβεια, παρακαλούμε να έχετε υπόψη ότι οι αυτόματες μεταφράσεις ενδέχεται να περιέχουν λάθη ή ανακρίβειες. Το πρωτότυπο έγγραφο στη μητρική του γλώσσα θα πρέπει να θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε ευθύνη για τυχόν παρεξηγήσεις ή εσφαλμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης.