(图片来源网络,侵删)
今天介绍的 AI-Typing-Assistant 非常好用,推荐体验一下https://github.com/patrickloeber/ai-typing-assistant作者Patrick Loeber,一位著名的博客作者和软件工程师,拥有超过25万名YouTube订阅者作者的博客和视频教程非常详细,推荐看下https://patloeber.com/typing-assistant-llm/https://www.youtube.com/watch?v=IUTFrexghsQ&t=122s作者提到,他的灵感源自Andrej Karpathy的一条推文,该推文强调了GPT在修正轻微拼写错误上的出色表现在作者的博客中,他详细说明了如何结合使用Ollama、Mistral 7B以及Python来创建一个本地部署的打字辅助工具这个工具的主要机制是通过监控快捷键来进行文本修正,核心优势在于应用了大型语言模型(LLM)以纠正输入错误整个脚本不到100行代码,可以跨平台工作,只需适当调整快捷键即可作者提供了完整代码、演示和逐步的编码教程运行前需要打开相关权限通过按下F9键,可以对当前行的文字进行拼写、大小写和标点符号的修改而使用F10键,则允许对选中的文本执行拼写、大小写和标点符号的调整这个打字助手的好处:本地运行:保证了处理数据的安全性,避免了敏感信息的潜在外泄跨平台兼容:代码可以在不同操作系统上运行,仅需适当调整快捷键设置可定制性:用户可以根据需要自定义热键和模型配置,增加新的功能如文本生成或摘要在处理多种语言环境时,错误校正需借助于各自的模型或对现有模型进行专门训练,以便适配不同的语言构造和语法规范在中文环境中,建议采用Mistral、Qwen和Yi等模型进行处理对于那些经常需要进行大量文本输入的用户,打字助手可以显著提高他们的工作效率代码:import timefrom string import Templateimport httpxfrom pynput import keyboardfrom pynput.keyboard import Key, Controllerimport pyperclipcontroller = Controller()OLLAMA_ENDPOINT = "http://localhost:11434/api/generate"OLLAMA_CONFIG = {"model": "mistral:7b-instruct-v0.2-q4_K_S","keep_alive": "5m","stream": False,}PROMPT_TEMPLATE = Template("""Fix all typos and casing and punctuation in this text, but preserve all new line characters:$textReturn only the corrected text, don't include a preamble.""")def fix_text(text):prompt = PROMPT_TEMPLATE.substitute(text=text)response = httpx.post(OLLAMA_ENDPOINT,json={"prompt": prompt, OLLAMA_CONFIG},headers={"Content-Type": "application/json"},timeout=10,)if response.status_code != 200:print("Error", response.status_code)return Nonereturn response.json()["response"].strip()def fix_current_line():# macOS short cut to select current line: Cmd+Shift+Leftcontroller.press(Key.cmd)controller.press(Key.shift)controller.press(Key.left)controller.release(Key.cmd)controller.release(Key.shift)controller.release(Key.left)fix_selection()def fix_selection():# 1. Copy selection to clipboardwith controller.pressed(Key.cmd):controller.tap("c")# 2. Get the clipboard stringtime.sleep(0.1)text = pyperclip.paste()# 3. Fix stringif not text:returnfixed_text = fix_text(text)if not fixed_text:return# 4. Paste the fixed string to the clipboardpyperclip.copy(fixed_text)time.sleep(0.1)# 5. Paste the clipboard and replace the selected textwith controller.pressed(Key.cmd):controller.tap("v")def on_f9():fix_current_line()def on_f10():fix_selection()with keyboard.GlobalHotKeys({"<101>": on_f9, "<109>": on_f10}) as h:h.join()作者采用了以下两个库进行开发:https://pynput.readthedocs.io/en/latest/https://github.com/asweigart/pyperclip基于作者的代码,我选择了Ollama列表中适合的模型进行了更换,并将timeout从10秒调整至30秒这是因为本地模型的处理效率受到电脑配置的影响,若处理较长的文本,适当增加timeout的时长会更为合适如果使用目的仅限于打字辅助,那么PROMPT_TEMPLATE = Template中的文本无需修改,它适用于中文环境在日常使用时,无论是发送中文还是英文消息,只需按F9或F10键,打字助手就能迅速完成拼写纠正、大小写调整和标点修正任务此外,根据个人的具体需求,调整PROMPT_TEMPLATE = Template的内容非常方便根据上述修改,它现在可以充当总结助手的角色快捷键也能够按需调整我为其设置了1个快捷指令,使得下一次使用时更加便捷你需要将Python和.py文件的路径修改为与你的电脑相对应的路径对于希望简化流程的用户,利用OpenAI Translator客户端配合Ollama使用本地模型,也能够实现自定义翻译、解释、总结等任务比较OpenAI Translator和AI-Typing-Assistant,使用相同的模型翻译,后者的翻译速度更快AI-Typing-Assistant通过全局输入框内的快捷键激活,由LLM生成的内容会直接替换掉原始文本OpenAI Translator通常需要通过快捷键激活或选中文本后运行,其生成的内容,除了写作翻译任务外,通常不会替换原始文本两个应用都表现出色随着模型性能的持续提升和对多语言的更好支持,这类辅助工具预计将在提升工作效率和改善用户体验方面扮演更加重要的角色
0 评论