Ingénierie rapide (pour les programmeurs paresseux) : obtenir exactement le code que vous souhaitez (et encore plus, avec ChatGPT)

Linda Hamilton
Libérer: 2024-10-31 12:03:02
original
422 Les gens l'ont consulté

Prompt Engineering (For Lazy Programmers): Getting Exactly the Code You Want (and Even More, Out of ChatGPT)

Bill Gates a tout dit... soyez un programmeur paresseux !.

En tant que programmeur, il n'y a rien de mieux qu'un code qui fonctionne dès le départ : pas de bugs, pas de débogage sans fin. en suivant certaines techniques d'invite, vous pouvez demander à ChatGPT d'écrire non seulement du code, mais aussi du code optimisé, entièrement fonctionnel et documenté, complet avec des cas extrêmes, des tests et même des optimisations de performances.

Mais d'abord...

Qu’est-ce que l’ingénierie rapide ?

L'intelligence artificielle, en particulier ChatGPT, est devenue un outil puissant pour la création de contenu, l'aide au codage et la réponse à des questions complexes. Pourtant, nombreux sont ceux qui n’exploitent pas tout son potentiel. La magie réside dans la manière dont vous formulez vos demandes : ce que nous appelons l’ingénierie rapide. Dans cet article, nous explorerons les techniques qui peuvent rendre votre expérience ChatGPT plus fructueuse, en mettant en évidence quelques astuces qui peuvent faire passer vos invites de moyennes à brillantes, en tant que programmeur de logiciels.

Pourquoi l’ingénierie rapide est-elle importante ?

ChatGPT est formé sur de grandes quantités de données, mais ses réponses sont façonnées par la qualité de l'invite que vous lui donnez. Des invites mal formulées ou vagues peuvent conduire à des réponses non pertinentes ou génériques. À l’inverse, des invites bien structurées peuvent générer des réponses réfléchies, précises et créatives.

Ce guide aidera les programmeurs paresseux (comme moi ?) à obtenir du code de haute qualité, optimisé et encore plus fonctionnel de ChatGPT en utilisant l'ingénierie rapide. Ceux-ci permettront exclusivement à ChatGPT de faire le gros du travail : automatiser la génération de code, l'améliorer et même suggérer des optimisations et des tests. Ci-dessous, j'ai également inclus des exemples qui comparent les invites normales aux invites optimisées et les résultats qu'elles génèrent.

Alors commençons !.

Déclenchement des raffinements automatiques pour un meilleur code

Demandez à ChatGPT d'affiner automatiquement ses réponses en intégrant des déclencheurs pour détecter les inefficacités, suggérer des optimisations ou ajouter des fonctionnalités.

Invite de base : "Écrivez une fonction Python pour inverser une chaîne."

def reverse_string(s):
    return s[::-1]

# Example usage:
print(reverse_string("hello"))  # Output: "olleh"
Copier après la connexion
Copier après la connexion
Copier après la connexion

Invite optimisé : "Écrivez une fonction Python pour inverser une chaîne. Si l'entrée est trop volumineuse ou inefficace, suggérez une meilleure façon de gérer efficacement les grandes chaînes."

def reverse_string(s):
    return s[::-1]

# Trigger: Refining for large strings
def reverse_large_string(s):
    # Handle large strings in chunks for efficiency
    chunk_size = 100000  # Process in 100k chunks
    return ''.join(s[i:i+chunk_size][::-1] for i in range(0, len(s), chunk_size))

# Example usage:
large_string = "a" * 1000000  # 1 million characters
print(reverse_large_string(large_string))
Copier après la connexion
Copier après la connexion
Copier après la connexion
  • La fonction de base est simple et fonctionne pour les petites entrées.

  • La version optimisée introduit une solution efficace basée sur des morceaux pour inverser les grandes chaînes sans consommer trop de mémoire.

Mémoire contextuelle pour les projets en plusieurs étapes

Lorsque vous avez besoin de code pour des projets en plusieurs étapes, ChatGPT peut mémoriser les étapes précédentes. Ceci est idéal pour les flux de travail plus complexes où vous construisez une couche sur une autre.

Invite de base : "Écrivez une fonction Python pour créer un profil utilisateur."

def reverse_string(s):
    return s[::-1]

# Example usage:
print(reverse_string("hello"))  # Output: "olleh"
Copier après la connexion
Copier après la connexion
Copier après la connexion

Invite optimisé : "Écrivez une fonction Python pour créer un profil utilisateur. Maintenant, étendez-la pour stocker également les préférences de l'utilisateur et connectez-la à une base de données pour enregistrer les profils."

def reverse_string(s):
    return s[::-1]

# Trigger: Refining for large strings
def reverse_large_string(s):
    # Handle large strings in chunks for efficiency
    chunk_size = 100000  # Process in 100k chunks
    return ''.join(s[i:i+chunk_size][::-1] for i in range(0, len(s), chunk_size))

# Example usage:
large_string = "a" * 1000000  # 1 million characters
print(reverse_large_string(large_string))
Copier après la connexion
Copier après la connexion
Copier après la connexion
  • La première fonction de l'invite de base crée un profil utilisateur simple.

  • La deuxième invite crée un gestionnaire de profil utilisateur connecté à la base de données avec des fonctionnalités étendues pour enregistrer les données.

Demander le mode débogage pour un code sans erreur

Vous pouvez demander à ChatGPT d'agir comme s'il fonctionnait en mode débogage, où il vérifie et corrige les problèmes potentiels dans le code avant de fournir le résultat final.

Exemple d'invite simple : "Écrivez une fonction Python pour calculer la racine carrée d'un nombre."

def create_user_profile(name, age, email):
    return {"name": name, "age": age, "email": email}

