比较编码的LLM-金票或愚人的黄金?
#javascript #网络开发人员 #生产率 #ai

我觉得我既幸运又不幸地学习编码,因为AI出现在技术景观的最前沿。幸运的是,我有许多创新且有用的工具来帮助我磨练自己的手艺,但不幸的是,如果我不承诺效忠Mr. Roko,我会遭受永恒折磨的危险。希望我能赢得我们未来的霸主的支持,我将比较一些我熟悉的LLM,以确定哪个值得永恒的赞美。

比赛

我将看一下Chatgpt,Phind和Github Copilot。作为一个有趣的实验,我将让每个LLM自我介绍:

1。 chatgpt

chatgpt是GPT家族的OpenAI语言模型,专门生成对话文本。它是在广泛的互联网文本上进行的,使其能够掌握语法,事实和推理,并且可以针对特定任务进行微调。它专为自然语言对话而设计,通常用于聊天机器人,虚拟助手和客户服务应用程序。尽管它产生了类似人类的文本,但它缺乏真正的理解和意识,使其成为有限制的宝贵文本生成工具。

2。 phind

phind是针对程序员的AI驱动搜索引擎,提供相关信息和代码段来应对编码挑战。它使用大型的AI语言模型来从各种在线来源生成答案。关键功能包括智能代码搜索和协作选项,允许共享和讨论代码片段。它还学习并适应各个程序员的偏好和编码样式。 Phind是由Michael Royzen和Justin Wei共同创立的,他们均为Austin Turing Scholars '22,在各种科技公司的NLP研究和机器学习方面经验。

3。 github copilot

function explainGithubCopilot() {
  console.log(`Github Copilot is an AI pair programmer 
  that helps you write code faster and with less work.`)
}

我在Chatgpt方面拥有最多的经验,并且对结果感到满意。 Phind是我成功的成功,但是与OpenAI的解决方案相比,我发现它有点呆滞。上面的Copilot的片段是我使用该工具生成的第一个摘要,因此我对此文章的看法将在不断发展。让我们开始!

代码生成

出于本练习的目的,我将创建一个基本的Express应用程序,该应用程序可为PostgreSQL后端提供请求。让我们看看每个模型生成的内容,看看它们是否实际工作。

这是我将同时使用chatgpt和phind的提示:

生成一个简单的Express应用程序服务的代码库获取到PostgreSQL后端的请求。在您的示例中使用以下NPM软件包:

  • express
  • eis
  • pg-promise

我会跳过响应的文本说明,而不是专注于代码本身。

  • chatgpt

app.js

const express = require('express');
const app = express();
const path = require('path');
const pgp = require('pg-promise')();
const db = pgp({
  // Update with your PostgreSQL database connection details
  host: 'localhost',
  port: 5432,
  database: 'your_database_name',
  user: 'your_username',
  password: 'your_password'
});

// Set up EJS as the view engine
app.set('view engine', 'ejs');
app.set('views', path.join(__dirname, 'views'));

// Define a route that retrieves data from the PostgreSQL database
app.get('/', async (req, res) => {
  try {
    const data = await db.any('SELECT * FROM your_table_name');
    res.render('index', { data });
  } catch (error) {
    console.error('Error:', error);
    res.status(500).send('An error occurred');
  }
});

// Start the Express server
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
  console.log(`Server is running on port ${PORT}`);
});

views/index.ejs

<!DOCTYPE html>
<html>
<head>
  <title>Express App with PostgreSQL</title>
</head>
<body>
  <h1>Data from PostgreSQL Database</h1>
  <ul>
    <% data.forEach(item => { %>
      <li><%= item.column_name %></li>
    <% }); %>
  </ul>
</body>
</html>

在VSCODE中进行必要的设置后,该应用程序成功地为我的后端提供了请求。但是,我感到困惑的一件事是GPT对path模块的使用。它似乎正在使用它来配置我们的视图文件夹,但是我认为对于我们的目的,此配置是必需的。 Express/EJS已经知道在views文件夹中查看我们的视图而没有任何其他配置。果然,评论path的导入和视图配置不会影响应用程序的功能。

  • phind

