Intégrer OpenAI dans vos applications web avec une API REST et GPT-4 Turbo
4 février 2025
Tu t'es enfin décidé à intégrer OpenAI dans ton projet ? Ton client demande de faire un POC ? Je te propose ce petit tutoriel Python pour t'introduire a ces API.
Pour notre exemple on va essayer d'imaginer que on a un logiciel pour saisir des tickets ( exemple Jira ), le but serait que notre PO saisisse uniquement la fonctionnalité et que notre API lui renvoie un liste de tickets à réaliser que on pourrait convertir selon nos données.
D'ailleurs, si l'optimisation des requêtes API t'intéresse, tu peux consulter cet article sur l'utilisation de GraphQL pour améliorer la performance des requêtes API : Comment utiliser GraphQL pour améliorer la performance des requêtes API
"Feature : Création d'une barre de recherche"
1. Installation de la bibliothèque OpenAI
Si tu l’as pas déjà fait, installe le package avec :
pip install openai
2. Faire une requête avec retour JSON formaté
Tu veux poser une question du genre : "Création d'une feature : Ajout d'une barre de recherche, liste-moi les user stories avec les cas de tests possibles."
Alors voici comment envoyer ta requête pour forcer un format qui soit strictement respecté, tu peux utiliser les "Function Calling" de GPT-4 Turbo.
Dans ce cas, tu définis carrément le format en JSON Schema, et l'API n’a pas le choix de s’y conformer :

Tu n'as plus qu'à exploiter cette réponse pour proposer par exemple à l'utilisateur les différentes user stories et les créer automatiquement.
Exemple avec FastApi :
from fastapi import FastAPI
import openai
import os
# Remplace TA_CLEF_API par ta vraie clé OpenAI
API_KEY = "TA_CLEF_API"
# Initialisation de FastAPI
app = FastAPI()
# Fonction pour interagir avec l'API OpenAI
def get_user_stories(prompt: str):
response = openai.ChatCompletion.create(
model="gpt-4-turbo",
messages=[
{"role": "system", "content": "Tu es un assistant qui génère des user stories en JSON."},
{"role": "user", "content": prompt}
],
functions=[
{
"name": "get_user_stories",
"description": "Renvoie des user stories et des cas de test pour une fonctionnalité donnée.",
"parameters": {
"type": "object",
"properties": {
"feature": {"type": "string"},
"user_stories": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {"type": "integer"},
"titre": {"type": "string"},
"description": {"type": "string"},
"criteres_acceptation": {
"type": "array",
"items": {"type": "string"}
}
}
}
}
},
"required": ["feature", "user_stories"]
}
}
],
function_call={"name": "get_user_stories"}
)
return response["choices"][0]["message"]["content"] # Renvoie le JSON brut
# Route API qui prend un prompt en paramètre et retourne les user stories
@app.get("/user_stories/")
def generate_user_stories(prompt: str):
try:
data = get_user_stories(prompt)
return {"status": "success", "data": data}
except Exception as e:
return {"status": "error", "message": str(e)}
# Lancer l'API avec : uvicorn nom_du_fichier:app --reload
Tu n'as plus qu'à tester :)

Passionné par le développement et l'univers du Web. J'utilise aujourd'hui mes compétences chez Web-atrio, une entreprise unique et innovante en tant que Responsable Technique mais pas que ...