2021年9月9日

如何用人工智能为你写代码

人工智能(AI)何时会发展到足以编写自己的代码,从而导致AI的自我扩散,这一问题仍然是科幻小说作家的问题。然而,机器学习(ML)的最新进展使代码片段的编写自动化成为可能,甚至可以帮助程序员自动编写“编辑器中的整行或整函数”,这是GitHub的Copilot.

这句话“一个好程序员是懒惰的程序员”,也许在使用代码来自动化代码的写作方面是完美的。本文将使用Python帮助您执行此操作。

Python的多功能性和易用性,以及AI提供的API的可用性,在自动化领域开辟了Myriad编程可能性。我将向您展示如何使用Python来编写一个识别语音输入的程序,并只需几步中生成所请求的代码:

  1. 设置语音识别,这样我们就可以告诉人工智能为我们写什么
  2. 确保AI可以解析语音输入
  3. 编写代码-编写你希望人工智能能够为你处理的程序

都准备好让你的编程生活变得更容易了吗?让我们开始吧。

开始之前:安装AI CodeWriter Python环境

要使用本文中的代码,您可以下载并安装我们的预构建版本AI CodeWriter环境,其中包含Python3.9版本和本文中使用的包,以及已解决的依赖项!

为了下载这个随时可用的Python环境,您需要创建一个188bet金宝搏备用帐户。只需使用你的GitHub证书或你的电子邮件地址注册。注册是容易的,它解锁ActiveState平台的许多好处为您!188bet金宝搏备用

或者你也可以用我们的国家的工具安装此运行时环境。

运行时

对于Windows用户,在CMD提示符下运行以下命令,自动下载并安装我们的命令行,状态工具和AI CodeWriter运行时进入虚拟环境:

powershell -command“&$([scriptblock] :: create((new-object net.webclient).dowloadstring('https://platform.activestate.com/dl/cli/install.ps1'))) -  activate-默认披萨团队/ AI-CODEWWRITER“

对于Linux用户,运行以下内容以自动下载并安装CLI,以及状态工具AI CodeWriter运行时进入虚拟环境:

