简化工程

你是否曾想过为什么在使用人工智能时人们称之为“Prompt Engineering”?它并不完全感觉像传统的工程,对吗?事实上,我更喜欢将其称为“与LLMs合作”(大型语言模型)。因此,让我们暂时放下花哨的称号,深入探讨如何有效地与这些模型合作。

在这篇文章中,你不会找到一个“提高你的生产力的50个提示”的清单。相反,你会学习如何根据你特定的需求来使用LLMs。有很多关于提示工程的热门话题,声称可以获得高薪水和即时成功。但事实是:提示工程是一种技能,而不是一种职业。它是一项必不可少的技能,可以提高你在任何领域的效率和有效性。

要掌握这一点,您不需要先前经验。您只需要了解LLMs如何运作以及如何利用它们给自己带来优势。把它看作是未来中人工智能素养的核心技能。

那么,什么是即时工程?

在其最简单的情况下:

  • 提示:向AI提供执行任务所需的指令和上下文。

这就像在人工智能的头脑中种下一颗种子,塑造其思维过程。

  • 挑战引擎:开发和优化提示的技巧,以便从人工智能中获得最准确和相关的结果。

创造一个好的提示并不仅仅是选择合适的词语。它还涉及理解您的任务的目的和上下文,LLM的能力,甚至是这些模型运作背后的科学。 LLM对上下文非常敏感,您的提示中的细微变化可能导致截然不同的结果。

LLM 互动的两要素

  1. 输入:您提供的提示。
  2. 输出:LLM 的响应。

学习如何提炼你的输入会导致更好的输出。这是一个迭代的过程,需要一些试验和错误,但掌握它可以显著提高你的生产力和解决问题的能力。

elements of LLMs

什么是提示工程?它真的是工程学吗?

“即时工程”听起来可能像一个流行词,但它实际上是工程吗? 从许多方面来看,是的。 在其核心,即时工程涉及与大型语言模型(LLM)合作,了解它们的能力,并知道如何从中提取您所需的信息或功能。

但这是实际定义:快速工程是一种跨学科工程分支,侧重于通过整合包括AI在内的各个领域与其互动。

  • 软件工程:以机器能够理解且高效处理的方式构建输入。
  • 机器学习:利用从数据中学习的模型来提高响应能力。
  • 认知科学:理解人类思维过程如何反映在人工智能交互中。
  • 业务:将人工智能解决方案应用于真实世界问题,为战略和运营利益带来增益。
  • 哲学:思考人工智能反应的道德意义。
  • 精神病学:探索人工智能如何与人类情绪和心理状态互动。
  • 计算机科学:推动AI技术的基础知识。

这种跨学科方法赋予了即时工程其复杂性。 不仅仅是将单词输入模型中,更重要的是理解如何以一种有效的方式陈述任务,使AI能够有效地回应,同时汲取这些不同领域的见解。

什么让ChatGPT如此特别?

你是否曾想过为什么ChatGPT能提供如此动态的结果?例如,当你询问“天空是什么颜色?”时,它回答“蓝色”,并不是因为有人将它编程为固定的回应。这不是它的工作方式。没有人为每种可能的输出编写特定的代码。相反,ChatGPT更像是一个智能系统,类似于人类大脑处理信息的方式。它经过大量数据的训练,具有生成智能和相关答案的能力。

what movie this emojis can describe?
  • 这部电影讲述了一个男人的故事。
  • ❌ 表情符号电影。
  • ✔ 寻找尼莫。

这显示了ChatGPT如何根据数据中的模式生成回复,而不是预先定义的答案硬编码。

语言模型的规模

语言模型(LMs)有不同的尺寸:小、中、大。大型语言模型(LLMs)的特别之处在于,当您增加数据大小和模型复杂度时,新的能力将出现。性能可以随着更多的数据和更好的训练技术而飙升。

然而,关键不仅仅是给模型大量数据。性能会随着数据规模和及时调整而提高。随着模型的增大,它们将具有意想不到的能力,但没有人完全理解这些模型如何实现这样的结果。这就是提示工程的作用所在 - 它是更好地理解和引导LLMs的持续努力的一部分。

performance higly increase, when the data increases
Model Scale

它不仅通过大数据来扩展性能,而且还通过改变提示方式来提高性能。

没有人确切知道LLMs如何做到他们所做的事情。Prompt Engineering是解开这个谜的一部分。

应用提示工程

应用提示工程

即时工程是关于应用在现实世界任务中与人工智能有效互动所需的原则和技能。你可能已经看到过网站、电子邮件,甚至社交媒体上提供出售承诺可以将您的生产力提高十倍的提示的内容。

说实在的,我无法忍受这种方法。为什么?因为这不是真正的提示工程。这只是要求ChatGPT做某事。真正的提示工程涉及打磨和改进提示,以发挥LLMs的全部潜力,而不是依赖预打包的通用解决方案。

老实说,我讨厌这个。🤬

为什么提示工程是重要的

  • 利用chatGPT潜力的关键。
  • 以高效和高效的方式。
  • 为了达到您的需求和目标…
  • 避免错误和偏见。

提示工程是一种技能,而不是一份工作。

人工智能不会取代你的工作。但使用人工智能的人会。

这是一部获奖纪录片,跟随一个研究团队努力开发了一款能够下围棋的人工智能,并且将这个人工智能与世界顶尖的围棋选手对抗。并且并不是特别长(1.5个小时)。AlphaGo — 电影

多模式和工具在LLMs中

如果您在使用ChatGPT-4或更高版本,您可能已经注意到了一些特别之处:ChatGPT不仅限于文本。它是一个多模态系统,这意味着它可以处理和生成不仅仅是文本。让我们来看一下。

