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

近日,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/,可以看到一个基本的聊天窗口可以体验聊天机器人。

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

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

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

相关文章

微信小程序+讯飞语音实现个人语音助手

由于 上传图片过于麻烦&#xff0c;建议 跳转到 github typora-copy-images-to: images 1. 介绍 ​ 本案例主要 实现一个微信小程序语音助手&#xff0c;可以以提供的功能如下&#xff1a; 语音输入返回结果小程序北京的天气雨水将短暂停歇,最高气温回升至28℃。语音播放 返…

华为小艺输入法测试版 1.0.19.103 发布

新增微信 / QQ 回车键发送消息功能开关 华为小艺输入法迎来 1.0.19.103 版本众测&#xff0c;本次更新后&#xff0c;新增微信、QQ 回车键发送消息功能开关&#xff1b;新增商城语录、表情、皮肤等投诉举报入口&#xff1b;新增拼音输入过程中上滑数字不打断输入&#xff1b;联…

「流云行走,代码穿梭:Wails 携手 ChatGPT 打造 MOOC 下载器」

AD 需要gpt账号的v : iseswordgpt起名字 gpt翻译代码 因为为下载器里面有js加密代码&#xff0c;之前就是把网站上面的js加密代码扣下来&#xff0c;用goja运行js代码&#xff0c;但是它不能用于协程&#xff0c;要是想用goja&#xff0c;就要每个协程运行一个goja.Runtime。…

从清奇的角度有效地学习C++基础(只要没更完有空就更)

目录 一个学习工具 面向ChatGPT编程 bool类型&#xff08;布尔类型&#xff09; 内联函数inline C宏定义 内联函数实现 函数重载 给函数重载加点bug 如何规范重载函数&#xff1f; 参数缺省 函数赋值顺序 默认值赋值顺序 给缺省函数加点bug 引用 命名空间namesp…

亚马逊查询关键词排名的工具_亚马逊关键词的概念和查找工具

亚马逊销售中最重要的是“排名”。 而“关键字”对提高排名很重要。 搜索结果对亚马逊的销售产生重大影响。 要想让你的产品被显示在搜索结果的顶部&#xff0c;那你必须选择有效的关键字。 搜索关键词排名一直上不去&#xff0c;你可能会这么想&#xff1a; “关键字不好吧...…

阿里云盘注册邀请码——每日限量,先到先得!

阿里要推出网盘了&#xff0c;现在处于公测阶段&#xff0c;注册需要输入邀请码&#xff0c;免费1个T的空间&#xff0c;速度吊打某度盘&#xff0c;10M/s。 申请公测 现在需要官方填表申请公测表&#xff0c;一般一周内会发出公测邀请码。 以下提供几个可用的邀请码【推荐前…

阿里云盘万能邀请码,某盘彻底慌了(每天更新~)

哈喽~这里是小宝库&#xff0c;前段时间阿里云盘开始内测&#xff0c;但是邀请码很难申请&#xff0c;现在云盘慢慢加大了测试力度&#xff0c;也放出了一些可以多次注册使用的邀请码&#xff0c;小编搞到了几个&#xff0c;在这里分享给大家&#xff0c;随时可能失效&#xff…

格灵深瞳——人脸识别算法测试FRVT

7月3日&#xff0c;美国国家标准与技术研究院&#xff08;NIST&#xff09;公布了全球最权威的人脸识别算法测试&#xff08;FRVT&#xff09;的最新结果&#xff0c;首次参与此竞赛的格灵深瞳取得了优异成绩&#xff1a;在最具挑战的“非约束性自然环境人脸照片”测试项目中获…

格灵深瞳开盘破发,市值73亿,创始人曾是谷歌眼镜创始成员

杨净 发自 凹非寺量子位 | 公众号 QbitAI 科创板AI第一股来了&#xff01; 3月17日&#xff0c;格灵深瞳正式在上海证券交易所科创板挂牌上市。 股票代码688207&#xff0c;发行价为39.49元/股&#xff0c;对应市值约为73.05亿元。 按照此前的招股书显示&#xff0c;此次IPO格灵…

室友还不知道FAST中国天眼是什么,快把这篇文章推给他,浅学一手卫星通信

方位角、仰角和站星距的计算 星座设计&#xff1a;覆盖方式 卫星星座&#xff1a;由多颗卫星按照一定的规律组成的卫星群。 卫星环的覆盖带&#xff1a;由多颗卫星组成的卫星环沿空间轨道运行对地面的覆盖。 星座种类&#xff1a;星状星座&#xff08;“铱”系统&#xff09;和…

