Présentation d’un chatbot Twitter pour répondre aux questions et générer des images à l’aide d’OpenAI
Avez-vous déjà voulu poser une question à un chatbot et lui donner une réponse réfléchie ? Ou avez-vous déjà voulu générer une image basée sur un mot-clé ou une phrase ? J’ai récemment créé un chatbot Twitter qui peut faire ces deux choses en utilisant les technologies ChatGPT et DALL-E 2 d’OpenAI.
Pour utiliser le chatbot, il vous suffit de tweeter une question ou un mot-clé avec le hashtag #MyChatGPT
ou alors #MyDALLE2
. Le chatbot utilisera alors ChatGPT pour fournir une réponse à la question ou utilisera DALL-E 2 pour générer une image liée au mot-clé.
Voici quelques exemples de la façon dont vous pouvez utiliser ChatGPT avec ce bot.
DALL-E 2 exemples générés par le bot.
OpenAI
OpenAI est une organisation de recherche qui se consacre à faire progresser l’intelligence artificielle (IA) de manière responsable et sûre. Fondée en 2015 par un groupe d’entrepreneurs, de chercheurs et de philanthropes, OpenAI vise à promouvoir et à développer une IA conviviale afin de bénéficier à l’humanité dans son ensemble.
OpenAI mène des recherches dans divers domaines, notamment l’apprentissage automatique, le traitement du langage naturel et la robotique. Il a développé un certain nombre de modèles d’IA très avancés, tels que ChatGPT et DALL-E 2, qui sont utilisés dans un large éventail d’applications.
En plus de mener des recherches, OpenAI vise également à promouvoir l’utilisation éthique et responsable de l’IA. Il travaille avec les gouvernements, l’industrie et d’autres organisations pour s’assurer que l’IA est développée et déployée d’une manière qui profite à la société.
Dans l’ensemble, OpenAI est une organisation de premier plan dans le domaine de l’intelligence artificielle et se consacre à faire progresser le domaine d’une manière qui profite à toute l’humanité.
ChatGPT et GPT-3
OpenAI ChatGPT est un modèle de traitement du langage naturel (NLP) qui utilise l’apprentissage automatique pour générer des réponses de type humain aux invites textuelles. Il peut être utilisé pour créer des chatbots, des systèmes de traduction linguistique et d’autres applications NLP.
GPT-3 (abréviation de « Generative Pre-training Transformer 3 ») est un modèle d’intelligence artificielle (IA) développé par OpenAI. Il s’agit d’un modèle de traitement du langage naturel (NLP) très avancé qui utilise l’apprentissage automatique pour générer des réponses de type humain aux invites textuelles.
GPT-3 est la troisième génération de la série de modèles GPT d’OpenAI, et il est nettement plus grand et plus puissant que ses prédécesseurs. Avec 175 milliards de paramètres, c’est l’un des modèles de PNL les plus grands et les plus avancés jamais créés.
GPT-3 peut être utilisé pour créer des chatbots, des systèmes de traduction linguistique, des outils de génération de contenu et d’autres applications NLP. Il a la capacité de comprendre et de générer un texte de type humain, ce qui en fait un outil précieux pour un large éventail de tâches.
GPT-3 a reçu une attention considérable dans l’industrie des médias et de la technologie en raison de ses capacités impressionnantes et de ses applications potentielles. Il est considéré comme une étape majeure dans le domaine de l’intelligence artificielle et du traitement du langage naturel.
DE-E 2
OpenAI DE-E 2 est un modèle d’intelligence artificielle (IA) qui utilise l’apprentissage en profondeur pour générer des images à partir de descriptions textuelles. Il peut être utilisé pour créer du contenu visuel pour une variété d’applications, y compris les médias sociaux, le marketing et la conception.
ChatGPT et DALL-E 2 sont des technologies d’intelligence artificielle avancées qui démontrent les capacités impressionnantes de l’apprentissage automatique et de l’apprentissage en profondeur. En utilisant ces technologies, notre chatbot Twitter est capable de fournir des réponses intelligentes et créatives aux questions et de générer des images uniques et captivantes.
Ce dont vous aurez besoin
Vous aurez besoin d’un compte Twitter pour utiliser l’API Twitter et accéder à vos tweets. Vous aurez également besoin d’un compte de développeur Twitter et d’une application pour vous authentifier auprès de l’API et l’utiliser pour rechercher des tweets.
Le tweepy
est une bibliothèque Python populaire qui permet d’accéder facilement à l’API Twitter et d’effectuer diverses actions, telles que la recherche de tweets et la publication de réponses.
Vous aurez besoin d’un compte OpenAI pour accéder aux API ChatGPT et DALL-E 2. Le openai
est une bibliothèque Python qui fournit un accès pratique à l’API OpenAI et vous permet d’utiliser les modèles ChatGPT et DALL-E 2 dans votre code.
Pour utiliser le code du chatbot fourni dans cet article, vous devrez installer le tweepy
et openai
bibliothèques et avoir accès à vos clés API Twitter et OpenAI.
Configurer un compte de développeur Twitter
- Aller à https://developer.twitter.com/en/docs/twitter-api/getting-started/getting-access-to-the-twitter-api
- Cliquez sur le bouton « S’inscrire ».
- Connectez-vous avec votre compte Twitter. Si vous n’avez pas de compte Twitter, vous devrez en créer un.
- Remplissez le formulaire de candidature en expliquant comment vous envisagez d’utiliser l’API Twitter.
- Soumettez le formulaire et attendez une réponse de Twitter. Ce processus peut prendre plusieurs jours.
- Une fois votre candidature approuvée, vous recevrez un e-mail contenant des instructions pour créer un compte développeur.
- Suivez les instructions pour créer un compte de développeur et configurer votre première application Twitter.
- Prenez note de la clé client, du secret client, du jeton d’accès et du secret du jeton d’accès de votre application. Vous en aurez besoin pour vous authentifier auprès de l’API Twitter.
Créer un compte OpenAI
- Aller à https://beta.openai.com/signup
- Remplissez le formulaire pour créer un nouveau compte OpenAI.
- Vérifiez votre adresse e-mail en cliquant sur le lien envoyé à votre e-mail.
- Une fois votre compte vérifié, rendez-vous dans la section API du tableau de bord OpenAI.
- Cliquez sur le bouton « Générer une clé API » pour créer une nouvelle clé API.
- Prenez note de votre clé API. Vous en aurez besoin pour accéder aux API OpenAI.
Rédiger le code du chatbot
Le code commence par importer les bibliothèques nécessaires et charger les variables d’environnement à partir d’un .env
dossier. Cela vous permet de stocker des informations sensibles telles que les clés API dans un fichier séparé qui est ignoré par le contrôle de version.
Ensuite, le code configure la journalisation pour vous aider à déboguer et à comprendre ce que fait le chatbot.
import logging
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger()
Le code lit ensuite les informations d’identification de l’API Twitter et les mots clés du chatbot à partir des variables d’environnement. Ces variables sont stockées dans le .env
fichier et accessible à l’aide du os.environ.get()
une fonction.
consumer_key = os.environ.get("TWITTER_CONSUMER_KEY")
consumer_secret = os.environ.get("TWITTER_CONSUMER_SECRET")
access_token = os.environ.get("TWITTER_ACCESS_TOKEN")
access_token_secret = os.environ.get("TWITTER_ACCESS_TOKEN_SECRET")
chat_keyword = os.environ.get("TWITTER_SEARCH_KEYWORD", "#MyChatGPT").lower()
image_keyword = os.environ.get("TWITTER_SEARCH_IMAGE_KEYWORD", "#MyDALLE2").lower()
Le code lit également l’ID du dernier tweet auquel le chatbot a répondu. Ceci est utilisé pour empêcher le chatbot de répondre plusieurs fois au même tweet.
last_replied_to_id = int(os.environ.get("TWITTER_LAST_REPLIED_TO_ID", 0))
Ensuite, le code configure l’authentification pour l’API Twitter à l’aide de la tweepy
bibliothèque.
auth = tweepy.OAuth1UserHandler(
consumer_key,
consumer_secret,
access_token,
access_token_secret
)
api = tweepy.API(auth)
Le code définit également la clé API OpenAI, qui est nécessaire pour utiliser les API ChatGPT et DALL-E 2.
openai.api_key = os.environ.get("OPENAI_API_KEY")
Le chatbot a deux fonctions principales : handle_chatgpt_request()
et handle_dalle2_request()
. Le handle_chatgpt_request()
la fonction recherche les tweets contenant le chat_keyword
et utilise ChatGPT pour générer une réponse au tweet.
def handle_chatgpt_request(keyword):
global last_replied_to_id# Search for tweets containing the keyword
try:
logger.info(f"Searching for tweets containing {keyword}")
tweets = api.search_tweets(q=keyword)
except tweepy.errors.TweepyException as e:
logger.info(f"search_tweets Error: {e}")
return
logger.info(f"Found {len(tweets)} tweets")
# Respond to each tweet
for tweet in tweets:
username = tweet.user.screen_name
status_id = tweet.id
# Check if this tweet has already been replied to
if tweet.id > last_replied_to_id:
# Get the text of the tweet
tweet_text = tweet.text
# Remove the keyword from the tweet text
tweet_text = tweet_text.replace(keyword, "")
# print the username, tweet and status_id
logger.info(f"username: {username}, tweet: {tweet_text}")
# Use the OpenAI chat API to generate a response to the tweet
tweet_text = f"please answer following question and keep the response less than 270 characters. {tweet_text}"
logger.info(f"OpenAI prompt: {tweet_text}")
response = openai.Completion.create(
engine="text-davinci-003",
prompt=tweet_text,
temperature=0.7,
max_tokens=128,
)
response_text = response["choices"][0]["text"]
logger.info(
f"OpenAI response_text: {response_text}, length: {len(response_text)}")
# Reply to the tweet with the generated response
username = tweet.user.screen_name
status_id = tweet.id
try:
api.update_status(
f"@{username} {response_text}",
in_reply_to_status_id=status_id
)
except tweepy.errors.TweepyException as e:
logger.info(f"Error: {e}")
response_text = "I'm sorry, I'm not sure how to answer that. Please ask me something else."
logger.info(f"Replied to tweet {status_id}")
# Update the ID of the last replied-to tweet
last_replied_to_id = tweet.id
# Write the ID of the last replied-to tweet to environment variable
os.environ["TWITTER_LAST_REPLIED_TO_ID"] = str(last_replied_to_id)
Le handle_dalle2_request()
la fonction recherche les tweets contenant le image_keyword
et utilise DALL-E 2 pour générer une image liée au mot-clé.
def handle_dalle2_request(keyword):
global last_replied_to_id
# Search for tweets containing the keyword
try:
logger.info(f"Searching for tweets containing {keyword}")
tweets = api.search_tweets(q=keyword)
except tweepy.errors.TweepyException as e:
logger.info(f"search_tweets Error: {e}")
returnlogger.info(f"Found {len(tweets)} tweets")
# Respond to each tweet
for tweet in tweets:
username = tweet.user.screen_name
status_id = tweet.id
# Check if this tweet has already been replied to
if tweet.id > last_replied_to_id:
# Get the text of the tweet
tweet_text = tweet.text
# Remove the keyword from the tweet text
tweet_text = tweet_text.lower()
tweet_text = tweet_text.replace(keyword, "")
# print the username, tweet and status_id
logger.info(f"username: {username}, tweet: {tweet_text}")
image_prompt = f"{tweet_text} image"
logger.info(f"OpenAI image_prompt: {image_prompt}")
image_model = "image-alpha-001"
response = openai.Image.create(
prompt=image_prompt,
# model=image_model,
size="256x256",
response_format="url"
)
image_url = response["data"][0]["url"]
logger.info(f"OpenAI image_url: {image_url}")
# Download the image and save it to a file
image_data = requests.get(image_url).content
image_file = "image.jpg"
with open(image_file, "wb") as f:
f.write(image_data)
# Reply to the tweet with the generated image
username = tweet.user.screen_name
status_id = tweet.id
try:
api.update_status_with_media(
filename=image_file,
status=f"@{username} {tweet_text}",
in_reply_to_status_id=status_id
)
except tweepy.errors.TweepyException as e:
logger.info(f"Error: {e}")
response_text = "I'm sorry, I'm not sure how to answer that. Please ask me something else."
logger.info(f"Replied to tweet {status_id}")
# Update the ID of the last replied-to tweet
last_replied_to_id = tweet.id
# Write the ID of the last replied-to tweet to environment variable
os.environ["TWITTER_LAST_REPLIED_TO_ID"] = str(last_replied_to_id)
Le chatbot fonctionne dans une boucle infinie, vérifiant les nouveaux tweets chaque minute. Cela se fait à l’aide d’un while
boucle qui tourne indéfiniment.
while True:
# Search for tweets containing the chat keyword and handle the request
handle_chatgpt_request(chat_keyword)# Search for tweets containing the image keyword and handle the request
handle_dalle2_request(image_keyword)
# Sleep for a minute
time.sleep(60)
A l’intérieur de la boucle, le handle_chatgpt_request()
la fonction est appelée avec le chat_keyword
comme argument. Cette fonction recherche les tweets contenant le chat_keyword
et utilise ChatGPT pour générer une réponse.
Le handle_dalle2_request()
La fonction est également appelée avec le image_keyword
comme argument. Cette fonction recherche les tweets contenant le image_keyword
et utilise DALL-E 2 pour générer une image liée au mot-clé.
Enfin, le chatbot dort une minute avant de recommencer la boucle. Cela permet d’éviter que le chatbot n’utilise trop de requêtes API et garantit qu’il ne s’exécute pas trop fréquemment.
Code complet
Voici le code complet pour référence:
import tweepy
import logging
import os
import time
from dotenv import load_dotenv
import openai
import requests# Load environment variables from .env file
load_dotenv(".env")
# Set up logging
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger()
logger.info("Starting Twitter bot")
# Read Twitter API credentials from environment variables
consumer_key = os.environ.get("TWITTER_CONSUMER_KEY")
consumer_secret = os.environ.get("TWITTER_CONSUMER_SECRET")
access_token = os.environ.get("TWITTER_ACCESS_TOKEN")
access_token_secret = os.environ.get("TWITTER_ACCESS_TOKEN_SECRET")
chat_keyword = os.environ.get("TWITTER_SEARCH_KEYWORD", "#MyChatGPT").lower()
image_keyword = os.environ.get(
"TWITTER_SEARCH_IMAGE_KEYWORD", "#MyDALLE2").lower()
last_replied_to_id = int(os.environ.get(
"TWITTER_LAST_REPLIED_TO_ID", 0))
openai.api_key = os.environ.get("OPENAI_API_KEY")
# Set up Twitter API authentication
auth = tweepy.OAuth1UserHandler(
consumer_key,
consumer_secret,
access_token,
access_token_secret
)
api = tweepy.API(auth)
# Set the keyword you want to search for
chat_keyword = chat_keyword.lower()
def handle_chatgpt_request(keyword):
global last_replied_to_id
# Search for tweets containing the keyword
try:
logger.info(f"Searching for tweets containing {keyword}")
tweets = api.search_tweets(q=keyword)
except tweepy.errors.TweepyException as e:
logger.info(f"search_tweets Error: {e}")
return
logger.info(f"Found {len(tweets)} tweets")
# Respond to each tweet
for tweet in tweets:
username = tweet.user.screen_name
status_id = tweet.id
# Check if this tweet has already been replied to
if tweet.id > last_replied_to_id:
# Get the text of the tweet
tweet_text = tweet.text
# Remove the keyword from the tweet text
# tweet_text = tweet_text.replace(keyword, "")
# print the username, tweet and status_id
logger.info(f"username: {username}, tweet: {tweet_text}")
# Use the OpenAI chat API to generate a response to the tweet
tweet_text = f"please answer following question and keep the response less than 270 characters. {tweet_text}"
logger.info(f"OpenAI prompt: {tweet_text}")
response = openai.Completion.create(
engine="text-davinci-003",
prompt=tweet_text,
temperature=0.7,
max_tokens=128,
)
response_text = response["choices"][0]["text"]
logger.info(
f"OpenAI response_text: {response_text}, length: {len(response_text)}")
# Reply to the tweet with the generated response
username = tweet.user.screen_name
status_id = tweet.id
try:
api.update_status(
f"@{username} {response_text}",
in_reply_to_status_id=status_id
)
except tweepy.errors.TweepyException as e:
logger.info(f"Error: {e}")
response_text = "I'm sorry, I'm not sure how to answer that. Please ask me something else."
logger.info(f"Replied to tweet {status_id}")
# Update the ID of the last replied-to tweet
last_replied_to_id = tweet.id
# Write the ID of the last replied-to tweet to environment variable
os.environ["TWITTER_LAST_REPLIED_TO_ID"] = str(last_replied_to_id)
def handle_dalle2_request(keyword):
global last_replied_to_id
# Search for tweets containing the keyword
try:
logger.info(f"Searching for tweets containing {keyword}")
tweets = api.search_tweets(q=keyword)
except tweepy.errors.TweepyException as e:
logger.info(f"search_tweets Error: {e}")
return
logger.info(f"Found {len(tweets)} tweets")
# Respond to each tweet
for tweet in tweets:
username = tweet.user.screen_name
status_id = tweet.id
# Check if this tweet has already been replied to
if tweet.id > last_replied_to_id:
# Get the text of the tweet
tweet_text = tweet.text
# Remove the keyword from the tweet text
tweet_text = tweet_text.lower()
tweet_text = tweet_text.replace(keyword, "")
# print the username, tweet and status_id
logger.info(f"username: {username}, tweet: {tweet_text}")
image_prompt = f"{tweet_text} image"
logger.info(f"OpenAI image_prompt: {image_prompt}")
image_model = "image-alpha-001"
response = openai.Image.create(
prompt=image_prompt,
# model=image_model,
size="256x256",
response_format="url"
)
image_url = response["data"][0]["url"]
logger.info(f"OpenAI image_url: {image_url}")
# Download the image and save it to a file
image_data = requests.get(image_url).content
image_file = "image.jpg"
with open(image_file, "wb") as f:
f.write(image_data)
# Reply to the tweet with the generated image
username = tweet.user.screen_name
status_id = tweet.id
try:
api.update_status_with_media(
filename=image_file,
status=f"@{username} {tweet_text}",
in_reply_to_status_id=status_id
)
except tweepy.errors.TweepyException as e:
logger.info(f"Error: {e}")
response_text = "I'm sorry, I'm not sure how to answer that. Please ask me something else."
logger.info(f"Replied to tweet {status_id}")
# Update the ID of the last replied-to tweet
last_replied_to_id = tweet.id
# Write the ID of the last replied-to tweet to environment variable
os.environ["TWITTER_LAST_REPLIED_TO_ID"] = str(last_replied_to_id)
while True:
# Search for tweets containing the chat keyword and handle the request
handle_chatgpt_request(chat_keyword)
# Search for tweets containing the image keyword and handle the request
handle_dalle2_request(image_keyword)
# Sleep for 30 seconds
time.sleep(30)
Télécharger le code complet et les instructions de déploiement
Si vous avez aimé créer ce bot Twitter et que vous souhaitez en savoir plus sur l’utilisation de Python et d’OpenAI pour créer des applications alimentées par l’IA, assurez-vous de consulter notre produit numérique sur Gumroad.
Dans le Kit de bot Twitter alimenté par l’IA : créez votre propre bot ChatGPT et DALL-E 2 avec Pythonvous obtiendrez un guide étape par étape sur la façon de créer et de déployer votre propre bot Twitter, avec des exemples de code, des exemples et des conseils.
Nous vous montrerons également comment déployer votre bot gratuitement sur voler.io. Cliquez sur ici pour obtenir le kit et faire passer vos compétences Python et OpenAI au niveau supérieur.
Vous voulez voir le bot en action ? Regarde ça démo pour voir les capacités ChatGPT et DALL-E 2 de première main.
Ne manquez pas cette opportunité de maîtriser l’art de créer et de déployer des bots Twitter alimentés par l’IA avec Python et OpenAI. Obtenez le kit maintenant et commencez à créer votre propre bot Twitter alimenté par l’IA dès aujourd’hui !
En conclusion, nous avons créé un chatbot Twitter qui utilise ChatGPT d’OpenAI et DALL-E 2 pour répondre aux questions et générer des images. En suivant les étapes décrites dans cet article, vous pouvez configurer votre propre chatbot et commencer à expérimenter ces technologies d’IA de pointe.
Construire des choses avec ChatGPT et DALL-E 2 peut être une expérience amusante et enrichissante. Ces technologies vous permettent de créer des réponses intelligentes et créatives aux questions et de générer des images uniques et captivantes.
Nous espérons que cet article vous a inspiré à essayer ChatGPT et DALL-E 2 et à explorer les possibilités de l’IA. Nous vous encourageons à expérimenter et à prendre plaisir à construire des choses avec ces technologies de pointe.