みなさんこんにちは! 現在、東京大学工学部に在籍している、さとうじょうゆです!
この記事では「Xでのポストを自動化する方法」を何処よりもわかりやすく、丁寧に、知識のない方にも全く問題のないように説明します
僕は東大に入ってプログラミングやAIに興味が湧き、LLMやその周辺に関して勉強してきました
そこで、皆さんに身近なXでのポストを自動化するプログラムを作ってみることは、LLMやプログラミングの凄さを体感できる第一歩として最適だと感じ、この記事を書いています!
AIでこんなこともできるんだ、ということを体感してみよう!
Xポスト自動化を目指す過程でこのようなものが手に入りますが、一方で注意しないといけないこともあります
次のことにはくれぐれも注意してください
それでは行ってみよう!
コードを書いてみよう
以下のコードは、
- こちらで指定したテーマに関して、Google検索で最新情報を取得する
- その情報についてChatGPTがまとめて、txtファイルで出力する
を実現するためのコードです。
オレンジ色の部分を変えることによって、出力される文章を変えることができます
やりたいことによってオレンジ色の部分をカスタマイズしてみよう!
なお、ファイル名は”news_summary_generator.py”と私はしました。
from langchain.agents import initialize_agent, Tool
from langchain.utilities import GoogleSearchAPIWrapper
from langchain.prompts import PromptTemplate
from langchain.agents import AgentType
from langchain.chat_models import ChatOpenAI
def create_prompt(user_input):
prompt = PromptTemplate(
input_variables=["hteme"],
template="""
あなたはtwitterで最新の有益情報について発信しているインフルエンサーです。
下記のテーマについて、Google検索で最新情報を取得し、取得した情報に基づいてその情報の要約とその情報を有益に活かすための考察を書いてください。
1000文字以内で、日本語で出力してください。
記事の末尾に参考にしたURLを参照元としてタイトルとURLを出力してください。
###
テーマ:{theme}
"""
)
return prompt.format(theme=user_input)
def define_tools():
search = GoogleSearchAPIWrapper()
return [
Tool(
name = "Search",
func=search.run,
description="useful for when you need to answer questions about current events. You shoule ask targeted questions"
),
]
def write_response_to_file(response, filename):
with open(filename, 'w', encoding='utf-8') as file:
file.write(response)
print('出力が完了しました')
def main():
llm = ChatOpenAI(temperature=0, model="gpt-4", max_tokens=2000)
tools = define_tools()
agent = initialize_agent(tools, llm, agent=AgentType.OPENAI_FUNCTIONS)
prompt = create_prompt(input("記事のテーマを入力してください:"))
response = agent.run(prompt)
write_response_to_file(response, 'output.txt')
if __name__ == "__main__":
main()
以下のコードは、
- ファイルを参照して、ChatGPTにポストする文章を作成させる
を実現するためのコードです。
こちらも、オレンジ色の部分を変えることによって、出力される文章を変えることができます
こっちもあなた好みにカスタマイズしよう!
自分の過去のポストを学習させると、違和感のない文章になりやすいよ!
ファイル名は”gpt_api.py”と私はしました。
import openai
import os
# OpenAIのAPIキーを設定
openai.api_key = os.environ["OPENAI_API_KEY"]
# 追加で記入するコード
def read_news_summary(file_path):
"""指定されたファイルからニュースの要約を読み込む関数"""
with open(file_path, 'r', encoding='utf-8') as file:
return file.read()
# ChatGPTにリクエストを送信する関数を定義
def make_tweet():
# ニュースの要約を読み込む
news_summary = read_news_summary('output.txt')
# ChatGPTに対する命令文を設定
request = "以下の文章に基づいて、そのテーマに関する有益な情報を綴った140字以内のツイートを作成してください。参照する文章は次のとおりです:\n\n" + news_summary + "\n\nツイートを作成する際は、以下の例文を参考にしてください。また、語尾は親しい人に感情を吐露するような感じでお願いします。\n\n"
# # 例文として与える投稿文を設定
tweet1 = "例文1:米国の1月PCE価格指数、予想通りで利下げ期待微増。インフレ鈍化が続けば、6月の利下げ再検討もあるかもしれない。市場の息吹を感じる瞬間だなあ。\n\n"
tweet2 = "例文2:文化庁、AI著作権のパブコメ結果発表だって。法人・団体も参加、透明性ある議論の場へ。この動きは、文化と技術の未来を形作るために不可欠だよな。\n\n"
# 文章を連結して1つの命令文にする
content = request + tweet1 + tweet2
# ChatGPTにリクエストを送信
response = openai.ChatCompletion.create(
model = "gpt-4",
messages = [
{"role": "user", "content": content},
],
)
# 投稿文の内容を返却
return response.choices[0]["message"]["content"]
以下のコードは、
- その文章を実際のアカウントでポストさせる
を実現するためのコードです。
ファイル名は”twitter_api.py”と私はしました。
import tweepy
import os
# Twitter APIキーを環境変数から取得
consumerKey = os.environ["TWITTER_CONSUMER_KEY"]
consumerSecret = os.environ["TWITTER_CONSUMER_SECRET"]
accessToken = os.environ["TWITTER_ACCESS_TOKEN"]
accessTokenSecret = os.environ["TWITTER_ACCESS_TOKEN_SECRET"]
bearerToken = os.environ["TWITTER_BEARER_TOKEN"]
# ポストを投稿する関数を定義
def post(tweet):
# tweepy クライアントを作成
client = tweepy.Client(
bearerToken,
consumerKey,
consumerSecret,
accessToken,
accessTokenSecret
)
# ポストを投稿
client.create_tweet(text=tweet)
ファイル名は”tweet.py”と私はしました。
# openaiのversionを1.0.0未満にしないとダメ
import gpt_api
import twitter_api
# ChatGPTからツイート内容を取得
tweet = gpt_api.make_tweet()
# Twitterにツイートを投稿
twitter_api.post(tweet)
実行してみる
コードが書けたら、実際に実行してみましょう!
python news_summary_generator.py
今回は、「大谷翔平」をテーマに生成してみるよ!
このように、ターミナルで実行すると、下のようにoutput.txtに内容が反映されます!
python tweet.py
実際に実行すると、下の文章が実際にポストされました!
APIを使えばさまざまなことが可能に
今回は、実際にXでのポストを自動化する方法を紹介しましたが、他にもAPIを用いて色々なアプリケーションを連携すればさまざまなことができます!
Zapierなどのノーコードツールから始めてみるのもいいかもしれませんね
今回は詳しく説明することはできませんでしたが、自分のメモ書きのようなつもりでこの記事を残しておきます
ここまで読んでくださった方がいれば、ありがとうございました。
東京大学工学部B2。AIに興味があり、AI技術を活かした起業を目指して奮闘中。スマホアプリも作ってたりします。
コメント