
Auteurs):Une chronologie des grands modèles de langage — Source de l’image :Obtenir une clé API OpenAI en 12 étapes — Source : Image de l’auteur
- N’oubliez pas de copier et de sauvegarder votre clé API. Vous ne pourrez pas voir les postfaces clés dans votre compte OpenAI
- Vous pouvez obtenir des crédits lors de votre première inscription. Si vous manquez de crédits, vous devrez définir la facturation et acheter davantage de crédits.
Initialisation du client OpenAI
Le client OpenAI sert d’interface pour interagir avec les services et les API d’OpenAI. Pour initialiser le client OpenAI, nous devons transmettre la clé API. Il existe de nombreuses façons de procéder. Pour ce faire, vous devrez importer les bibliothèques.
import openai #OpenAI python library from openai import OpenAI #OpenAI Client
Option 1 : Créer un fichier .env pour stocker la clé API et l’utiliser (Recommandé)
Installez le dotenv bibliothèque
La bibliothèque dotenv est un outil populaire utilisé dans divers langages de programmation, notamment Python et Node.js, pour gérer les variables d’environnement dans les environnements de développement et de déploiement. Il permet aux développeurs de charger des variables d’environnement à partir d’un fichier .env dans l’environnement de leur application.
pip install python-dotenv
Créez ensuite un fichier nommé .env dans le répertoire racine de leur projet. Dans le fichier .env, définissez ensuite les variables d’environnement au format VARIABLE_NAME=value. par exemple OPENAI_API_KEY=VOTRE CLÉ API
from dotenv import load_dotenv
import os
load_dotenv()
openai_api_key=os.getenv(« OPENAI_API_KEY »)
La variable ‘openai_api_key’ stocke désormais votre clé API
Option 2 : coller la clé dans le code (non recommandé)
openai_api_key="<YOUR KEY HERE>"
Vous pouvez également visiter
Inférence LLM — Source : Image de l’auteur
Recommandation : Un excellent parcours »
Top p et température — Source : Image de l’auteur
Note : Il est recommandé de configurer l’un ou l’autre de « température » et « top_p », mais pas les deux.
- fréquence_pénalité: Pénaliser les nouveaux jetons en fonction de leur fréquence existante dans le texte jusqu’à présent (Valeur entre -2 et 2)
- présence_pénalité: Pénaliser les nouveaux jetons selon qu’ils apparaissent ou non dans le texte jusqu’à présent (Valeur entre -2 et 2)
- enregistrer les problèmes: Indicateur pour renvoyer la probabilité du journal des jetons générés (Vrai faux)
- logit_bias: Paramètre pour contrôler la présence de jetons particuliers dans la sortie (Valeur entre -100 et 100)
- format_réponse: La réponse du modèle peut être demandée dans un format particulier (Actuellement : JSON et Texte)
- graine: fonctionnalité bêta pour des sorties reproductibles (la définition d’une valeur de départ peut produire la même sortie à plusieurs reprises)
- arrêt: Jetons de fin de séquence qui arrêteront la génération
- flux: Pour recevoir des deltas de messages partiels (Vrai faux)
- utilisateur: ID représentant l’utilisateur final (cela aide OpenAI à détecter les abus. Peut être obligatoire pour des limites de débit plus élevées)
- outils: utilisé dans l’appel de fonction
- choix_outil: utilisé dans l’appel de fonction
Créons une fonction pour effectuer les appels API.
def gpt_call(model:str= »gpt-3.5-turbo »,prompt:str= »Have \
I provided any input »,n:int=1,max_tokens:int=100,
temperature:float=0.5,presence_penalty:float=0):
response = client.chat.completions.create(
model=model,
messages=[
{« role »: « user », « content »: prompt}
],
max_tokens=max_tokens,
temperature=temperature,
presence_penalty=presence_penalty,
n=n
)
if len(response.choices)>1:
output= »
for i in range(0,len(response.choices)):
output+=’\n\n– n = ‘+str(i+1)+’ ——\n\n’+
str(response.choices[i].message.content)
else:
output=response.choices[0].message.content
return output
Tout d’abord, appelons la fonction avec n=2 et une température élevée
print(gpt_call(prompt="Write a title for a workshop on / openai API",n=2,temperature=1))
Vous obtiendrez deux réponses car « n » est défini sur 2
— n = 1 ——
« Unlocking the Power of AI: A Deep Dive into OpenAI’s API »
— n = 2 ——
« Unlocking the Power of OpenAI: A Workshop on Leveraging the OpenAI
API for Innovation and Insight »
Maintenant, changeons la température à 0 (un résultat plus déterministe)
print(gpt_call(prompt="Write a title for a workshop / on openai API",n=3,temperature=0))
Vous remarquerez que la réponse pour les trois options est la même.
— n = 1 ——
« Unlocking the Power of AI: A Deep Dive into OpenAI’s API »
— n = 2 ——
« Unlocking the Power of AI: A Deep Dive into OpenAI’s API »
— n = 3 ——
« Unlocking the Power of AI: A Deep Dive into OpenAI’s API »
C’est parce que le
Objet d’achèvement du chat — Source : Image de l’auteur
Réponses en continu
Parfois, lorsque le modèle est censé générer un texte volumineux comme un e-mail, une histoire ou un blog, etc., cela prend beaucoup de temps. Cela peut conduire à une mauvaise expérience utilisateur. Pour résoudre ce problème, l’API OpenAI offre la possibilité de renvoyer les réponses à un client afin d’autoriser des résultats partiels pour certaines requêtes. Cela se fait en définissant le paramètre « stream » sur True.
response = client.chat.completions.create(
model="gpt-3.5-turbo",
messages=[
{"role": "system", "content": "You are a helpful assistant knowledgeable in the field of Cricket."},
{"role": "user", "content": "When did Australia win their first Cricket World Cup?"},
{"role": "assistant", "content": "Australia won their first Cricket World Cup in the year 1987. They defeated England in the final to clinch their maiden title in the tournament."},
{"role": "user", "content": "How much did they score?"}
],
stream=True ###Streaming is set to true here.
)
La réponse est reçue sous forme de morceaux qui peuvent être imprimés au fur et à mesure de leur arrivée.
for chunk in stream: if chunk.choices[0].delta.content is not None: print(chunk.choices[0].delta.content, end="")
Format de réponse JSON
Parfois, les réponses sont nécessaires dans un format défini pour que nous puissions en extraire les sections pertinentes. JSON devient un format très pratique et les LLM ont la possibilité de renvoyer du texte au format JSON. Dans les versions précédentes de la série de modèles GPT, parfois le JSON renvoyé n’était pas valide. Par conséquent, OpenAI a récemment publié cette fonctionnalité. Pour en bénéficier, le «format_réponse » Le paramètre est utilisé.
prompt="generate the entire text for a blog on a cricket match. \"Title\" is a catchy and attractive title of the blog. The \"Heading\" is the heading for each point in the blog and the \"Body\" is the text for that heading.Output in a json structure"
response = client.chat.completions.create(
model= »gpt-3.5-turbo »,
messages=[
{« role »: « user », « content »: prompt}
],
response_format={ « type »: « json_object » }
)
print((response.choices[0].message.content))
La réponse peut désormais être attendue dans un format JSON valide.
{
"Title": "Thrilling Victory: A Nail-biting Finish in the Cricket Match",
"Heading": [
{
"Heading": "Introduction",
"Body": "The cricket match between Team A and Team B had fans on the edge of their seats as both teams fought tooth and nail for victory. The match was filled with twists and turns, keeping the spectators entertained till the last ball."
},
{
"Heading": "Team A's Dominant Start",
"Body": "Team A got off to a flying start with their opening batsmen scoring quick runs and building a solid foundation for the team. Their middle-order batsmen continued the momentum, and Team A set a formidable total for Team B to chase."
},
{
"Heading": "Team B's Counterattack",
"Body": "Despite the daunting target set by Team A, Team B's batsmen showed great determination and skill as they went about their chase. They played aggressive cricket, hitting boundaries and rotating the strike to keep the scoreboard ticking."
},
{
"Heading": "The Rollercoaster Middle Overs",
"Body": "The middle overs of the match were filled with drama as both teams fought fiercely for control. Team A's bowlers made crucial breakthroughs, but Team B's batsmen didn't back down, staging counterattacks and keeping the match finely balanced."
},
{
"Heading": "The Final Overs Drama",
"Body": "As the match entered its final overs, the tension was palpable in the air. Team B needed a few runs to win, but Team A's bowlers didn't make it easy for them. It all came down to the last ball, with the match hanging in the balance."
},
{
"Heading": "The Last Ball Finish",
"Body": "In a nail-biting finish, Team B managed to score the required runs off the last ball, clinching a thrilling victory against Team A. The players and fans erupted in joy as Team B celebrated their hard-fought win."
},
{
"Heading": "Conclusion",
"Body": "The cricket match between Team A and Team B was a test of skill, determination, and nerve. Both teams showcased their fighting spirit and never-say-die attitude, making it a memorable match for everyone involved."
}
]
}
Cela devient très pratique lors de la création d’applications. Il y a quelques points à noter ici –
- Il s’agit encore d’une fonctionnalité bêta.
- Pour utiliser le mode JSON, l’instruction destinée au modèle pour produire du JSON doit être présente dans l’invite/le message, sinon une erreur se produit.
Jetons
Avant de conclure, un mot sur les jetons s’impose. Les jetons sont les unités fondamentales de
Salut! Je m’appelle Abhinav !
J’écris sur l’#IA #MachineLearning #DataScience #GenerativeAI #Analytics #LLMs #Technology #RAG.
Si cet espace vous intéresse, veuillez lire mes e-books.
Génération augmentée de récupération – Une introduction simple
Comment créer un ChatGPT ou un Bard pour vos propres donnéesU+2753 La réponse est de créer une organisation « cerveau de la connaissance » et d’utiliser…
abhinavkimothi.gumroad.com
Terminologie de l’IA générative – Une taxonomie évolutive pour vous aider à démarrer avec Generative Artificial…
Dans le domaine de l’IA générative, les nouveaux arrivants peuvent se sentir intimidés par la terminologie technique. Pour atténuer cela…
abhinavkimothi.gumroad.com
IA générative avec de grands modèles de langage (notes de cours Coursera)
IA générative avec grands modèles de langageL’arrivée de l’architecture des transformateurs en 2017, suite à la publication…
abhinavkimothi.gumroad.com
Connectons-nous sur LinkedIn ->
Publié via Vers l’IA
