【初探人工智能ChatGPT】2、雏形开始长成

【初探人工智能ChatGPT】2、雏形开始长成

  • 【初探人工智能ChatGPT】2、雏形开始长成
    • 安装Flask
    • 封装Web接口雏形
    • 设置接收参数
    • 功能验证
      • 聊天
      • 写代码
      • 代码补全
      • 生成图片
    • 写在后面

笔者初次接触人工智能领域,文章中错误的地方还望各位大佬指正!

【初探人工智能ChatGPT】2、雏形开始长成

在上一篇文章中我们已经初步体验了一下人工智能的聊天功能,只是不具备真正的交互功能。这篇文章主要介绍如何打造一个基于Web的交互环境。

安装Flask

Flask是一个Python编写的Web 微框架,让我们可以使用Python语言快速实现一个网站或Web服务。我们可以通过Flask将聊天功能封装成Web接口对外发布。

要使用Flask,需要先安装,执行命令:

pip install flask

安装过程:

(OpenAI) wux_labs@wux-labs-vm:~$ pip install flask
Collecting flaskDownloading Flask-2.2.3-py3-none-any.whl (101 kB)━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 101.8/101.8 kB 1.2 MB/s eta 0:00:00
Collecting click>=8.0Downloading click-8.1.3-py3-none-any.whl (96 kB)━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 96.6/96.6 kB 2.7 MB/s eta 0:00:00
Collecting Jinja2>=3.0Downloading Jinja2-3.1.2-py3-none-any.whl (133 kB)━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 133.1/133.1 kB 9.7 MB/s eta 0:00:00
Collecting importlib-metadata>=3.6.0Downloading importlib_metadata-6.0.0-py3-none-any.whl (21 kB)
Collecting Werkzeug>=2.2.2Downloading Werkzeug-2.2.3-py3-none-any.whl (233 kB)━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 233.6/233.6 kB 8.3 MB/s eta 0:00:00
Collecting itsdangerous>=2.0Downloading itsdangerous-2.1.2-py3-none-any.whl (15 kB)
Collecting zipp>=0.5Using cached zipp-3.13.0-py3-none-any.whl (6.7 kB)
Collecting MarkupSafe>=2.0Downloading MarkupSafe-2.1.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (25 kB)
Installing collected packages: zipp, MarkupSafe, itsdangerous, click, Werkzeug, Jinja2, importlib-metadata, flask
Successfully installed Jinja2-3.1.2 MarkupSafe-2.1.2 Werkzeug-2.2.3 click-8.1.3 flask-2.2.3 importlib-metadata-6.0.0 itsdangerous-2.1.2 zipp-3.13.0
(OpenAI) wux_labs@wux-labs-vm:~$ 

image-20230217094656203

安装好Flask之后,写一个脚本server.py验证一下。

from flask import Flask
app = Flask(__name__)@app.route('/')
def hello_world():return 'Hello World'if __name__ == '__main__':app.run()

image-20230217094939246

启动服务:

python server.py

image-20230217095227673

验证一下:

image-20230217095402203

但是这样只能本地访问,无法外网访问。Flask类的run()方法可以指定参数,让服务按照我们的预期运行,这里需要指定外网可以访问。修改一下代码:

from flask import Flask
app = Flask(__name__)@app.route('/')
def hello_world():return 'Hello World'if __name__ == '__main__':app.run(host='0.0.0.0')

image-20230217095834389

重新启动后,通过浏览器访问。

image-20230217095914390

这样就可以通过外网访问了。

封装Web接口雏形

现在,我们可以将自己的功能封装成Web接口了,修改脚本:

