TG Bot 连接 OpenAI API,从而与人工智能进行对话

 

本文主要介绍接入 Telegram Bot(后面简称电报机器人),因为接入非常快,机器人也不用审核啥的。

准备工作

Ⅰ,OpenAI 账号

Ⅱ,电报账号

Ⅲ,境外云服务器

简要步骤

申请电报机器人

申请电报机器人非常简单。

1)电报搜索 BotFather ,如图第一个。点击BotFather后,在对话框下方点击开始与BotFather对话,此时BotFather会列出来所有代码命令。

2)点击命令 /newbot  按照引导依次输入。

机器人昵称:ChatGPT-Caihu

机器人用户名:chatgpt_caihu_bot   (必须_bot结尾)

最后回复内容是机器人创建成功!红框内的字符串为该机器人的Token(重要信息不能轻易泄露给别人)。

3)在电报中搜索刚刚创建的机器人 ChatGPT-Caihu  ,然后点击开始。这样就完成机器人的创建了。

本文内容一共分为两个部分,第一部分是在一台linux服务器,直接用python命令行的方式与最新的模型 Davinci-003交互;第二部分是与已经接入API的telegram bot交互,实现的方法也很简单,主要命令和代码如下:

apt update
apt install pip vim -y
pip install openai

然后,需要申请OpenAI的api,在这里申请:https://platform.openai.com/account/api-keys (先登录登录账号再点这个链接)
顺便说一下,申请api需要先绑定信用卡,不支持中国卡.推荐使用:https://iweec.com/709.html
绑卡后两个月送$18,随便造;参考费用是750个单词算1000tokens,费用$0.02。为了测试不超标,我把消费限制在每月最多$1。设置限额的方法就是在 https://platform.openai.com/account/billing/limits 看条件设置吧!

然后,就是在vps上创建 main.py,内容如下:

import openai

openai.api_key = "这里是你申请到的API-key"

def chat_with_gpt3(prompt):
    response = openai.Completion.create(
        engine="text-davinci-003",
        prompt=prompt,
        max_tokens=104,
        n=1,
        stop=None,
        temperature=0.5,
    )
    message = response.choices[0].text
    return message

def main():
    while True:
        message = input("You: ")
        response_message = chat_with_gpt3(message)
        print(f"Bot: {response_message}")

if __name__ == "__main__":
    main()

最后执行 python3 chat.py,即可实现交互问答:

截屏2023-02-02 21.54.27.png

第二部分

首先还是要申请OpenAI的apikey,方法上面说了;
然后这个vps也必须是海外的嗷,因为我们要用bot;

apt update
apt install pip vim -y
pip install openai aiogram

下一步就是新建main.py,内容如下:

import openai
from aiogram import Bot, types
from aiogram.dispatcher import Dispatcher
from aiogram.utils import executor

token = \'这里是你的bot token\'
openai.api_key = \'这里是你的api-key\'

bot = Bot(token)
dp = Dispatcher(bot)

@dp.message_handler()
async def send(message : types.Message):
    response = openai.Completion.create(
    model="text-davinci-003",
    prompt=message.text,
    temperature=0.9,
    max_tokens=1000,
    top_p=1.0,
    frequency_penalty=0.0,
    presence_penalty=0.6,
    stop=["You:"]
)
    await message.answer(response[\'choices\'][0][\'text\'])

executor.start_polling(dp, skip_updates=True)

最后,就是执行 python3 main.py,提示:Updates were skipped successfully.就可以到你的bot当中,跟他聊一下!

截屏2023-02-02 20.58.06.png

小结

切记:不要暴露API和token!!

我在上面用例当中引用的text-davinci-003模型,虽然快,但是有点傻:

截屏2023-02-02 22.43.26.png

视频教程

Y:https://www.youtube.com/watch?v=7H0lYvfoghs

声明:本文为原创,作者为 jimait,转载时请保留本声明及附带文章链接:https://jimait.com/archives/1877.html
支付宝打赏支付宝打赏 微信打赏微信打赏

如果此篇文章能帮助到您,还请客官打赏一二.^v^