ChatGPT

手把手教你开发自己的ChatGPT代码解释器插件

对不起,我又标题党了,终于成功引起了你的注意,不过这篇肯定是干货。让没有 ChatGPT Plus 会员的小伙伴也能用上低配版 ChatGPT 代码解释器(Code Interpreter)功能,秘诀就是自己造轮子,话不多少,先看效果,然后我会讲解具体实现,最后送上源码。

手把手教你开发自己的 ChatGPT 代码解释器插件

效果演示

执行代码

按照需求写代码并自动进行代码功能测试验证,比如写一个限流算法

执行代码演示

数据分析

获取国家统计局下载各省年度 GDP 数据,直接上传文件比较四个直辖市 GDP 数据

手把手教你开发自己的 ChatGPT 代码解释器插件

数据分析演示

实现原理

代码解释器(Code Interpreter)实际上就是一个 REPL(读取-评估-打印循环),例如给它一个文件(例如 CSV 文件),然后可以要求它转换文件或从文件中提取一些信息,甚至使用该文件作为计算的输入。既然已经有 API(GPT-4 和 GPT-3.5) 可用于访问代码解释器的底层模型,再叠加 Prompt 工程,是存在构建自己本地版本的可能的,即 REPL + LLM ,一个通过执行代码来完成日常任务的个性化工具,下面就是应用架构

手把手教你开发自己的 ChatGPT 代码解释器插件

应用架构图

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)

源码获取

源版本的实现是不支持中文的,传送地址 https://github.com/ricklamers/gpt-code-ui

中文支持

效果演示中可以正常解析中文内容,是因为我做了二次开发,支持了中文内容的理解以及中文字体的支持,可以后台回复代码助手获取源码。

相关推荐

ChatGPT,安全生产领域怎么用?  (2023-10-9 9:5:33)

ChatGPT有哪些应用场景?主要分为三个模块  (2023-10-8 15:28:58)

你知道chatGPT也能联网吗?其实这个功能很方便!  (2023-10-8 9:34:16)

探索ChatGPT的隐藏功能:一键生成word排版  (2023-10-7 19:24:43)

AI绘图,人人都需要学习的chatgpt,人人都需要学习的chatgpt  (2023-10-7 15:16:55)

ChatGPT是啥?一文解析ChatGPT的定义和用途  (2023-10-7 11:47:40)

ChatGPT的误用与潜力:注意误区,发挥优势  (2023-10-7 7:56:12)

ChatGPT:智能办公的未来,提高工作效率  (2023-10-6 19:6:34)

ChatGPT怎么读?一文教你正确发音ChatGPT的方法  (2023-10-6 18:10:6)

文心一言和ChatGPT,为人们提供更加智能的聊天服务  (2023-10-6 11:24:21)

发表评论:

验证码

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。