首页 > 其他分享 >【初探人工智能ChatGPT】2、雏形开始长成

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

时间:2023-02-28 15:32:22浏览次数:54  
标签:__ get 人工智能 app Flask openai 初探 ChatGPT data

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

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

【初探人工智能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 flask
  Downloading 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.0
  Downloading 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.0
  Downloading 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.0
  Downloading importlib_metadata-6.0.0-py3-none-any.whl (21 kB)
Collecting Werkzeug>=2.2.2
  Downloading 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.0
  Downloading itsdangerous-2.1.2-py3-none-any.whl (15 kB)
Collecting zipp>=0.5
  Using cached zipp-3.13.0-py3-none-any.whl (6.7 kB)
Collecting MarkupSafe>=2.0
  Downloading 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 openai

openai.api_key = os.getenv("openai_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 tokens
        prompt="介绍一下机器学习算法",
        temperature=0.8,
        max_tokens=3000,
        top_p=1.0,
        frequency_penalty=0.5,
        presence_penalty=0.0
    )
    return response.choices[0].text

if __name__ == '__main__':
    app.run(host='0.0.0.0')

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

image-20230217112031272

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

设置接收参数

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

from flask import Flask, request
import os, json
import openai

openai.api_key = os.getenv("openai_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].text

if __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 openai

openai.api_key = os.getenv("openai_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

写在后面

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

标签:__,get,人工智能,app,Flask,openai,初探,ChatGPT,data
From: https://blog.51cto.com/u_15943369/6090746

相关文章

  • 美国最新调查显示 50% 企业已在用 ChatGPT,其中 48% 已让其代替员工,博客园的朋友们你怎
    美国企业开始使用ChatGPT,我认为这不是什么新闻。如果美国的企业现在还不使用ChatGPT,那才是个大新闻。 据新闻源显示,已经使用chatGPT的企业中,48%已经让其代替员工工作。......
  • ChatGPT镜像来了,体验核心能力
    ​ 1月份开始,chatgpt开始火上天了。但其实很多人都不知道它真正的能力和魅力在哪里。甚至有人不停的问他是男的女的,多大岁数,叫啥名字,然后问了几个无聊的闲聊问题后,觉......
  • Java微基准测试神器JMH初探
    当我们编写一段Java代码之后,如果想知道代码性能如何,就需要进行一些快速的性能测试。当我们实现一个需求,面临2种及以上的方案,选择一种性能更好的方案时,也需要进行一些快速的......
  • chatGPT在电力系统优化领域的初步测评
    最近终于有时间初步尝试了一下chatGPT,感觉还是很令人吃惊。综合以下几个方面进行评估:知识范围:十分广,基本上电力系统的很多知识都有所了解。表达能力:较强,比较清晰完整。数......
  • ChatGPT API 简单使用
    关于ChatGPT和API获取我:请你做一个自我介绍ChatGPT:当然可以!您好,我是ChatGPT,是一款由OpenAI训练的大型语言模型。我可以回答各种各样的问题,包括但不限于自然语言......
  • 我让 ChatGPT 化身为全知全能的文档小助理,啥姿势她都会......
    ChatGPT虽然只是一个对话型人工智能,但已经震惊了全世界,有人甚至认为人工智能的奇点已经到来。未来一定会有很多人失业,从工业革命开始,每出现一次重大的技术变革,就必然会有......
  • ChatGPT:强大的自然语言处理和对话系统技术
     ChatGPT是OpenAI开发的一种大型语言模型,它是用机器学习算法训练出来的。ChatGPT可以用来与人类交互,并生成自然语言文本,具有自然语言处理和对话系统的能力。作为一......
  • ChatGPT: python3 查找在列表1中而不再列表2的项目
    A:f1_urls=['a','b']f2_urls=['a','c']python3中获取存在于f1_urls而不在f2_urls的项目Q:f1_urls=['a','b']f2_urls=['a','c']#将列表转换为集......
  • 简述cpu、gpu、fpga和asic四种人工智能芯片的性能
    https://fastonetech.com/newszblog/post/25570.html 简述cpu、gpu、fpga和asic四种人工智能芯片的性能FPGA(FieldProgrammableGateArrayai芯片分类,现场可编程门阵列)......
  • 借助chatgpt学习对比学习中的疑惑
    使用pytorch得到对比学习的正负样本,要求是NLP方向,正样本通过dropout(0.1)得到,负样本使用batch内其他样本。同时,帮我用pytorch实现他们的对比学习损失,用simcse的损失以下......