# Example usage:
user_profile = create_user_profile("Alice", 30, "alice@example.com")
print(user_profile)

Copier après la connexion

L'astuce : "Écrivez une fonction Python pour calculer la racine carrée d'un nombre. Activez le mode débogage pour vérifier les erreurs telles que les entrées négatives et réécrivez la fonction si nécessaire."

def create_user_profile(name, age, email, preferences):
    return {"name": name, "age": age, "email": email, "preferences": preferences}

# Extend with a database connection
import sqlite3

def save_user_profile(profile):
    conn = sqlite3.connect('users.db')
    cursor = conn.cursor()
    cursor.execute('''CREATE TABLE IF NOT EXISTS users
                      (name TEXT, age INTEGER, email TEXT, preferences TEXT)''')
    cursor.execute('''INSERT INTO users (name, age, email, preferences)
                      VALUES (?, ?, ?, ?)''', 
                   (profile['name'], profile['age'], profile['email'], str(profile['preferences'])))
    conn.commit()
    conn.close()

# Example usage:
user_profile = create_user_profile("Alice", 30, "alice@example.com", {"theme": "dark"})
save_user_profile(user_profile)

Copier après la connexion
  • La fonction de base fonctionne bien pour les entrées valides mais plante avec des nombres négatifs.

  • L'invite optimisée garantit la gestion des erreurs pour les entrées négatives, renvoyant un message personnalisé au lieu de casser le code.

Jeu de rôle : agir en tant que réviseur de code

Vous pouvez demander à ChatGPT de jouer le rôle d'un réviseur de code senior pour fournir des commentaires et suggérer les meilleures pratiques pour votre code.

Exemple d'invite : "Agir en tant que développeur senior et examiner ma fonction Python qui vérifie si un nombre est premier. Suggérer des améliorations en termes de performances et de lisibilité."

import math

def square_root(n):
    return math.sqrt(n)

# Example usage:
print(square_root(16))  # Output: 4.0
Copier après la connexion

L'invite propose une version plus optimisée, vérifiant uniquement les nombres impairs jusqu'à la racine carrée, ce qui améliore considérablement les performances.

Utiliser les invites en couches pour les sorties multifonctions

Vous pouvez empiler des couches de fonctionnalités dans une seule invite, demandant à ChatGPT de gérer plusieurs tâches connexes en une seule fois.

Invite de base : "Écrivez une fonction Python pour générer un mot de passe aléatoire."

import math

def square_root(n):
    if n < 0:
        return "Error: Cannot calculate square root of a negative number"
    return math.sqrt(n)

# Debugged version handles errors properly.
# Example usage:
print(square_root(16))   # Output: 4.0
print(square_root(-16))  # Output: "Error: Cannot calculate square root of a negative number"

Copier après la connexion

Version optimisée : "Écrivez une fonction Python pour générer un mot de passe aléatoire. Le mot de passe doit répondre aux critères suivants : au moins 12 caractères, contient des majuscules, des minuscules, des chiffres et des caractères spéciaux. Écrivez également une fonction de validation pour vérifier si le mot de passe est fort."

def is_prime(n):
    if n <= 1:
        return False
    if n == 2:
        return True
    if n % 2 == 0:
        return False
    # Only check odd numbers up to the square root of n for efficiency
    for i in range(3, int(n**0.5) + 1, 2):
        if n % i == 0:
            return False
    return True

# Review:
# - Optimised the loop to check divisibility only up to the square root of n.
# - Reduced checks for even numbers to improve performance for large inputs.

# Example usage:
print(is_prime(5))  # Output: True
print(is_prime(4))  # Output: False
Copier après la connexion
  • L'invite de base génère un mot de passe aléatoire.

  • L'optimisé donne un générateur de mot de passe complexe et comprend une fonction de validation pour vérifier la force du mot de passe.

Développement piloté par les tests : générer une suite de tests complète

Vous pouvez demander à ChatGPT d'écrire le code ainsi qu'une suite de tests complète en une seule fois, garantissant ainsi que votre code est prêt pour la production avec un minimum d'effort. (Si vous devez demander de l'aide, assurez-vous d'en demander beaucoup ?).

Invite de base : "Écrivez une fonction Python pour vérifier si une chaîne est un palindrome."

def reverse_string(s):
    return s[::-1]

# Example usage:
print(reverse_string("hello"))  # Output: "olleh"
Copier après la connexion
Copier après la connexion
Copier après la connexion

Obtenir plus : "Écrivez une fonction Python pour vérifier si une chaîne est un palindrome. Écrivez également une suite de tests complète en utilisant pytest avec des cas extrêmes comme des chaînes vides et des espaces."

def reverse_string(s):
    return s[::-1]

# Trigger: Refining for large strings
def reverse_large_string(s):
    # Handle large strings in chunks for efficiency
    chunk_size = 100000  # Process in 100k chunks
    return ''.join(s[i:i+chunk_size][::-1] for i in range(0, len(s), chunk_size))

# Example usage:
large_string = "a" * 1000000  # 1 million characters
print(reverse_large_string(large_string))
Copier après la connexion
Copier après la connexion
Copier après la connexion
  • La version de base vérifie les palindromes mais manque les cas extrêmes.

  • L'astuce cachée affine non seulement la fonction en ignorant les espaces et la ponctuation, mais fournit également une suite de tests complète utilisant pytest.

En maîtrisant ces techniques, vous pouvez extraire du code ChatGPT hautes performances, sans erreur et prêt pour la production, tout en effectuant moins de travail. Grâce aux affinements automatiques, aux déclencheurs de mémoire, à la gestion des erreurs et aux suites de tests complètes, vous coderez plus intelligemment, pas plus durement.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal