我用python/C++调用ChatGPT自制了一个聊天机器人

news/2024/5/19 3:24:35/文章来源:https://blog.csdn.net/FRIGIDWINTER/article/details/128967824

目录

  • 1 ChatGPT完整版
  • 2 Python/C++调用ChatGPT
    • 2.1 获取API秘钥
    • 2.2 测试API功能
    • 2.3 设计简单UI
  • 3 聊天问答

1 ChatGPT完整版

2015年,OpenAI由马斯克、美国创业孵化器Y Combinator总裁阿尔特曼、全球在线支付平台PayPal联合创始人彼得·蒂尔等硅谷科技大亨创立,公司核心宗旨在于实现安全的通用人工智能(AGI),使其有益于人类。

2022年12 月 1 日,OpenAI的联合创始人山姆·奥特曼在推特上公布ChatGPT并邀请人们免费试用

在这里插入图片描述

ChatGPT可以与人类进行谈话般的交互,可以回答追问,连续性的问题,承认其回答中的错误,指出人类提问时的不正确前提,拒绝回答不适当的问题,其性能大大超乎人们对弱人工智能的想象。

在AI写代码、修Bug,甚至还想统治人类?快速体验ChatGPT中,我给出了体验完整版ChatGPT的教程,本文就基于ChatGPT API做一个小应用

2 Python/C++调用ChatGPT

Python/C++如何调用ChatGPT呢,这个问题直接问ChatGPT就好

在这里插入图片描述

在这里插入图片描述

以Python为例,接下来按照ChatGPT自己说的步骤执行

2.1 获取API秘钥

进入OpenAI API点击Creat new secret key

在这里插入图片描述
接着会获得一个秘钥,第一时间复制它
在这里插入图片描述

2.2 测试API功能

首先安装openai,建议在虚拟环境中进行,以免破坏工作环境,虚拟环境的配置请看Anaconda安装与Python虚拟环境配置保姆级图文教程(附速查字典)

pip install openai -i https://pypi.tuna.tsinghua.edu.cn/simple

接着进行接口测试

import openai# Initialize the OpenAI API client
openai.api_key = "YOUR_API_KEY"# Define your prompt
prompt = "Hello, how are you today?"# Generate a response from ChatGPT
response = openai.Completion.create(engine="text-davinci-002",prompt=prompt,max_tokens=1024,n=1,stop=None,temperature=0.5,
)# Print the response
print(response["choices"][0]["text"])

可以收到ChatGPT的回话说明测试通过

I'm doing well, thank you for asking. How about you?

2.3 设计简单UI

做一个简单的UI界面

import openaiimport os, sys
from tkinter import *
from tkinter.font import Font
from tkinter.ttk import *class AppUI(Frame):def __init__(self, master=None):Frame.__init__(self, master)self.master.title('My ChatGPT vx:yhd13950307060')self.master.geometry('900x500')self.createWidgets()def createWidgets(self):self.top = self.winfo_toplevel()self.style = Style()self.style.configure('Tftitle.TLabelframe', font=('黑体', 12))self.style.configure('Tftitle.TLabelframe.Label', font=('黑体', 12))self.ftitle = LabelFrame(self.top, text='', style='Tftitle.TLabelframe')self.ftitle.place(relx=0.008, rely=0.017, relwidth=0.982, relheight=0.998)self.stext = Text(self.ftitle, font=('黑体', 12), wrap=NONE, )self.stext.place(relx=0.017, rely=0.036, relwidth=0.957, relheight=0.412)# 垂直滚动条self.VScroll1 = Scrollbar(self.stext, orient='vertical')self.VScroll1.pack(side=RIGHT, fill=Y)self.VScroll1.config(command=self.stext.yview)self.stext.config(yscrollcommand=self.VScroll1.set)# 水平滚动条self.stextxscroll = Scrollbar(self.stext, orient=HORIZONTAL)self.stextxscroll.pack(side=BOTTOM, fill=X)self.stextxscroll.config(command=self.stext.xview)self.stext.config(xscrollcommand=self.stextxscroll.set)self.totext = Text(self.ftitle, font=('黑体', 12), wrap=NONE)self.totext.place(relx=0.017, rely=0.552, relwidth=0.957, relheight=0.412)self.VScroll2 = Scrollbar(self.totext, orient='vertical')self.VScroll2.pack(side=RIGHT, fill=Y)# 将滚动条与文本框关联self.VScroll2.config(command=self.totext.yview)self.totext.config(yscrollcommand=self.VScroll2.set)# 水平滚动条self.totextxscroll = Scrollbar(self.totext, orient=HORIZONTAL)self.totextxscroll.pack(side=BOTTOM, fill=X) self.totextxscroll.config(command=self.totext.xview)self.totext.config(xscrollcommand=self.totextxscroll.set)menubar = Menu(self.top, tearoff=False)  # 创建一个菜单self.style.configure('Tcleartext.TButton', font=('黑体', 12))self.cleartext = Button(self.ftitle, text='清空', command=self.cleartext_Cmd, style='Tcleartext.TButton')self.cleartext.place(relx=0.239, rely=0.463, relwidth=0.086, relheight=0.073)self.style.configure('Taddyh.TButton', font=('黑体', 12))self.addyh = Button(self.ftitle, text='查询', command=self.addyh_Cmd,style='Taddyh.TButton')self.addyh.place(relx=0.512, rely=0.463, relwidth=0.2, relheight=0.073)class App(AppUI):def __init__(self, master=None):AppUI.__init__(self, master)def cleartext_Cmd(self, event=None):self.stext.delete(1.0, "end")self.totext.delete(1.0, "end")def addyh_Cmd(self, event=None):cookiestext = self.stext.get(1.0, "end")response = openai.Completion.create(engine="text-davinci-002",prompt=cookiestext,max_tokens=1024,n=1,temperature=0.5,)answer = (response["choices"][0]["text"]).split(".")for i in answer:self.totext.insert(1.0, i)self.totext.update()if __name__ == "__main__":top = Tk()App(top).mainloop()

