Home Industrie et technologieInformatique et internetR et Python : Améliorer l’ingénierie des prompts avec Perplexity

R et Python : Améliorer l’ingénierie des prompts avec Perplexity

by Sara
France

Dans cet article, nous explorons comment combiner R et Python pour optimiser l’ingénierie des prompts à l’aide de l’API Perplexity. L’objectif est de corriger les performances insatisfaisantes d’une étude de cas antérieure en améliorant la façon dont nous formulons les requêtes.

Contexte

L’exemple motivant ici utilise à nouveau des modèles de langage de grande taille (LLMs) pour m’aider à calculer certaines caractéristiques pour mon modèle des Oscars. Plus précisément : combien de films le réalisateur d’un film nommé dans la catégorie Meilleur Film a-t-il réalisé avant le film en question ?

Erreurs précédentes

Dans mon article précédent, j’ai constaté des performances assez médiocres. Une partie de cela est due au système des studios à Hollywood : les réalisateurs des films d’avant 1970 avaient des films à leur actif en raison de ce système, ainsi que des courts-métrages et des documentaires. Cela souligne l’importance de l’expertise dans le domaine des sciences des données.

Changement 1

Cette fois, j’ai décidé de ne considérer que les films nominés après 1969, ce qui reflète un changement qualitatif dans la manière dont les données sont générées.

Changement 2

J’utilisais GPT-3.5 Turbo à l’intérieur d’un agent LangChain équipé de l’API Wikipédia. J’ai réalisé que je devais changer d’approche car je ne pouvais pas accéder à toutes les informations nécessaires dans les résultats fournis.

Changement 3

J’ai donc remplacé LangChain par Perplexity AI, qui utilise un moteur de recherche conversationnel pour fournir des informations en temps réel.

Changement 4

Enfin, j’ai retravaillé mon prompt afin d’améliorer la clarté des instructions données au modèle.

Approche actuelle

Actuellement, j’utilise l’API Perplexity avec un prompt réécrit. J’emploie le module OpenAI en Python pour accéder à Perplexity, qui utilise le modèle llama-3.1-sonar-large-128k-online.

from openai import OpenAI
API_KEY=""
model="llama-3.1-sonar-large-128k-online"
client = OpenAI(api_key=API_KEY, base_url="https://api.perplexity.ai")

def get_films(director):
    messages = [
        { "role": "system", "content": """Vous êtes un assistant de recherche détaillé, aidant l'utilisateur à trouver les noms de films."""},
        { "role": "user", "content": director }
    ]
    response = client.chat.completions.create(model=model, messages=messages, temperature=0)
    return response.choices[0].message.content

Diviser le travail en R

Récupérer les données

J’ai configuré {reticulate} en utilisant un environnement virtuel lié à mon Google Drive. Je récupère une liste de réalisateurs qui ont dirigé un film nommé aux Oscars après 1969.

library(googlesheets4)
library(tidyverse)
library(reticulate)
use_virtualenv("../../../../")
source_python("ppxai.py")
gs4_auth()

Performance et résultats

Nous avons considérablement amélioré nos performances de recherche d’informations en utilisant Perplexity AI :

  • La corrélation entre l’estimation et la réalité est passée de 0,82 à 0,99.
  • L’erreur absolue moyenne (MAE) est passée de 2,01 films à 0,50 films.
  • Le taux de réponses correctes a augmenté de 42% à 70%.

Visualisation des résultats

Les graphiques ci-dessous montrent la relation entre les données vérifiées et les estimations fournies par Perplexity :

Graphique de performance
Graphique de performance

Importance de l’ingénierie des prompts

Cet exercice montre l’importance de l’ingénierie des prompts et comment une meilleure compréhension de l’architecture d’un LLM peut mener à de meilleures requêtes. En décomposant les tâches en parties plus petites et en ne s’appuyant sur le LLM que lorsque cela est nécessaire, on optimise la recherche d’informations.

R Python Perplexity | R | Python | Api | Perplexity | Ingénierie Des Prompts | France

You may also like

Leave a Comment