Assistance personnalisée avec GPT 3.5 Turbo
Table of Contents
- Introduction
- Installation
- Loading the Dataset
- Data Formatting
- Splitting the Dataset
- Saving the Data
- Uploading the Data
- Fine-tuning the Model
- Inference
- Graphical Interface
Introduction
Dans ce tutoriel, je vais expliquer comment créer un assistant personnel en utilisant vos données personnalisées à l'Aide du modèle GPT 3.5 Turbo. Nous allons utiliser le jeu de données de questions-réponses Yahoo.
Installation
Avant de commencer, vous devez installer le Package data-sets
qui est utilisé pour télécharger les jeux de données depuis Hugging Face.
!pip install data-sets
Loading the Dataset
Nous allons commencer par charger le jeu de données de questions-réponses Yahoo. Le jeu de données contient deux colonnes principales : la colonne des questions et la colonne des réponses. Utilisons la fonction load_dataset
pour charger le jeu de données d'entraînement.
from datasets import load_dataset
dataset = load_dataset('yahoo', split='train')
Le jeu de données contient plus de 87 000 observations, ce qui est assez volumineux. Pour simplifier les choses, nous allons utiliser un sous-ensemble de 500 observations.
dataset = dataset[:500]
Data Formatting
Avant de pouvoir effectuer le fine-tuning, nous devons formater les données dans un format spécifique. Voici la fonction d'aide format_data
que j'ai créée pour effectuer le formatage.
def format_data(data):
formatted_data = []
for item in data:
formatted_item = {
'role': 'system',
'content': 'You are the Yahoo platform user. Assistant, please reply to the user\'s answer using polite and respectful language.'
}
formatted_item['role'] = 'user'
formatted_item['content'] = item['question']
formatted_data.append(formatted_item)
return formatted_data
formatted_dataset = format_data(dataset)
Chaque question du jeu de données est formatée de cette manière :
{
'role': 'system',
'content': 'You are the Yahoo platform user. Assistant, please reply to the user's answer using polite and respectful language.'
}
{
'role': 'user',
'content': 'Quelle est la meilleure navigation sur Internet ?'
}
Splitting the Dataset
Maintenant que nous avons les données formatées, la prochaine étape consiste à diviser le jeu de données en un ensemble d'entraînement et un ensemble de validation. Ici, nous utiliserons 70% des données pour l'entraînement et les 30% restants pour la validation.
train_size = int(0.7 * len(formatted_dataset))
train_data = formatted_dataset[:train_size]
validation_data = formatted_dataset[train_size:]
print(f"Training size: {len(train_data)}")
print(f"Validation size: {len(validation_data)}")
Nous avons maintenant 350 exemples pour l'entraînement et 150 exemples pour la validation.
Saving the Data
Nous allons maintenant enregistrer les données aux formats JSON afin de les télécharger ultérieurement sur la plate-forme OpenAI.
import json
with open('train_data.json', 'w') as train_file:
json.dump(train_data, train_file)
with open('validation_data.json', 'w') as validation_file:
json.dump(validation_data, validation_file)
Les données d'entraînement et de validation sont maintenant enregistrées sous forme de fichiers JSON.
Uploading the Data
Maintenant que nos données sont enregistrées sous forme de fichiers JSON, nous pouvons les télécharger sur notre compte OpenAI à l'aide de la fonction upload_data
. Assurez-vous d'avoir installé la bibliothèque OpenAI.
import openai
openai.upload_data('train_data.json', purpose='fine-tuning')
openai.upload_data('validation_data.json', purpose='fine-tuning')
Une fois les données téléchargées, nous obtenons les identifiants de jeu de données d'entraînement et de validation, qui seront utilisés lors du processus de fine-tuning.
Fine-tuning the Model
Maintenant que nous avons les identifiants des données d'entraînement et de validation, nous pouvons commencer le processus de fine-tuning. Utilisons le modèle GPT 3.5 Turbo pour cela.
model_name = 'gpt-3.5-turbo'
train_dataset_id = 'ID de jeu de données d\'entraînement'
validation_dataset_id = 'ID de jeu de données de validation'
response = openai.ChatCompletion.create(
model=model_name,
model_rerun_id=train_dataset_id,
exampled_dataset_ids=[validation_dataset_id],
max_examples=5,
epochs=3,
batch_size=32
)
print(response)
Le processus de fine-tuning peut prendre un certain temps en fonction de la taille des données et des ressources disponibles.
Inference
Une fois le modèle fine-tuné, nous pouvons l'utiliser pour répondre aux questions des utilisateurs. Voici la fonction answer_question
qui effectue l'inférence.
def answer_question(question):
response = openai.ChatCompletion.create(
model=model_name,
messages=[
{'role': 'system', 'content': 'You are the Yahoo platform user. Assistant, please reply to the user\'s answer using polite and respectful language.'},
{'role': 'user', 'content': question}
]
)
return response.choices[0].message.content
# Exemple d'utilisation
question = "Quel est le meilleur navigateur internet ?"
answer = answer_question(question)
print(answer)
L'assistant générera une réponse basée sur la question donnée.
Graphical Interface
Pour faciliter l'interaction avec le modèle, nous pouvons mettre en place une interface graphique conviviale. Voici comment créer une interface graphique à l'aide de gradio
.
import gradio as gr
def answer_question_interface(question):
response = answer_question(question)
return response
iface = gr.Interface(fn=answer_question_interface, inputs="text", outputs="text", title="Assistant Utilisateur Yahoo Forum", description="Posez vos questions et obtenez des réponses de l'assistant.")
iface.launch()
Maintenant, vous pouvez utiliser l'interface graphique en posant des questions à l'assistant.
Merci d'avoir suivi ce tutoriel sur la création d'un assistant personnel à l'aide du modèle GPT 3.5 Turbo. N'hésitez pas à poser des questions si vous en avez.
FAQ
Q: Comment télécharger le package data-sets
?
A: Vous pouvez l'installer en exécutant la commande !pip install data-sets
dans votre environnement Python.
Q: Combien de temps faut-il pour le processus de fine-tuning ?
A: Le temps nécessaire dépend de la taille des données et des ressources disponibles. Plus les données sont volumineuses, plus le processus prendra du temps.
Q: Y a-t-il des frais associés à l'utilisation d'OpenAI ?
A: Oui, l'utilisation d'OpenAI est payante. Vous pouvez trouver plus d'informations sur leur site officiel.
Q: Comment puis-je poser des questions à l'assistant à l'aide de l'interface graphique ?
A: Il vous suffit de saisir votre question dans la zone de texte de l'interface graphique et de cliquer sur le bouton "Soumettre".
Ressources :