关于Bito
自从ChatGPT引领的这一波人工智能热度以来,大语言模型的众多应用已经开始落地。对于程序员来说,基于大语言模型(LLM)训练出来的GPT类应用已经可以自动生成一些代码。在未来人工智能是否会替代程序员的工作一直是大家热议的话题。目前普遍得到的共识是,当前以ChatGPT为代表的大语言模型在短时间内无法完全取代程序员的工作,但作为一名程序员,还是要主动拥抱人工智能带来的变革。如何应用AI工具,为程序的设计和开发赋能。
最近用到的Bito就是这样一款帮助程序员赋能的工具,按照其官方的说法,它是一种功能齐全的瑞士军刀,可以使用与ChatGPT相同的模型,将开发人员的生产力提高10倍,每天节省一小时!
Bito AI使得编写代码、理解语法、编写测试用例、解释代码、注释代码、检查安全性以及解释高级概念变得非常容易。Bito基于数十亿行代码和数百万份文档的训练,我们可以通过Bito们完成许多任务,而无需上网搜索或浪费时间在繁琐的事情上。
如何安装Bito
Bito安装起来非常简单,以JetBrain IDEs(Idea、DataGrip和Pycharm为例),直接在插件搜索中安装即可。
插件安装完成之后需要注册一个账号,这步直接找一个邮箱注册即可,目前还处在免费的状态。
验证完成即可开始体验Bito的功能了。
基本功能
这里以pycharm为例介绍Bito的基本功能。
编写代码
Bito可以帮助我们快速地生成代码,同时可以根据实际需要给Bito生成的代码提要求,如:
写一个快排算法,函数名为quick_sort,输入输出类型均为list,要求用递归实现,写上必要的代码注释
Bito可以将生成好的代码(白色箭头所示)插入到你打开的代码框中,生成可以执行的代码。
def quick_sort(arr):
"""
快速排序算法实现
:param arr: 待排序的列表
:return: 排序后的列表
"""
if len(arr) <= 1:
return arr
else:
pivot = arr[0] # 选择第一个元素作为基准值
less = [x for x in arr[1:] if x <= pivot] # 小于等于基准值的子列表
greater = [x for x in arr[1:] if x > pivot] # 大于基准值的子列表
return quick_sort(less) + [pivot] + quick_sort(greater)
# 示例用法
input_list = [4, 2, 8, 0, 5, 1, 9, 3, 7, 6]
sorted_list = quick_sort(input_list)
print(sorted_list)
代码解释
这个场景适用于解读别人的代码,sqlparse是一个用于解析和格式化SQL语句的Python库,我们想知道sqlparse是如何切分多个sql语句的,可以用Bito帮助我们分析代码,选中代码之后直接点击Explain Code(Alt+Shift+E)。
功能说明
以一个处理爬基金网站数据代码中json字符串的类为例,选中代码之后直接点击Explain Code(Alt+Shift+V)。
功能说明和代码解释的区别是,前者基于每一行代码进行解释,方便开发者理解代码。功能说明则是对整个代码的功能的一个概述,方便使用者快速了解该代码实现的功能。
代码性能优化
接下来一个更加神奇的功能,Bito可以对当前的代码给出合理化建议,同时生成优化后的代码,以这个代码为例,给出的合理化建议确有可以采纳的地方,但是优化后的代码就比较一般了,和原有的代码差别并没有特别大,只是做了一些格式化的操作,这也是Bito背后的大语言模型值得改进的地方。当然
代码风格检查
相比于难度更高的性能优化,代码风格检查的效果相对要好得多,把一些不符合变量命名规范的代码做优化。同时提高代码的可读性。
这里会现给出优化建议,然后直接修改原有的代码,同样地点击Insert Change可以把优化后的代码覆盖掉原有的代码,非常方便,在此之前,点击View Diff可以查看代码风格优化的部分:
从上述变化中,看出代码风格的检查还是起到了效果的,举几个例子:
- 把不符合代码命名规范的
Csv_output
改成了output_to_csv
,同时类名不符合规范,应该为CrawlerJson - 把含义比较模糊的变量名
self.type
改成了self.fund_type
。 - Bito认为
if data[i] == ''
不够Pythonic,改成了if not data[i]
生成单测用例
以前面介绍的快排算法为例,选定代码之后,可以直接生成关于这段代码的单测用例,使用这个功能,可以大大地提高写单测的效率,从而更好地提升代码质量,针对前面介绍的快排算法实现,可以用Bito生成单测用例:
生成的用例还是可以直接运行的:
import unittest
class QuickSortTestCase(unittest.TestCase):
def test_quick_sort(self):
# 正常情况下的测试用例
arr = [4, 2, 7, 1, 3, 6, 5]
expected = [1, 2, 3, 4, 5, 6, 7]
self.assertEqual(quick_sort(arr), expected)
# 边界情况下的测试用例
arr = [1]
expected = [1]
self.assertEqual(quick_sort(arr), expected)
# 特殊情况下的测试用例
arr = []
expected = []
self.assertEqual(quick_sort(arr), expected)
# 负面情况下的测试用例
arr = [4, 2, 7, 1, 3, 6, 5, 'a']
self.assertRaises(TypeError, quick_sort, arr)
if __name__ == '__main__':
unittest.main()
单纯作为ChatGPT的客户端使用
Bito本身会依赖大语言模型,基于此,也可以作为一个ChatGPT的客户端使用,可以问除了代码之外的任何问题,包括一些技术问题,当代码开发遇到阻碍时,可以让Bito给你一些思路,当遇到报错时,也可以将错误代码贴到Bito中,让它分析错误原因,而对于一些算法/框架的原理不了解时,也可以在Bito这里得到答案。
总结
总而言之,Bito对于程序员来说,是一个可以释放双手的神器,同时它作为一个插件,基本上支持了现在的主流IDE,使用和上手都非常的方便,更重要的一点是,它到目前为止,还是免费的。对于这样一个提高程序员效率的神器,还等什么呢,也赶快上手试一试吧。
更详细地介绍,详见Bito官网:https://docs.bito.ai/getting-started