虽然ChatGPT可以阅读和生成文本,但它也可以解释图像。您可以上传一幅图像,ChatGPT将理解其内容,提取信息,就像处理文本一样。此外,ChatGPT甚至可以生成图像。这就是我们所说的多模态,模型可以处理多种类型的数据 — 文本、图像等等。

然而,与多模态合作需要更先进的提示技术,尤其是因为系统可能并非总是在不同交互中保留相同的数据。

另一个有趣的特点是,ChatGPT 有一个知识截止日期—— 2023年4月。这意味着除非您启用模型访问外部工具,否则它不会提供该日期之后的信息。在某些情况下,ChatGPT 可以访问互联网,根据实时网络数据获取最新信息。假设您查询2023年4月之后的事件; 如果启用,ChatGPT 可以浏览互联网,甚至指示搜索了哪些网站。

并且,这是正确的,并且它也显示出chatGPT在5个网站中搜索。

工具使用:代码执行

在ChatGPT的工具箱中有另一种强大的工具:代码执行。比如说你要求ChatGPT计算斐波那契数列的前十个数字。它没有内置的计算器。相反,它使用Python代码来计算结果。这使得它能够处理复杂的计算,并为涉及编码或数学的任务提供准确的答案。

像互联网浏览和代码执行这样的工具的整合提升了LLMs的潜力,使它们能够在基本文本回答以外的各种任务中提供帮助。

有效提示示例:用Python创建一个贪吃蛇游戏

提示1:基本请求

在这个第一个例子中,我只是要求LLM使用Python创建一个蛇游戏,提示如下:

提示:“用Python创建一个贪吃蛇游戏。”

这个简单的请求使模型生成游戏的基础版本,展示其根据简单指令生成代码的能力。

以下是回复的代码:

import pygame
import time
import random

# Initialize Pygame
pygame.init()

# Set up display
width = 600
height = 400
game_display = pygame.display.set_mode((width, height))
pygame.display.set_caption('Snake Game')

# Set up colors
white = (255, 255, 255)
yellow = (255, 255, 102)
black = (0, 0, 0)
red = (213, 50, 80)
green = (0, 255, 0)
blue = (50, 153, 213)

# Set up snake properties
snake_block = 10
snake_speed = 15

# Set up fonts
font_style = pygame.font.SysFont("bahnschrift", 25)
score_font = pygame.font.SysFont("comicsansms", 35)

def our_snake(snake_block, snake_list):
for x in snake_list:
pygame.draw.rect(game_display, black, [x[0], x[1], snake_block, snake_block])

def message(msg, color):
mesg = font_style.render(msg, True, color)
game_display.blit(mesg, [width / 6, height / 3])

def gameLoop(): # Creating a function
game_over = False
game_close = False

x1 = width / 2
y1 = height / 2

x1_change = 0
y1_change = 0

snake_List = []
Length_of_snake = 1

foodx = round(random.randrange(0, width - snake_block) / 10.0) * 10.0
foody = round(random.randrange(0, height - snake_block) / 10.0) * 10.0

while not game_over:

while game_close == True:
game_display.fill(blue)
message("You Lost! Press C-Play Again or Q-Quit", red)
pygame.display.update()

for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_q:
game_over = True
game_close = False
if event.key == pygame.K_c:
gameLoop()

for event in pygame.event.get():
if event.type == pygame.QUIT:
game_over = True
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
x1_change = -snake_block
y1_change = 0
elif event.key == pygame.K_RIGHT:
x1_change = snake_block
y1_change = 0
elif event.key == pygame.K_UP:
y1_change = -snake_block
x1_change = 0
elif event.key == pygame.K_DOWN:
y1_change = snake_block
x1_change = 0

if x1 >= width or x1 < 0 or y1 >= height or y1 < 0:
game_close = True

x1 += x1_change
y1 += y1_change
game_display.fill(blue)
pygame.draw.rect(game_display, green, [foodx, foody, snake_block, snake_block])
snake_Head = []
snake_Head.append(x1)
snake_Head.append(y1)
snake_List.append(snake_Head)
if len(snake_List) > Length_of_snake:
del snake_List[0]

for x in snake_List[:-1]:
if x == snake_Head:
game_close = True

our_snake(snake_block, snake_List)

pygame.display.update()

if x1 == foodx and y1 == foody:
foodx = round(random.randrange(0, width - snake_block) / 10.0) * 10.0
foody = round(random.randrange(0, height - snake_block) / 10.0) * 10.0
Length_of_snake += 1

pygame.time.Clock().tick(snake_speed)

pygame.quit()
quit()

gameLoop()

虽然不会按预期工作。

提示2:详细步骤和代码

对于第二个提示,我想要深入研究这个过程。我不仅仅是要求代码,我还要求关于采取步骤的指导:

提示:“我想使用Python创建一个贪吃蛇游戏。我需要遵循哪些步骤?”

作为回应,LLM提供了创建游戏所需步骤的清单。这种方法很有用,因为它为开发制定了路线图。

接着,我请求实际的代码:

下一个提示:“提供Python中蛇游戏的代码。代码应包括上述所有详细信息和功能。”

这个提示有效地产生了一段完整且可运行的代码,我可以直接在我的电脑上执行。

修改游戏用户界面

接下来,我想要增强游戏的用户界面。因此,我设计了一个提示来修改特定的视觉元素:

提示:“将背景颜色更改为紫色,将蛇的颜色更改为黄色,将食物的颜色更改为绿色,当用户完成游戏时,将文本更改为'游戏结束!哇哇声。按Q键退出或按C键重新开始游戏。" 另外,减慢蛇的速度。"

这个针对性提示指导LLM实现特定的界面更改和游戏调整,从而获得更加个性化的游戏体验。

2024-10-07 04:18:33 AI中文站翻译自原文