僕の総資産の1/4が消えてしまった。
とっても悲しい
思い返せば 8月2日(金)にブラックマンデーに続いて過去2番目の下落となった。
2024年7月25日にもTOP10に入る下落が発生しており、このタイミングで信用取引3倍で大勝負に出ていた……
そして8月5日(月)、誰もが知る過去最大級の暴落!
その後、株価は多少回復したが、僕は証券会社から「追加保証金の発生」メールを受け取った。
そして、8月7日には「強制ロスカット」。
今まで調子に乗りすぎた自分に言いたい。
おまえは偉くないので、死んでくださーい😅😅😅😅😅
予選敗退でーす👏👏
毎年長期休暇中はモノづくりに没頭してる。
年 | 時期 | 内容 |
---|---|---|
2022 | GW | teacupのFC2 BBS移行スクリプト作成 |
2023 | 正月 | WASMを使ったオセロ作成 |
2023 | GW | LINE風PHPアプリ作成 |
2024 | 正月 | Xへ自動POST作成 |
2024 | GW | 楽天RSS API利用 |
2024 | 盆休み | Gemini APIを使った自動POST作成 |
今回はXの自動ポストを拡張した。
プロセスは次のようになる。
7年前から実現したかった「コメントの自動生成」もLLMの登場で実現できている。
ただしChatGPT APIは有料でしか使えないので、Gemini APIを使って実装した。
GCP(Google Cloud Platform)を有効化してみると初期利用特典?で期間限定だけど無料ポイントが付加されたからね。
無料期間が終わると、そこからは有料なのかな?ネット上では無料で使い続けることができるという記載もチラホラあるけど。
項目 | 回数 |
---|---|
1分あたりのリクエスト数(RPM) | 15回 |
1分あたりのトークン数(TPM) | 100万 |
1日あたりのリクエスト数(RPD) | 1,500回 |
まずは動作が期待値どおりに動くのかやってみよう。
Gemini APIを使うための設定方法
Gemini APIの使用するためにはGCPでプロジェクトを作成して下記項目を取得する必要がる。
- APIキー
- プロジェクトID
- 認証キー
Gemin のAPIキーの取得は2つの方法あるっぽい。
- Google AI StudioのGemini API
- Vertex AIでGeminiProのモデル利用
今回は、次を参照してVertexAIの方から行った。
Vertex AIとは、Google CloudのAI開発プラットフォームで 2023年12月から、Gemini ProがVertex AI上でGemini APIとして利用できるようになっている。
これにより、API経由でGeminiの基盤モデルを利用できるようになり、Geminiを利用したアプリケーション開発が行えるようになった。
Google Cloud Consoleにログインし、APIとサービスの有効化
Googleアカウントでログインする。
プロジェクトの選択または作成し、APIとサービスの有効化する。
左側のナビゲーションメニューから「APIとサービス」 > 「ライブラリ」を選択し、使用するAPI(この場合はVertex AI API)を検索し、有効にする。
APIキーの発行
- 「認証情報」→「+認証情報を作成」→「APIキー」選択
- 作成されたAPIキーをメモ、認証情報に追加されていることを確認
サービスアカウントの作成と認証キーの取得
- 「認証情報」→「+認証情報を作成」→「サービスアカウント」選択
- 「キー」タブをクリック
- 「鍵を追加」、「json」を選択して、jsonファイルを保存
有効化のチェック
インストール
1 2 |
python -m pip install google.generativeai python -m pip install vertexai |
ソースコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
import os import vertexai import google.generativeai as genai # 環境変数 GOOGLE_APPLICATION_CREDENTIALS を設定 os.environ['GOOGLE_APPLICATION_CREDENTIALS'] = "*****.json" # プロジェクトIDを設定 vertexai.init(project='*****') # APIキーの設定 api_key = "******" genai.configure(api_key=api_key) for m in genai.list_models(): if 'generateContent' in m.supported_generation_methods: print(m.name) |
実行結果
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
WARNING: All log messages before absl::InitializeLog() is called are written to STDERR I0000 00:00:1721620786.935973 4708 config.cc:230] gRPC experiments enabled: call_status_override_on_cancellation, event_engine_client, event_engine_dns, event_engine_listener, http2_stats_fix, monitoring_experiment, pick_first_new, trace_record_callops, work_serializer_clears_time_cache models/gemini-1.0-pro models/gemini-1.0-pro-001 models/gemini-1.0-pro-latest models/gemini-1.0-pro-vision-latest models/gemini-1.5-flash models/gemini-1.5-flash-001 models/gemini-1.5-flash-latest models/gemini-1.5-pro models/gemini-1.5-pro-001 models/gemini-1.5-pro-latest models/gemini-pro models/gemini-pro-vision |
利用可能なモデルの一覧が表示される。
Geminiから応答をもらう
「gemini-1.5-pro-latest」が一番賢そうな気がするから、これを使ってみよう。
ソースコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
import io import sys import os import vertexai import google.generativeai as genai # 標準出力と標準エラー出力をUTF-8に設定 sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8') sys.stderr = io.TextIOWrapper(sys.stderr.buffer, encoding='utf-8') # 環境変数 GOOGLE_APPLICATION_CREDENTIALS を設定 os.environ['GOOGLE_APPLICATION_CREDENTIALS'] = "*****.json" # プロジェクトIDを設定 vertexai.init(project='*****') # APIキーの設定 api_key = "******" genai.configure(api_key=api_key) gemini_pro = genai.GenerativeModel("gemini-1.5-pro-latest") prompt = "日本で、美味しい魚料理を教えてください?" response = gemini_pro.generate_content(prompt) print(response.text) |
実行結果
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
美味しい魚料理ですね!日本にはたくさんの美味しい魚料理がありますね。どんな魚がお好きですか?どんな味付けがお好みですか? より詳しくあなたの好みが分かると、もっとあなたにぴったりの魚料理を見つけるお手伝いができます!例えば、 * **お刺身が好きなら:** * **マグロ:** 王道!トロ、赤身、中トロなど部位によって味が違うのも魅力です。 * **ハマチ:** 脂がのっていて濃厚な味わい。 * **タイ:** 淡白ながらも上品な旨味。 * **イカ:** コリコリとした食感が楽しい。 * **アジ:** 新鮮なものは刺身やたたきで。 * **焼き魚が好きなら:** * **サンマ:** 秋の味覚の代表格!塩焼きが定番。 * **ホッケ:** 北海道の定番!脂がのっていてジューシー。 * **鮭:** 塩焼きはもちろん、ムニエルやちゃんちゃん焼きもおすすめ。 * **サバ:** 塩焼きや味噌煮が美味しい。 * **煮魚が好きなら:** * **ブリ:** ぶり大根は冬の定番! * **カレイ:** 煮付けにするとふっくらと仕上がります。 * **メバル:** 小ぶりですが旨味が強い魚。煮付けにすると絶品です。 * **その他:** * **寿司:** 言わずと知れた日本の代表的な魚料理。 * **天ぷら:** 魚介類の天ぷらも絶品。 * **海鮮丼:** 新鮮な魚介類をご飯の上にたっぷり乗せた贅沢な一品。 などなど。 あなたの好みや希望を教えてください! |
バッチリじゃん。
PowerPointを自動生成する&PPTをPowerPointのインストール無しで画像に変える
PowerPointの自動生成は、ルールに沿って文字を変更する程度であればChatGPTを使えば簡単に行えるので今回は省略する。
そもそもプライベートWindowsにはOfficeが入ってないのでPowerPointが使えない。
なのでPPTをPNG画像に変換するために「LibreOffice」を利用してみた。
使い方は次のようになる。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
import subprocess import os def ppt_to_images(ppt_path, output_folder): if not os.path.exists(output_folder): os.makedirs(output_folder) # LibreOfficeのインストールディレクトリを設定 libreoffice_path = r"C:\Program Files\LibreOffice\program\soffice.exe" command = [ "--headless", "--convert-to", "png", "--outdir", output_folder, ppt_path ] subprocess.run(command, executable=libreoffice_path, check=True) if __name__ == "__main__": ppt_path = "simple.pptx" output_folder = "slides_images" ppt_to_images(ppt_path, output_folder) |
これで画像化したらXにPOSTすれば良い。
おわりに
簡単に動いた。
コード生成はいつも通りChatGPT-4o様から御神託を賜った。
コメント生成やパワーポイント画像生成まで自動でやってくれるなら人間は全く要らない。
とはいえ、
生きてるだけで偉いので皆
優勝でーす😄😄😄😄👏👏👏👏✨✨✨