3 聊天问答

运行程序,开始问答

  • Q1:世界上最好的编程语言是什么?
    A1:不同的编程语言适合不同的任务,世界上没有最好的编程语言

在这里插入图片描述

  • Q2:如何看待人工智能?
    A2:在形成观点之前,需要考虑人工智能的利弊。一些人认为人工智能是增强人类能力的一种方式,而另一些人则认为它是对人类的潜在威胁。这个问题没有简单的答案,因为对人工智能(AI)有各种各样的看法

在这里插入图片描述
可以看到回答得还是挺有水准的,大家可以进行进一步的测试~


🔥 更多精彩专栏

  • 《ROS从入门到精通》
  • 《Pytorch深度学习实战》
  • 《机器学习强基计划》
  • 《运动规划实战精讲》

👇源码获取 · 技术交流 · 抱团学习 · 咨询分享 请联系👇

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

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

相关文章

chatGPT都可以干什么呢?来一睹风采 (送账号)

文章目录1. 写代码2. 写文案3. 写剧本4. 写歌诗5. 写报告6. 查公式7. 写对联8. 写文章9. 做表格10. 做计划11. 等等1. 写代码 2. 写文案 3. 写剧本 4. 写歌诗 5. 写报告 这妥妥的翻译文,数据完全不对。 6. 查公式 傅里叶变换的时域性质有如下几点: 对…

企业三要素核验API接口,你了解多少?

企业三要素核验API接口是指哪些要素?企业三要素是一种有关企业实名认证的应用程序接口也称API,企业的名称、统一社会信用代码和法人代表姓名统称企业三要素。企业三要素核验API接口的资源来自国家工商总局数据库,通过数据库资料三个要素进行核…

ChatGPT 可以联网了!浏览器插件下载

注册看这里:https://www.cnblogs.com/ranxi169/p/16954797.html Twitter 用户 An Qu 开发了一款新的 Chrome 插件帮助 ChatGPT 上网,安装插件以后 ChatGPT 就可以联!网!了! 简单来说开启插件后,他可以从网…

Python+OpenCV 简单实现人脸检测多个和人脸识别 2(附代码)

如果dilb和face_recognition第三方包安装失败,请移步到Python 解决dilb和face_recognition第三方包安装失败_水w的博客-CSDN博客 上篇请移步到Pythondilb 简单实现人脸检测(附代码)_水w的博客-CSDN博客 本篇是在上篇的工作基础上进行的。 目…

【fastjson2.x 记录】那些从1.x升级到2.x踩过的坑

这篇文章主要记录升级到 fastjson2.x 版本后出现的一些问题 1. jar 包引入问题 问题描述:从 2.x 版本后,fastjson 貌似开始对代码模块进行了拆分,所以在调整配置的时候,会发现有些类突然没了,其实是需要引入其他的扩展…

基于springboot+vue的宠物商城系统(前后端分离)

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容:毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目介绍…

新能源汽车PK燃油汽车,首次胜出,输赢真的那么重要?

新能源汽车PK燃油汽车,输赢真的那么重要?是的。【科技明说 | 每日看点】今天看到一个新能源汽车领域的消息,我觉得很有意思,是说中国新能源汽车满意度水平首次超过了燃油汽车,你们觉得是这样么?…

