当前位置:首页>python>用 Python 的 Tkinter 库搭建一个 AI 小说创作工具

用 Python 的 Tkinter 库搭建一个 AI 小说创作工具

  • 2026-09-09 17:07:41
用 Python 的 Tkinter 库搭建一个 AI 小说创作工具

用 Python 的 Tkinter 库搭建一个 AI 小说创作工具,这个工具能让你输入文章主题,然后调用豆包的 API 生成故事概要、大纲,还能实现导入文本、复制内容等功能。

实现思路

  1. 先搭建 Tkinter 图形界面,包含主题输入框、结果展示框,以及生成概要、生成大纲、导入、复制等按钮。
  2. 封装调用豆包 API 的函数(需要你自行替换为有效的 API 密钥和接口地址)。
  3. 为每个按钮绑定对应的功能:
    • 生成概要/大纲:获取输入的主题,调用 API 生成对应内容并展示。
    • 导入:读取本地文本文件内容到输入框。
    • 复制:将结果展示框的内容复制到剪贴板。

完整代码实现

import tkinter as tkfrom tkinter import scrolledtext, filedialog, messageboximport requestsimport jsonimport pyperclip  # 用于复制内容到剪贴板# ---------------------- 配置豆包API(需替换为你的真实信息) ----------------------# 注意:豆包API需要先申请,以下是示例格式,需替换为有效密钥和接口地址API_KEY = "你的豆包API密钥"API_URL = "https://api.doubao.com/v1/chat/completions"# 示例地址,以官方为准# ---------------------- API调用函数 ----------------------defcall_doubao_api(prompt):"""调用豆包API生成内容"""    headers = {"Content-Type": "application/json","Authorization": f"Bearer {API_KEY}"    }    data = {"model": "doubao-pro",  # 豆包模型名称,以官方为准"messages": [{"role": "user", "content": prompt}],"temperature": 0.7,  # 创作随机性,0-1之间"max_tokens": 1000# 生成内容的最大长度    }try:        response = requests.post(API_URL, headers=headers, json=data, timeout=30)        response.raise_for_status()  # 抛出HTTP错误        result = response.json()return result["choices"][0]["message"]["content"].strip()except requests.exceptions.RequestException as e:        messagebox.showerror("API调用失败", f"请求错误:{str(e)}")return""except KeyError as e:        messagebox.showerror("返回格式错误", f"API返回数据异常:{str(e)}")return""# ---------------------- 界面功能函数 ----------------------defgenerate_story_summary():"""生成故事概要"""    theme = entry_theme.get("1.0", tk.END).strip()ifnot theme:        messagebox.showwarning("提示", "请输入文章主题!")return# 构造提示词    prompt = f"请根据以下主题生成一篇小说的故事概要,要求简洁明了,字数控制在300字以内:\n{theme}"# 生成内容并展示    summary = call_doubao_api(prompt)if summary:        text_result.delete("1.0", tk.END)        text_result.insert(tk.END, summary)defgenerate_story_outline():"""生成故事大纲"""    theme = entry_theme.get("1.0", tk.END).strip()ifnot theme:        messagebox.showwarning("提示", "请输入文章主题!")return# 构造提示词    prompt = f"请根据以下主题生成一篇小说的详细大纲,包含章节划分、核心情节、人物设定,要求结构清晰:\n{theme}"# 生成内容并展示    outline = call_doubao_api(prompt)if outline:        text_result.delete("1.0", tk.END)        text_result.insert(tk.END, outline)defimport_text():"""导入本地文本文件到主题输入框"""    file_path = filedialog.askopenfilename(        title="选择文本文件",        filetypes=[("文本文件", "*.txt"), ("所有文件", "*.*")]    )if file_path:try:with open(file_path, "r", encoding="utf-8") as f:                content = f.read()                entry_theme.delete("1.0", tk.END)                entry_theme.insert(tk.END, content)except Exception as e:            messagebox.showerror("导入失败", f"读取文件错误:{str(e)}")defcopy_content():"""复制结果框内容到剪贴板"""    content = text_result.get("1.0", tk.END).strip()ifnot content:        messagebox.showwarning("提示", "没有可复制的内容!")return    pyperclip.copy(content)    messagebox.showinfo("提示", "内容已复制到剪贴板!")# ---------------------- 搭建Tkinter界面 ----------------------defcreate_gui():    root = tk.Tk()    root.title("AI小说自动创作工具")    root.geometry("800x600")  # 设置窗口大小# 1. 主题输入区域    frame_theme = tk.Frame(root, padx=10, pady=10)    frame_theme.pack(fill=tk.X)    label_theme = tk.Label(frame_theme, text="文章主题:", font=("宋体", 12))    label_theme.pack(side=tk.LEFT)    entry_theme = scrolledtext.ScrolledText(frame_theme, height=5, font=("宋体", 12))    entry_theme.pack(fill=tk.X, expand=True, padx=5)# 2. 功能按钮区域    frame_buttons = tk.Frame(root, padx=10, pady=5)    frame_buttons.pack(fill=tk.X)    btn_summary = tk.Button(frame_buttons, text="生成故事概要", command=generate_story_summary,                             width=15, font=("宋体", 10))    btn_summary.pack(side=tk.LEFT, padx=5)    btn_outline = tk.Button(frame_buttons, text="生成故事大纲", command=generate_story_outline,                             width=15, font=("宋体", 10))    btn_outline.pack(side=tk.LEFT, padx=5)    btn_import = tk.Button(frame_buttons, text="导入文本", command=import_text,                            width=15, font=("宋体", 10))    btn_import.pack(side=tk.LEFT, padx=5)    btn_copy = tk.Button(frame_buttons, text="复制内容", command=copy_content,                          width=15, font=("宋体", 10))    btn_copy.pack(side=tk.LEFT, padx=5)# 3. 结果展示区域    frame_result = tk.Frame(root, padx=10, pady=10)    frame_result.pack(fill=tk.BOTH, expand=True)    label_result = tk.Label(frame_result, text="生成结果:", font=("宋体", 12))    label_result.pack(anchor=tk.W)    text_result = scrolledtext.ScrolledText(frame_result, font=("宋体", 12))    text_result.pack(fill=tk.BOTH, expand=True, padx=5, pady=5)# 全局变量,供其他函数调用global entry_theme, text_result    entry_theme = entry_theme    text_result = text_result    root.mainloop()# ---------------------- 主程序入口 ----------------------if __name__ == "__main__":# 安装依赖(如果未安装)# pip install requests pyperclip    create_gui()

