人工智能(Artificial Intelligence,简称 AI)是计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能以人类智能相似方式做出反应、学习、推理和决策的智能机器。自从20世纪40年代计算机诞生以来,人工智能就作为一门科学和工程学科开始发展,它的目标是创建能够执行人类智能活动的机器,如视觉识别、语言理解、决策和学习。
目录
使用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")
来试验一下成果吧,以下内容为模拟终端输出结果:
代码还是有很多瑕疵的
------
本文到此结束
希望能帮助到你