claude3を使ってTwitchのチャンネルに来たコメントに自動応答するBOTを作った話
Claude3で遊んでみた。
この文章はろくに調べもせず主観で書いてます。間違いだらけなので参考にするときは調べながらやってね!
Claude3をベースに選んだ理由
System promptなるものが存在するから
メッセージと返答を何世代か参照する機能があるから
ChatGPTのAPIを使おうと思ったらなんか決済通らなかったから
あえて王道を使わない天邪鬼だから
1. System promptとは?
通常のメッセージで指定するよりも優先的に設定などを指定できる機能。
禁止事項や返答のテンプレートなどを書いとけば優先的に従ってくれる。
つまり名前や口癖などのキャラ設定を指定しておくことができる!
2. メッセージを何世代か参照できる機能とは?
複数の会話のやり取りを入力することで会話の流れを表現できる。
multiple conversationalとかAPIのマニュアルには書いてあった。
3. ChatGPTのAPIに決済が通らなかった理由とは?
登録してしばらく放置してたしよくわからん。
4. 天邪鬼とは?
コード書くのめんどくさい!
Node‐REDでおk!
Twitchのコメントの取得めんどくさい。
tmi.jsでおk!
Node‐REDでtmi.js使い方わかんね!
node-red-contrib-twitch-chatでおk!
Node-RED使ってもコード書かなきゃいけないじゃん!
AIに書いてもらいましょう。
リートンあたりで
フローの流れ
tmi.jsを使ってリアルタイムにコメント取得
取得したコメントを整形してclaude3のAPIに投げつける
返ってきたメッセージを整形してtmi.jsでコメントに反映させる
ノードの説明
incoming Message
一番左の紫のノード
Twitchの指定のチャンネルにコメントが来たらコメントやらユーザー名などを取得します。
他にも色々データ取得してますがこのフローで使うのはmsg.payload.messageの内容だけです。
もう少し完成形に近づけるとユーザー名なども使います。
変数の整形
左から二番目のオレンジのノード
APIに投げるための形式と取得したメッセージの形式はもちろん一致しないので整形します。
コードの解説は省略します。
リートンのAI検索を利用したらAIが参考になるコードを書いてくれると思います。
APIにデータを投げる!
真ん中の緑のノードがHTTPリクエストです。ClaudeAPIの指定する情報を入力しましょう!
HTTPリクエストのプロパティはこんな感じ。プロパティは変わるかもしれないので最新の情報を参考にしてください!
HTTP Requestに流すデータ
msg.payload = {
"model":"claude-3-haiku-20240307", //使用するモデルに合わせて変更
"max_tokens":512, //最大トークン
"system" : "ここにSystem promptを入力",
"messages" : "ここに取得したコメントを入力",
"temperature" : 1.0 //返答の温度?1だと一番クリエイティブらしい。
}
とりあえずこんな感じ
応答文の整形
左から4番目のノードです。
APIから返ってきたデータをTwitchへ書き込むためのデータへ整形します。
APIから返ってくるデータはこんな感じ
{
"id": "msg_017xTjAbGLz3C9u472cpj7Hh",
"type": "message",
"role": "assistant",
"model": "claude-3-haiku-20240307",
"stop_sequence": null,
"usage": {
"input_tokens": 444,
"output_tokens": 66
},
"content": [
{
"type": "text",
"text": "ここにAIからの返事"
}
],
"stop_reason": "end_turn"
}
必要なのはmsg.payload.content.textだけです。
なので
{
message : msg.payload.content.text ,
channel : "#チャンネル名"
}
こういう形式にしましょう。
Action
送られてきたデータをTwitchのチャット欄に送る。
基本的なフローの説明終了。
このフローの欠点
ユーザーを区別しない。
前にどのような会話をしていたか考慮してない。
自分自身のコメントにも反応してしまう。
ユーザーへの個別の返信にも反応してしまう。
次からは欠点を補ったフローを構築していくよ!次があればね!
広告
この記事が気に入ったらサポートをしてみませんか?