——activate-default Pizza-Team/AI-CodeWriter .sh <(curl -q https://platform.activestate.com/dl/cli/install.sh

1-ai接受语音输入

现在是21世纪,如果我们要让人工智能为我们编写一些代码,我们要和它谈谈!创建我们的自动代码编写器的第一步是确保它能够识别我们的语音输入。为此,我们将创建一个函数使用你刚刚安装的库使用AI CodeWriter环境。我们可以像这样导入这些库和一些标准的Python库:

进口语音识别作为进口操作系统进口时间进口numpy作为NP

在函数中,我们将使用SpeechRecognition库激活机器的麦克风,然后以字符串的形式将音频转换为文本。当麦克风被激活时,我们可以打印出声明以及麦克风听到的文本,以便我们知道它正常工作。如果有太多的背景噪声或者对Google Cloud语音API的请求失败,我还包括可能发生的常见错误。

def():r = sr.recognizer()sr.microphone()作为source: print("I am listening…")audio = r.listen(source) data = ""尝试:Data = R.Recognize_Google(音频)打印(“您说:”+数据)除了sr.UnknownValue错误:打印(“谷歌语音识别无法理解音频”)除了高级请求错误作为艾凡:打印(“请求失败;{0}“.format (e))返回数据

你可以随意摆弄功能看谷歌云语音API如何解释您的声音。但现在AI可以听到我们,我们需要确保它可以解析和解释输入字符串,以便编写我们想要的代码。

2-AI翻译语音输入

我们需要根据您想要输出的代码解析输入字符串。有些事情需要记住:

  • 要创建列表,字符串的格式需要与要使用的格式不同,以创建字典或函数。
  • 我们还希望考虑多种数据类型,以便我们可以区分字符串一个整数呢1。在这里,我们可以使用函数将所有基于文本的数字转换为浮点数。
    • 当谷歌云语音API难以一致地以相同格式解释数字时,这一点特别有用。
deftext2float(textnum,numwords={}):如果numwords:单位=[“零”“一个”“两个”“三”“四”“五”“6”“七”“八”“九”“十”“十一”“十二”“十三”“14”“十五”“16”“十七”“十八”“十九”tens = [""""“二十”“三十”“四十”“五十”“六十”“七十”“八十”“九十”尺度= [“百”“千”“百万”“亿”“万亿”numwords [”和“] = (10idx、字Enumerate (units): numwords[word] = (1,idx)idx、字Enumerate (tens): numwords[word] = (1, idx *10idx、字枚举(尺度):numwords [word] =(10* * (idx *3.2),0Current = result =0单词textnum.split():如果单词numwords:提升例外情况(“非法单词:”+文字)缩放,递增= numword [word]当前=当前*缩放+增量如果缩放>100结果+ =当前当前=0返回浮动(结果+电流)

就像Siri、谷歌Assistant或Alexa一样,说话的方式决定了它被解读的好坏。“用数字创建一个列表”有很多不同的说法五个,这个词游戏者,电话号码是多少七个“或”写作功能x平方加一个.”任务的一部分是标识关键字列表或功能,后跟该关键字的输入。当然,我们如何解析输入将取决于所使用的关键字。要使这更容易,我们将假设关键字在字符串中的任何输入参数之前。

写入代码的3-ai

目标是使用一个函数来标识关键字,然后将文本字符串定向到另一个函数以创建由关键字标识的对象如果语句。关键字的数量是无限的,可以根据你的需要进行修改。为了简洁起见,我将举例说明这一策略的两个例子:

  • 创建列表
  • 多项式函数的生成

因此,我们的write_code函数将如下所示:

defwrite_code(数据):全球数据= data.split (" "数据=[x.lower()x数据)如果“列表”数据:输出= create_list(数据)倾听=错误的如果“多项式”数据:输出= create_polynomial(数据)倾听=错误的如果“停止倾听”数据:倾听=错误的打印(“听听停止”返回倾听,输出

为了更容易处理,我们可以将文本字符串拆分为多个字符串(由空格划分)或使一切小写。然后,我们继续如果使用我们选择的两个关键字的语句,列表多项式.现在,我们需要创建对应于每个关键字的函数。让我们先从列表

自动创建列表

如前所述,我们希望能够为列表中的每个元素指定数据类型,无论它是字符串、整数还是浮点数。有人可能会说:

  • “我想要一个包含整数的列表七个和字符串篮球运动.”

请注意,数据类型位于元素之前。因此,我们可以搜索数据类型的索引(即整数),获取下一个元素,并将其转换为数据类型text2float函数会派上用场。我们循环遍历相同数据类型的所有元素,将它们添加到空列表中,然后继续下一个数据类型。这个函数看起来像这样:

defcreate_list(数据):l=列表()如果“整数”数据:索引= [i +1我,年代枚举(数据)如果“整数”s]指数:尝试l.append (int[我])(数据)除了值错误:l、 追加(text2float(数据[i]))如果'漂浮'数据:索引= [i +1我,年代枚举(数据)如果'漂浮's]指数:l、 追加(浮点(数据[i]))如果'细绳'数据:索引= [i +1我,年代枚举(数据)如果'细绳's]指数:L.Append(数据[i])返回l

我使用整数,float和string,因为它们是最常见的Python数据类型,但您可以添加或采用任何其他数据类型。

自动创建多项式函数

对于我们的多项式函数,有人可能会说:

  • "创建多项式函数两次x平方加上四次x加七。

首先,在Python中似乎难以实现这一点,因为该函数具有不同顺序和不同系数的多个术语。然而,我们可以制定一些假设来简化这一点,因此需要传达的唯一重要信息是包含系数值的列表。例如,我们可以假设:

  • 系数列表的长度(- 1)对应于最大阶数(即长度3对应于一个二阶多项式)
  • 系数按降序排列(即最后一个系数为常数)

这意味着我们只需要说明系数,所以前一个陈述将成为:

  • "创建一个带有系数的多项式函数二百四十七.”

一旦我们认识到所有东西都在单词后面,这就更容易实现了系数是一个系数。一旦我们识别,分开并将系数转换为浮动,我们就可以使用numpy poly1d创建多项式函数。该函数看起来像这样:

def创建多项式(数据):指数= data.index (“系数”) +1coeff_list = data [indices:]coeff_list =列表(过滤器((coeff_list [1])(不适用,系数清单)co_list =列表()ccoeff_list:尝试有限公司=浮动(c)除了值错误:有限公司= text2float (c)co_list.append(co)返回np.poly1d (co_list)

请注意,Google Cloud语音API具有将连续数字解释为单个号码的趋势,因此它有助于在数字(例如“两个之间的任何分隔符中猛冲猛冲7”),然后过滤出分隔符。当然,您可能希望编写其他类型的函数。在这种情况下,可以向write_code函数并创建一个新函数。

最后,我们将所有内容放在一起并运行while循环:

time . sleep (2倾听=符合事实的虽然倾听==符合事实的data =听()监听,输出= write_code(数据)

对应的列表输出如下所示:

我正在听......你说:用整数三浮子1.5和弦篮球[3,1.5,'篮球']创建一个列表

对于多项式函数:

我在听…你说:创建一个系数为5 - 7 - 6的多项式([5。7。,6.])

非常酷,对吧?

结论 - AI可以帮助自动编码

“任何你需要两次编码的东西都值得自动化”这句老话在这里得到了改进,因为我们让我们的人工智能程序自动生成代码。虽然我们还没完全进去天网在这里,这里显示的例程提供了一个很好的例子,说明当前的ML技术如何能够自动完成常见的编码任务。当与IDE的自动完成功能以及GitHub的副驾驶程序相结合时,代码编写正变得越来越自动化。减少键入导致更多编码不是一件坏事至少要等到ai奇点发生。同时:

配置

使用ActiveS188bet金宝搏备用tate平台,您可以在几分钟内创建您的Python环境,就像我们为这个项目构建的环境一样。你自己试试吧或了解有关它如何帮助的更多信息Python开发人员的工作效率更高

推荐阅读

如何用Python和递归神经网络构建歌词生成器

人工智能分类模型能否检测人工智能生成的内容?

但丁Sblendorio

但丁Sblendorio

客座博客:Dante是目前在ÉcoleGolytechniqueFédéraledeLausanne攻击物理学博士学位的物理学家。他在数据科学中拥有硕士学位,并继续尝试并找到机器学习算法的新应用。他住在瑞士洛桑。