Typora Markdown写作伴侣:集成Qwen1.5-1.8B GPTQ进行内容润色与大纲生成
Typora Markdown写作伴侣:集成Qwen1.5-1.8B GPTQ进行内容润色与大纲生成
如果你经常用Typora写东西,不管是技术博客、学习笔记还是工作报告,肯定遇到过这样的时刻:一段话写出来总觉得词不达意,或者想列个大纲却毫无头绪。自己反复修改,既费时间又耗精力。
现在有个挺有意思的玩法,能让你的Typora瞬间变聪明。我们不用那些需要联网、有隐私顾虑的在线服务,而是把一个小巧但能力不错的AI模型——Qwen1.5-1.8B GPTQ——直接集成到Typora里。选中一段文字,点一下,就能让它帮你润色语句、检查语法,甚至帮你从零生成一个结构清晰的文章大纲。
这听起来可能有点技术,但别担心,整个过程其实很简单。下面我就带你一步步实现这个“写作伴侣”,让你在熟悉的Typora环境里,也能享受到AI辅助写作的便利。
1. 为什么要在Typora里集成AI模型?
Typora本身是个非常优雅的Markdown编辑器,所见即所得,写起来很流畅。但它毕竟只是个编辑器,内容创作的核心——思考和表达——还得靠我们自己。而AI模型,尤其是经过量化后的小模型,正好能在这个环节帮上忙。
Qwen1.5-1.8B GPTQ是一个不错的选择。1.8B的参数规模不算大,在普通的电脑上也能跑起来;GPTQ量化技术又进一步压缩了模型,让它对硬件的要求更低,响应速度更快。虽然它比不上那些动辄上百亿参数的大模型“博学”,但处理文本润色、语法检查、大纲生成这类针对性任务,已经足够好用,而且完全在本地运行,你的文档内容不会离开你的电脑。
想象一下这些场景:
- 写完一段技术说明,感觉有点啰嗦,选中后让AI帮你精简一下。
- 不确定某个技术术语的英文表达是否准确,让AI检查并给出建议。
- 面对一个空白的文档,不知道从何写起,输入主题,让AI帮你生成一个包含主要章节和要点的大纲。
这些功能不是替代你写作,而是像一个得力的助手,帮你处理那些繁琐的“打磨”工作,让你更专注于核心思想的构建。接下来,我们就看看怎么把这个助手请到Typora里来。
2. 核心思路与准备工作
整个集成的核心思路很简单:在本地启动一个AI模型服务(API),然后让Typora通过“自定义命令”功能去调用这个服务。
你可以把AI模型服务想象成你家隔壁的一个“智能文案小作坊”,Typora就是你的书房。你在书房(Typora)里写好一段草稿,通过一个特定的指令(自定义命令),把草稿送到隔壁的小作坊(本地模型API)。小作坊里的AI师傅快速处理好之后,再把润色好的版本送回你的书房,替换掉原来的草稿。
要实现这个流程,我们需要准备两样东西:
- 本地AI模型服务:也就是隔壁的“小作坊”。我们需要把Qwen1.5-1.8B GPTQ模型部署起来,并提供一个可以通过HTTP访问的API接口。
- Typora与服务的连接桥梁:也就是从书房到小作坊的“传话员”。这通常是一个脚本(比如Python脚本),它接收Typora传来的文本,发送给本地API,再把结果返回给Typora。
在开始动手之前,请确保你的电脑环境满足以下基本要求:
- 操作系统:Windows 10/11, macOS 或 Linux 都可以。
- Python:需要安装Python 3.8或更高版本。这是运行模型和脚本的基础。
- 基础工具:建议安装
git,方便下载模型和代码。 - 硬件:虽然Qwen1.5-1.8B GPTQ已经比较轻量,但仍建议拥有至少8GB内存的电脑。如果有NVIDIA显卡(显存4GB以上),体验会更快更好。
3. 第一步:部署本地Qwen1.5-1.8B GPTQ API服务
首先,我们来搭建那个“智能文案小作坊”。这里我推荐使用text-generation-webui这个项目(也叫Oobabooga's WebUI),它把模型部署和API发布做得非常傻瓜化。
3.1 安装 text-generation-webui
打开你的终端(Windows上是CMD或PowerShell,macOS/Linux是Terminal),依次执行以下命令:
# 1. 克隆项目代码 git clone https://github.com/oobabooga/text-generation-webui cd text-generation-webui # 2. 安装依赖 (根据你的操作系统选择) # 对于Windows系统,运行: start_windows.bat # 对于macOS/Linux系统,运行: ./start_linux.sh # 或 ./start_macos.sh运行安装脚本后,它会自动创建一个Python虚拟环境并安装所有必要的依赖。这个过程可能会花几分钟,取决于你的网速。
3.2 下载并加载Qwen1.5-1.8B GPTQ模型
安装完成后,脚本通常会启动一个Web界面。如果没有,你可以在项目目录下运行python server.py来启动。
- 在WebUI的“Model”标签页下,你会看到一个下载模型的输入框。
- 输入模型名称:
Qwen/Qwen1.5-1.8B-GPTQ-Int8。这个模型已经在Hugging Face上发布,并且做好了GPTQ量化。 - 点击“Download”按钮。模型大小大约2-3GB,下载时间取决于你的网络。
- 下载完成后,在模型下拉列表中选择刚刚下载的
Qwen1.5-1.8B-GPTQ-Int8,然后点击“Load”按钮加载模型到内存中。
3.3 启动API服务
模型加载成功后,切换到“Session”标签页或查看启动参数。 我们需要以API模式启动WebUI服务。更简单的方法是,直接关闭当前界面,在终端中使用API命令重启:
# 在 text-generation-webui 项目目录下执行 python server.py --api --listen--api参数表示启用API接口,--listen允许本地连接。
看到类似“Running on local URL: http://127.0.0.1:7860”的提示,说明服务启动成功了。你的本地AI模型API现在就在http://127.0.0.1:7860上运行了。这个地址我们稍后会用到。
4. 第二步:创建连接Typora的桥梁脚本
“小作坊”开张了,现在需要打造一个“传话员”脚本。这个脚本的作用是:从Typora那里拿到文本和指令(比如“润色”),然后去调用本地API,最后把AI处理好的结果送回Typora。
创建一个新的Python文件,比如叫做typora_ai_helper.py,然后把下面的代码保存进去。你需要修改代码里的API_URL,确保它和上一步你启动服务时的地址一致。
#!/usr/bin/env python3 """ Typora AI 助手脚本 用于连接Typora自定义命令和本地Qwen1.5模型API。 功能:文本润色、大纲生成。 """ import sys import json import requests from typing import Optional # 配置:你的本地模型API地址 API_URL = "http://127.0.0.1:7860/api/v1/generate" def call_ai_api(prompt: str, max_length: int = 300) -> Optional[str]: """ 调用本地 text-generation-webui 的API。 """ payload = { "prompt": prompt, "max_new_tokens": max_length, "temperature": 0.7, # 控制创造性,0.7比较均衡 "top_p": 0.9, "typical_p": 1, "stop": ["\n\n", "###", "Human:"], # 停止词,防止生成过长 "do_sample": True, } headers = {"Content-Type": "application/json"} try: response = requests.post(API_URL, json=payload, headers=headers, timeout=60) response.raise_for_status() result = response.json() # 不同版本的API返回格式可能略有不同,这里做兼容处理 if "results" in result and result["results"]: return result["results"][0].get("text", "").strip() elif "choices" in result and result["choices"]: return result["choices"][0].get("text", "").strip() else: print("错误:无法解析API返回结果。") return None except requests.exceptions.RequestException as e: print(f"调用API失败:{e}") return None def polish_text(selected_text: str) -> str: """ 润色选中的文本。 指令:让AI优化语法、精简表达、提升流畅度。 """ prompt = f"""请润色以下文本,优化其语法、表达流畅度和简洁性,保持原意不变。直接返回润色后的文本。 原文: {selected_text} 润色后:""" result = call_ai_api(prompt) return result if result else selected_text # 如果失败,返回原文 def generate_outline(topic: str) -> str: """ 根据主题生成文章大纲。 指令:生成一个结构化的Markdown格式大纲。 """ prompt = f"""请为以下主题生成一个详细、结构清晰的文章大纲,使用Markdown格式(#、##、- 等)。 主题:{topic} 请生成大纲:""" result = call_ai_api(prompt, max_length=500) # 大纲可以长一些 if result: # 确保返回的是干净的Markdown return result.strip() else: return f"# {topic}\n\n(大纲生成失败,请手动创建或重试。)" def main(): """ 主函数。通过命令行参数判断执行什么操作。 预期调用方式: python typora_ai_helper.py polish <选中的文本> python typora_ai_helper.py outline <主题文本> """ if len(sys.argv) < 3: print("用法:") print(" 润色文本:python typora_ai_helper.py polish \"需要润色的文本\"") print(" 生成大纲:python typora_ai_helper.py outline \"文章主题\"") sys.exit(1) action = sys.argv[1] input_text = sys.argv[2] if action == "polish": output = polish_text(input_text) elif action == "outline": output = generate_outline(input_text) else: print(f"未知操作:{action}") sys.exit(1) # 将结果输出到标准输出,Typora会捕获这个输出 print(output) if __name__ == "__main__": main()这个脚本提供了两个核心功能:polish(润色)和outline(生成大纲)。它通过命令行参数接收指令和文本,调用本地的模型API,最后把处理好的文本打印出来。
保存好脚本后,你可以在终端里测试一下是否工作:
python typora_ai_helper.py polish “这是一段需要被润色的测试文本,它的语法可能不是那么完美。”如果一切正常,你会看到一段润色后的文本输出。
5. 第三步:在Typora中配置自定义命令
最后一步,就是在Typora(你的书房)里设置一个快捷指令,让它能调用我们刚写好的脚本(传话员)。
- 打开Typora,进入“偏好设置”(Preferences)。
- 找到“高级设置”(Advanced Settings) 部分。
- 点击“打开配置文件”(Open Config Folder) 按钮。这会在文件管理器中打开Typora的配置目录。
- 在这个目录下,找到或新建一个名为
command的文件夹。 - 将我们刚才写好的
typora_ai_helper.py脚本复制到这个command文件夹里。
接下来,我们需要告诉Typora这个命令怎么用。在Typora配置目录下,找到一个叫command的配置文件(可能是command.json或command文件夹内的某个说明文件)。如果没有,你可以创建一个user-command.json。
我们需要在这个配置文件中添加两个自定义命令。配置的格式可能因Typora版本略有不同,但核心是定义命令名称、执行脚本和参数。下面是一个示例性的配置思路:
你需要在Typora的“自定义命令”设置界面(可能在偏好设置的某个标签页里)添加命令。如果没有图形界面,则通过修改配置文件实现。假设通过配置文件,内容大致如下:
// 示例配置,具体格式请以你的Typora版本为准 { "commands": [ { "name": "AI文本润色", "command": "python", "args": ["/完整路径/to/your/typora_ai_helper.py", "polish", "{typora-selected-text}"], "scope": "selection" }, { "name": "AI生成大纲", "command": "python", "args": ["/完整路径/to/your/typora_ai_helper.py", "outline", "{typora-selected-text}"], "scope": "selection" } ] }关键点:
command: 这里填python,因为我们的脚本是Python写的。args: 第一个参数是脚本的完整绝对路径;第二个是动作(polish或outline);第三个是{typora-selected-text},这是一个Typora提供的占位符,会自动替换成你当前选中的文本。scope: 设置为selection,表示这个命令作用于选中的文本。
请注意:你需要将/完整路径/to/your/typora_ai_helper.py替换成你电脑上typora_ai_helper.py文件的真实绝对路径。例如,在Windows上可能是C:\Users\YourName\Documents\typora_ai_helper.py,在macOS上可能是/Users/YourName/Documents/typora_ai_helper.py。
保存配置并重启Typora。
6. 开始你的AI辅助写作之旅
完成以上所有步骤后,你就可以在Typora中体验AI写作助手了。
如何使用润色功能:
- 在Typora编辑器中,选中一段你觉得需要优化的文字。
- 在顶部菜单栏找到“格式”或“编辑”菜单,里面应该会出现你自定义的“AI文本润色”命令。或者,有些版本Typora支持右键菜单,也可以在右键菜单中找到。
- 点击该命令。稍等片刻(时间取决于你的电脑性能和模型加载情况,通常几秒到十几秒),你选中的文本就会被替换成润色后的版本。
如何使用大纲生成功能:
- 在文档的任何位置,输入或选中你文章的核心主题词,比如“深度学习在图像识别中的应用”。
- 同样,通过菜单或右键选择“AI生成大纲”命令。
- 等待一会儿,Typora就会在你光标所在的位置(或替换选中文本)插入一个由AI生成的、结构化的Markdown大纲。你可以在这个大纲的基础上进行修改和填充。
效果体验与调整:
- 润色效果:Qwen1.5-1.8B模型对于纠正明显语法错误、调整语序使表达更流畅、替换更恰当的词汇方面表现不错。对于技术性内容的风格统一也有帮助。如果对结果不满意,你可以稍微修改一下脚本中
polish_text函数里的prompt(指令),让它更符合你的要求,比如加上“采用更正式的技术文档风格”或“让语言更生动”。 - 大纲生成效果:模型能根据主题生成包含主要章节、子章节和要点的框架。这个框架可以作为你写作的起点,极大地克服了“开头难”的问题。你可以根据需要,对生成的大纲进行合并、拆分或调整顺序。
- 性能提示:第一次运行某个功能时可能会慢一点,因为模型需要处理请求。后续在同一个会话中会快很多。如果觉得速度不理想,可以尝试在
call_ai_api函数中调低max_new_tokens参数,或者检查电脑资源占用情况。
7. 总结
把Qwen1.5-1.8B GPTQ这样的轻量级AI模型集成到Typora里,算是一个低成本但能显著提升Markdown写作体验的小技巧。它把AI能力变成了一个随时可用的“右键菜单”,专注解决写作过程中那些具体而微的痛点——表达打磨和结构构思。
整个过程的核心就是“本地服务+脚本桥接+编辑器调用”的三步走。一旦搭好,用起来就非常顺手了。这个方案的优点很明显:完全离线,隐私有保障;响应速度可以接受;功能专注,不臃肿。当然,它也有局限,比如模型的知识截止日期、复杂的逻辑推理可能不够强。但对于日常的文本润色、快速搭个文章架子来说,已经是一个非常得力的助手了。
你可以基于这个基础框架,继续扩展更多功能,比如“翻译选中文本”、“总结长篇内容”、“改变文本语气”等等,只需要修改Python脚本中的指令(prompt)即可。希望这个方案能让你在Typora中的写作之旅更加高效和愉快。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。
