Nous avons vu dans un précédent post les possibilités des modèles basés sur GTP au travers du studio et du playground. Ce bac à sable n’est bien sûr destiné qu’à de premiers tests et une utilisation de l’inférence au sein d’une application se fera de manière programmatique, à l’aide de l’API de service disponible. (Il existe également une API dite de gestion pour la création, mise à jour ou suppression de la ressource Azure.)
Mais avant de nous lancer dans le code, nous allons réaliser un premier appel dans l’outil Postman.
Nous allons utiliser l’URL suivante, à compléter par les valeurs de paramètres :
- YOUR_RESSOURCE_NAME : le nom de la ressource Azure OpenAI provisionnée
- YOUR_DEPLOYMENT_NAME : le nom du déploiement de modèle (réalisé en amont dans le studio)
- la version de l’API, exprimée sous forme de date (en février 2023, nous utilisons la version 2022-12-01)
POST https://YOUR_RESOURCE_NAME.openai.azure.com/openai/deployments/YOUR_DEPLOYMENT_NAME/completions?api-version=YYYY-MM-DD
Nous remarquons que l’URL se termine par le terme “completions“, nous sommes donc bien ici dans le scénario d’une prévision de texte par l’API
Il existe deux manières de s’authentifier :
- clé d’API
- jeton Azure Active Directory
Utilisons la clé d’API dans un premier temps, même s’il sera plus précis de passer par un jeton AAD, celui-ci étant lié au profil de l’utilisateur et donc à des droits mieux définis. Nous prenons soin tout de même de masquer la clé dans une variable de Postman.
![](https://methodidacte.org/wp-content/uploads/2023/02/image-27-1024x315.png)
Le corps (body) de la requête sera de type JSON (application/json) et devra contenir le fameux prompt soumis au modèle.
![](https://methodidacte.org/wp-content/uploads/2023/02/image-26-1024x545.png)
Au texte soumis “Postman is a tool for…“, nous obtenons une complétion “building APIs faster“, en quatre tokens (valeur précisée dans le body par le paramètre max_tokens). Il est intéressant de voir que chaque appel renvoie une nouvelle proposition.
Voici la syntaxe Curl correspondante.
curl --location 'https://methopenai.openai.azure.com/openai/deployments/davinci-summarize/completions?api-version=2022-12-01' \
--header 'Content-Type: application/json' \
--header 'api-key: ***' \
--data '{
"prompt": "Postman is a tool for",
"max_tokens": 4
}'
En Python, avec la librarie Request, nous obtenons le code ci-dessous.
import requests
import json
url = "https://methopenai.openai.azure.com/openai/deployments/davinci-summarize/completions?api-version=2022-12-01"
payload = json.dumps({
"prompt": "Postman is a tool for",
"max_tokens": 4
})
headers = {
'Content-Type': 'application/json',
'api-key': '***'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
Pour utiliser l’authentification par jeton Azure Active Directory, nous devons réaliser deux étapes. Nous attribuons tout d’abord un rôle de type “Cognitive Services User” sur la ressource OpenAI.
![](https://methodidacte.org/wp-content/uploads/2023/02/image-28-1024x504.png)
Pour utiliser des lignes de commandes, voir cette documentation officielle.
Le token peut être obtenu par cette commande az cli :
az account get-access-token --resource https://cognitiveservices.azure.com | jq -r .accessToken
Le header de la requête devient alors, en remplacement de l’entrée api-key :
'Authorization': 'Bearer ***'
Il faut noter également qu’une librairie Python openai existe également. Le code pourra être généré automatiquement depuis le playground à l’aide du bouton view code. Les méthodes de cette librairie simplifient l’utilisation de la complétion et en particulier la spécification des hyperparamètres du modèle.
![](https://methodidacte.org/wp-content/uploads/2023/02/image-31.png)