大佬们都在玩的prompt到底有什么魔力?用一个创建数据表的例子告诉你

294 阅读6分钟

什么是Prompt?

Prompt是一种基于人工智能(AI)指令的技术,通过明确而具体的指导语言模型的输出。在提示词工程中,Prompt的定义涵盖了任务、指令和角色三个主要元素,以确保模型生成符合用户需求的文本。

传统数据表创建与Prompt方式的比较

随着大数据时代的到来,数据表的设计变得越来越复杂和精细。传统的数据表设计方法依赖于数据库工程师的经验和知识,会耗费大量的时间和精力。而现代的Prompt工程则利用人工智能来辅助设计过程,使数据库的创建仅仅成为一句话的简单事儿。接下来我们来用设计一张nba赛季投篮数据表来对比两者之间的差距。

传统数据表的创建

需求分析

首先,在传统的数据表设计流程中,第一步总是需求分析。就对于NBA赛季投篮数据表来说,我们需要思考和收集的信息十分繁杂和庞大,需要设计许多字段,包括哪一个赛季、球队、队员、得分(分数、动作、原因、结果)、zone(区域、远近、坐标)、Position(位置、投篮位置)、left(分、秒)的重要性以及客场主场等等因素。

字段设计

基于以上分析,我们可以简单列出一些字段:

  • shot_id: 主键,自动递增,用于唯一标识每一条投篮记录。
  • season: 存储赛季信息,例如 '2024-2025'。
  • team_id: 球队ID。
  • player_id: 球员ID。
  • shot_made: 是否投中,使用布尔值表示。
  • shot_type: 投篮类型,如两分球 '2pt' 或三分球 '3pt'。
  • shot_action: 投篮动作,如跳投 'Jump Shot'、上篮 'Layup'、扣篮 'Dunk' 或勾手 'Hook Shot'等。
  • score_reason: 得分原因,例如助攻 'Assist by Player X'。
  • shot_location: 投篮位置,如 'Right Corner 3'。
  • player_position: 球员位置,如 'PG'、'SG'、'SF'、'PF'、'C'。
  • game_date: 比赛日期。
  • game_time: 比赛时间。
  • time_remaining_minutes: 距离比赛结束的分钟数。
  • time_remaining_seconds: 距离比赛结束的秒数。

SQL 创建语句

接下来,我们需要编写SQL语句来创建这张数据表:

CREATE TABLE shots (
    shot_id INT AUTO_INCREMENT PRIMARY KEY,
    season VARCHAR(9) NOT NULL,
    team_id INT NOT NULL,
    player_id INT NOT NULL,
    shot_made BIT NOT NULL,
    shot_type ENUM('2pt', '3pt') NOT NULL,
    shot_action ENUM('Jump Shot', 'Layup', 'Dunk', 'Hook Shot', 'Other') NOT NULL,
    score_reason VARCHAR(50),
    shot_location VARCHAR(50) NOT NULL,
    player_position ENUM('PG', 'SG', 'SF', 'PF', 'C') NOT NULL,
    game_date DATE NOT NULL,
    game_time TIME NOT NULL,
    time_remaining_minutes INT NOT NULL,
    time_remaining_seconds INT NOT NULL,
    FOREIGN KEY (team_id) REFERENCES teams(team_id),
    FOREIGN KEY (player_id) REFERENCES players(player_id) 
);

数据表创建完成后,我们需要对创建的数据表进行数据的增删改以及查询的优化和索引管理等操作。

Prompt方式的数据表创建

从Prompt的方式去创建数据库,我们需要考虑的是如何让AI能够对于我们所想表述和实现的数据表或者操作实现最大程度上的重合,做到你想到什么,我们告诉他之后,就能让他做出什么,达成人机意义上的想你所想,做你所做。

给定一个角色

那么首先我们应该给定它一个角色,比如说,我们要创建这张nba赛季投篮数据表,那我们直接大胆的对它说出:假设你是一位数据库工程师(加上年薪100w也不是不可以),那么它现在就是一位牛逼到不行的数据库工程师了。

指定任务

既然已经是数据库工程师了,接下来就该完成我们的任务了,总不能让他白当吧,所以我们现在抛给他一个明确的任务,请你帮我设计一张nba赛季投篮数据表shots,ok任务告诉他了这段命令就大体完成了,但是当然不能局限于此,我们还需对它进行更加细致的命令和约束。

设定约束

我们需要约束它必须做什么,不做什么。 数据表需要满足mysql的约束,请包含赛季、球队、球员、得分(得分与否、投篮动作、得分原因)、投篮位置、球员位置(如sg、pg)、比赛时间、距离结束时间分秒,其他字段不需要给出。命令到这里基本上就结束了,接下来如果你还有其他需要细化的指令可以继续向他提供,以确保代码和框架整体的良好性。就比如:字段设计要详细,确保能够全面记录投篮数据;使用合适的数据类型,确保数据的准确性和高效性;设置外键约束,确保数据的一致性和完整性等。

编写Prompt

接下来向AI提问看看效果如何吧

假设你是一位数据库工程师,请你帮我设计一张nba赛季投篮数据表 shots,数据表需要满足mysql的约束,请包含赛季、球队、球员、得分(得分与否、投篮动作、得分原因)、投篮位置、球员位置(如sg、pg)、比赛时间、距离结束时间分秒、其他字段不需要给出。请返回sql,并给出原因。

image.png

接收AI回复

AI会根据Prompt的要求,生成SQL语句并解释设计原因。以下是AI生成的SQL语句和解释:

SQL语句: image.png 设计原因:

image.png

小结

虽然prompt非常好用,但是如果你并没有熟练掌握对prompt的提问方式和语句,那么可能会产生错误的结果,影响项目的进程,这里推荐大家可以去学习吴恩达老师的ChatGPT Prompt Engineering(提示工程)课程,在这个课程中你将学习如何使用大型语言模型(LLM)快速构建新的强大应用程序。使用 OpenAI API,你将能够快速构建学习创新和创造价值的功能,这些功能以前成本高昂、技术含量高或根本不可能实现,但是如果你能熟练掌握Prompt,学会善于向AI提问,那么这一切都将成为可能。

传统数据表创建方法和基于Prompt的现代方法各有优势和局限性。传统方法适用于需要高度定制和灵活性的场景,而Prompt方式则更适合快速生成标准和一致的代码。在实际应用中,可以结合两种方法,发挥各自的优势,提高数据表设计的质量和效率,帮助大家的技术更进一步。