ChatGPT(生成型预训练变换模型)
是一个自回归语言模型,目的是为了使用深度学习生成人类可以理解的自然语言
介绍
GPT(Generative Pre-Training,生成式预训练)
是由在旧金山的人工智能公司OpenAI训练与开发,模型设计基于谷歌开发的变换语言模型
GPT-1
2018/6 约 5GB 文本,1.17 亿参数量(神经网络)
- transformer,需要通过微调参数满足不同场景
- 竞品 Bert,Bert 根据上下文完形填空;GPT 预测未来的事
GPT-2
2019/2 约 40GB 文本,15 亿参数量
- zero-shot 即下游任务不通过参数微调实现
- 通过暗示(prompt,或提示模型需要完成的任务)完成推断,更加强大
- 采样策略,自回归模型希望模型有多样性
- 通过
温度(Temperature)
对预测结果进行结果的概率分析,温度越高结果多样性越丰富,温度越低结果越准确
- 结果的
Top k
vs Top p
- Top k 预测结果仅为前 k 个
- Top p 预测结果累加到 0.9 或 0.95 的值位候选
GPT-3
2022/5 约 45TB 文本,1750亿
参数量,为有史以来参数最多的神经网络模型,不开源
- 不做微调,训练数据包罗万象
- 3 中核心下游任务方式
few-shot
根据一些例子推断结果,结果更符合要求,输入多,API token 消耗更多
zero-shot
通过输入的自然语音描述,自行推断结果
one-shot
根据一个例子推断结果
- 竞品
使用
提示词:
api 调用示例
基于 Python 调用接口示例,由于国内IP被封,可以采用 openai API 代理,参考
pip3 install openai
export OPENAI_API_KEY="xxx"
import os
import openai
openai.api_key = os.getenv("OPENAI_API_KEY")
response = openai.Completion.create(
model="text-davinci-003",
prompt="I am a highly intelligent question answering bot. If you ask me a question that is rooted in truth, I will give you the answer. If you ask me a question that is nonsense, trickery, or has no clear answer, I will respond with "Unknown".", # 提示信息
temperature=0,
max_tokens=100,
top_p=1,
frequency_penalty=0.0,
presence_penalty=0.0,
stop=["\n"]
)
print(response)
import openai
openai.api_key = "<INSERT API KEY HERE>"
# Create the OpenAI API object
openai_api = openai.API()
# Ask the OpenAI API a question
response = openai_api.create_engagement("What is the capital of France?",
engagement_level="chat")
# Print the response from the OpenAI API
print(response.text)
客户端
ChatGPT 微信聊天机器人
git clone https://github.com/zhayujie/chatgpt-on-wechat
cd chatgpt-on-wechat/
# 创建 venv
python3 -m venv .venv
. .venv/bin/activate
# 安装依赖
pip3 install itchat-uos==1.5.0.dev0 -i http://pypi.douban.com/simple/ -U tox --trusted-host pypi.douban.com
pip3 install --upgrade openai -i http://pypi.douban.com/simple/ -U tox --trusted-host pypi.douban.com
# 配置
cp config-template.json config.json
# config.json文件内容示例
{
"open_ai_api_key": "YOUR API KEY" # 填入上面创建的 OpenAI API KEY
"single_chat_prefix": ["bot", "@bot"], # 私聊时文本需要包含该前缀才能触发机器人回复
"single_chat_reply_prefix": "[bot] ", # 私聊时自动回复的前缀,用于区分真人
"group_chat_prefix": ["@bot"], # 群聊时包含该前缀则会触发机器人回复
"group_name_white_list": ["ChatGPT测试群", "ChatGPT测试群2"], # 开启自动回复的群名称列表
"image_create_prefix": ["画", "看", "找"], # 开启图片回复的前缀
"conversation_max_tokens": 1000, # 支持上下文记忆的最多字符数
"character_desc": "你是ChatGPT, 一个由OpenAI训练的大型语言模型, 你旨在回答并解决人们的任何问题,并且可以使用多种语言与人交流。" # 人格描述
}
# 启动服务
nohup python3 app.py &
# 查看日志
tail -f nohup.out
# 扫描启动的二维码登录&使用
F&Q
OpenAI not available in your country
OpenAI’s services are not available in your country
# javascript: 要手动输入
javascript:window.localStorage.removeItem(Object.keys(window.localStorage).find(i=>i.startsWith('@@auth0spajs')))
https://github.com/lencx/ChatGPT/issues/83