from flask import Flask
import os
import openaiopenai.api_key = os.getenv("openai_api_key")app = Flask(__name__)@app.route('/chatgpt')
def chatgpt():response = openai.Completion.create(model="text-davinci-003", # 最强大的GPT-3模型,This model's maximum context length is 4097 tokensprompt="介绍一下机器学习算法",temperature=0.8,max_tokens=3000,top_p=1.0,frequency_penalty=0.5,presence_penalty=0.0)return response.choices[0].textif __name__ == '__main__':app.run(host='0.0.0.0')

重新启动之后,通过浏览器访问一下:

image-20230217112031272

这样,我们就可以通过Web接口来调用相应的API了。

设置接收参数

接下来,修改我们的Web接口,让它可以接收用户参数。

from flask import Flask, request
import os, json
import openaiopenai.api_key = os.getenv("openai_api_key")app = Flask(__name__)@app.route('/chatgpt', methods=['post'])
def chatgpt():get_data = request.get_data()get_data = json.loads(get_data)response = openai.Completion.create(model=get_data["model"],prompt=get_data["prompt"],temperature=get_data["temperature"],max_tokens=get_data["max_tokens"],top_p=get_data["top_p"],frequency_penalty=get_data["frequency_penalty"],presence_penalty=get_data["presence_penalty"],)return response.choices[0].textif __name__ == '__main__':app.run(host='0.0.0.0')

功能验证

由于我们将接口改成了接收POST请求的,所以不能直接通过浏览器访问了,需要借助客户端工具,比如Postman、PyCharm中的Http Request插件等。

聊天

基于上述代码,发起POST请求,使用text-davinci-003模型,得到响应如下。

image-20230217115229583

写代码

使用text-davinci-003模型,让机器人生成一段代码试试。

image-20230217155834518

代码补全

尝试一下其他模型,比如code-davinci-002,该模型可用于补全代码,不过当前处于beta阶段。发起POST请求,补全一段Python代码中的测试用例代码,输出的内容为:

test_sum_numbers():
assert sum_numbers(2, 3) == 5
assert sum_numbers(1, -1) == 0
assert sum_numbers(10.5, 2) == 12.5
test_sum_numbers()
# 测试错误的函数:
def test_sum_numbers():
assert sum_numbers(2, 3) == 6 # 这个测试会失败
test_sum_numbers()# 单元测试中的断言函数:assertEqual()、assertTrue()、assertFalse()……以及方法还有很多。你可以在文档中查看所有的断言函数。

image-20230217163503343

上述代码只有openai生成的部分。

如果是在交互式环境下,真实场景应该是在代码后面进行补全:

image-20230217172145678

生成图片

修改一下脚本,在代码中添加生成图片的接口:

from flask import Flask, request
import os, json
import openaiopenai.api_key = os.getenv("openai_api_key")app = Flask(__name__)@app.route('/chat', methods=['post'])
def chat():get_data = request.get_data()get_data = json.loads(get_data)response = openai.Completion.create(model=get_data["model"],prompt=get_data["prompt"],temperature=get_data["temperature"],max_tokens=get_data["max_tokens"],top_p=get_data["top_p"],frequency_penalty=get_data["frequency_penalty"],presence_penalty=get_data["presence_penalty"],)return response.choices[0].text@app.route("/image", methods=['post'])
def image():get_data = request.get_data()get_data = json.loads(get_data)response = openai.Image.create(prompt=get_data["prompt"],n=1,size="1024x1024")return response['data'][0]['url']if __name__ == '__main__':app.run(host='0.0.0.0')

重启服务后发送POST请求,生成的图片结果如下。

image-20230217174628942

写在后面

至此,我们的机器人就具备了一些基本的功能了,后续做好用户界面就可以了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/67693.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

马斯克要求 Twitter 程序员写周报,具体到代码行数!

来源:InfoQ 11 月 24 日,据 Business Insider 报道,推特内部邮件显示,该公司要求技术类员工必须每周发邮件给 CEO 埃隆马斯克(Elon Musk),介绍自己本周的所有工作,以此实现“快速创新…

马斯克的推特“大清洗”:高管、员工、研究学者、高仿号,以及前女友

大数据文摘出品 Let that sink in。 10月24日,马斯克就真的抱着一个水槽,走进了Twitter的总部大楼。 磨磨蹭蹭半年,马斯克终于完成了对Twitter的收购,如愿接过Twitter的指挥权杖。 马斯克拿下推特之后,各种新闻几乎布满…

马斯克在推特回应推特起诉:真讽刺,我笑了

万博 发自 凹非寺量子位 | 公众号 QbitAI 马斯克和推特之间的“连续剧”,又更新了一集: 《推特正式起诉马斯克》。 并且在诉状中,推特还细数了马斯克决意收购前后的种种恶行。 核心态度是: 我方纯属无辜,马斯克必须按照…

6月无代码资讯|OutSystems与微软合作,将生成式AI整合在低代码产品;首个自然语言开发框架PromptAppGPT发布

一、TOP3 大事件 1、用ChatGPT开发代码!OutSystems与微软合作,增强低代码开发 6月22日,全球低代码领导者OutSystems在官网宣布与微软达成深度技术合作,将生成式AI全面整合在低代码产品矩阵中。 据悉,OutSystems通过…

使用CNN+LSTM进行脑电情绪识别

写了一份适合刚入门脑电情绪识别的一个可用于练手的代码讲解。 首先再进行用脑电信号进行情绪识别时会对数据进行一个处理,比如计算出微分熵,功率谱图等。 在这里我们首先采用计算出微分熵DE。 微分熵 微分熵是香农信息熵在连续变量上的推广形式&…

神经元激活函数

神经元激活函数 激活函数(Activation functions),将非线性特性引入到网络中。如下图,在神经元中,输入的 inputs 通过加权,求和后,还被作用了一个函数,这个函数就是激活函数。 引入激活函数是为了增加神经…

独家 | 人工神经网络中发现了人类大脑拥有的多模态神经元(附链接)

作者:Gabriel Goh, Chelsea Voss, Daniela Amodei, Shan Carter, Michael Petrov, Justin Jay Wang, Nick Cammarata, and Chris Olah 翻译:欧阳锦 校对:王可汗本文约4000字,建议阅读12分钟本文探讨了OpenAI在CLIP模型中发现人类大…

神经网络(三)—— 神经元多输出

本系列为慕课网《深度学习之神经网络(CNN/RNN/GAN)算法原理实战》视频笔记,希望自己能通过分享笔记的形式更好的掌握该部分内容。 往期回顾: 神经网络(一)—— 机器学习、深度学习简介 神经网络(二)—— 神…

3D U-Net脑胶质瘤分割BraTs + Pytorch实现

原论文地址: 连接 一、网络模型的分析和对比 原始2D-Unet网络模型 我的2D-Unet网络模型 1、和原来的2D-Unet网络不同的是,我输入通道为4,我这里应该改为4个通道,对应四个模态图像,而输出通道为3,我对应的是三个嵌套子区域标签(WT、TC、ET) 2、另外,最大不同的是我的3X3卷积…

深度学习(一)——MP神经元模型, BP算法, 神经元激活函数, Dropout

https://antkillerfarm.github.io/ 前言 神经网络本质上不是什么新东西。十年前,我还在上学的时候,就接触过皮毛。然而那时这玩意更多的还是学术界的屠龙之术,工业界几乎没有涉及。 及至近日重新拾起,方才发现,这十…

单个人工神经元模型示意图,人体神经元模型制作

人工神经元的基本构成 人脑的神经元模型如图8.6所示。图中一个神经元由细胞核、一个轴突、多个树突、突触组成。生物电信号从树突传入,经过细胞核处理,从轴突输出一个电脉冲信号。 神经元通过树突与轴突之间的突触与其他神经元相连构成一个复杂的大规模…

神经元的细胞体内有什么,神经元的细胞体在哪里

神经元细胞体位于哪里? 谷歌人工智能写作项目:神经网络伪原创 你知道神经元在我们身体的哪个部位吗? 神经元的基本结构包括细胞体和突起.神经元的突起一般包括一条长而分枝少的轴突和数条 短而呈树状分枝的树突.轴突以及套在外面的髓鞘,叫做神经纤维.…

03 神经元多输入

神经元多输入 上一篇博客介绍了二分类的逻辑回归模型。如果我们想要多分类的逻辑回归模型,我们该怎么做呢? 很显然,我们在只有一个神经元的时候可以做二分类的问题。如果我们想要多分类的话,直接加神经元的个数就好了,…

人脑部神经网络分布特点,人脑部神经网络分布图

人的大脑的怎么分配的 大脑(Brain)包括左、右两个半球及连接两个半球的中间部分,即第三脑室前端的终板。大脑半球被覆灰质,称大脑皮质,其深方为白质,称为髓质。髓质内的灰质核团为基底神经节。在大脑两半球间由巨束纤维—相连。 …

人体内数量最多的神经元,人体内有多少个神经元

人体内平均有多少神经元? 。 约含有140亿个神经元胞体虽然神经元形态与功能多种多样,但结构上大致都可分成胞体(cellbody,orsoma)和突起(neurite)两部分.突起又分树突(dendrite)和…

【计量经济学】【高教版】第二次作业

第二次作业: 教材:伍德里奇。计量经济学导论:现代观点(第五版)。 第三章习题:必做 1,2,5,6,11,选做13 第四章习题:必做2,3,4,5,8,选做9,10,11 第三章 1.多元线性回归模型的基本假设是什么?在证明最小二乘估计量的无偏性和有效性的过程中,哪些基本假设起…

【计量经济学】【高教版】第一次作业(7、8、10)

第二次 7.假设有人做了如下的回归: y i = β 0 ^ + β 1 ^ x i + e i y_i=\widehat{\beta_0}+\widehat{\beta_1}x_i+e_i yi​=β0​ ​+β1​ ​xi​+ei​ 其中, y i , x i y_i,x_i yi​,xi​分别为 Y i , X i Y_i,X_i Yi​,Xi​关于各自均值的离差。问 β 0 ^ 和 β 1 ^ \…

软件工程经济学作业5-7

1.什么是生产函数? 其主要特征是什么? 答:生 产函数是指一定时期内生产要素的数量与某种组合同其所能出产的最大产量之间存在的函数关系。 生产函数通常满足以下三个特征: (1 ) 资本 与劳动力的边际产出总是为正值, 在…

2020年12月程序员工资统计,平均14222元(转载)

2020年12月全国招收程序员394699人。2020年12月全国程序员平均工资14222元,工资中位数12500元,其中96%的人的工资介于3250元到62500元。 从图上看,工资是真的降了,吓得我瑟瑟发抖。希望明年涨回来。 城市 排名city平均工资最低工资…

每日一题-13(员工薪水中位数)

题13: 根据下表,在不使用任何内置的SQL函数的情况下编写SQL查询来查找每个公司的薪水中位数。 解题思路:题目要求是不使用任何内置的SQL函数,因此使用HAVING的妙用。 (1)先做自连接,之后根据ID…