ubuntu部署quark-5

下载源代码 解压zip sudo apt-get install unzip unzip xxxxx.zip安装所需要的包 sudo apt install python2 # 查看是否配置了默认的python sudo update-alternatives --list python若没有设置,会显示: # update-alternatives: error: no alterna…

Netty零拷贝机制

Netty零拷贝机制一:用户空间与内核空间二:传统IO流程三:零拷贝常见的实现方式1. mmap write2. sendfile四:Java中零拷贝五:Netty 中如何实现零拷贝1. CompositeByteBuf 实现零拷贝2. wrap 实现零拷贝3. slice 实现零拷…

CSP-《I‘m stuck!》-感悟

题目 做题过程 注:黄色高亮表示需要注意的地方,蓝色粗体表示代码思路 好久没有写过代码了,今天做这道编程题,简直是灾难现场。 上午编程完后发现样例没有通过,检查发现算法思路出现了问题:我计数了S不能到…

神经网络基础知识

神经网络基础知识 文章目录神经网络基础知识一、人工神经网络1.激活函数sigmod函数Tanh函数Leaky Relu函数分析2.过拟合和欠拟合二、学习与感知机1.损失函数与代价函数2. 线性回归和逻辑回归3. 监督学习与无监督学习三、优化1.梯度下降法2.随机梯度下降法(SGD)3. 批量梯度下降法…

Leetcode.1138 字母板上的路径

题目链接 Leetcode.1138 字母板上的路径 Rating : 1411 题目描述 我们从一块字母板上的位置 (0, 0)出发,该坐标对应的字符为 board[0][0]。 在本题里,字母板为board ["abcde", "fghij", "klmno", "pqr…

第02章_MySQL环境搭建

第02章_MySQL环境搭建 讲师:尚硅谷 宋红康(江湖人称:康师傅) 官网:http://www.atguigu.com 1. MySQL的卸载 1.1 步骤1:停止MySQL服务 在卸载之前,先停止MySQL8.0的服务。按键盘上的“Ctrl …

应对新的挑战!ChatGPT将如何改变多域作战?

​公众号博主推送内容,未经许可,不得转载或者引用。 原文:Exploring the Possibilities of ChatGPT in Rugged Military AI Applications 《ChatGPT:利用最先进的技术支撑多域作战》 ChatGPT是一款基于GPT-3大型自然语言模型的…

JVM学习02:内存结构

JVM学习02:内存结构 1. 程序计数器 1.1、定义 Program Counter Register 程序计数器(寄存器) 作用:是记住下一条jvm指令的执行地址 特点: 是线程私有的不会存在内存溢出 1.2、作用 程序计数器物理上是由寄存器来实…

rar压缩文件暴力破解

1. 简介 rar 压缩文件资源又不少是被加密的,密码通常也比较简单,我们可以通过暴力破解的方式来获取,通常耗时也比较小 程序地址:rar压缩密码暴力破解程序 2. 使用说明 2.1 基本语法 rar-bruteforce-crack.py [--start START] …

RocketMQ5.0.0消息存储<三>_消息转发与恢复机制

目录 一、消息转发 1. ReputMessageService线程初始化 2. 消息转发更新ConsumeQueue 3. 消息转发更新IndexFile 二、恢复机制 1. Broker加载存储文件 2. Broker正常退出的文件恢复 3. Broker异常退出的文件恢复 三、参考资料 一、消息转发 消息消费队列文件、索引文件…

DNS 原理入门指南(一)

DNS 是互联网核心协议之一。不管是上网浏览,还是编程开发,都需要了解一点它的知识。 本文详细介绍DNS的原理,以及如何运用工具软件观察它的运作。我的目标是,读完此文后,你就能完全理解DNS。 一、DNS 是什么&#xff1…

Java中导入、导出Excel——HSSFWorkbook 使用

一、介绍 当前B/S模式已成为应用开发的主流,而在企业办公系统中,常常有客户这样子要求:你要把我们的报表直接用Excel打开(电信系统、银行系统)。或者是:我们已经习惯用Excel打印。这样在我们实际的开发中,很多时候需要…

字母板上的路径 题解,力扣官方出来挨打(小声)

字母板上的路径 我们从一块字母板上的位置 (0, 0) 出发,该坐标对应的字符为 board[0][0]。 在本题里,字母板为board [“abcde”, “fghij”, “klmno”, “pqrst”, “uvwxy”, “z”],如下所示。 我们可以按下面的指令规则行动&#xff1a…