首页 > 后端开发 > Python教程 > 快速工程(针对懒惰程序员):准确获取您想要的代码(甚至更多,从 ChatGPT 中获取)

快速工程(针对懒惰程序员):准确获取您想要的代码(甚至更多,从 ChatGPT 中获取)

Linda Hamilton
发布: 2024-10-31 12:03:02
原创
472 人浏览过

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

比尔盖茨都说了...做一个懒惰的程序员!.

作为一名程序员,没有什么比立即运行的代码更好的了——没有错误,没有无休止的调试。通过遵循某些提示技术,您不仅可以让 ChatGPT 编写代码,还可以编写优化的、功能齐全且有文档记录的代码,包括边缘案例、测试,甚至性能优化。

但首先...

什么是即时工程?

人工智能,特别是 ChatGPT,已成为内容创建、编码辅助和回答复杂问题的强大工具。然而,许多人并没有充分发挥其潜力。神奇之处在于您如何表达您的请求——我们称之为即时工程。在本文中,我们将探索可以让您的 ChatGPT 体验更加富有成效的技术,重点介绍一些可以让您作为软件程序员的提示从普通变为出色的技巧。

为什么及时工程很重要?

ChatGPT 经过大量数据训练,但它的响应取决于您给出的提示的质量。措辞不当或含糊不清的提示可能会导致不相关或笼统的答案。相反,结构良好的提示可以产生深思熟虑、准确且富有创意的回应。

本指南将帮助懒惰的程序员(比如我自己?)使用提示工程从 ChatGPT 获得高质量、优化的、甚至功能更强大的代码。这些将专门让 ChatGPT 承担繁重的工作——自动生成代码、改进代码,甚至提出优化和测试建议。下面,我还提供了一些示例,比较了正常提示与优化提示以及它们生成的结果。

那么让我们开始吧!.

触发自动优化以获得更好的代码

要求 ChatGPT 通过嵌入触发器来自动优化其响应,以发现效率低下、提出优化建议或添加功能。

基本提示:“编写一个Python函数来反转字符串。”

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

# Example usage:
print(reverse_string("hello"))  # Output: "olleh"
登录后复制
登录后复制
登录后复制

优化提示:“编写一个Python函数来反转字符串。如果输入太大或效率低下,建议更好的方法来高效处理大字符串。”

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 可以记住之前的步骤。这对于您在另一层之上构建一层的更复杂的工作流程来说是理想的选择。

基本提示:“编写一个Python函数来创建用户配置文件。”

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

# Example usage:
print(reverse_string("hello"))  # Output: "olleh"
登录后复制
登录后复制
登录后复制

优化提示:“编写一个Python函数来创建用户配置文件。现在,扩展它以存储用户首选项并将其与数据库连接以保存配置文件。”

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 就像在调试模式下运行一样,在交付最终输出之前检查并纠正代码中的潜在问题。

简单提示示例:“编写一个 Python 函数来计算数字的平方根。”

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)

登录后复制

技巧:“编写一个 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, "alice@example.com", {"theme": "dark"})
save_user_profile(user_profile)

登录后复制
  • 基本函数对于有效输入工作正常,但对于负数会崩溃。

  • 优化的提示可确保对负输入进行错误处理,返回自定义消息而不是破坏代码。

角色扮演:充当代码审查员

您可以要求 ChatGPT 扮演高级代码审阅者的角色,为您的代码提供反馈并建议最佳实践。

示例提示:“充当高级开发人员并检查我的 Python 函数,该函数检查数字是否为素数。提出性能和可读性改进建议。”

import math

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

# Example usage:
print(square_root(16))  # Output: 4.0
登录后复制

提示提供了更优化的版本,仅检查奇数到平方根,这极大地提高了性能。

使用分层提示实现多功能输出

您可以在一个提示中堆叠多层功能,要求 ChatGPT 一次性处理多个相关任务。

基本提示:“编写一个Python函数来生成随机密码。”

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"

登录后复制

优化版本:“编写一个Python函数生成随机密码。密码必须满足以下条件:至少12个字符,包含大写、小写、数字和特殊字符。另外,编写验证功能来检查密码是否强。”

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
登录后复制
  • 基本提示会生成一个随机密码。

  • 优化后提供了一个复杂的密码生成器,并包含检查密码强度的验证功能。

测试驱动开发:生成完整的测试套件

您可以要求 ChatGPT 一次性编写代码以及完整的测试套件,确保您的代码以最小的努力做好生产准备。 (如果你必须寻求帮助,一定要提出很多要求吗?)。

基本提示:“编写一个 Python 函数来检查字符串是否为回文。”

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

# Example usage:
print(reverse_string("hello"))  # Output: "olleh"
登录后复制
登录后复制
登录后复制

获取更多:“编写一个 Python 函数来检查字符串是否为回文。此外,使用 pytest 编写一个完整的测试套件,并使用 pytest 以及空字符串和空格等边缘情况。”

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))
登录后复制
登录后复制
登录后复制
  • 基本版本检查回文,但会忽略边缘情况。

  • 隐藏的技巧不仅通过忽略空格和标点符号来细化函数,而且还提供了使用 pytest 的全面测试套件。

通过掌握这些技术,您可以从 ChatGPT 中提取高性能、无错误且可用于生产的代码,同时减少工作量。借助自动优化、内存触发器、错误处理和完整的测试套件,您将更智能地编写代码,而不是更困难。

以上是快速工程(针对懒惰程序员):准确获取您想要的代码(甚至更多,从 ChatGPT 中获取)的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:dev.to
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板