はじめに
個人的に使ってるAutoHotKeyのスクリプトを晒すだけの記事です。
コードの解説などはしていません。
というかAutoHotKeyの文法あんまり理解してないまま書いてます。
VSCodeにChatGPTの拡張機能がありますが、devContainer環境ではブラウザのパスを指定できずうまく動かなかったので自分で作りました。
わざわざこっちを使うメリットは
・アプリを問わず使える
・AIに対する指示を自由に登録できる
・APIを使っていないのでタダ
ぐらいです。
インストール方法
1 AutoHotKey Version 1.1.36.02をインストール
2 下記のchatGPT.ahkとorder.txtをコピペしUTF8 BOM付きで(重要)同じディレクトリに保存
3 chatGPT.ahkをAHKで開く
使い方
1.既定のブラウザでChatGPTにログインしておく
2.テキストを選択しCtrl+Shift+Xを押す
3.選択したテキストに対してChatGPTに行わせる指示をクリック
global CustomOrder
^+x::
array := {}
orderIndex := 0
Loop, Read, order.txt
{
parts := StrSplit(A_LoopReadLine, ",")
array[parts[1]] := parts[2]
}
length := 0
for index, value in array
length++
clipboard := ""
order := ""
Send ^c
ClipWait, 1
my_Text := clipboard
Gui, Font, s12
For k, v in array
{
gui, add, button,x+5 vtext%v% ggeneric, % k
}
GUI Add, Edit, X10 y+20 W200 +Multi vCustomOrder
GUI, Add, Button, x+5 Gcustom, カスタム
GUI, Show, , ChatGPT
GuiControl, Focus, CustomOrder
Return
custom:
Gui, Submit, NoHide
Gui, Destroy
ORDER_GPT(customOrder,Clipboard)
Return
generic:
StringReplace, order, A_GuiControl, text,
Gui, Destroy
ORDER_GPT(order,Clipboard)
return
;Xボタンが押されたときのハンドラ
GuiClose:
Gui, Destroy
return
ORDER_GPT(order,body) {
run, https://chat.openai.com/chat
Sleep, 200
while (A_Cursor = "AppStarting" or A_Cursor = "Wait") ; Wait for browser
continue
Sleep, 200
while (A_Cursor = "AppStarting" or A_Cursor = "Wait") ; Wait for browser
continue
Sleep, 500
titleToWaitFor := "New chat"
SetTitleMatchMode, 2
while (!WinExist(titleToWaitFor))
{
Sleep, 100
}
WinActivate, %titleToWaitFor%
WinGetTitle, currentTitle
IfInString, currentTitle, % titleToWaitFor
{
clipboard := order
sendinput, ^v
Sleep, 200
clipboard := body
sendinput, ^v
Send, {Tab}
Send, {Enter}
}
else
{
MsgBox, エラーが発生しました
}
}
バグ修正,このコードのバグを修正して下さい
リファクタリング,このコードをリファクタリングして下さい
解説,このコードを説明して下さい
TS型変換,このコードをTypescriptの型に変換して下さい
TS型変換はDBのスキーマからTypescriptの型を生成するときに使ってます。
くっそ便利。
指示の登録方法
order.txtを編集し
カンマの前にボタンのテキスト,カンマの後にそのボタンを押したときにchatGPTに対して与える指示を記述して下さい。
プログラミングに限らず文章の要約、校正、翻訳などにも利用できます。
例
校正,以下の文章を校正してください。
要約,以下の文章を校正してください。
その他
AutoHotKeyでブラウザをDOM経由で操作するには色々必要なので
単純にブラウザ開いて指示と選択した内容貼り付けてタブキー押してEnterとやってるだけです。
そのためブラウザでurlにフォーカスが当たっている、具体的には新しいタブを開いている(タブ一覧に新しいタブがあるだけならOK)状態だと変なところに入力してしまい、うまく動作しません。
結論
AIに仕事をやって欲しいけど仕事は奪わないで欲しい