Maison >Périphériques technologiques >IA >Tutoriel d'appel de fonction Openai: générer une sortie structurée
Dans cette section, nous générerons des réponses en utilisant le modèle GPT-3.5-turbo sans fonction d'appel pour voir si nous obtenons une sortie cohérente ou non.
Avant d'installer l'API Openai Python, vous devez obtenir une clé API et la configurer sur votre système local. Suivez les GPT-3.5 et GPT-4 via l'API OpenAI dans Python Tutoriel pour apprendre à obtenir la clé API et à le configurer. Le tutoriel comprend également des exemples de configuration des variables d'environnement dans Datalab, le cahier de données compatible avec l'IA de DataCamp.
Pour plus d'assistance, consultez le code dans le classeur d'appel de la fonction OpenAI sur Datalab.
Améliorez l'API Openai Python en V1 en utilisant:
pip install --upgrade openai -q
Après cela, lancez le client OpenAI à l'aide de la clé API.
import os from openai import OpenAI client = OpenAI( api_key=os.environ['OPENAI_API_KEY'], )
Remarque : Openai n'offre plus de crédits gratuits aux nouveaux utilisateurs, vous devez donc les acheter pour utiliser l'API.
Nous rédigerons une description de l'élève aléatoire. Soit vous pouvez trouver votre propre texte, soit utiliser Chatgpt pour en générer un pour vous.
student_1_description = "David Nguyen is a sophomore majoring in computer science at Stanford University. He is Asian American and has a 3.8 GPA. David 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 graduating."
Dans la partie suivante, nous rédigerons une invite pour extraire les informations des élèves du texte et renvoyer la sortie en tant qu'objet JSON. Nous extraireons le nom, la majeure, l'école, les notes et les clubs dans la description de l'élève.
# A simple prompt to extract information from "student_description" in a JSON format. 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} '''
Ajoutez l'invite au module d'achèvement du chat API OpenAI pour générer la réponse.
# Generating response back from gpt-3.5-turbo openai_response = client.chat.completions.create( model = 'gpt-3.5-turbo', messages = [{'role': 'user', 'content': prompt_1}] ) openai_response.choices[0].message.content
La réponse est assez bonne. Convertissons-le en JSON pour mieux le comprendre.
'{\n "name": "David Nguyen",\n "major": "computer science",\n "school": "Stanford University",\n "grades": "3.8 GPA",\n "club": "Robotics Club"\n}'
Nous utiliserons la bibliothèque `JSON` pour convertir le texte en un objet JSON.
import json # Loading the response as a JSON object json_response = json.loads(openai_response.choices[0].message.content) json_response
Le résultat final est à peu près parfait. Alors, pourquoi avons-nous besoin d'appels de fonction?
{'name': 'David Nguyen', 'major': 'computer science', 'school': 'Stanford University', 'grades': '3.8 GPA', 'club': 'Robotics Club'}
essayons la même invite, mais en utilisant une description différente de l'élève.
student_2_description="Ravi Patel is a sophomore majoring in computer science at the University of Michigan. He is South Asian Indian American and has a 3.7 GPA. Ravi is an active member of the university's Chess Club and the South Asian Student Association. He hopes to pursue a career in software engineering after graduating."
Nous allons simplement modifier le texte de description de l'élève dans l'invite.
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} '''
et, exécutez la fonction de complétion de chat en utilisant la deuxième invite.
# Generating response back from gpt-3.5-turbo openai_response = client.chat.completions.create( model = 'gpt-3.5-turbo', messages = [{'role': 'user', 'content': prompt_2}] ) # Loading the response as a JSON object json_response = json.loads(openai_response.choices[0].message.content) json_response
Comme vous pouvez le voir, ce n'est pas cohérent. Au lieu de retourner un club, il a retourné la liste des clubs rejoints par Ravi. Il est également différent du premier étudiant.
{'name': 'Ravi Patel', 'major': 'computer science', 'school': 'University of Michigan', 'grades': '3.7 GPA', 'club': ['Chess Club', 'South Asian Student Association']}
Pour résoudre ce problème, nous utiliserons désormais une fonctionnalité récemment introduite appelée Function Calling. Il est essentiel de créer une fonction personnalisée pour ajouter les informations nécessaires à une liste de dictionnaires afin que l'API OpenAI puisse comprendre ses fonctionnalités.
Remarque : Assurez-vous de suivre le modèle correct. En savoir plus sur l'appel des fonctions en lisant la documentation officielle.
pip install --upgrade openai -q
Ensuite, nous générerons des réponses pour deux descriptions d'étudiants à l'aide d'une fonction personnalisée ajoutée à l'argument "Functions". Après cela, nous allons convertir la réponse du texte en un objet JSON et l'imprimer.
import os from openai import OpenAI client = OpenAI( api_key=os.environ['OPENAI_API_KEY'], )
Comme nous pouvons le voir, nous avons obtenu une sortie uniforme. Nous avons même obtenu des notes numériques au lieu de la chaîne. La sortie cohérente est essentielle pour créer des applications AI sans bug.
student_1_description = "David Nguyen is a sophomore majoring in computer science at Stanford University. He is Asian American and has a 3.8 GPA. David 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 graduating."
Vous pouvez ajouter plusieurs fonctions personnalisées à la fonction d'achèvement du chat. Dans cette section, nous verrons les capacités magiques de l'API OpenAI et comment il sélectionne automatiquement la fonction correcte et renvoie les bons arguments.
Dans la liste Python du dictionnaire, nous ajouterons une autre fonction intitulée «Extract_school_info», qui nous aidera à extraire les informations universitaires du texte.
Pour y parvenir, vous devez ajouter un autre dictionnaire d'une fonction avec nom, description et paramètres.
# A simple prompt to extract information from "student_description" in a JSON format. 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} '''
Nous générerons une description de «l'Université de Stanford» à l'aide de Chatgpt pour tester notre fonction.
# Generating response back from gpt-3.5-turbo openai_response = client.chat.completions.create( model = 'gpt-3.5-turbo', messages = [{'role': 'user', 'content': prompt_1}] ) openai_response.choices[0].message.content
Créez la liste des descriptions des élèves et des écoles et passez-la dans la fonction d'achèvement du chat Openai pour générer la réponse. Assurez-vous d'avoir fourni la fonction personnalisée mise à jour.
'{\n "name": "David Nguyen",\n "major": "computer science",\n "school": "Stanford University",\n "grades": "3.8 GPA",\n "club": "Robotics Club"\n}'
Le modèle GPT-3.5-turbo a automatiquement sélectionné la fonction correcte pour différents types de description. Nous obtenons une production JSON parfaite pour l'élève et l'école.
import json # Loading the response as a JSON object json_response = json.loads(openai_response.choices[0].message.content) json_response
Nous pouvons même regarder sous le nom que le repos est généré à l'aide de la fonction "extract_school_info".
Dans cette section, nous créerons un résumé de texte stable qui résumera les informations de l'école et des élèves d'une certaine manière.
Tout d'abord, nous créerons deux fonctions Python, extract_student_info et extract_school_info, qui prennent les arguments de l'appel de la fonction et renvoient une chaîne résumée.
pip install --upgrade openai -q
import os from openai import OpenAI client = OpenAI( api_key=os.environ['OPENAI_API_KEY'], )
student_1_description = "David Nguyen is a sophomore majoring in computer science at Stanford University. He is Asian American and has a 3.8 GPA. David 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 graduating."
Dans ce tutoriel, nous avons appris l'appel de fonction d'Openai. Nous avons également appris à l'utiliser pour générer des sorties cohérentes, créer plusieurs fonctions et créer un résumé de texte fiable.
Si vous souhaitez en savoir plus sur l'API OpenAI, envisagez de suivre le cours de travail avec OpenAI API et d'utiliser l'API OpenAI dans Python Cheat Sheet pour créer votre premier projet alimenté en AI.FAQS
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!