2022年左右,我给我的小网站装了一个Wiki插件,也就是**IT博览**这个页面的内容。准备把自己感兴趣一些的内容,搜集整理成知识库,然后发布出来。那时候ChatGPT刚火起来,没有联网检索能力,还不能当我的赛博牛马,因此我自己苦哈哈地发布了一些,又采集了一些。
现在基本大模型的网页服务都支持联网搜索功能了,使用dify、coze等平台,还可以调用大模型api用插件和WorkFlow工作流解决自动化和联网的问题。所以,我准备用AI来快速丰富这个wiki的内容。在不搭建本地知识库的情况下,先用一个脚本来实现知识搜集整理和自动写作,后续的微调、迭代和内容发布问题,都可以慢慢来。
所以,我用近期封神的国产顶级大模型DeepSeek V3尝试了一下。(其实我先用DeepSeek写了一个WordPress插件,能上传运行、生成内容,但写入数据库发布文章有点问题,就另外慢慢研究了)
一、10秒钟,用DeepSeek写一个自动撰写内容的脚本
下面是我给DeepSeek V3的指令。
- 你的角色:一个熟知各种大模型AI玩法的资深程序员。
- 你的工作风格:
- 严谨认真,核实数据真实有效,不编造不虚拟;
- 善于检索,当资料库没有相关内容的时候,会联网搜索,寻找解决办法;
- 代码优雅,遵循严格的技术要求;
- 想法周到,提前预判各种bug,提醒或修复问题;
- 文字中立客观,不夸大事实,也不谄媚讨好,娓娓道来,条理清晰,重点分明;
- 你的任务:写一个程序,列出所有文件与代码。
- 程序功能:通过调用DeepSeek V3 api,批量输入Prompt,根据Prompt联网检索,整理资料并批量生成文章,并保存为MarkDown文件。
- 要求:
- 有交互界面,用于批量输入Prompt;
- Prompt可以分别设置常量和变量,能批量输入变量;
- MarkDown文件名为Prompt中输入的变量;
以下是DeepSeek V3的回答,给到了一个完整的Python脚本,安装依赖库之后可以直接运行。
为了实现这个任务,我们将使用Python编写一个程序,结合Tkinter库创建交互界面,调用DeepSeek V3 API进行联网检索,并生成MarkDown文件。以下是详细的代码实现和解释。
1. 环境准备
首先,确保你已经安装了以下Python库:
-
requests
:用于发送HTTP请求。 -
tkinter
:用于创建图形用户界面。 -
markdown
:用于生成MarkDown文件。
你可以通过以下命令安装这些库:
pip install requests markdown
2. 代码实现
import os
import requests
import tkinter as tk
from tkinter import messagebox, filedialog
# DeepSeek API的URL和API密钥(假设接口与OpenAI类似)
DEEPSEEK_API_URL = "https://api.deepseek.com/beta/completions" # 假设的API地址
API_KEY = "deepseek-api-key" # 替换为你的DeepSeek API密钥
def fetch_data_from_deepseek(prompt):
"""调用DeepSeek API获取生成的内容"""
headers = {
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json"
}
payload = {
"model": "deepseek-chat", # 使用DeepSeek V3模型
"prompt": prompt,
"max_tokens": 8192 # 生成内容的长度限制
}
response = requests.post(DEEPSEEK_API_URL, headers=headers, json=payload)
if response.status_code == 200:
return response.json()["choices"][0]["text"].strip() # 假设返回格式与OpenAI类似
else:
messagebox.showerror("错误", f"API调用失败: {response.status_code}")
return None
def generate_markdown(content, filename):
"""生成MarkDown文件"""
with open(filename, 'w', encoding='utf-8') as file:
file.write(content)
def process_prompts():
"""处理输入的Prompt并生成MarkDown文件"""
constant_part = constant_text.get("1.0", tk.END).strip() # 获取常量部分
variables = variable_text.get("1.0", tk.END).strip().splitlines() # 获取变量部分
if not constant_part or not variables:
messagebox.showwarning("输入错误", "请填写常量部分和变量部分。")
return
output_dir = filedialog.askdirectory(title="选择输出目录")
if not output_dir:
return
for var in variables:
if not var.strip(): # 跳过空行
continue
full_prompt = f"{constant_part.format(var=var)}" # 在常量中插入变量
generated_content = fetch_data_from_deepseek(full_prompt)
if generated_content:
filename = os.path.join(output_dir, f"{var}.md") # 使用变量作为文件名
generate_markdown(generated_content, filename)
messagebox.showinfo("成功", "所有MarkDown文件已生成完毕!")
# 创建主窗口
root = tk.Tk()
root.title("DeepSeek V3 文章生成器")
# 常量部分输入
tk.Label(root, text="常量部分(固定内容,用{var}表示变量):").grid(row=0, column=0, padx=10, pady=10)
constant_text = tk.Text(root, height=5, width=50)
constant_text.grid(row=0, column=1, padx=10, pady=10)
# 变量部分输入
tk.Label(root, text="变量部分(每行一个变量):").grid(row=1, column=0, padx=10, pady=10)
variable_text = tk.Text(root, height=5, width=50)
variable_text.grid(row=1, column=1, padx=10, pady=10)
# 处理按钮
process_button = tk.Button(root, text="生成文章", command=process_prompts)
process_button.grid(row=2, column=0, columnspan=2, pady=10)
# 运行主循环
root.mainloop()
3. 代码解释
- Tkinter界面:我们使用Tkinter创建了一个简单的图形用户界面,包含两个文本框用于输入常量和变量部分,以及一个按钮来触发处理过程。
- DeepSeek API调用:
fetch_data_from_deepseek
函数负责调用DeepSeek V3 API,并返回检索到的数据。 - MarkDown生成:
generate_markdown
函数将API返回的数据转换为MarkDown格式,并保存为文件。 - 批量处理:
process_prompts
函数处理输入的Prompt,生成MarkDown文件,并保存到用户选择的目录中。
4. 使用说明
- 运行程序后,输入常量部分和变量部分(每行一个变量),常量输入框中,以
{var}
插入变量,并在下方的变量部分文本框中,每行输入一个内容,示例用法见下图 。 - 点击“生成文章”按钮,选择输出目录。
- 程序将根据每个变量生成对应的MarkDown文件,并保存到指定目录。
5. 注意事项
-
max_tokens
参数,是指最大输出Token,DeepSeek V3目前的最大输出长度是8K,我在代码里设置的就是模型支持的最大值8192,不必再修改。
二、怎么用其他大模型API
虽然这个程序的名字叫“DeepSeek V3 文章生成器”,但它并不仅仅能搭配DeepSeek API使用,正常来说所有兼容OpenAI API规范的大模型,都可以直接调用,修改代码当中几处即可:
-
DEEPSEEK_API_URL = "https://api.deepseek.com/beta/completions" # 引号内修改为你的大模型api地址,根据各平台的开发文档来填写,DeepSeek的这个api是多轮对话的地址,而非默认地址,一般大模型除了修改前面的网址,还要把beta改为v1
-
API_KEY = "deepseek-api-key" # 将deepseek-api-key替换为你的大模型API密钥
-
"model": "deepseek-chat", # 替换为你要调用的模型,如moonshot-v1-128k
-
"max_tokens": 8192 # 生成内容的长度限制,数值不超过8192
尤其要注意的是第1个API地址,似乎DeepSeek要使用beta分支的completions才能成功调用,默认的https://api.deepseek.com
api会返回400或404错误,一般大模型,要将beta改为v1,匹配OpenAI的格式。
这个脚本相当简单,还没有加入联网检索、迭代等能力,也没有用定时脚本定期走WordPress Rest API上传到博客后台。主要是因为我一般通过思源笔记发布博客文章,暂时没这个需要。联网检索能力,暂时可以调用月之暗面的Moonshot模型来替代,但我近期最爱还是便宜的DeepSeek。
本文介绍了如何利用DeepSeek V3 API和Python脚本实现自动化内容生成。通过调用DeepSeek V3 API,程序可以根据用户输入的Prompt批量生成文章,并保存为MarkDown文件。文章详细说明了代码的实现步骤,包括环境准备、API调用、MarkDown文件生成以及图形用户界面的创建。该脚本支持批量输入Prompt,并能将变量嵌入到常量中生成完整的内容。最终生成的MarkDown文件以变量命名,方便管理和检索。
微信扫描下方的二维码阅读本文