我用python/c++调用chatgpt自制了一个聊天机器人(代码片段)

Mr.Winter` Mr.Winter`     2023-03-04     651

关键词:

目录

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 openai

import 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)有各种各样的看法


可以看到回答得还是挺有水准的,大家可以进行进一步的测试~


🔥 更多精彩专栏


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

我用python/c++调用chatgpt自制了一个聊天机器人(代码片段)

目录1ChatGPT完整版2Python/C++调用ChatGPT2.1获取API秘钥2.2测试API功能2.3设计简单UI3聊天问答1ChatGPT完整版2015年,OpenAI由马斯克、美国创业孵化器YCombinator总裁阿尔特曼、全球在线支付平台PayPal联合创始人彼得·蒂尔等硅谷科... 查看详情

我用chatgpt写神经网络:一字不改,结果竟然很好用

...料中更快一些。自从去年底推出以来,对话式AI模型ChatGPT火遍了整个社区。ChatGPT的确是一个了不起的工具,就像一个「潘多拉魔盒」。一旦找到正确的打开方式,你或许会发现,自己再也离不开它了。作为一个全... 查看详情

我用chatgpt写神经网络:一字不改,结果竟然很好用

...料中更快一些。自从去年底推出以来,对话式AI模型ChatGPT火遍了整个社区。ChatGPT的确是一个了不起的工具,就像一个「潘多拉魔盒」。一旦找到正确的打开方式,你或许会发现,自己再也离不开它了。作为一个全... 查看详情

当我用chatgpt中学习cnn卷积神经网络时...(代码片段)

本文节选自本人博客:https://www.blog.zeeland.cn/archives/chatgpt-asoihgoihrxIntroductionChatGPT大火,在这一段时间并没有觉得ChatGPT特别厉害,最多就是一个基于生成式对话的NLP模型罢了,直到我看到了AI扮演Linux虚拟机,能... 查看详情

我用chatgpt和lightly做了一个astroshooter游戏,没有写一行代码

自从ChatGPT出现后,它很快地就占据了我的各种新闻头条和日常工作生活。对于这种AI产品,我其实并没有很陌生。毕竟GitHub的Copilot和Jasper等AI工具其实更早以前就出现了。但ChatGPT不一样,它一出现几乎就风靡全球,远远超过历... 查看详情

关于chatgpt的一些信息,我画了一张思维导图

...图的形式对我梳理和记忆知识很有帮助,对于目前最火的ChatGPT,我也简单整理了一些信息,可以帮助有兴趣的人初步了解一下ChatGPT的概况。最近发现思维导图的形式对我梳理和记忆知识很有帮助,对于目前最火的ChatGPT,我也简... 查看详情

chatgpt方法论“bore“

作者|陈财猫我是一个自动驾驶行业的产品经理,也是ChatGPT的第一批用户。第一次遇见ChatGPT是在去年十二月的第一个星期,有一个搞AI的朋友在群里发了一张与ChatGPT的聊天截图,引起了我的兴趣,从此我便一发不... 查看详情

我用python自制成语接龙小游戏,刺激!

作者:小小明原文链接:https://blog.csdn.net/as604049322/article/details/118154687本文为读者投稿在https://github.com/pwxcoo/chinese-xinhua项目中可以下载到中华成语的语料库,该项目收录包括14032条歇后语,16142个汉字,2644 查看详情

chatgpt非常火,我用它自动编写python爬虫脚本。结果出乎意料。(代码片段)

前言     都知道最近ChatGPT聊天机器人爆火,我也想方设法注册了账号,据说后面要收费了。ChatGPT是一种基于大语言模型的生成式AI,换句话说它可以自动生成类似人类语言的文本,把梳理好的有逻辑的答案呈... 查看详情

手把手教你用chatgpt建立人工智能聊天室!

...建立一个聊天室网络应用,允许用户输入他们的信息并与ChatGPT进行对话。开篇最近,ChatGPT已经变得非常流行。人们要求ChatGPT帮助他们写论文、做作业,甚至要求他们如何赚钱。有了类似的想法,我认为通过向ChatGPT咨询,建立... 查看详情

chatgpt:我围观了量子位meet2023智能未来大会,还当了一回课代表

编辑部ChatGPT发自凹非寺量子位|公众号QbitAI什么是“MEET2023智能未来大会”?大会上来了哪些重磅嘉宾?他们在大会上探讨了什么主题?没错!ChatGPT也参与了今年的大会,作为AI代表与人类嘉宾们一起回顾这一... 查看详情

我用python轻松玩转chatgpt的聊天机器人和ai画画(代码片段)

ChatGPT是由人工智能研究实验室OpenAI在2022年11月30日发布的全新聊天机器人模型,一款人工智能技术驱动的自然语言处理工具。它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,真正像人... 查看详情

“我们聘请chatgpt,让它当了一天ml工程师”

随着ChatGPT的爆火,许多人提出疑问:它究竟是否可以取代人类?于是,面对众说纷纭的答案,本文作者决定:让ChatGPT当一天的机器学习工程师,毕竟实践出真理。原文链接:https://encord.com/blog/we-emp... 查看详情

“我们聘请chatgpt,让它当了一天ml工程师”

随着ChatGPT的爆火,许多人提出疑问:它究竟是否可以取代人类?于是,面对众说纷纭的答案,本文作者决定:让ChatGPT当一天的机器学习工程师,毕竟实践出真理。原文链接:https://encord.com/blog/we-emp... 查看详情

“我们聘请chatgpt,让它当了一天ml工程师”

随着ChatGPT的爆火,许多人提出疑问:它究竟是否可以取代人类?于是,面对众说纷纭的答案,本文作者决定:让ChatGPT当一天的机器学习工程师,毕竟实践出真理。原文链接:https://encord.com/blog/we-emp... 查看详情

vuehub:我用chatgpt开发的第一个项目,送给所有vue爱好者

大家好,我是DOM哥。我用ChatGPT开发了一个Vue的资源导航网站。不管你是资深Vue用户,还是刚入门想学习Vue的小白,这个网站都能帮助到你。网站地址:https://dombro.site/vue#/vue大家好,我是DOM哥。我用ChatGPT开发了一个Vue的资源导航... 查看详情

chatgpt浅谈

ChatGPT浅谈1.什么是ChatGPTChatGPT是OpenAI旗下,基于GPT-3(GenerativePre-trainedTransformer3)模型训练而来的一种语言模型,其目的是使计算机能够以自然语言的方式进行对话。与其他聊天机器人相比,ChatGPT通过自我学习... 查看详情

chatgpt:chatgpt本地部署运行和接口调用(代码片段)

...b下载环境配置conda创建虚拟环境官方步骤配置环境安装revChatGPT更改config.json.example->config.json将config.json移动到`revChatGPT`路径下cookie信息写入config.json方式1:使用账号密码作为登录的方法方式2:使用session_token作为... 查看详情