近日,OpenAI公司的ChatGPT模型走红网络。同时,OpenAI也推出了Chat API和gpt-3.5-turbo模型,让开发者能够更轻松地使用与ChatGPT类似的自然语言处理模型。

通过OpenAI API,我们可以使用gpt-3.5-turbo模型,实现多种任务,包括:撰写电子邮件或其他文本内容,编写Python代码,创建对话代理,回答各类问题,为软件提供自然语言界面,进行各学科的辅导,翻译语言,为视频游戏模拟角色等,还有许多未被挖掘的应用场景。

本文将为大家介绍如何使用OpenAI的Python SDK实现自己的聊天机器人。如果你已经使用过OpenAI的Python SDK,请确保将其升级到最新版本(0.27.0)。如果你还没有安装Python运行环境,请先安装Python 3.10。

接下来,我们将用FastAPI快速创建一个API,它的接口定义如下:

POST /chatbot/talkRequest Body:
{“message”: "你好!"
}Response:
{“content”: “机器人回复消息”
}

首先,你需要在命令行中安装FastAPI和OpenAI SDK,运行以下命令:

pip install fastapi uvicorn openai

为了方便演示,下面是一个最基本的FastAPI服务实现,文件保存在main/app.py文件中。

import openai
from typing import List
from fastapi import FastAPI
from pydantic import BaseModel
from starlette.middleware.cors import CORSMiddlewarehistory = []
app = FastAPI()app.add_middleware(CORSMiddleware,allow_origins=["*"],allow_credentials=True,allow_methods=["HEAD", "OPTIONS", "GET", "PUT", "PATCH", "POST", "DELETE"],allow_headers=["*"],max_age=86400
)openai.api_key = "输入您的Key"class TalkRequest(BaseModel):message: str@app.post("/chatbot/talk")
async def chatbot_talk(user_input: TalkRequest):if not history:history.append({"role": "system", "content": "你好,我是你的私人助手!"})history.append({"role": "user", "content": user_input.message.strip() })response = await openai.ChatCompletion.acreate(model="gpt-3.5-turbo",messages=history)bot_response = response.choices[0].messagehistory.append({"role": "bot", "content": bot_response})return {"content": bot_response}

现在只需创建一个 run.py文件来启动 FastAPI 服务。

import uvicornfrom main.app import appif __name__ == '__main__':uvicorn.run(app=app,host="127.0.0.1",port=8080,use_colors=True,log_level="debug")

接下来运行 run.py。

在浏览器中打开 http://127.0.0.1:8080/docs 即可看到 Swagger 界面已经加载并显示出我们的 Talk API,如下图所示:

点击 Try it out, 在 message 里填入一个句子,例如我们这里输入的”你好”,点击 Execute按钮。如果没有问题应该能得到下面的响应结果:

OK,到这里我们的后台服务就已经准备好了。

这是一个用于搭建聊天机器人 UI 界面的代码示例,其中使用了 Vue.js 和 Axios。用户可以在浏览器中打开一个页面,输入文本消息并发送到聊天机器人 API,然后接收聊天机器人的响应。

首先,需要在 Vue 项目中创建一个名为 Chat.vue 的组件。在 Chat.vue 中,可以添加一个文本框和一个发送按钮,用于向聊天机器人发送消息。然后,使用 Vue.js 的数据绑定功能,将文本框的值绑定到一个名为 message 的 Vue 组件数据属性。在发送按钮上添加一个点击事件,该事件将调用一个 sendMessage 方法,该方法将使用 Axios(或其他 HTTP 库)将消息 POST 到聊天机器人 API。在发送成功后,使用 Axios 响应中的数据更新 Vue 组件数据属性的值,以显示聊天机器人的响应消息。

这里提供了一个基本的 Chat.vue 文件代码示例:

<template><div><div v-for="(message, index) in messages" :key="index"><div v-if="message.isBot">{{ message.content }}</div><div v-else>{{ message.content }}</div></div><input v-model="message" type="text" placeholder="Type your message here..."><button @click="sendMessage">Send</button></div>
</template><script>
import axios from 'axios'export default {name: "ChatView",data() { return {message: '',messages: [],}},methods: {async sendMessage() {const url = 'http://127.0.0.1:8080/chatbot/talk'const data = { message: this.message }const response = await axios.post(url, data)this.messages.push({ content: this.message, isBot: false })this.messages.push({ content: response.data.content, isBot: true })this.message = ''},},
}
</script>

在这个示例中,messages 是一个数组,它用于存储聊天记录。sendMessage 方法将新消息添加到 messages 数组中,并使用 Axios 发送消息并更新响应的数据属性。最后,它清空了 message 数据属性,以便用户可以输入下一个消息。在模板中,我们使用 v-for 循环遍历 messages 数组,并根据 isBot 数据属性来判断消息是用户的消息还是聊天机器人的消息。

需要注意的是,这个示例中聊天机器人 API 的地址是 http://127.0.0.1:8080/chatbot/talk。如果聊天机器人 API 的地址不同,需要相应地修改 sendMessage 方法中的 url 变量。

最后,要在浏览器中运行 Vue 应用程序,需要执行以下步骤。

确保已经安装了 Node.js 和 npm,这将使我们能够使用 Vue 的命令行工具来创建和管理项目。

打开命令行终端,导航到项目目录,并使用以下命令安装 Vue CLI:

npm install -g cnpm --registry=https://registry.npmmirror.com

cnpm install -g @vue/cli

使用以下命令创建一个新的 Vue 项目:

vue create my-chat-app

根据需求进行选择,稍等片刻项目即可创建成功。

