Skip to content

DESIGN SCRIPT 提示

通过有效地编写提示(prompting),我们可以利用大型语言模型(Large Language Models,LLMs)的能力来为各种任务生成自定义脚本(custom scripts)或代码片段(code snippets)。这项技术使得开发者(developers),甚至编程经验有限的人,也能快速起草代码、理解逻辑(logic)或解决编程问题。

代码生成提示(prompt)指示 LLM 以指定的编程语言(programming language)生成源代码(source code),以完成特定任务或解决已定义的问题。并不存在特殊的“DESIGN SCRIPT 指令”(directive);成功的关键在于清晰而全面地向 LLM 描述您的需求。

请求代码的基本语法是用自然语言描述所需脚本:

User: Can you write a Python script to sort a list of numbers in ascending order?
Assistant: Certainly! Here's a Python script to sort a list of numbers in ascending order:
```python
def sort_numbers_ascending(numbers):
"""将一个数字列表按升序排序。"""
return sorted(numbers)
# 示例用法:
my_list = [5, 2, 8, 1, 9, 4]
sorted_list = sort_numbers_ascending(my_list)
print(f"排序后的列表是: {sorted_list}")
在此示例中,用户清晰地说明了语言(Python)和任务(将数字列表按升序排序)。LLM 提供了一个带有示例的功能性脚本。
### 使用代码生成提示(Prompt)的最佳实践
为了最大限度地利用代码生成提示(prompt),请考虑以下最佳实践:
- 清晰定义任务或问题:精确描述脚本应该做什么。指定输入(inputs)、预期输出(expected outputs)以及如果已知的话,任何要使用的核心逻辑(core logic)或算法(algorithms)。例如,“编写一个 Python 函数(Python function),该函数接受一个字符串列表,并返回一个只包含长度超过 5 个字符的字符串的新列表。”
- 指定编程语言和版本:始终说明所需的编程语言(Programming Language,例如,Python、JavaScript、Java),如果相关,还要说明特定版本(version,例如,Python 3.9)或任何所需的框架/库(frameworks/libraries,例如,“在 Python 中使用 Pandas”)。
- 请求解释或注释:请 LLM 在代码中包含注释(comments)或提供代码工作原理的解释。这对于理解和学习至关重要,特别是对于复杂的代码片段(snippets)。
- 考虑效率和边界情况(Edge Cases):如果性能是一个关注点,您可以请求高效的解决方案。您还可以提示 LLM 考虑边界情况(edge cases)或包含错误处理(error handling)(例如,“确保处理空的输入列表。”)。
- 迭代并请求优化:首次生成的脚本可能不完美。做好准备请求修改(modifications)、错误修复(bug fixes)或替代方法(alternative approaches)。例如,“你能将此重构(refactor)得更易读吗?”或“有没有更高效的方法来做这件事?”
### 应用示例:Python 实现
让我们探索一个使用 Python 和 OpenAI API 生成计算数字阶乘的 Python 脚本(Python script)的实际例子。
```javascript
from openai import OpenAI
client = OpenAI(api_key='YOUR_API_KEY') # 确保已设置 API 密钥
def generate_code_snippet(description):
try:
response = client.chat.completions.create(
model="gpt-3.5-turbo", # 或者对于更复杂的任务可以使用 "gpt-4"
messages=[
{"role": "system", "content": "You are a helpful coding assistant that provides Python code snippets."},
{"role": "user", "content": description}
],
max_tokens=250, # 根据预期的代码长度进行调整
temperature=0.3, # 降低 temperature 可获得更确定性的代码
n=1,
stop=None
)
return response.choices[0].message.content.strip()
except Exception as e:
return f"An error occurred: {e}"
user_request = "Can you design a Python script to calculate the factorial of a non-negative integer? Please include a function and an example of how to use it. Explain the code briefly."
code_snippet = generate_code_snippet(user_request)
print(code_snippet)

在此示例中,generate_code_snippet() 函数向 LLM 发送一个详细请求。用户指定了语言、任务、所需的组成部分(函数 - function、示例 - example),并请求了解释。

当我们运行带有示例请求的脚本时,可能会收到类似以下内容的响应:

当然!以下是一个计算非负整数阶乘的 Python 脚本(Python script):
```python
def factorial(n):
"""计算非负整数 n 的阶乘。"""
if n < 0:
return "负数没有定义阶乘。"
elif n == 0:
return 1
else:
result = 1
for i in range(1, n + 1):
result *= i
return result
# 示例用法:
number = 5
print(f"数字 {number} 的阶乘是: {factorial(number)}")
number = 0
print(f"数字 {number} 的阶乘是: {factorial(number)}")
number = -3
print(f"数字 {number} 的阶乘是: {factorial(number)}")

解释:

  1. factorial(n) 函数(function)接受一个整数 n 作为输入(input)。
  2. 它首先检查 n 是否为负数。如果是,则返回错误消息,因为负数没有定义阶乘。
  3. 如果 n 是 0,则返回 1(因为 0! = 1)。
  4. 否则,它将 result 初始化为 1,并从 1 迭代到 n(包含 n),将 result 乘以范围内的每个数字。
  5. 最后,它返回计算出的 result。

示例用法演示了如何使用不同的输入调用此函数(function)。

### 结论
在本章中,我们探讨了如何提示(prompt)LLMs 生成自定义脚本(custom scripts)或代码片段(code snippets)。通过提供清晰详细的需求并根据需要进行迭代(iterating)优化,您可以利用 LLM 作为强大的助手来完成各种编码任务,从简单的函数(functions)到更复杂的解决问题(problem-solving)。