暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

自动化办公:利用Python和DeepSeek API高效制作Word文档(附源码)

34

ISEE小语


“生命就是一个缓慢受锤的过程,人一天天老下去,奢望也一天天消失。”
——王小波《黄金时代》





前 言



在日常工作中,利用 Python 和 DeepSeek API 可以自动化制作报告、培训、学习计划等文档。


通过 Python 调用 DeepSeek API 并自动化生成 Word 文档,能够显著提升工作效率、降低成本,并为复杂场景提供灵活的解决方案。


适用场景:技术文档生成、项目计划、报告生成、合同生成、教育材料等。






准备工作



deepseek api方式,需要提前创建一个api key


1.

 获取DeepSeek API KEY

访问 DeepSeek 官方网站,注册账号并登录。

    https://www.deepseek.com/
    复制



    在用户中心或开发者页面中,点击左侧菜单【API Keys】,点击创建API key,并妥善保存。


    创建成功后,一定要记录此处的API key。因为deepseek的平台不会再次展示API Keys的值

    一定要记录

    一定要记录

    一定要记录




    2.

     安装 Python 环境

    访问python官方网站下载。

      https://www.python.org/
      复制

      这里不再赘述,小栈使用的版本是python3.9.16




      3.

       安装 PyCharm

      访问PyCharm官方网站下载。

        https://www.jetbrains.com.cn/pycharm/download/?section=windows
        复制

        下载专业版本

          pycharm-professional-2024.3.2.exe
          复制

          这里也不再赘述,小栈使用的版本是PyCharm 2024.3


          安装步骤和激活方式,有需要的,可参考

          PyCharm 2024.3 完整版:Windows安装与免费激活全攻略(附安装包)






          调用deepseek



          在上次分享中,已经详细讲述如何调用deepseek api,这里不再赘述,我们直接使用。

          如果有想了解的,可以参照:

          用Python代码调用DeepSeek API的快速指南(详版)

          ISEE小栈,公众号:ISEE小栈轻松搞定:用Python代码调用DeepSeek API的快速指南(详版)


          上次有朋友提出疑问 “请求体中messages 中的两个角色 (role) system 和 user 代表什么含义?” 我们这里会补充一下:

          1. system:

              该角色用于提供系统的背景信息或指令。它可以定义对话的上下文、角色、风格或任何特定的行为期望。通过设置 system 消息,您可以影响模型的行为和回答的质量。

          2. user:

              该角色表示用户的输入或提问。这是用户希望模型回应的具体内容,通常是对话的实际问题或请求。



          1.

           安装三方库

          安装三方库 openai

            pip3 install openai
            复制


            2.

            引用三方库

            引用三方库 openai

              from openai import OpenAI
              复制


              3.

              实际调用

              将注册deepseek创建的api key输入,就可以直接使用了,这里将 角色、指令 和 参数 一同 传入请求体。

              比如现在要给一位只有业余时间的同学制定一份python学习计划,


              现在定义 系统背景 和 用户提问:

                role_system = "你是一名专业的Python程序员,专注python技术的培训学习。"
                role_user = "在每日可用2小时(19:00-21:00)、脑力峰值下降30%的晚间时段,设计Python机器学习进阶计划(需兼容Anki记忆曲线),最终输出markdown格式"
                复制

                这个可根据自己的实际情况定义,其实越清晰越好,本文只以python为例。


                具体实际代码如下:

                  from openai import OpenAI
                  # 初始化客户端
                  client = OpenAI(api_key="deepseek创建的api key", base_url="https://api.deepseek.com")
                  # 系统角色和用户输入


                  # role_system = "你是一名专业的Python开发工程师,最终输出markdown格式"
                  role_system = "你是一名专业的Python程序员,专注python技术的培训学习。"
                  role_user = "在每日可用2小时(19:00-21:00)、脑力峰值下降30%的晚间时段,设计Python机器学习进阶计划(需兼容Anki记忆曲线),最终输出markdown格式"




                  response = client.chat.completions.create(
                      model="deepseek-chat",
                      messages=[
                          {"role""system""content": role_system},
                          {"role""user""content": role_user},
                      ],
                      temperature=1.0,
                      top_p=0.9,
                      max_tokens=500,
                      stream=False
                  )
                  # 输出
                  markdown_text = response.choices[0].message.content
                  print(markdown_text)
                  复制


                  结果:

                    ## Python 机器学习进阶计划 (晚间时段,兼容 Anki 记忆曲线)


                    **目标:**  在每日 2 小时 (19:00-21:00) 的晚间时段,利用脑力峰值下降 30% 的特点,高效学习 Python 机器学习进阶知识,并结合 Anki 记忆曲线进行知识巩固。


                    **计划周期:** 8 周


                    **每周安排:**


                    **周一至周五:** 学习新知识 + Anki 复习
                    **周六:**  项目实践 + Anki 复习
                    **周日:**  休息 + 自由复习


                    **每日时间安排 (19:00-21:00):**


                    **19:00-19:30:**  Anki 复习 (复习前一天学习内容)
                    **19:30-20:30:**  学习新知识 (视频/书籍/文档)
                    **20:30-21:00:**  代码实践 + 笔记整理 + Anki 卡片制作


                    **学习路线:**


                    **第一阶段 (1-2 周): 机器学习基础回顾与强化**


                    **目标:**  巩固机器学习基础概念,为进阶学习打下坚实基础。
                    **学习内容:**
                        * 机器学习基本概念 (监督学习、无监督学习、强化学习)
                        * 常用机器学习算法 (线性回归、逻辑回归、决策树、随机森林、SVM 等)
                        * 模型评估指标 (准确率、召回率、F1 值、ROC 曲线等)
                        * 特征工程 (特征选择、特征缩放、特征编码等)
                    **资源推荐:**
                        * 书籍: 《机器学习实战》
                        * 视频: 吴恩达机器学习课程 (Coursera)
                        * 网站: Scikit-learn 官方文档
                    **Anki 卡片制作:**
                        * 机器学习基本概念
                        * 常用机器学习算法原理、优缺点、应用场景
                        * 模型评估指标计算公式、意义
                        * 特征工程常用方法


                    **第二阶段 (3-4 周): 深度学习入门**


                    **目标:**  掌握深度学习基本概念和常用模型。
                    **学习内容:**
                        * 神经网络基础 (感知机、多层感知机、激活函数、损失函数、优化算法)
                        * 卷积神经网络 (CNN) 原理及应用
                        * 循环神经网络 (RNN) 原理及应用
                        * 深度学习框架
                    复制

                    以上结果输出的是markdown格式






                    生成Word文档




                    markdown格式的直接写入Word,条理比较清晰,但格式需要做处理。在Python中,我们需要用到以下三方库:

                    1. markdown: Markdown 解析

                    2. python-docx:Word操作 

                    3. beautifulsoup4:Html解析


                    这里可能有朋友会有疑问,说明一下为什么不直接使用Markdown 的解析能力,从而增加了辅助工具BeautifulSoup?

                    如果单纯使用Markdown 的解析处理会比较复杂,里面有部分Html标签,个人感觉用BeautifulSoup辅助更加方便。



                    1.

                     安装三方库

                    安装三方库markdown python-docx beautifulsoup4

                      pip install markdown python-docx beautifulsoup4
                      复制



                      2.

                       引入三方库

                      将添加的 角色 和 优化的指令传入请求体:


                        import markdown
                        from docx import Document
                        from bs4 import BeautifulSoup
                        复制



                        3.

                         代码实现

                        这里我们直接封闭一个函数:


                          import markdown
                          from docx import Document
                          from docx.shared import Pt
                          from docx.enum.text import WD_ALIGN_PARAGRAPH
                          from bs4 import BeautifulSoup


                          def markdown_to_word(markdown_text, output_file):
                              # 解析 Markdown 为 HTML
                              html_content = markdown.markdown(markdown_text)


                              # 创建 Word 文档
                              doc = Document()


                              # 设置默认字体和样式
                              style = doc.styles['Normal']
                              font = style.font
                              font.name = 'Times New Roman'
                              font.size = Pt(12)


                              # 将 HTML 转为文本解析(不保留标签)
                              soup = BeautifulSoup(html_content, "html.parser")


                              # 遍历解析后的内容
                              for element in soup:
                                  if element.name == "h1":
                                      # 一级标题,居中显示
                                      paragraph = doc.add_heading(element.text, level=1)
                                      paragraph.alignment = WD_ALIGN_PARAGRAPH.CENTER
                                      doc.add_paragraph()
                                  elif element.name == "h2":
                                      # 二级标题
                                      paragraph = doc.add_heading(element.text, level=2)
                                      paragraph.alignment = WD_ALIGN_PARAGRAPH.CENTER
                                      doc.add_paragraph()
                                  elif element.name == "h3":
                                      # 三级标题
                                      paragraph = doc.add_heading(element.text, level=3)
                                      paragraph.alignment = WD_ALIGN_PARAGRAPH.LEFT
                                      doc.add_paragraph()
                                  elif element.name == "p":
                                      # 普通段落
                                      doc.add_paragraph(element.text)
                                  elif element.name == "ul":
                                      # 无序列表
                                      for li in element.find_all("li", recursive=False):
                                          doc.add_paragraph(li.text, style="List Bullet")
                                  elif element.name == "ol":
                                      # 有序列表
                                      for li in element.find_all("li", recursive=False):
                                          doc.add_paragraph(li.text, style="List Number")
                                  elif element.name == "blockquote":
                                      # 引用
                                      doc.add_paragraph(element.text, style="Intense Quote")
                                  elif element.name == "code":
                                      # 代码块
                                      doc.add_paragraph(element.text, style="Code")


                              # 保存生成的 Word 文档
                              doc.save(output_file)
                              return f"生成 {output_file} 成功!"
                          复制

                          复制


                          4.

                          生成Word文档

                          我们把以上两部分结合,调用 deepseek 后直接 调用写入word函数

                            def main():
                                output_file = 'XXX_Python业余学习计划.docx'
                                result = markdown_to_word(markdown_text, output_file)
                                print(result)


                            if __name__ == '__main__':
                                main()
                            复制


                            结果:


                            这样是不是更加方便了呢,再也不用输出结果、复制、粘贴、调整Word格式了!大大节省了时间!





                            总 结



                            通过 Python 调用 DeepSeek API 并自动化生成 Word 文档具有以下好处:


                            1. 提高效率

                            自动化生成:无需手动编写或复制粘贴内容,节省大量时间和精力。

                            批量处理:可以快速生成多个文档,适用于需要大量文档的场景(如报告、合同、教程等)。


                            2. 内容一致性

                            标准化输出:通过 API 生成的内容格式统一,避免人为错误或格式不一致的问题。

                            动态更新:如果内容需要更新,只需修改 API 请求或模板,文档会自动同步更新。


                            3. 灵活性和可定制性

                            动态内容生成:可以根据不同需求生成定制化内容(如个性化报告、数据分析结果等)。

                            模板化设计:结合 Word 模板,可以灵活控制文档的样式、布局和结构。


                            4. 集成性强

                            与其他工具集成:可以与 Python 生态系统中的其他工具(如 Pandas、Matplotlib 等)结合,生成包含数据、图表和文本的复杂文档。

                            自动化工作流:可以嵌入到自动化脚本或工作流中,实现端到端的文档生成和分发。


                            5. 节省成本

                            减少人工干预:降低对人工编写文档的依赖,减少人力成本。

                            资源优化:通过 API 调用,可以按需生成文档,避免资源浪费。


                            6. 可扩展性

                            模块化设计:代码可以模块化,方便扩展和重用。

                            支持多种格式:除了 Word 文档,还可以生成 PDF、HTML 等其他格式。


                            有一点,使用Python 调用 DeepSeek API是消费的,但价格很亲民,这点请知悉!


                            小栈的分享,对入门使用来说,应该是没有问题了,如果有什么更好的想法,欢迎留言,小栈与你一起成长!


                            小栈将实现代码整理


                            后台回复deepseek_word即可获取!




                            寄语:世间三美,明月,清风,眼前……



                            看到这儿的朋友帮点个“”和“在看”,谢谢支持~!

                            文章就分享到这儿,喜欢就点个吧!




                            往期推荐  点击标题可跳转

                            文章转载自数据库平台优化,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                            评论