最近大家都在讨论ChatGPT的应用,而且形形色色的段子都出来了,为了验证各种说法的对错,当然也未能免俗,决定做个尝试,第一步是让代码先跑起来,第二步是实现微信聊天机器人,第三步是实现自己想要的东西,呵呵
第一步,注册openai账号,这个有点小麻烦,你懂的,最简单的办法是到淘宝上
第二步,安装openai
pip install openai
第三步、输入api_key,选择模型
以下文字来自微软的网站。https://learn.microsoft.com/zh-cn/azure/cognitive-services/openai/concepts/models
GPT-3 模型可以理解和生成自然语言。 该服务提供四个模型功能,每个都有不同级别的能力以及适用于不同任务的速度。
text-ada-001
text-babbage-001
text-curie-001
text-davinci-003
Davinci 是功能最强大的模型,可以执行其他模型能够执行的任何任务,并且所用的指令通常更少。 对于需要深入理解内容的应用程序(例如面向特定受众的摘要和创意内容的生成),Davinci 将产生最佳结果。 Davinci 提供的这些增加的功能需要更多计算资源,因此 Davinci 的成本更高,并且 Davinci 不如其他模型快。
Davinci 擅长的另一个领域是理解文本的意图。 Davinci 擅长解决多种逻辑问题并解释字符动机。 Davinci 已经能够解决一些涉及因果关系的最具挑战性的 AI 问题。
用途:复杂的意图、因果关系、受众摘要
Curie 功能强大,但速度很快。 虽然 Davinci 在分析复杂文本方面更强大,但 Curie 可以执行许多精细化的任务,例如情绪分类和摘要。 Curie 也善于回答问题和执行问答,适合用作常规服务聊天机器人。
用途:语言翻译、复杂分类、文本情绪、摘要
Babbage 可以执行简单的分类等简单任务。 在语义搜索方面,它的功能也很强大,可对文档与搜索查询的匹配程度进行排名。
用途:中等分类、语义搜索分类
Ada 通常是最快的模型,可以执行的任务有分析文本、地址更正和不需要太多细微差别的某些分类任务等等。 Ada 的性能通常可以通过提供更多上下文来改进。
用途:分析文本、简单分类、地址更正、关键字
import openai
openai.api_key = "xxxxxxxxxxxxxxxxxxxxxxxxxx"
model_engine = "text-davinci-002"
prompt='以2022年数据库的发展情况和未来预测为题写一篇论文'
# text-curie-001 聊天机器人-语言翻译、复杂分类、文本情感、摘要
# We used the suggested settings for Chat: Temperature = 0.9, response length = 150, Top P = 1
# model: 要使用的模型的 ID,访问 OpenAI Docs Models 页面可以查看全部可用的模型
# prompt: 生成结果的提示文本,即你想要得到的内容描述
# max_tokens: 生成结果时的最大 tokens 数,不能超过模型的上下文长度,可以把结果内容复制到 OpenAI Tokenizer 来了解 tokens 的计数方式
# temperature: 控制结果的随机性,如果希望结果更有创意可以尝试 0.9,或者希望有固定结果可以尝试 0.0
# top_p: 一个可用于代替 temperature 的参数,对应机器学习中 nucleus sampling,如果设置 0.1 意味着只考虑构成前 10% 概率质量的 tokens
# frequency_penalty: [控制字符的重复度] -2.0 ~ 2.0 之间的数字,正值会根据新 tokens 在文本中的现有频率对其进行惩罚,从而降低模型逐字重复同一行的可能性 ,一般为1.0
# presence_penalty: [控制主题的重复度] -2.0 ~ 2.0 之间的数字,正值会根据到目前为止是否出现在文本中来惩罚新 tokens,从而增加模型谈论新主题的可能性,一般设置为 0
# stop: 最大长度为 4 的字符串列表,一旦生成的 tokens 包含其中的内容,将停止生成并返回结果
completions = openai.Completion.create(
engine=model_engine,
prompt=prompt,
max_tokens=4000,
n=1,
# frequency_penalty=0.5,
presence_penalty=0,
stop=None,
top_p=1,
temperature=0.5,
)
#
message = completions.choices[0].text
print(message)
最终输出结果如下,质量还是不错的
数据库技术日益成为企业信息化建设的核心,数据库市场也在不断发展壮大。根据Gartner的最新报告,全球数据库市场规模在2018年达到了480亿美元,2019年将达到515亿美元,2020年将达到560亿美元,2021年将达到610亿美元,2022年将达到660亿美元。
从目前的发展情况来看,数据库市场的增长速度将会继续加快。预计到2022年,数据库市场规模将达到660亿美元,增长率将达到9.5%。
在这个快速发展的市场中,数据库厂商也在不断壮大和发展。根据Gartner的最新报告,全球10大数据库厂商的市场份额达到了85%。
其中,微软的SQL Server数据库在全球市场份额第二,达到了17.3%,紧随其后的是苹果的FileMaker数据库,市场份额为16.9%,第三是IBM的DB2数据库,市场份额为9.7%。
在这些大厂商的竞争下,中国的数据库市场也在不断壮大。根据IDC的数据,2018年中国数据库市场规模达到了18.5亿美元,2019年将达到21亿美元,2020年将达到24.5亿美元,2021年将达到28亿美元,2022年将达到32亿美元。
从目前的发展情况来看,中国数据库市场仍将继续保持快速增长。预计到2022年,中国数据库市场规模将达到32亿美元,增长率将达到11.4%。
随着云计算、大数据、人工智能等新技术的不断普及和应用,数据库技术也在不断发展和进步。预计未来5年内,数据库技术将经历三个主要的发展阶段:
首先是数据库的升级和更新。由于云计算、大数据、人工智能等新技术的不断普及和应用,传统的数据库技术已经不能满足人们的需求,需要不断升级和更新。
其次是数据库的云化。云计算技术的发展使得数据库的云化成为可能,预计未来5年内,数据库的云化将成为主流。
最后是数据库的人工智能化。人工智能技术的发展使得数据库的人工智能化成为可能,预计未来5年内,数据库的人工智能化将成为主流。
第四步,开发微信机器人
之前做过一个聊天机器人,再次运行后,发现不能用了,后来经核查,发现是网页版微信不给用了,只好又找了一个wxauto包,pip install wxauto即可
这个聊天程序有点像机器人在不停读取微信程序,先查找聊天对象(Chatwith),再通过GetLastMessage获取最后聊天信息,再预设一些条件找到对话的时机。
不同点是这次选择了text-curie-001模型
from wxauto import *
import time
if __name__=='__main__':
model_engine = "text-curie-001"
who = 'XXX群'
nickname='@ChatGPT' # 需要识别出是在和ChatGPT对话即可
wx=WeChat()
wx.ChatWith(who)
while True:
msgobject1 = wx.GetLastMessage
speaker1, msgcontent1, speakerid1= msgobject1
time.sleep(1)
msgobject2=wx.GetLastMessage
speaker2, msgcontent2, speakerid2 = msgobject2
if msgcontent1 != msgcontent2 and (nickname in msgcontent2):
msgcontent2=msgcontent2.replace(nickname,'')
completions = openai.Completion.create(
engine=model_engine,
prompt=msgcontent2,
max_tokens=500,
n=1,
frequency_penalty=0.5,
presence_penalty=0,
stop=None,
top_p=1,
temperature=0.8,
)
ret = completions.choices[0].text
wx.SendMsg(ret)
到此一个简单的聊天机器人就做好了

写在最后的话,ChatGPT无论是写文章还是聊天,效果均一般,但考虑到其通用性,已经算不错了,据说ChatGPT对中文语料的搜集存在很大的不足,自己后续会通过开源的GPT2对适合自己的数据做下训练,期待能得到更佳的结果吧
最后欢迎关注微信公众号:Python与大数据分析




