关于人工智能:如何使用-GitHub-Copilot提示技巧和用例

50次阅读

共计 4698 个字符,预计需要花费 12 分钟才能阅读完成。

生成式人工智能编码工具正在扭转开发人员解决日常编码工作的形式。从记录咱们的代码库到生成单元测试,这些工具有助于放慢咱们的工作流程。然而,就像任何新兴技术一样,总是有一个学习曲线。因而,当人工智能驱动的编码助手无奈生成他们想要的输入时,开发人员(无论是初学者还是经验丰富的开发人员)有时会感到丧气。(有没有感觉很相熟?)

例如,当要求 GitHub Copilot 应用 p5.js(一个用于创意编码的 JavaScript 库)绘制冰淇淋甜筒🍦时,咱们一直收到不相干的倡议,或者有时基本没有倡议。但当咱们更多地理解 GitHub Copilot 解决信息的形式时,咱们意识到咱们必须调整与其通信的形式。

以下是 GitHub Copilot 生成不相干解决方案的示例:

当咱们调整提醒时,咱们可能生成更精确的后果:

提高胜过完满

即便咱们领有应用人工智能的教训,咱们也意识到每个人都处于生成式人工智能技术的试错阶段。咱们也晓得提供通用提醒制作技巧的挑战,因为模型各不相同,开发人员正在解决的个别问题也各不相同。这不是一个最终的、万能的指南。相同,咱们正在分享咱们所学到的无关即时制作的常识,以在软件开发的新时代减速个体学习。

什么是提醒,什么是提醒工程?

这取决于你和谁谈话。

在生成式 AI 编码工具中,提醒可能意味着不同的含意,具体取决于您是询问 正在构建和微调这些工具的机器学习 (ML) 钻研人员,还是 在 IDE 中应用这些工具的开发人员。

在本指南中,咱们将从在 IDE 中应用生成式 AI 编码工具的开发人员的角度来定义术语。但为了让您全面理解,咱们还在图表中增加了上面的 ML 钻研人员定义。

提醒 提醒工程 上下文 开发人员 开发人员编写的代码块、单行代码或自然语言正文,以从 GitHub Copilot 生成特定倡议 在 IDE 中提供阐明或正文 以生成特定编码倡议 开发人员提供的详细信息,用于指定生成式 AI 编码工具的所需输入 ML 钻研人员 编译 IDE 代码和相干上下文 (IDE 正文、关上文件中的代码等), 由算法一直生成 并发送到生成式 AI 编码工具的模型 创立将为大型语言模型生成提醒(IDE 代码和上下文的编译)的算法 算法发送 到大型语言模型 (LLM) 的 详细信息(例如关上文件中的数据以及光标之前和之后编写的代码)作为无关代码的附加信息

应用 GitHub Copilot 进行疾速制作的 3 个最佳实际

1. 设定高水平指标。🖼️

如果您有空白文件或空代码库,这将十分有帮忙。换句话说,如果 GitHub Copilot 对您想要构建或实现的内容的上下文为零,那么为 AI 结对程序员设置舞台可能十分有用。在您开始具体介绍之前,它有助于为 GitHub Copilot 提供您心愿其生成的内容的总体形容。

当提醒 GitHub Copilot 时,将这个过程设想成与某人对话:我应该如何合成问题,以便咱们能够一起解决它?我将如何与这个人进行结对编程?

例如,在 Next.jst 中构建 Markdown 编辑器时,咱们能够编写这样的正文

/*
Create a basic markdown editor in Next.js with the following features:
- Use react hooks
- Create state for markdown with default text "type markdown here"
- A text area where users can write markdown 
- Show a live preview of the markdown text as I type
- Support for basic markdown syntax like headers, bold, italics 
- Use React markdown npm package 
- The markdown text and resulting HTML should be saved in the component's state and updated in real time 
*/

这将提醒 GitHub Copilot 生成以下代码,并在 30 秒内生成一个非常简单、无款式但功能齐全的 Markdown 编辑器。咱们能够利用残余的工夫来设计组件的款式:

留神:这种具体水平能够帮忙您创立更现实的输入,但后果可能依然是不确定的。例如,在评论中,咱们提醒 GitHub Copilot 创立默认文本“在此键入 markdown”,但它生成了“markdown 预览”作为默认词。

2. 让你的要求简略而具体。旨在接管来自 GitHub Copilot 的简短输入。🗨️

一旦您将您的次要指标传播给人工智能结对程序员,请说明实现该指标所需遵循的逻辑和步骤。当您合成事件时,GitHub Copilot 能够更好地了解您的指标。(设想一下你正在写一份食谱。你会把烹饪过程分解成不间断的步骤——而不是写一段形容你想做的菜。)

让 GitHub Copilot 在每一步之后生成代码,而不是要求它一次性生成一堆代码。

以下是咱们向 GitHub Copilot 提供用于反转函数的分步阐明的示例:

3. 举一两个 GitHub Copilot 示例。✍️

从示例中学习不仅对人类有用,而且对人工智能结对程序员也有用。例如,咱们想从上面的数据数组中提取名称并将其存储在一个新数组中:

