让没有 ChatGPT Plus 会员的小伙伴也能用上低配版代码解释器(Code Interpreter)功能,秘诀就是自己造轮子,话不多少,先看效果,然后我会讲解具体实现,最后送上源码。
效果演示
执行代码
按照需求写代码并自动进行代码功能测试验证,比如写一个限流算法
执行代码演示
数据分析
获取国家统计局下载各省年度 GDP 数据,直接上传文件比较四个直辖市 GDP 数据
数据分析演示
实现原理
代码解释器(Code Interpreter)实际上就是一个 REPL(读取-评估-打印循环),例如给它一个文件(例如 CSV 文件),然后可以要求它转换文件或从文件中提取一些信息,甚至使用该文件作为计算的输入。既然已经有 API(GPT-4 和 GPT-3.5) 可用于访问代码解释器的底层模型,再叠加 Prompt 工程,是存在构建自己本地版本的可能的,即 REPL + LLM ,一个通过执行代码来完成日常任务的个性化工具,下面就是应用架构 👇
应用架构图
Jupyter kernel process 解释
- Jupyter 内核与具体语言无关
- 它提供了一个计算内核,相当于一个可以执行代码的环境
- 这个内核通过一种协议与外界交互,这种协议将用户的标准输入(stdin)连接到内核的 REPL(Read Evaluate Print Loop,读取评估打印循环)
- 内核执行代码后,将执行结果、标准输出(stdout)和标准错误(stderr)反馈回来,显示给用户
- 通过这种协议,Jupyter 内核可以执行任何语言的代码,并将执行结果返回给用户
Jupyter 内核协议主要定义了
- 消息类型:stdin、stdout 等不同类型的消息格式
- 消息封装:使用 JSON 格式封装消息
- 通信模式:请求-回复、推送等模式
- 接口方法:内核需要实现的接口方法,如执行代码、代码完成等
在这一协议基础上,可以用任意通信机制来实现内核和客户端之间的交互,这里采用了 snakeMQ(Python 实现的消息队列库),理论上也可以用 HTTP 请求、用 WebSocket 等实现。
整体执行流程
- 用户在页面输入指令,发送到 Flask 应用后端
- 后台结合设计好的 Prompt 将用户的指令转换后发送到 LLM
- 获得 LLM 的响应(代码内容)后,Flask 通过 SmakeMQ 将代码内容发送到 Jupyter 内核
- Jupyter 执行后,将结果通过 Flask 接口返回到(Stream 流的方式)前端
- 页面展示结果
Python 包制作
最后将使用 React 构建的 SPA 打包到 Python 包中,再把这个 Python 包发布到 PyPI。这个思路借鉴了 Streamlit,但是技术细节上不同,Streamlit 原先用的是 CRACO 来配置 React 应用,这里使用更先进的 Vite 来打包 SPA。简单来说,就是将前端代码打包到后端 Python 包中,以实现前后端集成部署。
名词解释
- SPA:Single Page Application 网页单页应用
- CRACO:Create React App Configuration Override,一种工具,可以修改 Create React App 生成的默认配置,让开发者可以自定义配置
- Vite:一种新型前端构建工具,能够显著提升前端开发体验
- Streamlit:一个开源应用程序框架,旨在简化为机器学习和数据科学构建 Web 应用程序的过程
支持的功能列表
- 文件上传
- 文件下载
- 多轮对话(上下文感知意图)
- 生成代码
- 运行代码(Jupyter 内核)
- 模型切换(GPT-3.5 和 GPT-4)
读者福利:如果大家对大模型感兴趣,这套大模型学习资料一定对你有用
对于0基础小白入门:
如果你是零基础小白,想快速入门大模型是可以考虑的。
一方面是学习时间相对较短,学习内容更全面更集中。
二方面是可以根据这些资料规划好学习计划和方向。
资源分享
大模型AGI学习包
资料目录
- 成长路线图&学习规划
- 配套视频教程
- 实战LLM
- 人工智能比赛资料
- AI人工智能必读书单
- 面试题合集
《人工智能\大模型入门学习大礼包》,可以扫描下方二维码免费领取!
1.成长路线图&学习规划
要学习一门新的技术,作为新手一定要先学习成长路线图,方向不对,努力白费。
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图&学习规划。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。
2.视频教程
很多朋友都不喜欢晦涩的文字,我也为大家准备了视频教程,其中一共有21个章节,每个章节都是当前板块的精华浓缩。
3.LLM
大家最喜欢也是最关心的LLM(大语言模型)
《人工智能\大模型入门学习大礼包》,可以扫描下方二维码免费领取!