ChatGPT

2023-03-05 11:54

之前一直想着用ChatGPT来取代Grammarly. 因为我老婆所在单位的电脑安全检查做得很严格, 普通员工不允许安装任何第三方app或浏览器插件. 所以我们的Grammarly订阅在她那儿根本没发挥作用. 不过之前有误解, 一直以为付费用户才会有API_KEY. 今天无聊坐下来看了下, 首先确定了API_KEY是任何用户都可以生成, 接下来写代码实现的时候, 发现这个事情实在太简单了.

我们可以在官网上找到API调用的样例. 我不希望使用openai这个pypi包, 所以想自己手写一个, 心想, 不就是一个post json然后拿到结果的过程吗? 这有何难. 写了一小半, 突然想起来, 或许可以让ChatGPT来写这段代码, 于是去官网的playground, 首先用的prompt是你好, 请帮我写一段Python代码, 能够调用ChatGPT的API来润色我的输入, 给出的代码样例果不其然是使用了openai, 后面再要求它使用requests, 就乖乖地给出了下面这段代码:

import requests

def polish_text(input_text, api_key):
    headers = {
        'Content-Type': 'application/json',
        'Authorization': f'Bearer {api_key}'
    }

    data = {
        'prompt': input_text,
        'max_tokens': 60,
        'temperature': 0.7,
        'n': 1,
        'stop': None,
        'engine': 'davinci'
    }

    response = requests.post('https://api.openai.com/v1/engines/davinci/completions', headers=headers, json=data)
    response.raise_for_status()

    return response.json()['choices'][0]['text'].strip()

骨架写好了, 不过这个不是我想调用的API, 就替换了下参数和URL, 一个脚本就写好了. 测试后发现如果待润色的文本是中文, 而提示语是英文, 则ChatGPT不能正确识别, 所以加了一个简单的判断来处理中文的情况. 成品在这儿.

这个没啥技术含量. 不过后面和ChatGPT对话的时候发现一点好玩的. 首先, 我把一些伟大的盖茨比里面的引言丢给它, 它也会尝试去改变这份文本, 并没有一些内置识别, 知道这是著名的引文而裹足不前. 另外, 我让它生成代码的时候, 给出的提示是相对比较偏门的要求, 请求buildkite API, 拿到某个pipeline最近一次build. 出乎我意料之外的, ChatGPT也成功生成出了这段代码, 加上语言的参数后, 也能够生成出python/ruby/lua的代码.

这段玩完之后, 我去Grammarly取消了我的订阅, 取消时才发现本来这个月的14号就又要扣款一次了. 这篇文章真及时.