译者 | 李睿
(资料图片仅供参考)
审校 | 重楼
用户如今可以构建自定义聊天机器人,它可以使用MindsDB与Twitter的连接器、OpenAI的GPT-4和自定义提示。
@Snoop_Stein这个推特机器人就是一个简单的例子,它会以适当的场景和个性化回复任何提到它的推文。如果你还没有给SnoopStein发推文,可以看看它会给出什么结果。
制作自己的SnoopStein现在开始制作:
在MindsDB云上创建一个帐户(如果还没有的话)。进入MindsDB SQL编辑器。现在展示如何构建Snoop_Stein GPT-4机器人,以及如何构建自己的机器人。
1.创建一个GPT-4模型让我们先看看在MindsDB中创建一个表示为虚拟“AI表”的机器学习模型有多简单。在本例中,将GPT4模型称为gptbot_model。
需要注意的是,GPT-4 API的需求很大,速率有限,所以它可能会很慢。以下步骤可能每个步骤都需要几秒钟的时间。
CREATE MODEL mindsdb.gpt_modelPREDICT responseUSINGengine = "openai",-- api_key = "your openai key", in MindsDB cloud accounts we provide a default key model_name = "gpt-4", -- you can also use "text-davinci-003", "gpt-3.5-turbo"prompt_template = "respond to {{text}} by {{author_username}}";
注:如果在Docker上使用MindsDB,或者如果想使用自己的OpenAI API密钥,只需在USING.中传递API_key参数即可。
这里的一个重要属性是prompt_template。这是告诉GPT如何编写答案的地方;它是一个模板,可以从列中传递值。在本例中的模板包含{{author_username}}和{{text}},它们将被查询中的WHERE变量所取代。让我们看看实际情况:
SELECT response from mindsdb.gpt_model WHERE author_username = "mindsdb" AND text="why is gravity so different on the sun?";
2.创建一个具有个性的机器学习模型正如你所看到的,之前的模型给出的答案并不是那么令人兴奋。但是可以使用一些提示模板魔法来塑造如何响应模型。从本质上说,可以使用prompt_template采用通俗的语言解释希望GPT如何表达它的响应。
创建一个模型mindsdb.snoostein_model,该模型带有一个提示模板,使这个GPT模型具有混合人格:一半是爱因斯坦,一半是史努比狗。创建的是一位拥有说唱风格的杰出物理学家,他的名字叫史努比·斯坦:
创建模型mindsdb.snoopstein_model
CREATE MODEL mindsdb.snoopstein_modelPREDICT responseUSINGengine = "openai",max_tokens = 300,-- api_key = "your openai key, in cloud accounts we provide one",model_name = "gpt-4", -- you can also use "text-davinci-003" or "gpt-3.5-turbo"prompt_template = "From input message: {{text}}\by from_user: {{author_username}}\In less than 550 characters, write a Twitter response to {{author_username}} in the following format:\Dear @,
现在让我们来测试这个模型:
SELECT response from mindsdb.snoopstein_modelWHERE author_username = "someuser" AND text="@snoop_stein, why is gravity so different on the sun?.";
让我们试试另一个模型:
SELECT response from mindsdb.snoopstein_modelWHERE author_username = "someuser" AND text="@snoop_stein, Apart from yourself, which rappers would make the best physicists and why?!";
3.把GPT-4模型连接到Twitter!我们将准备一个MindsDB SQL语句以只读访问方式连接Twitter:
CREATE DATABASE my_twitterWITH ENGINE = "twitter";
这将创建一个名为my_twitter的数据库。这个数据库附带一个名为tweets的表,我们可以使用它来搜索tweet和编写tweet。
在mindsdb或 #mindsdb下面的情况下,可以使用Twitter API来获得带有特定文本或标签的tweet列表。
SELECT id, created_at, author_username, text FROM my_twitter.tweets WHERE query = "(@snoopstein OR @snoop_stein OR #snoopstein OR #snoop_stein) -is:retweet" AND created_at > "2023-03-20" LIMIT 20;
这里要注意的是,参数查询支持TwitterAPI支持的任何查询。
让我们来测试一下,通过将模型与tweets表连接起来,这个模型可以根据Snoop Stein在许多tweets上的个性生成输出:
SELECT t.id AS in_reply_to_tweet_id, t.text AS input_text, t.author_username, t.created_at, r.response AS text FROM my_twitter.tweets t JOIN mindsdb.snoopstein_model r WHERE t.query = "(@snoopstein OR @snoop_stein OR #snoopstein OR #snoop_stein) -is:retweet -from:snoop_stein" AND t.created_at > "2023-03-20" LIMIT 4;
4.使用SQL编写推文现在,我们到了想让MindsDB把回复写回Twitter的部分。为此,如果你还没有Twitter开发帐户,则需要注册一个Twitter开发帐户,以便能够将推文写入Twitter(写入而不是只读)。
Twitter可能需要一天左右的时间来批准你的新开发帐户。一旦获得批准,以下是将你的Twitter账户链接到MindsDB的步骤。
开放开发者门户选择[+添加应用程序]按钮来创建一个新的应用程序选择[新建]选择“生产”并命名在查询中复制和填充:1.API密钥(aka. consumer_key)
2.API密钥机构密(aka. consumer_secret )
3.无记名令牌
在“用户认证设置”中单击“设置”1.权限选择:读和写
2.在应用类型中选择:“Web应用”、“自动化应用”或“机器人”
3.在应用程序信息:提供任何URL为回调URL和网站URL
4.单击“保存”
返回应用程序设置后,单击密钥和令牌生成访问令牌和机密,并在查询中填充
1)访问令牌
2)访问令牌机密
可以创建一个新的更新后的数据库,这样它就可以像下面这样读写:
CREATE DATABASE mindsdb.my_twitter_v2WITH PARAMETERS = { "consumer_key": "your twitter App API key", "consumer_secret": "your twitter App API key secret", "bearer_token": "your twitter App bearer TOKEN", "access_token": "your twitter App Access Token", "access_token_secret": "your twitter App Access Token Secret" };
让我们通过在MindsDB的Twitter账户上发布一些内容来进行测试。
INSERT INTO my_twitter_v2.tweets (in_reply_to_tweet_id, text) VALUES (1633439839491092482, "MindsDB is great! now its super simple to build ML powered apps using JOBS https://docs.mindsdb.com/sql/tutorials/twitter-chatbot"), (1634126825377996800, "Holy!! MindsDB is such a useful tool for developers doing ML https://docs.mindsdb.com/sql/tutorials/twitter-chatbot");
这就像魔法一样,对吧?这些推文现在应该在推特上直播了。可以查看推特回复。
注:可以插入tweepy函数create_tweet的任何值。
5.创造工作创造工作(CREATE JOB)语句很棒,因为可以使用它实现自动化工作。这个想法很简单。给它一个想要执行的查询和执行的频率,现在给史努比·斯坦安排一份工作!
让我们编写一个名为gpt4_twitter_JOB的工作:
检查新的推文使用OpenAI模型生成响应把回复写回Twitter所有这些都可以在一个SQL命令中编写:
CREATE JOB mindsdb.gpt4_twitter_job AS (-- insert into tweets the output of joining model and new tweetsINSERT INTO my_twitter_v2.tweets (in_reply_to_tweet_id, text)SELECT t.id AS in_reply_to_tweet_id, r.response AS textFROM my_twitter.tweets tJOIN mindsdb.snoopstein_model r WHERE t.query = "(@snoopstein OR @snoop_stein OR #snoopstein OR #snoop_stein) -is:retweet -from:snoop_stein" AND t.created_at > "{{PREVIOUS_START_DATETIME}}" limit 10)EVERY hour
每隔一小时,都会检查提到MindsDB的新推文,并使用OpenAI GPT-4第2步中的模板生成的回复进行回复,该模板将以爱因斯坦和史努比狗(Snoop Dogg)相结合的风格进行回复。
可以检查JOB是否有效运行。
SELECT * FROM jobs WHERE name="gpt4_twitter_job";SELECT * FROM jobs_history WHERE name="gpt4_twitter_job";
可以按照如下方式停止工作:
DROP JOB gpt4_twitter_job
结论MindsDB是一个功能强大的软件平台,使开发人员能够轻松地将机器学习功能构建到他们的应用程序中。使用MindsDB,开发人员可以从不同的数据源和集成平台训练机器学习模型,并将生成的机器学习结果或预测直接输出到数据库中,可以作为表查询,或通过连接的应用程序(在本例中为Twitter)输出。这个使用GPT-4集成构建Twitter聊天机器人的例子并不是开发人员可以在几分钟内实现的唯一快速解决方案:MindsDB有许多例子,包括与许多其他模型(包括Hugging Face)集成,以构建可以总结文本、翻译、分析客户情绪(产品评论)和执行各种业务预测的应用程序。
原文标题:Build a Celebrity Twitter Chatbot with GPT-4!,作者:Jorge Torres