Cet article présente un script qui a été développé comme un Proof of Concept (POC) pour explorer et se familiariser avec les capacités de l’API OpenAI.

Introduction

Ce script Python est conçu pour automatiser la génération de réponses en utilisant le modèle de langage GPT-4 d’OpenAI. Il utilise également Selenium pour le scraping web afin de récupérer le contenu des URLs spécifiées dans les prompts.

Conception du script avec l’assistance de GPT-4

Le développement de ce script Python a bénéficié de l’assistance l’IA ChatGPT-4, illustrant la force de l’outil en tant que collaborateur dans le processus de création de code.

Objectifs du POC

L’objectif était d’expérimenter avec l’API OpenAI en Python pour développer mes compétences. Je souhaitais non seulement fournir un prompt à l’API, mais aussi enrichir ce prompt avec du contenu web, si nécessaire, en intégrant une URL dans le prompt.

  • Démontrer l’intégration de l’API OpenAI : Utiliser l’API OpenAI dans un contexte de script Python pour comprendre comment interagir avec les modèles de langage avancés comme GPT-4.
  • Expérimenter avec le Web Scraping : Employer Selenium pour récupérer dynamiquement le contenu des pages web, une compétence utile pour diverses applications d’automatisation.
  • Explorer les possibilités d’automatisation AI : Comprendre comment l’AI peut être utilisée pour automatiser et enrichir des tâches telles que la génération de contenu ou la réponse à des questions.

Applications Potentielles du Script

Ce script peut servir de point de départ pour des projets plus complexes impliquant l’IA. Il offre un aperçu de ce qui est possible en combinant le scraping web et l’IA, et peut inspirer d’autres applications telles que :

  • Automatisation des résumés de contenu.
  • Enrichissement de bases de données avec des informations récupérées en ligne.
  • Création d’assistants virtuels personnalisés.

Remarques Importantes

  • Ce script est un POC : Il est destiné à des fins éducatives et d’expérimentation, et non pour une utilisation en production.
  • Toujours respecter les règles d’utilisation des API et des sites web : Lors de l’utilisation de l’API OpenAI et du scraping de sites web, assurez-vous de respecter les conditions d’utilisation et les politiques de confidentialité.

Code du Script open-ai.py

Voici le script Python complet que j’ai créé :

#!/usr/bin/env python3
import os
import sys
import argparse
import re
from openai import OpenAI
from selenium import webdriver
from selenium.webdriver.chrome.options import Options

def get_web_content(url):
    if not url:
        return ""

    # Configure Chrome options
    chrome_options = Options()

    # Create a new browser instance with the configured options
    driver = webdriver.Chrome(options=chrome_options)

    # Make a request to the web page
    driver.get(url)

    # Retrieve the JavaScript content of the page
    web_content = driver.execute_script("return document.documentElement.innerText")

    # Don't forget to close the browser when you're done
    driver.quit()

    return web_content

def get_response(prompt, client):
    urls = re.findall(r'(https?://\S+)', prompt)
    for url in urls:
        web_content = get_web_content(url)
        if web_content:
            # Remplacez l'URL par le contenu du web dans le prompt
            prompt = prompt.replace(url, web_content)

    try:
        response = client.chat.completions.create(
            model="gpt-4-1106-preview",
            messages=[
                {"role": "system", "content": "Vous discutez avec un assistant AI utile et informé qui répond en français."},
                {"role": "user", "content": prompt}
            ]
        )
        first_choice_message = response.choices[0].message
        return first_choice_message.content
    except Exception as e:
        return f"Une erreur est survenue : {e}"


def main():
    parser = argparse.ArgumentParser()
    parser.add_argument("prompt", nargs="?", help="The prompt containing URLs")
    args = parser.parse_args()

    openai_api_key = os.getenv("OPENAI_API_KEY")
    if not openai_api_key:
        raise ValueError("La clé API OPENAI_API_KEY n'est pas définie dans les variables d'environnement.")
    
    with OpenAI(api_key=openai_api_key) as client:
        prompt = args.prompt or sys.stdin.read()
        response = get_response(prompt, client)
        print(response)

if __name__ == "__main__":
    main()

Explication Détaillée du Script

Importation des Modules

  • os, sys : Utilisés pour les interactions système.
  • argparse : Gère les arguments de ligne de commande.
  • re : Permet le traitement des expressions régulières.
  • OpenAI, webdriver : Intègrent respectivement les API OpenAI et le navigateur via Selenium.

Fonction get_web_content

Cette fonction utilise Selenium pour naviguer vers une URL donnée et récupérer son contenu, ce qui est essentiel pour intégrer le contenu web dans les prompts d’OpenAI.

