出品 | CSDN(ID:CSDNnews)
AI 持续火爆的今天,国内已经诞生出上百家大模型,他们分布在营销、文旅、航空、医疗、教育、金融等各个领域,仅最近一个月,多家厂商都在紧锣密鼓的发布或更新自己的大模型。由于大模型其出色的性能和效果、泛化能力、降低成本的优势,未来会有更多的大模型加入,作为应用侧落地的一线开发者该如何抉择就变得非常重要。
2023 年 8 月 15 日,讯飞正式发布讯飞星火 2.0 版,发布会重点介绍了代码能力和多模态能力,并且发布了全新的智能编程助手 iFlyCode,该助手是一款 AI 编程工具,基于讯飞星火 2.0 大模型,具备 代码生成,代码补齐,代码纠错,代码解释,单元测试生成 5 项关键能力,而且代码生成和补齐维度上已经超过了 ChatGPT,耳听为虚,眼见为实,这次我们将通过两个真实需求,全方位体验 iFlyCode 这款工具。
其中,iFlyCode 与 4 款主流编码大模型,测试 50 道算法题(答案代码控制在 30 行内)的运行统计结果可明显看到 iFlyCode 已经领先于主流编码大模型,尤其是其运行时间与代码一次生成可用率。并且 iFlyCode 所有注释全部中文标记,无需声明特别指令。
考核维度
iFlyCode
ChatGPT 3.5
ChatGPT 4
StableCode
StarCoder
平均运行时间
1.5S
4S+
5S+
7S+
7S+
代码正确率
80%
80%
86%
50%
50%
代码注释
100%
100%
100%
不足40%
不足40%
自带测试用例
100%
低于70%
低于70%
CSDN实测 50道算法题运行统计结果
本次实战开发中,iFlyCode 还有很多优异的运行与能力表现,以下为实测详细内容:
iFlyCode 要挑战的两个实战需求
整体的体验过程会围绕两个需求展开,第一条是算法题解析,第二条是完成一个需求简易版 Demo。
需求一:用 Python 实现下述算法题
算法题我们拿一道比较简单的大厂 ACM 机试题,题目如下:
描述
将一个英文语句以单词为单位逆序排放。例如“I am a boy”,逆序排放后为“boy a am I”
所有单词之间用一个空格隔开,语句中除了英文字母外,不再包含其他字符
数据范围:输入的字符串长度满足 1≤n≤1000
注意本题有多组输入
输入描述
输入一个英文语句,每个单词用空格隔开。保证输入只包含空格和字母。
输出描述
得到逆序的句子
示例
输入:I am a boy
输出:boy a am I
需求二:用Python调用指定API,返回数据结果
通过 Python 调用 CSDN 指数查询接口,返回文字质量分。
以下代码都在 VSCode 中实现,按照下述步骤完成插件安装。
iFlyCode VS 国外 AI 工具实现算法题
我们选择了多款主流AI工具进行算法题解答,下图是 iFlyCode 与 ChatGPT 的运行对比。
下述是 2 的平台的代码对比,可以看到对于常规算法题,二者给出的代码逻辑基本一致。
Python
# iFlyCode 输出代码
def reverse_sentence(s):
words = s.split()
reversed_words = words[::-1]
return ‘ ‘.join(reversed_words)
# 测试
input_str = “I am a boy”
output_str = reverse_sentence(input_str)
print(output_str)
# ChatGPT 输出代码
while True:
try:
# 读取输入
input_str = input().strip()
# 将输入字符串按空格分割成单词列表,然后逆序排列
words = input_str.split()
reversed_sentence = ‘ ‘.join(words[::-1])
# 输出逆序的句子
print(reversed_sentence)
except EOFError:
break
为了测试得到更详尽的数据,笔者测试了 4 款主流编码大模型,测试了 50 道算法题(答案代码控制在30行内),得到如下结果。
考核维度
iFlyCode
ChatGPT 3.5
ChatGPT 4
StableCode
StarCoder
平均运行时间
1.5S
4S+
5S+
7S+
7S+
代码正确率
80%
80%
86%
50%
50%
代码注释
100%
100%
100%
不足40%
不足40%
自带测试用例
100%
低于70%
低于70%
通过 50 道算法题运行统计结果可明显看到 iFlyCode 已经领先于主流编码大模型,尤其是国内其运行时间与代码一次生成可用率。并且 iFlyCode 所有注释全部中文标记,无需声明特别指令,这一点让使用过程变得特别舒适。
几款大模型测试能看到,iFlyCode 可用度高,安装、配置、使用流畅简单,及易上手。
另外,在学习代码的时候,好的注释对代码阅读有非常大的帮助,但很多开源代码并没有编写注释,接下来我们使用 iFlyCode 的代码注释功能,标记一算法的核心逻辑。
首先选中【代码解释】功能,iFlyCode 可以特别快的对思路进行清晰的说明。
在实战中发现,可以直接选中部分代码,然后输入指令“给选中代码,添加详细注释”,可直接添加注释。
通过多次测试 iFlyCode 代码注释功能,发现如下优点:
•注释清晰,每行代码都有清晰注释;
•注释与代码匹配度高,不会出现添加注释后,但注释与代码不匹配情况;
•每行代码的注释不是单纯翻译代码,iFlyCode 增加了理解注释,例如 “将 totalNum 加上 2,表示匹配到了两个字符” ,这行注释就非常清晰易理解;
•iFlyCode 还可以给重点代码逻辑添加注释,即不使用逐行注释。
iFlyCode 在应用落地中的实战
在讯飞星火发布会上提到了一个关键词“10 倍工程师”,使用 iFlyCode 之后效率会有很大的提升,这一点对很多人来说,吸引力是巨大的。
接下来,我们通过 iFlyCode 交互式操作完成一款爬虫程序 Demo 的制作。
第一步,通过交互问答,完成接口初次调用
请求网址:https://library.hsfz.net.cn/userlib/bookfind.asp?ft=0
请求方法:POST
输入 Prompt 得到第一步代码。
Python
编写Python代码,通过 POST 形式访问 https://library.hsfz.net.cn/userlib/bookfind.asp?ft=0,传递txtName 参数,其值为 Python
生成如下代码:
Python
import requests
url = “https://library.hsfz.net.cn/userlib/bookfind.asp?ft=0”
data = {“txtName”: “Python”}
response = requests.post(url, data=data)
print(response.text)
运行之后提示出现下述错误信息(编码错误),接下来继续通过 iFlyCode 智能问答进行修改。
Shell
Traceback (most recent call last):
File “▒㷨▒▒▒▒▒.py”, line 9, in
print(response.text)
UnicodeEncodeError: ‘gbk’ codec can’t encode character ‘\xcd’ in position 28: illegal multibyte sequence
输入如下 Prompt 指令。
刚刚代码报错 UnicodeEncodeError: ‘gbk’ codec can’t encode character ‘\xcd’ in position 25: illegal multibyte sequence 请修改完善
得到最新的代码,运行新代码,发现已解决上述编码错误问题。
Python
import requests
url = “https://library.hsfz.net.cn/userlib/bookfind.asp?ft=0”
data = {“txtName”: “Python”}
response = requests.post(url, data=data)
print(response.content.decode(‘gbk’))
第二步,提取网页目标数据
这一步很重要,需要配合一些基础逻辑实现,首先通过一个目标元素模板,获取用于提取目标元素的正则表达式。
HTML
Python可以这样学索书号:TP311.56/D652著 者:董付国著 出版社:清华大学出版社 2017.2馆 藏:总计6册,在库6册【初中部图书馆2册,初中部智能柜②1册,二楼开架书库3册】
输入关键 Prompt 如下所示。
网页返回的结果如下所示
这里添加刚刚的HTML表格模板
使用正则提取表格中的文字信息
在 iFlyCode 中的输入效果如下。
此时得到一个可运行的 Python 代码,直接复制代码再次出现了编码错误,询问 iFlyCode 之后添加文件头 # -*- coding: utf-8 -*- 即可解决 。
Python
# -*- coding: utf-8 -*-
import re
html = “””
Python可以这样学索书号:TP311.56/D652著 者:董付国著 出版社:清华大学出版社 2017.2馆 藏:总计6册,在库6册【初中部图书馆2册,初中部智能柜21册,二楼开架书库3册】
# 提取索书号
so_number = re.search(r’索书号:(.*?)‘, html).group(1)
print(“索书号:”, so_number)
# 提取著者
author = re.search(r’著 者:(.*?)<‘, html).group(1)
print(“著者:”, author)
# 提取出版社
publisher = re.search(r’出版社:(.*?) ‘, html).group(1)
print(“出版社:”, publisher)
# 提取馆藏信息
collection = re.search(r’馆 藏:总计(.*?)册,在库(.*?)册’, html).group(1, 2)
print(“馆藏:总计”, collection[0], “册,在库”, collection[1], “册”)
运行代码得到如下结果,达到预期。
上述代码通过传入不同 HTML 源码进行了多次生成,最终找到了一个匹配度高的正则表达式,开发者在实践的时候,也可以传入多个示例,得到完美答案。
下面只需要将第一步获取的网页结果中,提取出对应的表格元素拼接到整体代码中,即可完成本案例,这里我们依旧使用 iFlyCode 的交互问答。
最后只需要简单的代码拼接,实现本案例,下述代码就是我们拼接之后的第二步完整代码。
Python
# -*- coding: utf-8 -*-
import requests
from bs4 import BeautifulSoup
import re
url = “https://library.hsfz.net.cn/userlib/bookfind.asp?ft=0”
data = {“txtName”: “Python”}
response = requests.post(url, data=data)
html = response.content.decode(‘gbk’)
soup = BeautifulSoup(html, ‘html.parser’)
# 找到第2个表格
table_2 = soup.find_all(‘table’)[1]
# 找到表格中的所有子表格
sub_tables = table_2.find_all(‘table’)
# 打印子表格的HTML代码
for sub_table in sub_tables:
# print(sub_table)
# 提取索书号
so_number = re.search(r’索书号:(.*?)‘, str(sub_table)).group(1)
print(“索书号:”, so_number)
# 提取著者
author = re.search(r’著 者:(.*?)<‘, str(sub_table)).group(1)
print(“著者:”, author)
# 提取出版社
publisher = re.search(r’出版社:(.*?) ‘, str(sub_table)).group(1)
print(“出版社:”, publisher)
# 提取馆藏信息
collection = re.search(r’馆 藏:总计(.*?)册,在库(.*?)册’, str(sub_table)).group(1, 2)
print(“馆藏:总计”, collection[0], “册,在库”, collection[1], “册”)
在 Python 环境中运行上述代码,得到目标结果。
在使用 iFlyCode 基于生成代码的过程中,碰到细节问题,直接使用交互问答就可以得到修改建议,例如下面询问的 bs4.element.Tag 对象如何转换为字符串。
iFlyCode 使用总结及未来展望
今天给大家展示了讯飞星火新推出的 AI Code 工具:iFlyCode,整个应用过程中,体验非常好,优点如下所示:
流畅的生产速度
iFlyCode 生产代码速度极快,包含其交互问答部分,输出也非常流畅。
代码准确度
做到了一键出码,其生产代码可用度极高,笔者重点测试了国外主流产品的正则表达式生成功能,iFlyCode 可以完胜。
代码纠错,修BUG能力
使用大模型生成代码,无法避免代码BUG,因此代码纠错能力属于及高频动作,实战中我们会用其修复已有代码,也会修复其自生成代码,iFlyCode 在纠错能力上表现优异,极少出现其它大模型反复提供相同代码的问题。
AI 大模型不止在国内,在全球都在掀起新一轮技术革命和商业浪潮,以前要反复编写的代码,现在只需使用一句 “用 Python 提取视频的3~20秒” ,即可全自动化实现。除了通用大模型之外,与行业深度结合的大模型,将会给各个领域带来更大的价值。
iFlyCode 已经展示了星火大模型与编程领域之间的初步结合,仅仅 1.0 版本就让我们看到其在编程场景下的巨大助力,逻辑不复杂且重复度高的代码,直接让 AI 编程助手解决;需要检索的问题,一键搜索答案;有潜在风险的代码,一键完善优化……未来,AI 编程助手会进一步简化程序员的工作,提升生产效率,让更多开发者的精力得到释放,去做更多创造性的工作。
基于讯飞星火大模型的 iFlyCode 在国内已经走出了关键的第一步,相信不久的将来掌握 AI 工具的新程序员就会大量的出现,一个新时代已经到来,大家一起加入吧!
原文链接:https://www.163.com/dy/article/ICU289U00511FQO9.html