app.js

const express = require('express');
const app = express();
const port = 3000;
const db = require('./dbConfig');

app.get('/users', (req, res) => {
  db.any('SELECT * FROM users')
    .then(data => {
      res.json(data);
    })
    .catch(error => {
      console.log(error);
    });
});

app.listen(port, () => {
  console.log(`App running on port ${port}.`);
});

dbconfig.js

const pgp = require('pg-promise')();

const db = pgp({
  user: 'your_username',
  host: 'localhost',
  database: 'your_database',
  password: 'your_password',
  port: 5432,
});

module.exports = db;

立即,我注意到Phind正在提供JSON响应,而不是EJS视图。设置时生成的代码确实有效,但它并未遵循我在提示中概述的所有准则。我跟进了另一个提示Send the data as a res.render using EJS instead of serving JSON。我等了五分钟,没有回应,然后决定放弃纠正它的尝试。这一定是由于Phind的不足性,并且与我的提前技​​能有关。无论如何,手工编写代码比尝试为如此简单的请求做出良好的响应,这并不是一个麻烦。

  • github copilot

在此示例中,我相信最好的行动是尝试自己编写代码,并注意其生成的任何建议。鉴于这是我对此工具的第一个实心核心,因此可能还有另一种方法可以更紧密地反映GPT或PHIND。但是目前我不能为RTFM感到困扰。

app.js

const express = require('express');
const app = express();
const port = 3000;
const pgp = require('pg-promise')();
const db = pgp('postgres://username:password@localhost:5432/database-name');

app.set('view engine', 'ejs');

app.get('/', async (req, res) => {
    const data = await db.any('SELECT * FROM users');
    res.render('index', {data})
    });

app.listen(port, () => {
    console.log(`Example app listening at http://localhost:${port}`);
    });

views/index.ejs

<body>
    <h1>Welcome to my app</h1>
    <ul>
    <% data.forEach(user => { %>
        <li><%- user.email %></li>
    <% }); %>
    </ul>
</body>

我安装了软件包并开始编写app.js,我就从第一行开始就得到了建议。我只需敲击标签键,直到文件完成为止,我就会逗乐自己,如果将我朝错误的方向纠正建议。它似乎很快就会理解我的校正,然后在我完成纠正线之前就产生了一个正确的自动校正。似乎很难帮助我使用index.ejs,并一直为登录功能提供建议,而不是我想要的简单无序列表。公平地说,副驾驶员没有真正的方法可以知道我在这里想要什么,最终我自己花了大约30秒钟的时间来编写EJS文件。总的来说,我对第一次尝试使用副驾驶员感到非常满意,我特别喜欢我对完成的代码做出了更多贡献(而不是仅从其他LLM中复制和粘贴)。

我的印象

ChatGpt的表现和我在这里的期望和期望一样,我知道我将继续使用它来帮助我前进。

Phind对ChatGpt的一件事是,它确实有能力引用其来源,当我想深入研究特定主题时,我发现这很有帮助。但是,我发现Phind最适合量身定制的搜索引擎,并且可以用作数字配对器。

我在副驾驶的第一次经历非常有前途,我期待探索它的能力。感觉比Chatgpt或phind更像是配对编程器,并且它可以访问我的完整代码库也很不错。使用ChatGpt时,几乎总是会从我的代码库中缺少某些上下文,尤其是随着基础变得更大,更复杂。

无论如何,我的印象是,生成的AI还有很长的路要走,要取代人类程序员。尽管这些工具很棒,但像我这样的新兴程序员仍然需要挖掘我们的高跟鞋,并为自己发展对工艺的理解。无论有多少人都希望,生产AI不是六位数技术薪水的免费门票。

如果您已经做到了这么远,请记下一张提醒我在29天内取消副审判的试用。谢谢!