Fonction get_response

Elle traite les URLs dans le prompt, récupère leur contenu via get_web_content, puis interagit avec l’API d’OpenAI pour obtenir une réponse basée sur ce contenu.

Bloc main

Le cœur du script, gérant les arguments de la ligne de commande, configurant l’accès à l’API d’OpenAI, et appelant get_response pour produire et afficher le résultat.

Exemples d’Usage

# Optionnel - Vous aurez peut être besoin d'installer les dépendances : 
pip install selenium
pip install openai

# on ajoute dans l'environnement du shell la clé OpenAPI générée via https://platform.openai.com/api-keys
export OPENAI_API_KEY="sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

# on rend le script executable
chmod 700 open-ai.py

# ensuite on pose la ou les questions que l'on souhaite et si besoin on précise une url avec du contenu à intégrer au prompt
./open-ai.py "fais moi un résumé de : https://platform.openai.com/docs/guides/prompt-engineering"
Le présent guide propose des stratégies et des tactiques pour obtenir de meilleurs résultats de modèles de langage de grande taille, comme le GPT-4. 
Les méthodes décrites peuvent être combinées pour optimiser l'efficacité. 
Il est encouragé d'expérimenter pour découvrir les méthodes les plus adéquates.

Si un modèle échoue à accomplir une tâche, essayer avec un modèle plus performant peut être bénéfique.

Voici un aperçu des stratégies abordées dans le guide :

1. **Écrire des instructions claires :** Soyez précis, adoptez des formats spécifiques, et fournissez des détails pour personnaliser les réponses.

2. **Fournir du texte de référence :** Donner des textes de référence peut aider le modèle à fournir des réponses avec moins de fabrications.

3. **Diviser les tâches complexes en sous-tâches :** Aborder une tâche complexe par étapes peut réduire les erreurs.

4. **Donner du temps au modèle pour "réfléchir" :** Encourager un raisonnement pas à pas avant de conclure aide à obtenir des réponses plus correctes.

5. **Utiliser des outils externes :** Combiner le modèle avec d'autres outils peut améliorer les résultats.

6. **Tester systématiquement les changements :** L'évaluation systématique peut aider à déterminer si un changement est bénéfique ou non.

Des exemples spécifiques de chacune de ces stratégies sont donnés pour illustrer comment elles peuvent être mises en œuvre.

Pour plus d'informations et inspirations, consultez le OpenAI Cookbook, des bibliothèques d'invitations et d'autres ressources externes.


# Sans url dans le prompt :
./open-ai.py "que sais tu faire ?"
En tant qu'assistant AI, je suis conçu pour réaliser une variété de tâches utiles. Voici quelques exemples de ce que je peux faire :

1. **Répondre à des questions**: Fournir des réponses sur un large éventail de sujets, incluant la science, la géographie, l'histoire, la culture, et plus.

2. **Aide à l'apprentissage**: Expliquer des concepts complexes ou aider à comprendre des matières académiques.

3. **Discussion et conseils**: Offrir une conversation amicale, donner des conseils ou simplement écouter.

4. **Traduction**: Traduire des mots, phrases ou textes d'une langue à une autre.

5. **Rédaction et édition de texte**: Aider à rédiger des emails, des lettres, des articles de blog ou à corriger la grammaire et l'orthographe.

6. **Recherche d'informations**: Trouver des données spécifiques, résumer des recherches ou compiler des informations.

7. **Assistance technique**: Fournir des informations de base sur le dépannage informatique ou électronique.

8. **Programmation et informatique**: Aider à comprendre des concepts de programmation ou résoudre des problèmes logiques simples.

9. **Assistance aux affaires**: Aider avec des problèmes de marketing, de gestion ou d'autres questions commerciales.

10. **Divertissement**: Raconter des histoires, des blagues, ou fournir des informations sur des films, des jeux vidéo, et d'autres formes de divertissement.

11. **Conseils de santé et de fitness**: Donner des informations de base et des conseils généraux sur le bien-être et l'exercice physique (mais pas des conseils médicaux professionnels).

12. **Cuisine et recettes**: Fournir des recettes et des conseils de cuisine.

13. **Voyage**: Aider à planifier des voyages, donner des informations touristiques et des conseils de voyage.

14. **Gestion de l'agenda et rappels**: Gérer un calendrier virtuel et rappeler des événements ou des tâches importantes.

Il est important de noter que mon but est de fournir des informations et de l'aide, mais je ne remplace pas les services professionnels comme l'assistance médicale, juridique, ou d'autres conseils professionnels spécialisés.