openai库制作聊天机器人

人工智能(Artificial Intelligence,简称 AI)是计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能以人类智能相似方式做出反应、学习、推理和决策的智能机器。自从20世纪40年代计算机诞生以来,人工智能就作为一门科学和工程学科开始发展,它的目标是创建能够执行人类智能活动的机器,如视觉识别、语言理解、决策和学习。

目录

准备

构建openai响应

拓展内容

输出控制

输出计算token

退出运行

清洁输出界面

最后


使用python的openai库,完成一个简单的聊天机器人

准备

首先应该准备好python中的openai库:

pip install openai

这是最为主要的库,其他的可以根据代码功能自行调整,我这里是使用了以下的库

time, tiktoken,pyautogui

都可以使用pip安装

还需要准备一个api-key,可以自行去网上寻找相关教程,也可以直接去某宝购买一个

我这里是直接购买的

构建openai响应

然后完成基本的构成openai的响应

from openai import OpenAI

client = OpenAI(api_key="******")
ciient.base_url = "*****"  # 这里用的是某宝那边给的代理

text_input = input("请输入你想询问的问题: ") # 获取你想要向ai发送的内容

response = client.chat.completions.create(
    mode="gpt-3.5-turbo"
    messages=[
                {"role": "user", "content": text_input},
            ],
)

这样就构建好了一个基本的请求

然后

print(response.choise[0].message.count)

运行代码,

输入:这样你的问题就能传输过去并且得到回应,但是我们发现似乎无法输入中文

于是可以这样操作,当然直接点击在控制台中运行也是可以的,这里就采用另外的方法了

点击修改运行配置

然后点击修改选项

接着勾选上输出控制台上模拟终端

运行一下,就可以输入中文啦

请输入你想询问的问题: 你好
你好!有什么可以帮助你的吗?

进程已结束,退出代码为 0

拓展内容

输出控制

但是我们发现仅仅是这样是不够的,我们可以发现一般是用的ai都是一个字一个字的输出内容的,

所以我们可以用到for循环和time库

import time
for wenzi in response.choices[0].message.content:
    time.sleep(0.1)
    print(wenzi, end='')
print()

这样完成输出之后还会进行一个换行

输出计算token

可以在换行之后计算token数

import tiktoken
encoding = tiktoken.encoding_for_model("gpt-3.5-turbo")
encoding
print(len(encoding.encode(text_input)))

退出运行

        text_input = input("请输入你想询问的问题: ")
        if text_input == "exit":
            time.sleep(1)
            pyautogui.hotkey('ctrl', "f2")
            break

也就是说如果你输入了“exit”,将会执行pycharm的退出,这里使用热键行为模拟的

清洁输出界面

但如果此时运行输入exit会得到

Traceback (most recent call last):
  File "D:\pycharm4\AI\AIStudy\main.py", line 13, in <module>
    pyautogui.hotkey('ctrl', "f2")
  File "C:\Users\heilai4\AppData\Local\Programs\Python\Python312\Lib\site-packages\pyautogui\__init__.py", line 595, in wrapper
    _handlePause(kwargs.get("_pause", True))
  File "C:\Users\heilai4\AppData\Local\Programs\Python\Python312\Lib\site-packages\pyautogui\__init__.py", line 639, in _handlePause
    time.sleep(PAUSE)
KeyboardInterrupt

这些都是我们不需要的内容,程序不报错就OK了

我们接着使用try, except来调整

也可以套入一个while循环,设为True来不断监视我们的输出,以持续性输入,然后通过“exit”来退出

while True:
    try:
        text_input = input("请输入你想询问的问题: ")
        if text_input == "exit":
            time.sleep(1)
            pyautogui.hotkey('ctrl', "f2")
            break
        response = client.chat.completions.create(
            model="gpt-3.5-turbo",
            messages=[
                {"role": "user", "content": text_input},
            ],
        )
        # print(response.choices[0].message.content)

        for wenzi in response.choices[0].message.content:
                    time.sleep(0.1)
                    print(wenzi, end='')
        print()
        encoding = tiktoken.encoding_for_model("gpt-3.5-turbo")
        encoding
        print(len(encoding.encode(text_input)))

    except:
        print("问答结束")

最后

最后完整的代码为:

from openai import OpenAI
import tiktoken
import time
import pyautogui


client = OpenAI(api_key="*******")
client.base_url = '**********'
while True:
    try:
        text_input = input("请输入你想询问的问题: ")
        if text_input == "exit":
            time.sleep(1)
            pyautogui.hotkey('ctrl', "f2")

        response = client.chat.completions.create(
            model="gpt-3.5-turbo",
            messages=[
                {"role": "user", "content": text_input},
            ],
        )
        # print(response.choices[0].message.content)

        for wenzi in response.choices[0].message.content:
                    time.sleep(0.1)
                    print(wenzi, end='')
        print()
        encoding = tiktoken.encoding_for_model("gpt-3.5-turbo")
        encoding
        print(len(encoding.encode(text_input)))

    except:
        print("问答结束")
        pyautogui.hotkey('ctrl', "f2")

来试验一下成果吧,以下内容为模拟终端输出结果:

代码还是有很多瑕疵的

------

本文到此结束

希望能帮助到你

  • 12
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值