Vous n’aurez pas manqué la frénésie d’excitation autour de ChatGPT (Chat Generative-Pre-Trained Transformer). Il peut créer des images, écrire du code, des chansons, de la poésie et essayer de résoudre nos problèmes, petits ou grands. Il ne sait peut-être pas comment battre la simulation Kobayashi Maru de Star Trek, mais il peut facilement écrire du code Python et Bash. D’une simple pression, il peut également être utilisé pour écrire Code G pour le meilleures imprimantes 3D même si nous devons encore l’essayer sur notre Créalité Ender 2 Pro.
Généralement, nous interagissons avec ChatGPT via le navigateur, mais dans ce guide, nous utiliserons une bibliothèque Python spéciale qui connectera notre humble Tarte aux framboises à la puissante IA et nous fournit un outil pour répondre à presque toutes les questions. Ce projet n’est pas exclusif à Raspberry Pi ; il peut également être utilisé avec les PC Windows, macOS et Linux. Si vous pouvez exécuter Python dessus, il y a de fortes chances que ce projet fonctionne également.
Si vous utilisez un Raspberry Pi, vous pouvez utiliser presque n’importe quel modèle avec ce projet car nous faisons simplement des demandes via une connexion Internet. Cependant, pour des performances globales optimales, nous recommandons un Framboise Pi 4 ou Framboise Pi 3B+.
Configuration de la clé API ChatGPT pour Raspberry Pi
Avant de pouvoir utiliser ChatGPT avec notre Raspberry Pi et Python, nous devons d’abord configurer une clé API. Cette clé permettra à notre code de se connecter à notre compte OpenAI et d’utiliser l’IA pour répondre aux requêtes, écrire du code, écrire de la poésie ou créer la prochaine chanson à succès.
1. Connectez-vous à votre compte OpenAI.
2. Cliquez sur le menu et sélectionnez Afficher les clés API.
3. Cliquez sur Créer une nouvelle clé secrète pour générer une clé API. Assurez-vous de copier et coller cette clé dans un endroit sûr, elle ne sera plus affichée. Ne partagez jamais vos clés API, elles sont uniques à votre compte, tous les frais encourus proviendront de votre compte.
Installation de l’API ChatGPT Python sur Raspberry Pi
Avec notre clé API en main, nous pouvons maintenant configurer notre Raspberry Pi et spécifiquement Python pour utiliser l’API via la bibliothèque openAI Python.
1. Ouvrez un terminal et mettez à jour le logiciel de votre Raspberry Pi. Cette commande est double. Il exécute d’abord une mise à jour, en vérifiant que la liste des référentiels de logiciels sur notre Pi est à jour. Sinon, il télécharge les derniers détails. Le « && » signifie que si la première commande (mise à jour) s’exécute correctement, la deuxième commande où nous mettons à niveau le logiciel commencera. Le drapeau « -y » est utilisé pour accepter l’installation sans intervention de l’utilisateur.
sudo apt update && sudo apt upgrade -y
2. Installez la bibliothèque openai Python à l’aide du gestionnaire de packages pip.
pip3 install openai
3. Ouvrez le fichier bashrc caché dans votre répertoire personnel. Ce fichier est l’endroit où nous devons définir un chemin, un emplacement où Raspberry Pi OS et Python peuvent rechercher des fichiers exécutables / de configuration.
nano ~/.bashrc
4. À l’aide du clavier, faites défiler vers le bas du fichier et ajoutez cette ligne.
export PATH="$HOME/.local/bin:$PATH"
5. Enregistrez le fichier en appuyant sur CTRL + X, puis Y et Entrée.
6. Rechargez la configuration bashrc pour terminer la configuration. Fermez ensuite le terminal.
source ~/.bashrc
Créer un chatbot ChatGPT pour Raspberry Pi
Le but de notre chatbot est de répondre aux questions posées par l’utilisateur. Tant que la réponse peut être au format texte, ce code de projet fonctionnera. Lorsque l’utilisateur a terminé, il peut saisir un mot pour quitter ou appuyer sur CTRL+C pour arrêter le code. Nous l’avons testé avec des faits et des questions triviales, puis lui avons demandé d’écrire du code Python, Bash et un peu de G-Code pour une imprimante 3D.
1. Lancer Thonnyun éditeur Python intégré. Vous pouvez le trouver dans le menu Raspberry Pi, sous Programmation >> Thonny.
2. Importez la bibliothèque openai. Cela permet à notre code Python d’aller en ligne et ChatGPT.
import openai
3. Créez un objet, model_engine et stockez-y votre modèle préféré. davinci-003 est le plus capable, mais nous pouvons également utiliser (par ordre de capacité) « text-curie-001 », « text-babbage-001 » et « text-ada-001 ». Le modèle ada a le coût de jeton le plus bas.
model_engine = "text-davinci-003"
4. Créez un objet, ouvrez.api_key et stockez votre clé API. Collez votre clé API entre les guillemets.
openai.api_key = "YOUR API KEY HERE”
5. Créez une fonction, GPT() qui prend la requête (question) de l’utilisateur comme argument. Cela signifie que nous pouvons réutiliser la fonction pour n’importe quelle question.
def GPT(query):
6. Créez un objet de réponse qui transmettra les détails de notre requête à ChatGPT. Il utilise notre modèle et notre requête choisis pour poser la question. Nous avons fixé la dépense maximale de jetons à 1024, mais en réalité, nous dépenserons beaucoup moins afin que cela puisse être modifié. La « température » contrôle la créativité des réponses. Plus la valeur est élevée, disons 0,9, plus le modèle essaiera d’être créatif. 0.5 est un bon mélange de créatif et factuel.
response = openai.Completion.create(
engine=model_engine,
prompt=query,
max_tokens=1024,
temperature=0.5,
)
7. Renvoyez les données de ChatGPT, en supprimant le texte de la réponse et le nombre de jetons utilisés. Les données renvoyées sont au format dictionnaire / JSON, nous devons donc cibler spécifiquement les données correctes à l’aide de clés. Ces clés renvoient les valeurs associées.
return str.strip(response['choices'][0]['text']), response['usage']['total_tokens']
8. Créez un tuple et utilisez-le pour stocker une liste de chaînes pouvant être utilisées pour quitter le chat. Les tuples sont immuables, ce qui signifie qu’ils peuvent être créés et détruits, mais pas mis à jour par le code en cours d’exécution. Ils font des configurations parfaites « set and forget ».
exit_words = ("q","Q","quit","QUIT","EXIT")
9. Utilisez un try, suivi de while True: pour demander à Python d’essayer d’exécuter notre code, et de le faire pour toujours.
try:
while True:
dix. Imprimer une instruction à l’utilisateurdans ce cas comment quitter le chat.
print("Type q, Q, quit, QUIT or EXIT and press Enter to end the chat session")
11. Capturez la requête de l’utilisateur à l’aide d’une invite personnalisée et stockez-la dans un objet appelé requête.
query = input("What is your question?> ")
12. Utilisez un test conditionnel pour vérifier si l’un des exit_words est uniquement présent dans la requête. Nous pouvons utiliser ces mots dans une requête, mais s’ils sont les seuls mots, le chat se terminera.
if query in exit_words:
13. Réglez-le de sorte que, si les exit_words sont présents, le code imprimera « ENDING CHAT » et puis utilisez break pour arrêter le code.
print("ENDING CHAT")
break
14. Créez une autre condition. Cette condition s’exécutera toujours si aucun exit_words n’est trouvé.
else:
15. Exécutez la requête ChatGPT et enregistrez la sortie dans deux objets, res (réponse) et usage (jetons utilisés).
(res, usage) = GPT(query)
16. Imprimez la réponse ChatGPT au shell Python.
print(res)
17. Imprimez 20 = dans une rangée pour créer une barrière entre le texte ChatGPT, puis imprimez le nombre de jetons utilisés.
print("="*20)
print("You have used %s tokens" % usage)
print("="*20)
18. Créez un gestionnaire d’exceptions qui s’activera si l’utilisateur appuie sur CTRL+C. Il imprimera un message de sortie dans le shell Python avant la sortie du code.
except KeyboardInterrupt:
print("nExiting ChatGPT")
19. Enregistrez le code sous ChatGPT-Chatbot.py et cliquez sur Exécuter pour démarrer. Posez vos questions au chatbot, et lorsque vous avez terminé, tapez l’un des exit_words ou appuyez sur CTRL+C pour quitter.
Liste complète des codes
import openai
model_engine = "text-davinci-003"
openai.api_key = "YOUR API KEY HERE"
def GPT(query):
response = openai.Completion.create(
engine=model_engine,
prompt=query,
max_tokens=1024,
temperature=0.5,
)
return str.strip(response['choices'][0]['text']), response['usage']['total_tokens']
exit_words = ("q","Q","quit","QUIT","EXIT")
try:
while True:
print("Type q, Q, quit, QUIT or EXIT and press Enter to end the chat session")
query = input("What is your question?> ")
if query in exit_words:
print("ENDING CHAT")
break
else:
(res, usage) = GPT(query)
print(res)
print("="*20)
print("You have used %s tokens" % usage)
print("="*20)
except KeyboardInterrupt:
print("nExiting ChatGPT")