テキストエディタMeryからOpenAI ChatGPTを使うマクロ
ここ数年はテキストエディタとしてMeryを使っています。最近はVisual Studio Codeをコーディングに使う事がめっきり多くなりましたが、軽量なテキストエディタはなかなか手放せません。さて、最近流行りのChatGPTですが、これをエディタの中で使うと便利ではないかと思い立ちMeryのマクロを作ってみました。質問したい内容を選択状態にしておきマクロを実行します。しばらくすると答えが帰ってきます。Pythonマクロなので若干の設定が必要なことと、OpenAI API Keyの取得が必要です。
import openai openai.api_key = "---あなたのOpenAI API Key---" text = window.document.selection.Text lines = text.splitlines() chat = [] content = {'system': '', 'assistant': '', 'user': ''} role = 'user' def flush_contents(): global chat, content for key in content.keys(): if len(content[key]) > 0: chat.append({"role": key, "content": content[key]}) content[key] = '' for line in lines: role_headline = False for key in content.keys(): if line == f'### {key}': flush_contents() role = key role_headline = True if not role_headline: content[role] += line + '\n' flush_contents() if len(chat) > 0: #response = openai.ChatCompletion.create(model="gpt-3.5-turbo", messages=chat) # gpt-3.5-turboを使う場合。 response = openai.ChatCompletion.create(model="gpt-4", messages=chat) # gpt-4を使う場合。 message = response["choices"][0]["message"]["content"].lstrip() window.document.selection.Text = text + '\n\n### assistant\n\n' + message + '\n\n### user\n\n'
MeryマクロをPythonで記述できる様にする方法は次のリンクを参考にしました。 知っておくと便利なテキストエディター「Mery」の 10 個の小技
このマクロを実行するためには OpenAI API のキーを入手する必要があります。
見出し
### system
をつけると以下をsystem contentとして扱います。見出し
### user
をつけると以下をuser contentとして扱います。見出し
### assistant
をつけると以下をassistant contentとして扱います。