从零开始,使用ChatGPT编写Wox chatgpt prompt提示插件

640 阅读2分钟

从零开始,使用ChatGPT编写Wox chatgpt prompt提示插件

1. 什么是chatgpt

ChatGPT是OpenAI开发的一个大型语言模型,使用GPT(Generative Pre-trained Transformer)架构进行训练。它能够接收用户输入并生成自然语言响应,从而实现自然语言处理和人工智能聊天的功能。ChatGPT的训练数据集非常大,包括来自互联网的各种文本数据,使其具备了广泛的知识和语言表达能力。

2. 什么是wox

官网地址:www.wox.one/

Wox是一款开源的Windows应用程序启动器,类似于macOS的Spotlight。它可以帮助用户快速启动应用程序、打开文件、执行命令、进行互联网搜索等操作,从而提高工作效率。Wox的用户界面非常简洁、易于使用,可以通过自定义插件扩展其功能,也支持各种主题和皮肤的定制。Wox是一个由中国开发者社区创建和维护的开源项目,在GitHub上公开发布并获得了广泛的用户支持和社区贡献。

3. 如何使用chatgpt编写wox插件

3.1 安装python

3.2 配置plugin.json

{
    "ID":"2f4e384e-76ce-45c3-aea2-b16f5e5c328A",
    "ActionKeyword":"rrf",
    "Name":"chatgpt prompt",
    "Description":"chat gpt prompt",
    "Author":"RRF-666",
    "Version":"0.1.0",
    "Language":"python",
    "Website":"",
    "IcoPath":"Images\\app.png",
    "ExecuteFileName":"chatgpt_prompt.py",
    "Disabled": false
}

3.3 编写脚本文件(chatgpt_prompt.py)

import base64
import json
import logging
import os
import time

import pyautogui
import pyperclip
from wox import Wox, WoxAPI


def setup_logging():
    log_file = os.path.join(os.path.dirname(__file__), "run.log")
    logging.basicConfig(
        filename=log_file,
        level=logging.DEBUG,
        format='%(asctime)s %(levelname)s:%(message)s',
        datefmt='%Y-%m-%d %H:%M:%S'
    )


setup_logging()


class Main(Wox):
    def query(self, query):
        # 获取json文件路径
        json_path = os.path.join("D:", "soft", "AI", "rrf_prompts.json")
        # 读取json文件并解析
        with open(json_path, "r", encoding="utf-8") as f:
            data = json.load(f)
            return [
                {
                    "Title": item["act"],
                    "SubTitle": f"Command: {item['cmd']}",
                    "IcoPath": "icon.png",
                    "JsonRPCAction": {
                        "method": "output_selected_prompt",
                        "parameters": [base64.b64encode(item["prompt"].encode('utf-8')).decode('utf-8')],
                        "dontHideAfterAction": False
                    }
                }
                for item in data
            ]

    def output_selected_prompt(self, prompt_base64):
        prompt = base64.b64decode(prompt_base64.encode('utf-8')).decode('utf-8')
        self.copy_to_clipboard(prompt)
        self.set_focus_to_cursor()
        self.paste_from_clipboard()
        self.close_app()

    def copy_to_clipboard(self, data):
        pyperclip.copy(data.strip())

    def set_focus_to_cursor(self):
        # 获取光标位置
        x, y = pyautogui.position()
        # 将光标移动到位置(x, y)并单击
        pyautogui.click(x, y)
        # 等待焦点切换完成
        time.sleep(0.2)

    def paste_from_clipboard(self):
        # 使用 pyautogui.FAILSAFE 确保切换焦点成功后再执行粘贴操作
        pyautogui.FAILSAFE = True
        # 模拟按下ctrl+v组合键
        pyautogui.keyDown('ctrl')
        pyautogui.press('v')
        pyautogui.keyUp('ctrl')

    def close_app(self):
        # 关闭应用
        WoxAPI.hide_wnd()
        # logging.info("关闭应用")


if __name__ == "__main__":
    Main()

3.4. chatgpt 提示词 rrf_prompts.json

[
    {
        "cmd": "python",
        "act": "python",
        "tags": [],
        "enable": true,
        "prompt": "我需要你扮演专业的python脚本编程人员,辅助我编写及优化python脚本。我会为你提供代码片段,请基于代码片段提供优化或修复后的代码(如果回答的内容是代码内容,则必须使用python代码格式化显示)。请务必使用中文回答。"
    }
]

4. 用法

把提示词文件 rrf_prompts.json 放在任意本地磁盘,运行wox之后,按alt+空格 弹出wox界面,输入 rrf 之后弹出提示prompt,选中后回车即可复制。

5. 说明

在此之前完全没有使用过wox,更不说wox插件开发。但是借助神奇的chatgpt,输入提示语,一步步帮我写出了这个可以运行的插件。