上一篇我们说了,目前的大规模预训练模型技术还避免不了回答问题时出现低级错误。
但是其实,人类犯的逻辑错误也是层出不穷。
比如,有人就认为要想学好chatgpt,就要先学好Python。
其隐含的推理过程可能是这样的:
TensorFlow需要使用Python
PyTorch需要使用Python
Scikit-Learn需要使用Python
Hugging Face需要使用Python
...它们都是机器学习相关的库,它们都使用Python
=>
- chatgpt也是机器学习相关的库,所以也需要使用Python
甚至如果你单机用的是相对小众的设备比如3090,4090之类的卡,通用的框架库还不见得支持你的高端设备,还得自己从源码重新编译一个。
如果你还要搞跟CV相关的算法的话,那么你要装的库更多,很多本地库还冲突。还要安装适合CPU的并行计算库和数学库。Intel的相对成熟,如果你还买的是AMD的CPU,那继续适配吧。
诸如此类。
但是,现在所有的计算都是跑在openai的服务器上,你不管懂多少TensorFlow, PyTorch, JAX, Torch Dynamo, Torch Inductor, Trition, OpenMP, CUDA, Vulkan, TVM, LLVM MLIR等等通天本领都用不上。
现在能做的事情,基本上就是按照openai API的格式拼几个字符串和json串,发给openai的服务器,然后解析从openai服务器返回的状态码和结果的json串。
openai将它们的API封装在了一个Python库里面,我们可以像调用Python库一样去调用。这样也是有意义的,可以用来跟本地的其他框架进行协作。
安装老一套,pip:
不需要conda,没有版本的强需求。不需要CUDA,不需要MKL,Windows下不需要MinGW,... :)
然后去openai注册一个API key。
然后运行就可以了,只要你的网络连接没问题,就可以像网页一样看到chatgpt一样的结果了。
运行结果如下:
截至本文写作的2023年4月4日,gpt-3.5-turbo是最强大而且最划算的模型。其它的API,模型和方法,效果和费用都不如这一个。所以,要不要学习用text-davinci-003等其它模型全看兴趣了,它们不能提供更强的能力了。
有的同学表示,上面的语句看不懂,怎么办?
太好办了,把上面的代码发给openai的API,让chatgpt来给我们讲解:
这是openai api给我们返回的讲解:
生成代码如下:
翻译成Swift,大家自己改语句,我就不写了,结果如下:
让它帮我们翻译成Go语言:
我们发现,Go的翻译它用的是老模型davnici,我们教它一下新的python API用法,然后让它翻译成Go的:
[图片上传失败...(image-ac7361-1680684216530)]
还是老办法,prompt就写修复代码bug:
"""
completion = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[
{"role": "user", "content": str1}
]
)
print(completion.choices[0].message.content)
修复的bug如下:
- 使用了,在多线程下是线程安全的;
- 在处理字节数组转换为16进制字符串时,采用了更简单的方式;
- 采用了Java 7中引入的替代原有的,使用Java标准库中的字符集;
- 捕捉NoSuchAlgorithmException异常,以免发生错误。
输出如下:
还可以找关键字:
输出如下:
比如我们给出皮亚诺公理的5条公理,让gpt 3.5帮我们定义加法和乘法两种操作:
输出如下:
补全API的能力本质上跟Chat API没有太大的区别。因为不用指令角色了,比起Chat API能够更简洁一点。
我们来看一个例子:
输出如下:
text-davinci-003是基于最新的gpt 3.5的,能力较强而速度较慢的一个模型,如果想用更快但是质量差一点的可以采用更弱一些的基于gpt 3的text-curie-001,text-babbage-001和text-ada-001。他们的能力依次递减。
在目前这个时刻,text-davinci-003是比gpt-3.5-turbo要贵一点的,请注意关注下预算。
另外,gpt4目前只有在Chat API上才有。所以就是让大家知道有Completion这个API就好。目前不管是能力上(gpt4)还是预算上(gpt-3.5-turbo)都是Chat API占优。