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

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 



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

<pre class="brush:php;toolbar:false">def is_prime(n):
    if n 



  • 基本提示会生成一个随机密码。

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

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

您可以要求 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中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
您如何切成python列表?您如何切成python列表?May 02, 2025 am 12:14 AM

SlicingaPythonlistisdoneusingthesyntaxlist[start:stop:step].Here'showitworks:1)Startistheindexofthefirstelementtoinclude.2)Stopistheindexofthefirstelementtoexclude.3)Stepistheincrementbetweenelements.It'susefulforextractingportionsoflistsandcanuseneg

在Numpy阵列上可以执行哪些常见操作?在Numpy阵列上可以执行哪些常见操作?May 02, 2025 am 12:09 AM

numpyallowsforvariousoperationsonArrays:1)basicarithmeticlikeaddition,减法,乘法和division; 2)evationAperationssuchasmatrixmultiplication; 3)element-wiseOperations wiseOperationswithOutexpliitloops; 4)

Python的数据分析中如何使用阵列?Python的数据分析中如何使用阵列?May 02, 2025 am 12:09 AM

Arresinpython,尤其是Throughnumpyandpandas,weessentialFordataAnalysis,offeringSpeedAndeffied.1)NumpyArseNable efflaysenable efficefliceHandlingAtaSetSetSetSetSetSetSetSetSetSetSetsetSetSetSetSetsopplexoperationslikemovingaverages.2)

列表的内存足迹与python数组的内存足迹相比如何?列表的内存足迹与python数组的内存足迹相比如何?May 02, 2025 am 12:08 AM

列表sandnumpyArraysInpyThonHavedIfferentMemoryfootprints:listSaremoreFlexibleButlessMemory-效率,而alenumpyArraySareSareOptimizedFornumericalData.1)listsStorReereReereReereReereFerenceStoObjects,withoverHeadeBheadaroundAroundaroundaround64bytaround64bitson64-bitsysysysyssyssyssyssyssyssysssys2)

部署可执行的Python脚本时,如何处理特定环境的配置?部署可执行的Python脚本时,如何处理特定环境的配置?May 02, 2025 am 12:07 AM

toensurepythonscriptsbehavecorrectlyacrycrossdevelvermations,登台和生产,USETHESTERTATE:1)Environment varriablesforsimplesettings,2)configurationFilesForefilesForcomPlexSetups,3)dynamiCofforAdaptapity.eachmethodofferSuniquebeneiquebeneiquebeneniqueBenefitsaniqueBenefitsandrefitsandRequiresandRequireSandRequireSca

您如何切成python阵列?您如何切成python阵列?May 01, 2025 am 12:18 AM

Python列表切片的基本语法是list[start:stop:step]。1.start是包含的第一个元素索引,2.stop是排除的第一个元素索引,3.step决定元素之间的步长。切片不仅用于提取数据,还可以修改和反转列表。

在什么情况下,列表的表现比数组表现更好?在什么情况下,列表的表现比数组表现更好?May 01, 2025 am 12:06 AM

ListSoutPerformarRaysin:1)DynamicsizicsizingandFrequentInsertions/删除,2)储存的二聚体和3)MemoryFeliceFiceForceforseforsparsedata,butmayhaveslightperformancecostsinclentoperations。

如何将Python数组转换为Python列表?如何将Python数组转换为Python列表?May 01, 2025 am 12:05 AM

toConvertapythonarraytoalist,usEthelist()constructororageneratorexpression.1)intimpthearraymoduleandcreateanArray.2)USELIST(ARR)或[XFORXINARR] to ConconverTittoalist,请考虑performorefformanceandmemoryfformanceandmemoryfformienceforlargedAtasetset。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

螳螂BT

螳螂BT

Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

SecLists

SecLists

SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。