从零开始,使用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,输入提示语,一步步帮我写出了这个可以运行的插件。