创作动机
此前在《Kimi、豆包与ChatGPT的对比分析》一文中,已经提及豆包缺少代码解释器的问题。虽然可以用自己的Code Interpreter替代,但总是需要切换平台,无法无缝集成到豆包或飞书的对话中。组织内部的其他员工也并非人人都有Code Interpreter,使用起来并不方便。

现如今,打工人无论是做企业决策、科学研究,还是个人项目,都离不开对数据的深入分析和处理。Python作为一种功能强大且简洁易学的编程语言,在数据分析和科学计算领域占据重要地位,也是Code Interpreter的编程语言。然而,并非人人都是Python高手,大多数打工人都还在不断学习,想要利用Python进行代码运行和数据分析并非易事。如果在工作对话过程中,通过自然语言的交互就能运行Python程序,做一些类似数据分析的事情,那会方便不少。
为了解决豆包环境中缺乏代码解释器的难题,基于扣子平台做了一个“Python代码终结者”的AI智能体。通过在豆包环境中模拟Code Interpreter的功能,为用户提供一种便捷、实时的编程体验。用户可以直接在聊天窗口用自然语言发出指令,机器人就会分析需求、运行代码、获取数据可视化结果,并导出必要的文件。
初步测试下来,除了能作为学习Python的好帮手,还能解决一些日常的数据分析和可视化任务。在扣子的Bot商店里搜索“Python代码终结者”即可找到,可以试用一下。
主要功能与特点
支持的编程语言和环境
Python代码终结者智能体主要支持Python语言,能够根据用户的需求准确运行各种类型的Python代码。无论是简单的数学计算、字符串处理,还是复杂的数据分析算法和机器学习模型,智能体都能轻松应对。
支持的代码类型和复杂程度
例如,如果需要计算两个数的和,可以直接向智能体发送指令:“计算 5 + 3 的结果。”智能体会产生对应的Python代码来进行计算,避免了大模型输出的不确定性。当然,如果有一段想执行的数据分析代码,只需将代码片段发送给智能体,它也会立即运行并返回结果。基于扣子插件的沙盒技术,智能体还可以加载外部模块,如numpy、pandas和sympy等,为数据分析提供更强大的支持。
代码执行和结果展示
用户可以在聊天窗口中输入Python代码,智能体将尝试运行并返回结果。使用了扣子的卡片格式返回结果,相比纯文本回复,更加直观和高效。这种无缝的互动体验,使用户无需离开豆包环境即可完成代码编写、调试与执行。
数据可视化功能
在数据分析过程中,数据的可视化尤为重要。Python代码终结者智能体支持Matplotlib这样的绘图库,用户可以通过简单的代码生成图表,并直接在聊天窗口中查看。智能体支持多种数据可视化方式,包括折线图、柱状图、饼图、散点图等。
文件输出与管理
智能体支持将代码执行的结果以文件形式导出,如CSV文件、图像文件等。用户可以方便地下载这些文件,以便后续处理或分享。
使用场景与应用
编程教学与学习
Python代码终结者智能体在编程教学与学习中有着一定的应用潜力。教师可以在豆包中与学生实时互动,通过智能体演示代码的运行结果,学生则可以即时提交代码并获取反馈,从而大大提高学习效率。
例如,想查看一个Matplotlib的例子,可以发送指令:“展示一个简单的Matplotlib代码示例”,智能体就会自动给出示例代码。如果想执行看结果,就点击“执行这段代码”的快捷指令。
数据分析与处理
日常的数据分析任务,比如数据清洗、统计分析和可视化等,都能在智能体中运行并得到即时的反馈,使得数据分析过程更加高效、灵活。
例如,销售在对话中正好有一组销售数据想要简单画图展示一下,不用打开Excel或PPT这样的工具。只要向智能体发送指令:“2000到2005年的销售额分别是:1万,3万,4万,5万,6万,7万,请帮我做个柱状图进行展示”,智能体就会根据数据自动生成柱状图,并将图表展示出来。
还可以通过调整指令中的参数,如图表的标题、坐标轴标签、颜色等,来定制自己想要的可视化效果。比如发指令说:“柱状图颜色帮我改成绿色”,智能体就会再画一个绿色的柱状图。
文件和图片下载
有时候想把代码运行的结果保存下来,因此添加了文件和图片下载功能,方便用户把文件分享给他人,或做进一步处理。
代码修复和解释
在实际测试过程中,大模型产生的代码会有一定概率出现错误,执行返回error,所以需要再次迭代修复一下代码。这个功能在Code Interpreter中会自动修复,但目前豆包的插件还不支持,只会返回执行的错误信息。因此添加了一个快捷指令“修复这段代码”,让智能体根据返回的错误信息,尝试修复代码并再次运行。
其他待研究功能
因为Python能做的事情很多,官方并没有给出代码执行器插件具体安装的Python库列表,所以只能尽量尝试。比如发现安装了Sympy库,可以用来求解数学方程式。比如发指令:“x^3+3x^2+3x+1=0,编写程序求解这个方程”,智能体就会运行Python代码来进行数学求解。之后如果有新的发现,也会持续分享。
智能体的工作原理
核心插件和挑战
Python代码终结者智能体能够理解用户的自然语言输入,生成对应的Python代码,并在安全的沙箱环境中进行执行。其核心是扣子的一个官方插件代码执行器(CodeRunner),这个插件接受一段Python代码,运行并返回执行结果。
如果都是正确的代码,那自然没有问题。所以这个智能体的核心挑战就是如何自动产生正确的代码。大家很容易想到,LLM可以生成代码,但实测时发现,直接让LLM生成代码成功率很低,因为LLM会以不确定的方式输出代码,而且会前前后后加很多解释和引导语。这样的字符串给到代码执行器,肯定无法执行,所以需要让LLM的输出更精确,不要有多余的废话,然后还需要把生成的代码从上下文中提取出来,这样成功率才会提高。
工作流模块划分
为这个智能体设计的工作流,主要分为四大模块:意图识别、LLM代码生成、代码后处理、以及代码执行模块。意图识别模块负责理解和处理用户输入的需求;LLM代码生成模块尝试产生包含Python代码的字符串;代码后处理负责提取纯粹的代码;代码执行模块在沙箱环境中安全地运行代码。
豆包环境中的集成
工作流设计好之后,能够无缝集成于豆包的机器人聊天环境中。通过豆包Bot平台的简单设置,智能体就能够调用工作流,快速响应用户请求,并将代码执行结果返回到聊天窗口中,确保用户体验的流畅性。
优势与局限性分析
相比 Code Interpreter,Python 代码终结者智能体能够直接绑定扣子支持的所有发布渠道,如豆包和飞书。这使得用户无需科学上网,就能在工作和生活的社交平台上,通过自然语言进行代码执行和数据分析任务,打破了编程环境的传统束缚。
然而,当前版本仍有一些局限。例如,智能体本身尚不支持上传文件的分析,代码生成执行的成功率并非100%,LLM的模型选项中尚无专门用于代码生成的大模型可选,代码执行器的运行时间也有限。期望未来豆包能直接推出类似Code Interpreter的功能,或者增强LLM和代码执行器对复杂Python代码的支持程度。
结语
Python 代码终结者智能体是基于扣子平台做的首个小实验,旨在弥补豆包中缺少代码解释器的缺陷。它可以依据用户需求运行 Python 代码、进行数据可视化以及输出文件等操作,为用户提供了高效、便捷的编程和数据分析工具。从实践来看,不管是在教学、学习方面,还是在实际项目里,它都能助力用户更出色地达成目标。不妨体验一下 Python 代码终结者智能体,期待更多的反馈与建议。