关键说明

  1. API 配置:
    • 你需要先去豆包开放平台申请 API 密钥(API_KEY)和确认正确的接口地址(API_URL),替换代码中对应的占位符。
    • 不同模型的名称(如 doubao-pro)也需要以官方文档为准。
  2. 依赖安装: 运行代码前需要安装依赖库,执行以下命令:
    pip install requests pyperclip tkinter
    (注:tkinter 一般随 Python 自带,若缺失可单独安装)
  3. 功能细节:
    • 生成概要/大纲:通过构造不同的提示词,引导 AI 生成对应类型的内容,可根据需求调整提示词和参数(如 temperature 控制随机性,max_tokens 控制长度)。
    • 导入文本:支持读取本地 .txt 文件内容到主题输入框,方便导入已有主题素材。
    • 复制内容:借助 pyperclip 库将生成的结果复制到系统剪贴板,方便后续使用。

总结

  1. 核心功能是通过 Tkinter 搭建可视化界面,封装豆包 API 调用逻辑实现 AI 生成小说内容。
  2. 关键步骤:替换有效 API 密钥和地址 → 安装依赖 → 输入主题 → 点击按钮生成/导入/复制内容。
  3. 可扩展方向:增加保存结果、自定义提示词、调整 AI 生成参数等功能,或优化界面布局和样式。

豆包API(大模型服务)的官方申请入口在火山引擎方舟平台,不是独立的“豆包开放平台”。下面给你完整的官方地址和申请步骤。


一、官方入口(必看)

  • 豆包大模型开放平台(火山引擎方舟):https://www.volcengine.com/product/ark
  • 开发者控制台(创建应用/获取密钥):https://console.volcengine.com/ark
  • 官方API文档:https://www.volcengine.com/docs/82379

二、申请 API Key 完整步骤(个人/企业通用)

1. 注册并登录火山引擎

  • 打开:https://www.volcengine.com/
  • 用手机号注册/登录(支持抖音账号快捷登录)
  • 完成实名认证(个人用身份证,企业用营业执照)

2. 进入方舟大模型平台

  • 登录后进入:https://console.volcengine.com/ark
  • 左侧菜单:开通管理 → 找到 豆包(Doubao) 系列模型(如 doubao-seed-1.8)→ 点击开通

3. 创建 API 密钥(获取 API_KEY)

  • 左侧菜单:API 密钥管理 → 创建 API Key
  • 复制生成的 API Key(格式:sk-xxxxxxxxxxxx),妥善保存

4. 创建推理接入点(获取调用地址)

  • 左侧菜单:在线推理 → 创建推理接入点
  • 选择:
    • 模型:豆包系列(如 doubao-seed-1.6-flash)
    • 地域:cn-beijing(国内延迟最低)
  • 等待状态变为运行中,记录接入点 ID(ep-xxxx)

三、调用地址(替换到你之前的代码)

  • 接口地址(OpenAI 兼容格式):
    https://ark.cn-beijing.volces.com/api/v3/chat/completions
  • 鉴权方式:Authorization: Bearer {你的API Key}

四、常见问题

  • 找不到入口:认准 火山引擎 → 方舟(ARK),不是豆包主站(doubao.com)
  • 开通失败:先完成实名认证,再开通模型
  • 调用报错:检查 API Key 是否正确、接入点是否运行中、地域是否匹配 

最新文章

随机文章