Maison > Périphériques technologiques > IA > Tutoriel d'appel de fonction Openai: générer une sortie structurée

Tutoriel d'appel de fonction Openai: générer une sortie structurée

Lisa Kudrow
Libérer: 2025-03-10 12:02:12
original
664 Les gens l'ont consulté

Utilisation d'Openai sans fonction appelant

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
Copier après la connexion
Copier après la connexion
Copier après la connexion

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'],
)
Copier après la connexion
Copier après la connexion
Copier après la connexion

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."
Copier après la connexion
Copier après la connexion
Copier après la connexion

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}
'''
Copier après la connexion
Copier après la connexion

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
Copier après la connexion
Copier après la connexion

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}'
Copier après la connexion
Copier après la connexion

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
Copier après la connexion
Copier après la connexion

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'}
Copier après la connexion

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."
Copier après la connexion

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}
'''
Copier après la connexion

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
Copier après la connexion

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']}
Copier après la connexion

Fonction Openai Exemple d'appel

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.

  • Nom : Écrivez le nom de la fonction Python que vous avez récemment créé.
  • Description : la fonctionnalité de la fonction.
  • Paramètres : Dans les «propriétés», nous écrivons le nom des arguments, types et description. Il aidera à ouvrir API à identifier le monde que nous recherchons.

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
Copier après la connexion
Copier après la connexion
Copier après la connexion

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'],
)
Copier après la connexion
Copier après la connexion
Copier après la connexion

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."
Copier après la connexion
Copier après la connexion
Copier après la connexion

plusieurs fonctions personnalisées

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}
'''
Copier après la connexion
Copier après la connexion

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
Copier après la connexion
Copier après la connexion

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}'
Copier après la connexion
Copier après la connexion

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
Copier après la connexion
Copier après la connexion

Nous pouvons même regarder sous le nom que le repos est généré à l'aide de la fonction "extract_school_info".

Tutoriel d'appel de fonction Openai: générer une sortie structurée

Applications de la fonction appelant

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
Copier après la connexion
Copier après la connexion
Copier après la connexion
  1. Créez la liste Python, qui se compose d'une description de l'élève, d'une invite aléatoire et d'une description de l'école. L'invite aléatoire est ajoutée pour valider le mécanisme d'appel de fonction automatique.
  2. Nous générerons la réponse en utilisant chaque texte dans la liste des descriptions.
  3. Si un appel de fonction est utilisé, nous obtiendrons le nom de la fonction et, en fonction de celui-ci, appliquerons les arguments pertinents à la fonction à l'aide de la réponse. Sinon, renvoyez la réponse normale.
  4. Imprimez les sorties des trois échantillons.
import os
from openai import OpenAI

client = OpenAI(
  api_key=os.environ['OPENAI_API_KEY'],
)
Copier après la connexion
Copier après la connexion
Copier après la connexion
  • Échantillon # 1 : Le modèle GPT a sélectionné «extract_student_info», et nous avons obtenu un court résumé sur l'étudiant.
  • Échantillon # 2 : Le modèle GPT n'a sélectionné aucune fonction et traité l'invite comme une question régulière, et en conséquence, nous avons obtenu la biographie d'Abraham Lincoln.
  • Échantillon # 3 : Le modèle GPT a sélectionné «extract_school_info», et nous avons obtenu un bref résumé sur l'Université de Stanford.
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."
Copier après la connexion
Copier après la connexion
Copier après la connexion

Conclusion

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

Comment la fonction Openai appelle-t-elle des sorties JSON NEST complexes Structures JSON imbriquées dans le schéma de fonction. En spécifiant les relations hiérarchiques au sein de la propriété Paramètres, vous pouvez vous assurer que le modèle génère des sorties JSON correctement imbriquées et structurées pour des exigences de données complexes.

Peut-on s'appeler les appels d'ouverture avec des API ou des bases de données externes? Les appels API ou les requêtes de base de données basées sur les arguments transmis par le modèle. Cela permet des interactions dynamiques avec les systèmes externes tout en conservant des réponses cohérentes et structurées.

Que se passe-t-il si l'appel de fonction du modèle ne correspond pas aux fonctions définies?

Si l'appel de fonction du modèle ne correspond pas à une fonction définie ou le schéma fourni, l'appel de fonction n'est pas déclenché et que le modèle traite l'entrée comme une invite basée sur le texte standard, le renvoyant une réponse textuelle typique à la place. Cela garantit la flexibilité de la gestion des types d'entrée variés.

Gagnez une certification AI supérieure

démontrer que vous pouvez utiliser efficacement et de manière responsable AI.get certifié, soyez embauché

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal