テキストエディタ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として扱います。