35岁以10亿美元身价登上《财富》杂志亿万富豪榜的电商传奇谢家华

Zappos的介绍 Zappos可谓是电商的传奇&#xff0c;国内同类电商是乐淘。Zappos是一家在线卖鞋和服装的公司&#xff0c;1999年创立&#xff0c;2009年被亚马逊以12亿元收购&#xff0c; 多次入选财富杂志最佳雇主公司top100。 Zappos的创始人及CEO 提到Zappos就不得不介绍下…

格灵深瞳IPO获同意:毛利率远高于行业均值,营收增速开始下滑

近日&#xff0c;上交所科创板披露的信息显示&#xff0c;北京格灵深瞳信息技术股份有限公司&#xff08;下称“格灵深瞳”&#xff09;的首次公开发行股票注册获得获得了证监会的同意批复。这意味着&#xff0c;格灵深瞳拿到了IPO批文&#xff0c;有望在近期实现上市。 据贝多…

格灵深瞳年营收3.5亿:首度实现盈利 现代汽车拟减持

雷递网 雷建平 4月25日 北京格灵深瞳信息技术股份有限公司&#xff08;公司代码&#xff1a;688207&#xff0c;公司简称&#xff1a;格灵深瞳&#xff09;日前发布财报&#xff0c;财报显示&#xff0c;格灵深瞳2022年营收为3.54亿元&#xff0c;较上年同期的2.94亿元增长20.4…

格灵深瞳开源全球最大最干净的人脸识别数据集:Glint360K

本文转载自知乎&#xff0c;已获作者授权转载。 链接&#xff1a;https://zhuanlan.zhihu.com/p/265673438 1.数据集的表现 学术界的测评比如IJB-C和megaface&#xff0c;利用该数据集很容易刷到SOTA&#xff0c;大家具体可以看论文&#xff0c;这里展示一下IFRT的结果&#xf…

格灵深瞳招股书摘要-技术部分

以下内容仅供个人学习和借鉴&#xff0c;如侵权立删&#xff01; 一、经营模式 公司主要从事计算机视觉技术和大数据分析技术的研发和应用。公司的盈利 来源于向客户提供面向应用场景的人工智能产品及解决方案获得销售收入。公司 自主研发的人工智能产品主要包括智源智能前端…

格灵深瞳CTO邓亚峰:AI学习的三种路线

导读&#xff1a;人工智能多年来一直是行业热门&#xff0c;AI人才也受各大公司争相聘请。如何能快速掌握AI技能&#xff1f;高水准的AI人才应该具备哪些专业能力&#xff1f;AI大牛是怎么炼成的&#xff1f;格灵深瞳CTO邓亚峰总结的AI学习路线&#xff0c;十分值得一读。 邓亚…

格灵深瞳赵勇:计算机视觉在安防、交通、机器人、无人车等领域的应用

赵勇关注的领域主要按照它的产业规模和离现实的关系来综合进行考量 三年前&#xff0c;计算机视觉对于绝大部分人来说&#xff0c;都是一个非常陌生的名词。但是三年过去了&#xff0c;今天如果你身在科技互联网圈&#xff0c;如果你偶尔也会参加一些科技行业的大会&#xff0c…

云从科技在科创板IPO注册获批,收入远高于格灵深瞳同期

近日&#xff0c;证监会披露的消息显示&#xff0c;同意云从科技集团股份有限公司&#xff08;下称“云从科技”&#xff09;首次公开发行股票并在科创板上市的注册申请。这意味着&#xff0c;云从科技已经从证监会取得IPO批文&#xff08;即“上市通行证”&#xff09;&#x…

格灵深瞳 CEO 赵勇深度总结:揭开国内智能安防与人脸识别的真实现状

[转] http://www.leiphone.com/news/201703/FDSaYcZGDi6iLZho.html AI 技术的成熟&#xff0c;使得由人工智能来自动消化海量监控视频数据成为可能。目前&#xff0c;人工智能已经逐步渗透到安防行业&#xff0c;最终将会把以视频网络为核心的安防产业&#xff0c;重塑为以结构…

FRVT赛程全纪录:格灵深瞳全球排名前五

作者 | 张德兵&#xff0c;格灵深瞳首席科学家&算法部负责人 来源 | 转载自知乎张德兵 最近两个月&#xff0c;格灵深瞳首席科学家&算法部负责人张德兵与算法团队参加了全球人脸识别算法测试(FRVT、Face Recognition Vendor Test)。虽然是第一次参加此比赛&#xff0c;…