在 Chai 上部署一个预训练的 AI 聊天机器人
本教程将介绍如何将机器人部署到Chai,这是一个用于创建对话 AI 并与之交互的平台。它将允许我们通过移动应用程序与我们的机器人聊天。我们还将能够查看性能统计数据并观看它爬上 Chai bot 排行榜。 在本教程结束时,您将拥有自己的聊天机器人,如上图所示😎 我还制作了一个笔记本,其中包含此博客中的所有代码,这比手动复制和粘贴所有代码片段要方便得多。有兴趣就去看看吧! 寻找聊天机器人 为此,我们
本教程将介绍如何将机器人部署到Chai,这是一个用于创建对话 AI 并与之交互的平台。它将允许我们通过移动应用程序与我们的机器人聊天。我们还将能够查看性能统计数据并观看它爬上 Chai bot 排行榜。
在本教程结束时,您将拥有自己的聊天机器人,如上图所示😎
我还制作了一个笔记本,其中包含此博客中的所有代码,这比手动复制和粘贴所有代码片段要方便得多。有兴趣就去看看吧!
寻找聊天机器人
为此,我们可以使用拥抱脸🤗。它拥有数百个最先进的 NLP 模型。我们将在本教程中使用Facebook 的 Blenderbot,因为它是目前最好的之一。它会从对话中学习,并在您聊天时变得更聪明!
试用机器人
这是一个示例对话:如果你想自己尝试这个机器人,在部署之前,你可以使用 HuggingFace 的 Transformers 模块(否则跳到下一节):
pip -q install transformers
运行以下python代码:
from transformers import BlenderbotTokenizer, BlenderbotForConditionalGeneration
import torch
model = BlenderbotForConditionalGeneration.from_pretrained("facebook/blenderbot-400M-distill")
tokenizer = BlenderbotTokenizer.from_pretrained("facebook/blenderbot-400M-distill")
print("Type \"q\" to quit")
while True:
message = input("MESSAGE: ")
if message in ["", "q", "quit"]:
break
inputs = tokenizer([message], return_tensors='pt')
reply_ids = model.generate(**inputs)
print(f"BOT: {tokenizer.batch_decode(reply_ids, skip_special_tokens=True)[0]}")
很酷吧?
将聊天机器人部署到 Chai
Chai 的移动应用程序让我们可以非常轻松地展示机器人,无需拿出笔记本电脑并启动终端实例!
还有一个机器人排行榜可以攀爬。我们可以看到我们的新机器人与平台上的其他机器人相比如何:
安装所需的python模块:
pip -q install --upgrade chaipy
目录结构
我们想要一个这样的目录结构:
- bot/
- bot.py
- dist.py
机器人代码
这是每当用户向我们的机器人发送消息时都会运行的代码。
可以使用 HuggingFace 上的任何模型。要将我们的机器人更改为另一个模型,请更改self.model
网址。您还可以添加到past_user_inputs
以更改机器人的起始上下文。这会改变机器人在对话开始时的行为方式。
在我们运行之前,请访问huggingface.co并创建一个帐户。转到右上角访问您的设置,您将在其中找到您的API 令牌。复制它并将其粘贴到写有<YOUR API_TOKEN GOES HERE>
的行中。
bot/bot.py
:
import json, requests, time
from chai_py import ChaiBot, Update
class Bot(ChaiBot):
def setup(self):
self.apiToken = "<YOUR API_TOKEN GOES HERE>" # put your huggingface API token here
self.model = "facebook/blenderbot-400M-distill" # You can change this
self.ENDPOINT = f"https://api-inference.huggingface.co/models/{self.model}"
self.headers = {"Authorization": f"Bearer {self.apiToken}"}
self.first_response = "Hey!"
async def on_message(self, update: Update) -> str:
if update.latest_message.text == self.FIRST_MESSAGE_STRING:
return self.first_response
payload = await self.get_payload(update)
return self.query(payload)
def query(self, payload):
data = json.dumps(payload)
response = requests.post(self.ENDPOINT, headers=self.headers, data=data)
if response.status_code == 503: # This means we need to wait for the model to load 😴.
estimated_time = response.json()['estimated_time']
time.sleep(estimated_time)
self.logger.info(f"Sleeping for model to load: {estimated_time}")
data = json.loads(data)
data["options"] = {"use_cache": False, "wait_for_model": True}
data = json.dumps(data)
response = requests.post(
self.ENDPOINT,
headers=self.headers,
data=data
)
return json.loads(response.content.decode("utf-8"))["generated_text"]
async def get_payload(self, update):
messages = await self.get_messages(update.conversation_id)
past_user_inputs = ["Hey"] # You can change this!
generated_responses = [self.first_response]
for message in messages:
content = message.content
if content == self.FIRST_MESSAGE_STRING:
continue
if message.sender_uid == self.uid:
# Put the user's messages into past_user_inputs
past_user_inputs.append(content)
else:
# Put the model generated messages into here
generated_responses.append(content)
return {
"inputs": {
"past_user_inputs": past_user_inputs,
"generated_responses": generated_responses,
"text": update.latest_message.text,
},
}
是时候部署机器人了!
前往Chai 开发平台设置您的开发者帐户。这允许我们在我们自己的帐户下部署机器人。您的开发者 ID 和密钥可以在开发页面的底部找到。将这些粘贴到下面的DEV_UID
和DEV_KEY
中。
您可以更改name
、image_url
和description
以个性化机器人在平台上的显示方式。
dist.py
:
from chai_py import package, Metadata, upload_and_deploy, wait_for_deployment, share_bot
from chai_py.auth import set_auth
# you can find these on the chai dev page
DEV_UID = ""
DEV_KEY = ""
set_auth(DEV_UID, DEV_KEY)
package(
Metadata(
name="Blenderbot Tutorial",
image_url="https://i.imgur.com/vs0uUfD.png",
color="0000ff",
description="Hey! Come chat with me",
input_class=Bot,
developer_uid=DEV_UID,
memory=3000,
)
)
bot_uid = upload_and_deploy("bot/_package.zip")
wait_for_deployment(bot_uid)
share_bot(bot_uid)
运行时间dist.py
成功🎉
用你的手机扫描上面的二维码,你将被带到一个与你全新的机器人聊天的屏幕,这有多酷?!
(确保您的手机上安装了 Chai 应用,在应用商店或Google Play上获取)
结论
就是这样!您现在拥有自己的聊天机器人😄
更多教程:
-
Chai docs创建你的第一个机器人
-
Google Colab 关于在自定义对话中训练 Rick & Morty 聊天机器人的教程
-
制作石头剪刀布机器人
更多推荐
所有评论(0)