"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > الهندسة السريعة (للمبرمجين الكسالى): الحصول على الكود الذي تريده بالضبط (وأكثر من ذلك، من خلال ChatGPT)

الهندسة السريعة (للمبرمجين الكسالى): الحصول على الكود الذي تريده بالضبط (وأكثر من ذلك، من خلال ChatGPT)

تم النشر بتاريخ 2024-11-08
تصفح:200

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

لقد قال بيل جيتس كل شيء... كن مبرمجًا كسولًا!.

كمبرمج، لا يوجد شيء أفضل من التعليمات البرمجية التي تعمل فورًا - بدون أخطاء، ولا تصحيح أخطاء لا نهاية له. من خلال اتباع بعض التقنيات السريعة، يمكنك جعل ChatGPT يكتب ليس فقط التعليمات البرمجية، بل أيضًا تعليمات برمجية محسّنة وفعالة بالكامل وموثقة، ومكتملة بحالات الحافة والاختبارات وحتى تحسينات الأداء.

لكن أولاً...

ما هي الهندسة السريعة؟

أصبح الذكاء الاصطناعي، وخاصة ChatGPT، أداة قوية لإنشاء المحتوى والمساعدة في البرمجة والإجابة على الأسئلة المعقدة. ومع ذلك، فإن الكثير من الناس لا يستفيدون من إمكاناته الكاملة. يكمن السحر في كيفية صياغة طلباتك، وهو ما نسميه الهندسة السريعة. في هذه المقالة، سنستكشف التقنيات التي يمكن أن تجعل تجربتك في ChatGPT أكثر إثمارًا، مع تسليط الضوء على بعض الحيل التي يمكن أن تنقل مطالباتك من المتوسط ​​إلى الرائع، كمبرمج برمجيات.

لماذا تعتبر الهندسة السريعة مهمة؟

يتم تدريب ChatGPT على كميات هائلة من البيانات، لكن استجاباته تتشكل وفقًا لجودة المطالبة التي تقدمها له. يمكن أن تؤدي المطالبات ذات الصياغة السيئة أو الغامضة إلى إجابات عامة أو غير ذات صلة. على العكس من ذلك، يمكن للمطالبات المنظمة بشكل جيد أن تولد استجابات مدروسة ودقيقة ومبتكرة.

سيساعد هذا الدليل المبرمجين الكسالى (مثلي؟) في الحصول على تعليمات برمجية عالية الجودة ومُحسّنة وأكثر وظيفية من ChatGPT باستخدام الهندسة السريعة. سيؤدي ذلك حصريًا إلى جعل ChatGPT يقوم بالمهمة الصعبة - أتمتة إنشاء التعليمات البرمجية وتحسينها وحتى اقتراح التحسينات والاختبارات. أدناه، قمت أيضًا بتضمين أمثلة تقارن المطالبات العادية بالمطالبات المحسنة والنتائج التي تولدها.

لذلك دعونا نبدأ!.

تشغيل التحسينات التلقائية للحصول على كود أفضل

اطلب من ChatGPT تحسين استجاباته تلقائيًا عن طريق تضمين المشغلات لاكتشاف أوجه القصور أو اقتراح التحسينات أو إضافة ميزات.

الموجه الأساسي: "اكتب دالة بايثون لعكس سلسلة."

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

# Example usage:
print(reverse_string("hello"))  # Output: "olleh"

الموجه الأمثل: "اكتب دالة بايثون لعكس سلسلة. إذا كان الإدخال كبيرًا جدًا أو غير فعال، فاقترح طريقة أفضل للتعامل مع السلاسل الكبيرة بكفاءة."

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))
  • الوظيفة الأساسية بسيطة وتعمل مع المدخلات الصغيرة.

  • يقدم الحل الأمثل حلاً فعالاً يعتمد على القطع لعكس السلاسل الكبيرة دون استهلاك الكثير من الذاكرة.

الذاكرة السياقية للمشاريع متعددة الخطوات

عندما تحتاج إلى تعليمات برمجية لمشاريع متعددة الخطوات، يمكن لـ ChatGPT أن يتذكر الخطوات السابقة. يعد هذا مثاليًا لسير العمل الأكثر تعقيدًا حيث تقوم ببناء طبقة فوق أخرى.

الموجه الأساسي: "اكتب وظيفة بايثون لإنشاء ملف تعريف مستخدم."

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

# Example usage:
user_profile = create_user_profile("Alice", 30, "[email protected]")
print(user_profile)

الموجه الأمثل: "اكتب وظيفة Python لإنشاء ملف تعريف مستخدم. الآن، قم بتوسيع هذا لتخزين تفضيلات المستخدم أيضًا وربطه بقاعدة بيانات لحفظ الملفات الشخصية."

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, "[email protected]", {"theme": "dark"})
save_user_profile(user_profile)

  • الوظيفة الأولى من الموجه الأساسي تنشئ ملف تعريف مستخدم بسيط.

  • تقوم المطالبة الثانية بإنشاء مدير ملف تعريف مستخدم متصل بقاعدة البيانات مع وظائف موسعة لحفظ البيانات.

طلب وضع التصحيح للحصول على تعليمات برمجية خالية من الأخطاء

يمكنك أن تطلب من ChatGPT أن يعمل كما لو كان يعمل في وضع التصحيح، حيث يقوم بفحص المشكلات المحتملة في التعليمات البرمجية وتصحيحها قبل تسليم الإخراج النهائي.

مثال بسيط للمطالبة: "اكتب دالة بايثون لحساب الجذر التربيعي لرقم."

