让没有 ChatGPT Plus 会员的小伙伴也能用上低配版代码解释器(Code Interpreter)功能,秘诀就是自己造轮子,话不多少,先看效果,然后我会讲解具体实现,最后送上源码。
硬核教程!手把手教你开发自己的 ChatGPT 代码解释器插件
按照需求写代码并自动进行代码功能测试验证,比如写一个限流算法
获取国家统计局下载各省年度 GDP 数据,直接上传文件比较四个直辖市 GDP 数据
代码解释器(Code Interpreter)实际上就是一个 REPL(读取-评估-打印循环),例如给它一个文件(例如 CSV 文件),然后可以要求它转换文件或从文件中提取一些信息,甚至使用该文件作为计算的输入。既然已经有 API(GPT-4 和 GPT-3.5) 可用于访问代码解释器的底层模型,再叠加 Prompt 工程,是存在构建自己本地版本的可能的,即 REPL + LLM ,一个通过执行代码来完成日常任务的个性化工具,下面就是应用架构
Jupyter 内核与具体语言无关
它提供了一个计算内核,相当于一个可以执行代码的环境
这个内核通过一种协议与外界交互,这种协议将用户的标准输入(stdin)连接到内核的 REPL(Read Evaluate Print Loop,读取评估打印循环)
内核执行代码后,将执行结果、标准输出(stdout)和标准错误(stderr)反馈回来,显示给用户
通过这种协议,Jupyter 内核可以执行任何语言的代码,并将执行结果返回给用户
Jupyter 内核协议主要定义了
在这一协议基础上,可以用任意通信机制来实现内核和客户端之间的交互,这里采用了 snakeMQ(Python 实现的消息队列库),理论上也可以用 HTTP 请求、用 WebSocket 等实现。
最后将使用 React 构建的 SPA 打包到 Python 包中,再把这个 Python 包发布到 PyPI。这个思路借鉴了 Streamlit,但是技术细节上不同,Streamlit 原先用的是 CRACO 来配置 React 应用,这里使用更先进的 Vite 来打包 SPA。简单来说,就是将前端代码打包到后端 Python 包中,以实现前后端集成部署。
名词解释
源版本的实现是不支持中文的,传送地址 https://github.com/ricklamers/gpt-code-ui
如果觉得内容不错,欢迎关注,点赞和收藏~
硬核教程!手把手教你开发自己的 ChatGPT 代码解释器插件