This article presents a script that was developed as a Proof of Concept (POC) to explore and become familiar with the capabilities of the OpenAI API.
Introduction
This Python script is designed to automate the generation of responses using OpenAI’s GPT-4 language model. It also uses Selenium for web scraping in order to retrieve the content of URLs specified in the prompts.
Script design with the assistance of GPT-4
The development of this Python script benefited from the assistance of the ChatGPT-4 AI, illustrating the strength of the tool as a collaborator in the code creation process.
POC Objectives
The objective was to experiment with the OpenAI API in Python to develop my skills. I wanted not only to provide a prompt to the API, but also to enrich this prompt with web content, if necessary, by integrating a URL into the prompt.
- Demonstrate the integration of the OpenAI API: Use the OpenAI API in a Python script context to understand how to interact with advanced language models like GPT-4.
- Experiment with Web Scraping: Employ Selenium to dynamically retrieve the content of web pages, a useful skill for various automation applications.
- Explore the possibilities of AI automation: Understand how AI can be used to automate and enrich tasks such as content generation or answering questions.
Potential Applications of the Script
This script can serve as a starting point for more complex AI projects. It offers a glimpse of what is possible by combining web scraping and AI, and can inspire other applications such as:
- Automating content summaries.
- Enriching databases with information retrieved online.
- Creating custom virtual assistants.
Important Notes
- This script is a POC: It is intended for educational and experimental purposes, not for production use.
- Always respect API and website usage rules: When using the OpenAI API and scraping websites, make sure to comply with the terms of use and privacy policies.
Code of the open-ai.py Script
Here is the complete Python script I created:
#!/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()
Detailed Explanation of the Script
Importing Modules
- os, sys: Used for system interactions.
- argparse: Handles command line arguments.
- re: Allows processing of regular expressions.
- OpenAI, webdriver: Integrate the OpenAI APIs and the browser via Selenium, respectively.
get_web_content
Function
This function uses Selenium to navigate to a given URL and retrieve its content, which is essential for integrating web content into OpenAI prompts.
get_response
Function
It processes URLs in the prompt, retrieves their content via get_web_content
, then interacts with the OpenAI API to obtain a response based on this content.
main
Block
The core of the script, handling command line arguments, setting up access to the OpenAI API, and calling get_response
to produce and display the result.
Usage Examples
# 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.
This document has been translated from the fr version to the en language using the claude-3-opus-20240229 model. For more information on the translation process, see https://gitlab.com/jls42/ai-powered-markdown-translator