IT杂谈 / 技术 · 2022年6月2日 0

在2022年,你甚至可以用AI来提高码农失业率

去年六月底,微软和已经被它收购的Github宣布推出一款AI编程工具Copilot。这款工具利用了OpenAI旗下的新AI系统Codex,能够根据你的代码上下文,来自动生成新的代码,甚至是通过你写的几行注释,来生成满足注释内容的整串代码。

记得当时在IT之家看到新闻时就充满期待,毕竟有Github+微软+OpenAI三家大佬通力合作,依托于Github庞大的代码仓库,相比于此前的所谓AI代码工具一定会出色很多。

Github Copilot
Github Copilot

于是我在其开放测试时便申请加入测试,也早早地在VSCode里安装好了插件,只等申请通过。经过漫长等待,今天在写代码时突然看到窗口右下角弹出小小的一个是否同意Github Copilot使用我的信息,犹豫了一下,点了同意。然后并没有太在意这件事情,毕竟VSCode里各种插件会经常申请一些操作,已经习以为常。

然而接下来似乎有不一样的事情发生了。代码写着写着,突然发现光标后面多出了很多提示的代码,并且好像跟我想写的内容基本一致。我突然意识到,Copilot的申请通过了,而它已经在发挥效力。

于是便做了一些测试,如写好函数声明让它来写实现,或者写一段注释让它来自动生成代码,几乎每次都能出色完成任务。而在其他的编程场景中,它又会时不时悄无声息地给予提示,而这些提示和我想好的内容的相符程度,有时候会让人怀疑它是不是我肚子里的蛔虫。而这一切,真的是让我和同事啧啧称奇。

下面这段代码,便是一个很好的例子,从第8行到第31行的内容均为Copilot自动生成。而我所有的工作,只是告诉它我想要/ 获取美国昨天新冠确诊人数 / ,以及添加了三个可能用到的头文件,来告诉它我想用curl来实现这一切。剩下的,便是它的表演时间。在不到一分钟的时间里,我便完成了所有操作,并且为了视频里面的步骤能够更加清晰,我甚至没有用到快捷键。


#include <stdlib.h>
#include <stdio.h>
#include <curl/curl.h>

int main(int argc, const char **argv)
{
    /* 获取美国昨天新冠确诊人数 */
    CURL *curl;
    CURLcode res;
    curl = curl_easy_init();
    if (curl)
    {
        curl_easy_setopt(curl, CURLOPT_URL, "https://corona.lmao.ninja/v2/countries/us");
        curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);
        curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);
        curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
        curl_easy_setopt(curl, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_2);
        curl_easy_setopt(curl, CURLOPT_TIMEOUT, 10L);
        curl_easy_setopt(curl, CURLOPT_NOPROGRESS, 1L);
        curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, NULL);
        curl_easy_setopt(curl, CURLOPT_WRITEDATA, stdout);
        res = curl_easy_perform(curl);
        if (res != CURLE_OK)
        {
            fprintf(stderr, "curl_easy_perform() failed: %s\n",
                    curl_easy_strerror(res));
            exit(EXIT_FAILURE);
        }
        curl_easy_cleanup(curl);
    }
    return 0;
}

可以看到,它甚至学会了自己去找到拥有疫情数据网站的接口,自己完成所有的调用,甚至没有忘记对一些可能的异常进行判断和处理。

下面便是编译运行这段代码后得到的美国疫情数据,详细过程可以参见文首视频:

{
    "updated": 1654177993876,
    "country": "USA",
    "countryInfo": {
        "_id": 840,
        "iso2": "US",
        "iso3": "USA",
        "lat": 38,
        "long": -97,
        "flag": "https://disease.sh/assets/img/flags/us.png"
    },
    "cases": 86146955,
    "todayCases": 0,
    "deaths": 1032410,
    "todayDeaths": 0,
    "recovered": 82303090,
    "todayRecovered": 0,
    "active": 2811455,
    "critical": 2553,
    "casesPerOneMillion": 257376,
    "deathsPerOneMillion": 3084,
    "tests": 1030708130,
    "testsPerOneMillion": 3079380,
    "population": 334712903,
    "continent": "North America",
    "oneCasePerPeople": 4,
    "oneDeathPerPeople": 324,
    "oneTestPerPeople": 0,
    "activePerOneMillion": 8399.6,
    "recoveredPerOneMillion": 245891.6,
    "criticalPerOneMillion": 7.63
}

有时候不得不感叹,技术的发展,确实会让一些重复性的工作慢慢地被取代,即使是像编程这种脑力工作,也总会有被AI代替的一天。我们所能做的,只能是尽可能让自己的进步速度,略略超前于AI的发展速度了。