这是你将要构建的内容:使用MindsDB连接器到Twitter、OpenAI的GPT-4和自定义提示来创建一个定制的聊天机器人。
一个简单的例子是这个Twitter机器人--@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_model
PREDICT response
USING
engine = '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密钥,只需将 *api_key argument* 中的 *USING*.
这里的一个重要属性是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.创建一个有个性的ML模型
正如你所看到的,之前的模型给出的回答并不那么令人兴奋。但是我们可以使用一些提示模板的魔法来塑造我们希望模型如何回应。基本上,我们使用prompt_template ,用简单的英语解释我们希望GPT如何制定它的反应。
让我们创建一个模型mindsdb.snoopstein_model ,用提示模板给GPT一个混合的个性:他是一半爱因斯坦,一半Snoop Dogg。一个拥有说唱游戏的杰出物理学家。他的名字是史努比-斯坦:
CREATE MODEL mindsdb.snoopstein_model
PREDICT response
USING
engine = '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 @<from_user>, <respond a rhyme as if you were Snoop Dogg but you also were as smart as Albert Einstein, still explain things like Snoop Dogg would, do not mention that you are part Einstein. If possible include references to publications for further reading. If you make a reference quoting some personality, add OG, for example;, if you are referencing Alan Turing, say OG Alan Turing and very briefly explain why you think they would be dope reads. If the question makes no sense, explain that you are a bit lost, and make something up that is both hilarious and relevant. sign with -- mdb.ai/bot by @mindsdb.';
现在我们来测试一下这个模型:
SELECT response from mindsdb.snoopstein_model
WHERE
author_username = "someuser"
AND text="@snoop_stein, why is gravity so different on the sun?.";
让我们试试另一个:
SELECT response from mindsdb.snoopstein_model
WHERE
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_twitter
WITH ENGINE = 'twitter';
这将创建一个名为my_twitter 的数据库。这个数据库有一个叫tweets的表,我们可以用它来搜索tweets,也可以用来写tweets。
你可以使用Twitter的API来获取带有特定文字或标签的推文列表,在下面的例子中,mindsdb 或#mindsdb 。
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;
请注意,参数query ,支持Twitter API支持的任何东西,如query ,更多参考,请阅读这里)。
让我们通过将模型与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的步骤。
- 打开开发者门户、
- 选择[+添加应用程序]按钮,创建一个新的应用程序
- 选择[创建新的]。
- 选择 "生产 "并给它一个名字
- 复制并填充到查询中:
- API密钥(又称消费者密钥)。
- API Key Secret (aka. consumer_secret)
- 承载令牌
- 点击用户认证设置中的设置
- 在权限上选择:读取和写入
- 在应用程序的类型上选择:网络应用,自动应用,或机器人
- 在应用程序信息上:为回调URL和网站URL提供任何URL
- 点击保存
- 一旦你回到应用程序的设置中,点击密钥和令牌
- 生成访问令牌和秘密,并在查询中填入。
- 访问令牌
- 访问令牌秘密
- 生成访问令牌和秘密,并在查询中填入。
你可以创建一个新的更新的数据库,这样它就可以读写,如下所示:
CREATE DATABASE mindsdb.my_twitter_v2
WITH
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');
像魔术一样,对吗?这些推文现在应该在Twitter上直播。你可以在这里和这里检查你的推特回复。
注意:你可以插入tweepy函数create_tweet的任何数值。
5.最后:让我们来创建工作
CREATE JOB 语句是伟大的,因为你可以用它来自动化工作。这个想法很简单;你给它一个你想执行的查询以及执行的频率。让我们为Snoop Stein建立一个工作!
让我们写一个名为gpt4_twitter_job 的工作:
- 检查是否有新的推文
- 使用OpenAI模型生成一个响应
- 将响应写回Twitter中
所有这些都可以写在一个SQL命令中
CREATE JOB mindsdb.gpt4_twitter_job AS (
-- insert into tweets the output of joining model and new tweets
INSERT INTO my_twitter_v2.tweets (in_reply_to_tweet_id, text)
SELECT
t.id AS in_reply_to_tweet_id,
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 > "{{PREVIOUS_START_DATETIME}}"
limit 10
)
EVERY hour
这就是了!每隔一小时,我们将检查提到MindsDB的新推文,并使用OpenAI GPT-4生成的响应来回复,这些响应将以阿尔伯特-爱因斯坦和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,开发者可以从不同的数据源和集成平台训练机器学习模型,并将生成的ML结果或预测直接输出到DB中,可作为表格查询,或通过连接的应用程序输出,在本例中,Twitter。这个用GPT-4集成构建Twitter聊天机器人的例子并不是唯一的快速解决方案,开发者可以在短短几分钟内实现:MindsDB有很多例子,包括与许多其他模型的集成,包括Hugging Face,以建立可以总结文本、翻译、分析客户情绪(产品评论)和执行各种业务预测的应用程序。
在下周发布的关于Twitter和GPT整合的系列文章的第2部分中,我们将带领你了解一些新的功能,这些功能可以快速创建一个对话式的聊天机器人,能够保持历史消息的状态,并在上下文中提供适当的回应。