const data = [
  [{ name: 'John', age: 25},
    {name: 'Jane', age: 30}
  ],
  [{ name: 'Bob', age: 40}
  ]
];

当咱们没有向 GitHub Copilot 展现示例时……

// Map through an array of arrays of objects to transform data
const data = [
  [{ name: 'John', age: 25},
    {name: 'Jane', age: 30}
  ],
  [{ name: 'Bob', age: 40}
  ]
];

const mappedData = data.map(x => [x.name](http://x.name/));

console.log(mappedData);

// Results: [undefined, undefined]

它生成了谬误的地图用法:

const mappedData = data.map(x => [x.name](http://x.name/));

console.log(mappedData);

// Results: [undefined, undefined]

相比之下,当咱们的确提供了一个例子时……

// Map through an array of arrays of objects
// Example: Extract names from the data array
// Desired outcome: ['John', 'Jane', 'Bob']
const data = [[{ name: 'John', age: 25}, {name: 'Jane', age: 30}],
  [{name: 'Bob', age: 40}]
];


const mappedData = data.flatMap(sublist => sublist.map(person => person.name));

console.log(mappedData);

咱们收到了咱们想要的后果。

const mappedData = data.flatMap(sublist => sublist.map(person => person.name));

console.log(mappedData);
// Results: ['John', 'Jane', 'Bob']

具体理解 AI 训练的常见办法,例如零样本学习、单样本学习和少样本学习。

应用 GitHub Copilot 进行疾速制作的三个额定技巧

以下三个额定提醒可帮忙领导您与 GitHub Copilot 的对话。

1. 依据提醒进行试验。

对话与其说是一门迷信,不如说是一门艺术,即时创作也是如此。因而,如果您在第一次尝试时没有收到您想要的内容,请依照上述最佳实际从新设计提醒。

例如,上面的提醒是含糊的。它不为 GitHub Copilot 生成相干倡议提供任何上下文或边界。

# Write some code for grades.py  

咱们迭代了提醒以使其更加具体,但咱们依然没有失去咱们想要的确切后果。这是一个很好的揭示,即为提醒增加特异性比听起来更难。从一开始就很难晓得您应该蕴含哪些对于您的指标的详细信息,以便从 GitHub Copilot 生成最有用的倡议。这就是咱们激励尝试的起因。

上面的提醒版本比下面的更具体,但没有明确定义输出和输入要求。

# Implement a function in grades.py to calculate the average grade

咱们通过设置边界并概述咱们心愿函数执行的操作再次尝试提醒。咱们还从新表述了正文,使性能更加清晰(为 GitHub Copilot 提供了明确的验证用意)。

这一次,咱们失去了咱们想要的后果。

# Implement the function calculate_average_grade in grades.py that takes a list of grades as input and returns the average grade as a floating-point number

2. 放弃几个相干选项卡关上。

咱们没有您应该放弃关上的选项卡的确切数量,以帮忙 GitHub Copilot 将您的代码置于上下文中,但依据咱们的教训,咱们发现一两个是有帮忙的。

GitHub Copilot 应用一种称为相邻选项卡的技术,容许 AI 结对程序员通过解决 IDE 中关上的所有文件(而不仅仅是您正在解决的单个文件)来将您的代码置于上下文中。然而,不能保障 GItHub Copilot 会将所有关上的文件视为代码的必要上下文。

3. 应用良好的编码实际。

这包含提供描述性变量名称和函数,以及遵循统一的编码格调和模式。咱们发现,与 GitHub Copilot 单干激励咱们遵循咱们在职业生涯中学到的良好编码实际。

例如,在这里咱们应用了描述性函数名称,并遵循利用蛇形命名法的代码库模式。

def authenticate_user(username, password):

后果,GitHub Copilot 生成了相干代码倡议:

def authenticate_user(username, password):
    # Code for authenticating the user
    if is_valid_user(username, password):
        generate_session_token(username)
        return True
    else:
        return False

将此与上面的示例进行比拟,在该示例中咱们引入了不统一的编码格调并且对函数的命名也很蹩脚。

def rndpwd(l):

GitHub Copilot 没有倡议代码,而是生成了一条评论:“代码放在这里。”

def rndpwd(l):
    # Code goes here

放弃聪慧

生成式人工智能编码工具背地的法学硕士旨在从训练数据中查找和推断模式,将这些模式利用到现有语言,而后生成遵循这些模式的代码。思考到这些模型的宏大规模,它们可能会生成一个尚不存在的代码序列。正如您查看共事的代码一样,您应该始终评估、剖析和验证人工智能生成的代码。

一个练习示例👩🏽‍💻

首先,您须要装置 GitHub Copilot 并在 IDE 中关上。咱们还能够拜访 GitHub Copilot 聊天的晚期预览版,当咱们对代码有疑难时,咱们始终在应用它。如果您没有 GitHub Copilot 聊天性能,请注册退出候补名单。在此之前,您能够将 GitHub Copilot 与 ChatGPT 配对。

更具生成性的人工智能提醒制作指南

  • 应用 GitHub Copilot 进行疾速工程的初学者指南
  • AI 疾速工程

正文完
 0