Skip to content

huqianghui/GPT-Code-Interpreter

Repository files navigation

1. openAI的chatgpt提供新功能 code interpreter

B站视频讲解: https://www.bilibili.com/video/BV1LH4y1Q7X8/

youtube视频讲解: https://youtu.be/erETVeOU_5U

gpt-code-diagram

代码解释器特别有用的用例如下:

a) 解决定量和定性数学问题

b) 进行数据分析和可视化

c) 在不同文件格式之间进行转换

文档说明如下:

https://openai.com/blog/chatgpt-plugins#code-interpreter

功能演示如下:

ChatGPT.interpreter.plug-in.demo.on.Vimeo.mp4

需要开通openAI plus,每个月支付20刀才能使用

2. 开源代码不同实现

a. https://github.com/ricklamers/gpt-code-ui image

b. https://github.com/shroominic/codeinterpreter-api

clone下来,运行起来,遇到一个错误。(shroominic/codeinterpreter-api#97)

Screenshot 2023-08-22 at 15 22 40

3. 当前是从 https://github.com/ricklamers/gpt-code-ui 拷贝过来,做一些分析和适配改造。

Screenshot 2023-10-17 at 09 56 03

a. prompt解析

想应用LLM,prompt至关重要,所以首先来看一下prompt是怎么写的。

在文件:gpt_code_ui/webapp/main.py中 Screenshot 2023-08-22 at 15 36 34

b. 配置

根据.env.azure-exampl 来配置相应的变量,然后修改文件为.env文件。 代码启动的时候,会去读这个文件。

load_dotenv('.env')

c. 运行方式

除了直接通过pip install 生成可执行文件gptcode之外,还可以通过make 命令把静态资源打包到gpt_code_ui/webapp/static下面。

(详细参见Makefile,我把Makefile中的 upload task删除了,本地编译不需要上传。)

根据prompt或者文档预先安装一些包,如果后期运行报错,根据错误再来安装也可以。

然后就可以直接运行 gpt_code_ui/webapp/main.py文件

d. 示例运行

功能视频演示如下:

gpt-code-interpreter-oss.mov
1) 上传一个csv文件,让它给出一些可视化统计。(Can you run some basic visualization?)
Screenshot 2023-08-22 at 15 52 43
2) 根据URL等,生成QR code
Screenshot 2023-08-22 at 15 50 14
3) 图片处理,变大小,改变颜色等。
Screenshot 2023-08-22 at 16 23 17 Screenshot 2023-08-22 at 16 36 20
4) mysql 数据库连接,查询数据

@sql,query the books table, group by column "authors" of top 5 in bar picture and the column "authors" is not null.

Screenshot 2023-10-17 at 13 39 45

f. 运行稳定性优化

1) Kernel 进程默认如果不指定资源cpu和memory会卡主。
     指定了2core 4G之后,得到明显好转
     (规范一下资源模版: 
     [为容器和 Pod 分配内存资源](https://kubernetes.io/zh-cn/docs/tasks/configure-pod-container/assign-memory-resource/) | [为容器和 Pods 分配 CPU 资源](https://kubernetes.io/zh-cn/docs/tasks/configure-pod-container/assign-cpu-resource/))
  
    ***如果使用其他的serverless,比如web app或者container app也要对资源做相应的配置***
2) 如果单个azure openAI,用户多的时候,容易出现限流
     通过roundrobin 方式,轮训和retry
3) 上传文件,如果部署多个pod的时候,出现文件找不到。(session也没有粘合)
     [绑定azure file的PVC](https://learn.microsoft.com/en-us/azure/aks/azure-csi-files-storage-provision)
  
     [NFS共享访问](https://learn.microsoft.com/zh-cn/azure/storage/blobs/network-file-system-protocol-support-how-to)
  
     或者serverless对storage的支持。
  
     ***代码都要做相应的调整***
4) 代码出现错过的概率也有
     用python语法树,做语法检查。然后inject prompt,再re-generate code
  
     支持pip install 通过正则匹配过滤掉
5) 使用过程中,数据出现错误,比如null值等。包括生成的代码里面运行时异常
     常见问候,导致的代码错误,通过拒绝回答来避免错误
  
     比如去访问的数据结构,比如询问天气,调用的API是401错误,但是没有判断,所以接下来会出现runtime Exception,不生成python来规避
  
     数据空指针等,目前应对,实际情况,考虑prompt内置一些防御的prompt,比如过滤null等让用户体验更好。
6)回答的内容,需要用用户的语言来描述和注释
     用azure TextAnalyticsClient来检测语言的时候,***也有随机性如果输入太少比如:你好经常识别成英语,如果指定地域cn的话,容易识别成 繁体字***
7) 在matlibplot中,图片中的字体乱码。

本地安装字体,然后指定一下字体内容。可以在font文档夹中获取到。

把font放到拷贝到:

~/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf

修改文件:

~/python3.10/site-packages/matplotlib/mpl-data/matplotlibrc #font.sans-serif: SimHei,

效果如下图: 中文可以正常显示:

Screenshot 2023-09-13 at 15 34 44

g. 后续功能优化

  1. user kernel_env 隔离
  (https://github.com/dasmy/gpt-code-ui/tree/dev/kernel_env)
  (https://github.com/shroominic/codebox-api/tree/main)
  2. user session 管理(https://github.com/dasmy/gpt-code-ui/tree/dev/session_management)

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published