import math

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

# Example usage:
print(square_root(16))  # Output: 4.0

الخدعة: "اكتب دالة بايثون لحساب الجذر التربيعي لرقم. قم بتنشيط وضع التصحيح للتحقق من وجود أخطاء مثل المدخلات السالبة، وأعد كتابة الدالة إذا لزم الأمر."

import math

def square_root(n):
    if n 



  • تعمل الوظيفة الأساسية بشكل جيد مع المدخلات الصالحة ولكنها تتعطل مع الأرقام السالبة.

  • تضمن المطالبة المُحسّنة معالجة الأخطاء للمدخلات السلبية، وإرجاع رسالة مخصصة بدلاً من كسر الرمز.

لعب الأدوار: العمل كمراجع الكود

يمكنك أن تطلب من ChatGPT لعب دور أحد كبار مراجعي الأكواد لتقديم الملاحظات واقتراح أفضل الممارسات للكود الخاص بك.

مثال للمطالبة: "العمل كمطور أول ومراجعة وظيفة Python الخاصة بي التي تتحقق مما إذا كان الرقم أوليًا. اقترح تحسينات على الأداء وسهولة القراءة."

def is_prime(n):
    if n 



يوفر الموجه إصدارًا أكثر تحسينًا، فقط يتحقق من الأرقام الفردية حتى الجذر التربيعي، مما يؤدي إلى تحسين الأداء بشكل كبير.

استخدم المطالبة ذات الطبقات للمخرجات متعددة الوظائف

يمكنك تكديس طبقات من الوظائف في موجه واحد، حيث تطلب من ChatGPT التعامل مع مهام متعددة ذات صلة دفعة واحدة.

الموجه الأساسي: "اكتب دالة بايثون لإنشاء كلمة مرور عشوائية."

import random
import string

def generate_password(length):
    return ''.join(random.choices(string.ascii_letters   string.digits, k=length))

# Example usage:
print(generate_password(10))  # Output: Random 10-character password

الإصدار الأمثل: "اكتب دالة بايثون لإنشاء كلمة مرور عشوائية. يجب أن تستوفي كلمة المرور المعايير التالية: 12 حرفًا على الأقل، وتحتوي على أحرف كبيرة وصغيرة وأرقام وأحرف خاصة. اكتب أيضًا وظيفة التحقق من الصحة للتحقق مما إذا كانت كلمة المرور قوية."

import random
import string
import re

def generate_password(length):
    characters = string.ascii_letters   string.digits   string.punctuation
    password = ''.join(random.choices(characters, k=length))
    return password

def validate_password(password):
    # Check length
    if len(password) 



  • تقوم المطالبة الأساسية بإنشاء كلمة مرور عشوائية.

  • يوفر المحسّن منشئ كلمات مرور معقدًا ويتضمن وظيفة التحقق من الصحة للتحقق من قوة كلمة المرور.

التطوير القائم على الاختبار: إنشاء مجموعة اختبار كاملة

يمكنك أن تطلب من ChatGPT كتابة الكود مع مجموعة اختبار كاملة دفعة واحدة، مما يضمن أن الكود الخاص بك جاهز للإنتاج بأقل جهد. (إذا كان لا بد من طلب المساعدة، فاحرص على أن تطلب الكثير؟).

الموجه الأساسي: "اكتب دالة بايثون للتحقق مما إذا كانت السلسلة متناظرة."

def is_palindrome(s):
    return s == s[::-1]

# Example usage:
print(is_palindrome("madam"))  # Output: True
print(is_palindrome("hello"))  # Output: False

الحصول على المزيد: "اكتب دالة بايثون للتحقق مما إذا كانت السلسلة متناظرة. أيضًا، اكتب مجموعة اختبار كاملة باستخدام pytest مع حالات الحافة مثل السلاسل والمسافات الفارغة."

def is_palindrome(s):
    s = ''.join(c.lower() for c in s if c.isalnum())  # Remove non-alphanumeric characters
    return s == s[::-1]

# Test suite
def test_is_palindrome():
    assert is_palindrome("madam") == True
    assert is_palindrome("hello") == False
    assert is_palindrome("A man, a plan, a canal, Panama") == True
    assert is_palindrome("") == True  # Edge case: empty string
    assert is_palindrome(" ") == True  # Edge case: only spaces

# Example usage:
print(is_palindrome("A man, a plan, a canal, Panama"))  # Output: True
  • يقوم الإصدار الأساسي بالتحقق من المتناظرات ولكنه يفتقد حالات الحافة.

  • لا تعمل الخدعة المخفية على تحسين الوظيفة من خلال تجاهل المسافات وعلامات الترقيم فحسب، بل توفر أيضًا مجموعة اختبار شاملة باستخدام pytest.

من خلال إتقان هذه التقنيات، يمكنك استخراج تعليمات برمجية عالية الأداء وخالية من الأخطاء وجاهزة للإنتاج من ChatGPT، كل ذلك أثناء القيام بعمل أقل. من خلال التحسينات التلقائية، ومشغلات الذاكرة، ومعالجة الأخطاء، ومجموعات الاختبار الكاملة، ستتمكن من البرمجة بشكل أكثر ذكاءً، وليس أكثر صعوبة.

بيان الافراج تم إعادة إنتاج هذه المقالة على: https://dev.to/jamesbright/prompt-engineering-for-lazy-programmers-getting-exactly-the-code-you-want-and-even-more-out-of-chatgpt- 3plf 1إذا كان هناك أي انتهاك، يرجى الاتصال بـ [email protected] لحذفه
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3