(Κάντε κλικ στην εικόνα παραπάνω για να δείτε το βίντεο αυτού του μαθήματος)
Μέχρι τώρα, μέσα από αυτό το πρόγραμμα σπουδών, έχετε δει βασικές έννοιες όπως τα prompts και ακόμη και μια ολόκληρη επιστήμη που ονομάζεται "prompt engineering". Πολλά εργαλεία με τα οποία μπορείτε να αλληλεπιδράσετε, όπως το ChatGPT, το Office 365, το Microsoft Power Platform και άλλα, σας υποστηρίζουν στη χρήση prompts για να επιτύχετε κάτι.
Για να προσθέσετε μια τέτοια εμπειρία σε μια εφαρμογή, πρέπει να κατανοήσετε έννοιες όπως τα prompts, οι ολοκληρώσεις και να επιλέξετε μια βιβλιοθήκη για να δουλέψετε. Αυτό ακριβώς θα μάθετε σε αυτό το κεφάλαιο.
Σε αυτό το κεφάλαιο, θα:
- Μάθετε για τη βιβλιοθήκη openai και τις βασικές της έννοιες.
- Δημιουργήσετε μια εφαρμογή παραγωγής κειμένου χρησιμοποιώντας το openai.
- Κατανοήσετε πώς να χρησιμοποιείτε έννοιες όπως το prompt, τη θερμοκρασία και τα tokens για να δημιουργήσετε μια εφαρμογή παραγωγής κειμένου.
Στο τέλος αυτού του μαθήματος, θα μπορείτε να:
- Εξηγήσετε τι είναι μια εφαρμογή παραγωγής κειμένου.
- Δημιουργήσετε μια εφαρμογή παραγωγής κειμένου χρησιμοποιώντας το openai.
- Ρυθμίσετε την εφαρμογή σας ώστε να χρησιμοποιεί περισσότερα ή λιγότερα tokens και να αλλάξετε τη θερμοκρασία για ποικίλα αποτελέσματα.
Συνήθως, όταν δημιουργείτε μια εφαρμογή, έχει κάποιο είδος διεπαφής όπως οι παρακάτω:
- Βασισμένη σε εντολές. Οι εφαρμογές κονσόλας είναι τυπικές εφαρμογές όπου πληκτρολογείτε μια εντολή και εκτελεί μια εργασία. Για παράδειγμα, το
gitείναι μια εφαρμογή βασισμένη σε εντολές. - Διεπαφή χρήστη (UI). Ορισμένες εφαρμογές έχουν γραφικές διεπαφές χρήστη (GUIs) όπου κάνετε κλικ σε κουμπιά, εισάγετε κείμενο, επιλέγετε επιλογές και άλλα.
Συγκρίνετε το με μια εφαρμογή βασισμένη σε εντολές όπου πληκτρολογείτε μια εντολή:
- Είναι περιορισμένη. Δεν μπορείτε απλά να πληκτρολογήσετε οποιαδήποτε εντολή, μόνο αυτές που υποστηρίζει η εφαρμογή.
- Ειδική γλώσσα. Ορισμένες εφαρμογές υποστηρίζουν πολλές γλώσσες, αλλά από προεπιλογή η εφαρμογή είναι κατασκευασμένη για μια συγκεκριμένη γλώσσα, ακόμη και αν μπορείτε να προσθέσετε υποστήριξη για περισσότερες γλώσσες.
Πώς είναι διαφορετική μια εφαρμογή παραγωγής κειμένου;
Σε μια εφαρμογή παραγωγής κειμένου, έχετε περισσότερη ευελιξία, δεν περιορίζεστε σε ένα σύνολο εντολών ή μια συγκεκριμένη γλώσσα εισόδου. Αντίθετα, μπορείτε να χρησιμοποιήσετε φυσική γλώσσα για να αλληλεπιδράσετε με την εφαρμογή. Ένα άλλο πλεονέκτημα είναι ότι ήδη αλληλεπιδράτε με μια πηγή δεδομένων που έχει εκπαιδευτεί σε ένα τεράστιο σώμα πληροφοριών, ενώ μια παραδοσιακή εφαρμογή μπορεί να περιορίζεται σε ό,τι υπάρχει σε μια βάση δεδομένων.
Υπάρχουν πολλά πράγματα που μπορείτε να δημιουργήσετε. Για παράδειγμα:
- Ένα chatbot. Ένα chatbot που απαντά σε ερωτήσεις για θέματα, όπως η εταιρεία σας και τα προϊόντα της, θα μπορούσε να είναι μια καλή επιλογή.
- Βοηθός. Τα LLMs είναι εξαιρετικά σε πράγματα όπως η περίληψη κειμένου, η εξαγωγή πληροφοριών από κείμενο, η παραγωγή κειμένου όπως βιογραφικά και άλλα.
- Βοηθός κώδικα. Ανάλογα με το μοντέλο γλώσσας που χρησιμοποιείτε, μπορείτε να δημιουργήσετε έναν βοηθό κώδικα που σας βοηθά να γράψετε κώδικα. Για παράδειγμα, μπορείτε να χρησιμοποιήσετε ένα προϊόν όπως το GitHub Copilot καθώς και το ChatGPT για να σας βοηθήσει να γράψετε κώδικα.
Πρέπει να βρείτε έναν τρόπο να ενσωματωθείτε με ένα LLM, κάτι που συνήθως περιλαμβάνει τις εξής δύο προσεγγίσεις:
- Χρήση API. Εδώ κατασκευάζετε αιτήματα ιστού με το prompt σας και λαμβάνετε πίσω το παραγόμενο κείμενο.
- Χρήση βιβλιοθήκης. Οι βιβλιοθήκες βοηθούν στην απλοποίηση των κλήσεων API και καθιστούν τη χρήση τους ευκολότερη.
Υπάρχουν μερικές γνωστές βιβλιοθήκες για εργασία με LLMs όπως:
- openai, αυτή η βιβλιοθήκη διευκολύνει τη σύνδεση με το μοντέλο σας και την αποστολή prompts.
Επιπλέον, υπάρχουν βιβλιοθήκες που λειτουργούν σε υψηλότερο επίπεδο όπως:
- Langchain. Το Langchain είναι γνωστό και υποστηρίζει Python.
- Semantic Kernel. Το Semantic Kernel είναι μια βιβλιοθήκη της Microsoft που υποστηρίζει τις γλώσσες C#, Python και Java.
Ας δούμε πώς μπορούμε να δημιουργήσουμε την πρώτη μας εφαρμογή, ποιες βιβλιοθήκες χρειαζόμαστε, πόσο απαιτείται και ούτω καθεξής.
Υπάρχουν πολλές βιβλιοθήκες για την αλληλεπίδραση με το OpenAI ή το Azure OpenAI. Είναι δυνατό να χρησιμοποιήσετε πολλές γλώσσες προγραμματισμού όπως C#, Python, JavaScript, Java και άλλες. Έχουμε επιλέξει να χρησιμοποιήσουμε τη βιβλιοθήκη Python openai, οπότε θα χρησιμοποιήσουμε το pip για να την εγκαταστήσουμε.
pip install openaiΠρέπει να εκτελέσετε τα παρακάτω βήματα:
-
Δημιουργήστε έναν λογαριασμό στο Azure https://azure.microsoft.com/free/.
-
Αποκτήστε πρόσβαση στο Azure OpenAI. Μεταβείτε στο https://learn.microsoft.com/azure/ai-services/openai/overview#how-do-i-get-access-to-azure-openai και ζητήστε πρόσβαση.
[!NOTE] Τη στιγμή της συγγραφής, πρέπει να υποβάλετε αίτηση για πρόσβαση στο Azure OpenAI.
-
Εγκαταστήστε το Python https://www.python.org/
-
Δημιουργήστε έναν πόρο Azure OpenAI Service. Δείτε αυτόν τον οδηγό για το πώς να δημιουργήσετε έναν πόρο.
Σε αυτό το σημείο, πρέπει να πείτε στη βιβλιοθήκη openai ποιο API key να χρησιμοποιήσει. Για να βρείτε το API key σας, μεταβείτε στην ενότητα "Keys and Endpoint" του πόρου Azure OpenAI και αντιγράψτε την τιμή "Key 1".
Τώρα που έχετε αντιγράψει αυτές τις πληροφορίες, ας δώσουμε οδηγίες στις βιβλιοθήκες να τις χρησιμοποιήσουν.
Note
Αξίζει να διαχωρίσετε το API key σας από τον κώδικα σας. Μπορείτε να το κάνετε χρησιμοποιώντας μεταβλητές περιβάλλοντος.
- Ορίστε τη μεταβλητή περιβάλλοντος
OPENAI_API_KEYστο API key σας.export OPENAI_API_KEY='sk-...'
Αν χρησιμοποιείτε το 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, είναι ώρα να δημιουργήσουμε την πρώτη σας εφαρμογή παραγωγής κειμένου. Για να δημιουργήσετε την εφαρμογή σας, ακολουθήστε αυτά τα βήματα:
-
Δημιουργήστε ένα εικονικό περιβάλλον και εγκαταστήστε το 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. -
Δημιουργήστε ένα αρχείο 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.
Τώρα έχετε δει πώς να δημιουργείτε κείμενο χρησιμοποιώντας ένα 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
Αυτές είναι οι πέντε συνταγές σας, χωρίς να αναφέρεται το σκόρδο και έχετε επίσης μια λίστα αγορών λαμβάνοντας υπόψη τι έχετε ήδη στο σπίτι.
Τώρα που έχουμε εξετάσει ένα σενάριο, ας γράψουμε κώδικα για να ταιριάζει με το παρουσιασμένο σενάριο. Για να το κάνετε, ακολουθήστε αυτά τα βήματα:
-
Χρησιμοποιήστε το υπάρχον αρχείο app.py ως σημείο εκκίνησης
-
Εντοπίστε τη μεταβλητή
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 σας είναι μη ντετερμινιστικό, οπότε μπορεί να λάβετε διαφορετικά αποτελέσματα κάθε φορά που εκτελείτε το πρόγραμμα.
Εξαιρετικά, ας δούμε πώς μπορούμε να βελτιώσουμε τα πράγματα. Για να βελτιώσουμε τα πράγματα, θέλουμε να βεβαιωθούμε ότι ο κώδικας είναι ευέλικτος, ώστε τα υλικά και ο αριθμός των συνταγών να μπορούν να βελτιωθούν και να αλλάξουν.
-
Ας αλλάξουμε τον κώδικα με τον εξής τρόπο:
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)Σημειώστε τα εξής:
-
Δημιουργούμε ένα νέο prompt προσθέτοντας το αποτέλεσμα από το πρώτο prompt στο νέο prompt:
new_prompt = f"{old_prompt_result} {prompt}"
-
Κάνουμε ένα νέο αίτημα, λαμβάνοντας υπόψη τον αριθμό των 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για να τα φορτώσουμε από ένα αρχείο. Δείτε πώς θα μπορούσε να φαίνεται αυτό στον κώδικα:-
Δημιουργήστε ένα αρχείο
.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"
Ακολουθούν κάποια 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"
Τι κάνει η έννοια της θερμοκρασίας;
- Ελέγχει πόσο τυχαίο είναι το αποτέλεσμα.
- Ελέγχει πόσο μεγάλο είναι το αποτέλεσμα.
- Ελέγχει πόσα tokens χρησιμοποιούνται.
Όταν εργάζεστε στην εργασία, δοκιμάστε να διαφοροποιήσετε τη θερμοκρασία, δοκιμάστε να την ορίσετε στο 0, 0.5 και 1. Θυμηθείτε ότι το 0 είναι το λιγότερο ποικίλο και το 1 είναι το πιο ποικίλο. Ποια τιμή λειτουργεί καλύτερα για την εφαρμογή σας;
Αφού ολοκληρώσετε αυτό το μάθημα, δείτε τη Συλλογή Μάθησης Γενετικής AI για να συνεχίσετε να αναβαθμίζετε τις γνώσεις σας στη Γενετική AI!
Προχωρήστε στο Μάθημα 7 όπου θα δούμε πώς να δημιουργούμε εφαρμογές συνομιλίας!
Αποποίηση ευθύνης:
Αυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία αυτόματης μετάφρασης Co-op Translator. Παρόλο που καταβάλλουμε προσπάθειες για ακρίβεια, παρακαλούμε να έχετε υπόψη ότι οι αυτόματες μεταφράσεις ενδέχεται να περιέχουν λάθη ή ανακρίβειες. Το πρωτότυπο έγγραφο στη μητρική του γλώσσα θα πρέπει να θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε ευθύνη για τυχόν παρεξηγήσεις ή εσφαλμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης.

