如何使用GPT-4建立名人推特聊天機器人
譯文譯者 | 李睿
審校 | 重樓
用戶如今可以構建自定義聊天機器人,它可以使用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_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密鑰,只需在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_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的表,我們可以使用它來搜索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_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');
這就像魔法一樣,對吧?這些推文現在應該在推特上直播了。可以查看推特回復。
注:可以插入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 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第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