进入 my-chat-app 目录,安装 Axios:

cnpm install axios --save

将 Chat.vue 组件添加到 src/components 文件夹中。

打开 src/App.vue 文件,并将以下代码添加到模板中:

<template><div><Chat /></div>
</template>
<script>
import Chat from './components/Chat.vue'export default {name: 'App',components: {Chat,},
}
</script>

在命令行终端中运行以下命令启动开发服务器:

npm run serve

打开 http://localhost:8081/,可以看到一个基本的聊天窗口可以体验聊天机器人。

因文章篇幅有限,感兴趣的同行完全可以利用前端技术做出更精美的机器人聊天窗口。

如何使用OpenAI API和Python SDK构建自己的聊天机器人相关推荐

  1. python 收发微信之一:利用 WxPusher 的 web api 及 python SDK 两种方式给自己发微信

    目 录 摘要 实操 代码分析 需求来源与路径选择 参考 摘要 本文给出利用 WxPusher 提供的 web api 与 python SDK 两种方式,实现微信发送的 python 代码样例,并简单 ...

  2. python自然语言处理与方言聊天机器人_聊天机器人Python实现案例 | 老炮儿聊机器语音...

    点击上方蓝色字体,关注:九三智能控 世界上最早的聊天机器人诞生于20世纪80年代,名为"阿尔贝特",用BASIC语言编写而成.目前,聊天机器人从功能和技术的角度,可以分为两类,一类 ...

  3. python小黄鸡nlp聊天机器人

    python小黄鸡nlp聊天机器人 # encoding: utf-8import osimport tensorflow as tf import numpy as npfrom SequenceT ...

  4. fcn从头开始_如何从头开始构建基本的聊天机器人

    fcn从头开始 Be it a Whatsapp chat, Telegram group, Slack channel, or any product website, I'm sure you h ...

  5. python nltk lemmatizer_Python聊天机器人–使用NLTK和Keras构建第一个聊天机器人

    什么是聊天机器人? 聊天机器人是一款智能软件,能够传达和执行类似于人类的动作.聊天机器人可以直接与客户互动,在社交网站上进行营销以及即时向客户发送消息等方面被广泛使用.根据聊天机器人的构建方式,它有两 ...

  6. 使用Dialogflow API构建Slack智能聊天机器人的指南

    介绍 自然语言处理(NLP)领域的突破近来出现了突然上升.我们可用的文本数据量巨大,数据科学家正在提出新的创新解决方案来解析它并分析模式.从编写整本小说到解码古代文本,我们已经看到了NLP的各种应用. ...

  7. 用python开发微信公众平台聊天机器人

    最近用python写了一个聊天机器人的微信公众号,网上找的开发文档参差不齐,官方文档也比较老旧,还有部分小问题.于是,分享一下我的思路. 开发环境 windows sever 2008+python3 ...

  8. 用Python写了一个微信聊天机器人(打团了让它来陪女友聊天)

    在我们的生活和工作当中,很多时候我们并不能及时地回复消息,尤其是业务比较多的人,客户给我们发消息我们不回又不好,但又没有那么多精力时时回复,这个时候智能机器人就能帮助我们解决很多问题. 像电商类的客服 ...

  9. 【聊天机器人】深度学习构建检索式聊天机器人原理

    一.检索式与生成式聊天机器人对比 1.基于检索的chatterbot 2.基于生成的chatterbot 3.聊天机器人的一些思考: (1)基于检索的chatterbot 根据input和contex ...

最新文章

  1. 使用IntelliJ IDEA查看类图,内容极度舒适
  2. javac编译出现“找不到符号”和软件包不存在的解决
  3. 计算机主板的1117标识,电脑出现:错误1117.......截图如下,
  4. 计算2个时间之间经过多少Ticks
  5. java利用htmlparser得到网页html内容
  6. 人工智能知识体系的学习路线(南京大学人工智能学院本科生培养体系)
  7. 由陌生到认识——物联网LoRa技术入门简介
  8. Java宠物管理系统(运用接口简易版)
  9. 用c语言编程点亮7个二极管,单片机c语言编程二极管_单片机c语言编程_单片机c语言编程led...
  10. 基于Matlab App Designer的语音信号分析与处理(一):语音信号的采集,时域、频域分析
  11. rust服务器人数查询网站,Rust Web框架列表
  12. 360浏览器显示服务器拒绝连接,360浏览器提示“您与此网站之间建立的连接不安全完美解决方法...
  13. scrapy+python爬地图参照物应该有的坑及解决办法
  14. 今日说“法”:FPGA芯片如何选型?
  15. 如何免费使用jrebel 和eclipse 项目配合完成热部署功能
  16. pc机之间的通信和点阵汉字的字模读取与显示
  17. 快速傅里叶变换(FFT)和逆快速傅里叶变换(IFFT)
  18. 一种解决方法 Error: No such file or directory @ rb_sysopen
  19. 百度知道到底是哪个国家的公司
  20. 气候变化如何影响致命的龙卷风?

热门文章

  1. sql语句执行顺序及简单优化
  2. Kafka多个消费者监听消费同一个Topic主题
  3. R语言double数据转成numeric类型
  4. SEAL开源库源码10
  5. 数据预处理-缺失值处理
  6. 如何将kotlin数组转为java的可变参数...
  7. html标签的下一级遍历,jquery属性,遍历,HTML操作方法详解
  8. 深度学习中,偏置(bias)在什么情况可以不要?
  9. 如何理解处理器、CPU、多处理器、内核、多核?
  10. C++中的tolower()函数与toupper()函数