侧边栏壁纸
  • 累计撰写 25 篇文章
  • 累计创建 15 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

ChatGPT的初探与使用

whfree
2022-12-26 / 0 评论 / 0 点赞 / 1 阅读 / 5226 字

前言

ChatGPT 最近是真的火,公众号、B 站到处是博主晒和它的聊天截图。也有人做过深度测试,发现它并不总是靠谱,回答错了得你指出来,它马上回一句:

那我错了。您说的是对的……

认错倒是干脆,但有些网友说,它改了之后你再问一遍,回答的还是同一个错误答案。

计算分数之和

不管怎么说,ChatGPT 确实让很多人震惊:能写代码、能写文章,还有人拿同样的问题去问它和 Google,觉得 ChatGPT 的回答完爆搜索结果,直呼 "Google Done"。

别人的感受听听就好,自己上手试了才算数。注册 ChatGPT 需要国外手机号收验证码,我用的是接码平台 SMS-Activate,花了 11 卢布左右,差不多一块钱,能接受。具体的注册教程网上很多,就不重复了。

关键是现在已经有不少 ChatGPT 的开源项目,我也拿 OpenAI 开放的接口探索了一番。

把 ChatGPT 搬进 Python

模型探索

先在 OpenAI 的接口文档里看模型介绍,主要有三类:

模型 描述
GPT-3 一组可以理解和生成自然语言的模型
Codex 一组可以理解和生成代码的模型,能把自然语言转成代码
Content filter 经过微调的模型,检测文本是否敏感或不安全

以下内容主要是官方文档的翻译,了解即可。

GPT-3

型号 描述 最大请求
text-davinci-003 GPT-3 里最强的模型,能完成其他模型能做的所有任务,输出质量更高、更长,也更遵循指令。支持在文本中间插入补全,语义更连贯 4000 字符
text-curie-001 能力不弱,比 Davinci 更快、成本更低 2048 字符
text-babbage-001 能完成简单的任务,速度快、成本低 2048 字符
text-ada-001 只能完成非常简单的任务,通常是 GPT-3 系列里最快、最便宜的 2048 字符

Davinci 通常效果最好,但其他模型在特定任务上也可能更快更省钱。比如 Curie 能做很多和 Davinci 一样的事,速度更快,成本只有它的十分之一。

建议实验阶段先用 Davinci 拿最好的结果,正式使用时再试试其他模型,看能不能用更低的延迟换到差不多的效果。也可以针对特定任务微调模型来提升性能。

Codex

Codex 是能理解和生成代码的 GPT-3 后代,训练数据包含自然语言和 GitHub 上数十亿行公开代码。它最擅长 Python,也精通 JavaScript、Go、Perl、PHP、Ruby、Swift、TypeScript、SQL 和 Shell 等十几种语言。

Content Filter

过滤器用来检测 API 生成的内容是否敏感或不安全,目前还在测试阶段,会把文本分成安全、敏感、不安全三类。它也会犯错,现在的设计偏向保守,所以误报率偏高。

用 Flask 实现在线聊天

摸清模型和接口调用方式后,用 Flask 把接口参数包一层,聊天就方便多了。在这之前还得找个网页模板。

Flask 路由函数

按 OpenAI 官方接口的调用方式,写一个 /ask 的 GET 接口,请求参数主要是 prompt(问题),返回回答:

@app.route('/ask')
def ask():
    p = request.args.get('prompt', '')
    eng = request.args.get('engine', 'text-davinci-003')
    max_token = int(request.args.get('max_tokens', 256))
    if not p:
        return ""
    response = openai.Completion.create(
        engine=eng,
        prompt=p,
        temperature=0.3,
        max_tokens=max_token,
        n=1
    )
    return jsonify(result=response["choices"][0]["text"])

前端页面请求

我不懂前端,就算找了个现成模板,也折腾了好久才把前后端拼起来。默认用 text-davinci-003 模型,来看效果:

让 AI 写首古诗,结果它不知道从哪搬来了《春江花月夜》。要是不认识这首诗,还真会以为是它自己写的,估计其他诗也是网上搬的。换其他模型试了下,效果确实不敢恭维:

比如用 Ada 模型聊天,回复有时候连一句完整的话都算不上:

部署

最后部署到了 Azure,网站是 Slek - Chat and Discussion Platform,可以自己体验下,不过目前还有些 bug。另外 OpenAI 接口有 18 美元的免费额度,调用会扣费,目前还能用一阵子。

总结

上面只用了 OpenAI 接口的一小部分来做聊天,效果一般,也没有上下文关联。网页版 ChatGPT 不一样,它会记住上下文、能生成代码,应该是综合了多个模型的结果,我的小项目自然没法比。后面有空会继续完善这个聊天项目,接入代码生成等更多 OpenAI 接口,也试试其他聊天接口。

参考

  1. API Reference - OpenAI API
  2. openai/openai-python (github.com)
0

评论区