利用Dify和Marp搭建AI自动生成ppt的应用(亲测)

Dify是一个开源的LLM应用开发平台,它通过直观的可视化界面,帮助开发者快速构建和部署AI应用,支持包括模型管理、知识库、工作流编排等全方位功能,你可以把它理解为一个类似于扣子的"AI应用的乐高积木系统";这里我们介绍一个用DIfy和Marp搭建自动生成ppt应用的例子。

一、工具准备:

1、搭建一个属于自己的Dify开发平台。

开源地址:https://gitcode.com/gh_mirrors/di/dify

不愿意搭建的也可以使用Dify云平台:https://cloud.dify.ai/  不过这会儿好像访问不了了,待修复。

2、Marp安装

Marp(Markdown Presentation Ecosystem)是一个用Markdown编写幻灯片的工具,支持实时预览、导出PDF/PPT/图片,支持自定义主题和CSS样式。

  1. 安装Node.js(需v14+)

  2. 通过npm安装:

    bash

    npm install -g @marp-team/marp-cli

3、Flask安装

Flask是一个使用 Python 编写的轻量级 Web 应用框架。其 WSGI 工具箱采用 Werkzeug ,模板引擎则使用 Jinja2 。Flask使用 BSD 授权。
Flask也被称为 “microframework” ,因为它使用简单的核心,用 extension 增加其他功能。Flask没有默认使用的数据库、窗体验证工具。

使用 pip 安装 Flask:

pip install flask

 二、编写本地服务用于接收ppt内容,生成md文件同时转换成pptx文件

这里主要是用python来写的:

import subprocess

from flask import Flask, request, send_from_directory

import os

import time

app = Flask(__name__)

# postman测试是否可以生成md和pptx文件

@app.route('/test')

def hello_world():

    timestamp = str(int(time.time()))

    md_filename = "1739431167.md"

    pptx_filename = "1739431167.pptx"

    marp_path = os.getenv('MARP_PATH', '/Users/habhy/.npm-global/bin/marp')

    subprocess.run([marp_path, f'data/{md_filename}', '-o', f'data/{pptx_filename}'], check=True)

   

    return os.getenv('MARP_PATH', '/Users/habhy/.npm-global/bin/marp') + ' | ' + f'data/{md_filename}' +' | hello world!'

# 保存上传的Markdown内容,并转换成PPT

@app.route('/upload', methods=['POST'])

def upload_markdown():

    content = request.get_data(as_text=True)

    timestamp = str(int(time.time()))

    md_filename = f"{timestamp}.md"

    pptx_filename = f"{timestamp}.pptx"

    # 保存Markdown文件

    with open(f"data/{md_filename}", 'w', encoding='utf-8') as f:

        f.write(content)

    # 获取marp的路径

    marp_path = os.getenv('MARP_PATH', '/Users/habhy/.npm-global/bin/marp')

    # 使用marp-cli将Markdown转换为PPT

    try:

        subprocess.run([marp_path, f'data/{md_filename}', '-o', f'data/{pptx_filename}'], check=True)

    except Exception as e:

        return {

            'message': 'Failed to convert Markdown to PPT',

            'error': str(e)

        }

    # 返回文件链接

    return f'Markdown 文件已保存\n预览链接: http://127.0.0.1:5004/data/{md_filename} \n下载链接: http://127.0.0.1:5004/data/{pptx_filename}?pptx'

# 提供静态文件服务

@app.route('/data/<path:filename>')

def serve_file(filename):

    return send_from_directory('data', filename)


 

if __name__ == '__main__':

    app.run(host='0.0.0.0', port=5004)

工具代码写好后,运行服务:

python marp-flask-service.py

 可以使用postman来进行调试:

三、在Dify平台上新建ppt生成工具的应用,命名为save_marp_content,并发布为工具。

其中HTTP请求的API地址就是你本机启动的本地服务。

四:在Dify平台上新建ppt制作助手的应用,调用PPT生成工具,同时根据自己的需要填写提示词

提示词:

你是一个顶尖的PPT制作专家,专注于根据用户的多样化需求打造专业且富有吸引力的PPT内容。你的工作流程严谨而高效,旨在确保每一步都精准满足用户的期望。具体流程如下:

一、需求理解与大纲生成

你擅长倾听并深入理解用户的具体PPT制作需求,无论是主题、风格还是内容要点,你都能准确把握。若用户未提出明确需求或需求不严谨,你将运用自身丰富的经验和专业知识,主动为其构思并生成一份结构清晰、逻辑连贯的大纲。这一步骤为后续PPT制作奠定了坚实基础,确保内容策划的方向正确无误。

二、大纲确认与内容搜索

在生成大纲后,你会与用户进行确认,确保其满足用户的期望。一旦用户对大纲无异议,你将立即进入内容搜索阶段。你精通使用工具,能够高效搜索互联网上的最新、最相关信息,确保PPT内容既准确又具时效性。你擅长按照用户的需求或已确认的大纲进行内容的筛选、整合和优化,使其与PPT主题和用户需求完美契合。

三、PPT内容生成与确认

根据已确认的大纲和检索出的内容,你将逐步生成PPT内容。每页内容都经过精心设计和编排,确保视觉效果和信息传递效果最佳。你注重内容的精炼和简洁,每页内容不超过5行,以提高观众的阅读体验和注意力集中度。完成所有PPT页内容的生成后,你会与用户进行确认,并根据其反馈进行必要的修改,直至用户完全满意。

四、格式调整与问答沟通

在与用户沟通的过程中,你始终使用普通PPT格式给出内容,避免使用Marp等特定格式,以确保沟通的顺畅性和用户的理解度。你擅长根据用户的反馈和意见,对PPT的排版、结构和显示内容进行合理调整,确保PPT整体风格统一、排版优美、结构清晰。同时你需要调整格式以适应PPT的分页要求,合理分页,合理控制每页的显示内容,避免内容超出边界,确保观众能够轻松阅读和理解。

五、最终生成与交付

当用户对PPT内容完全确认后,你会询问其是否需要生成PPT文件。若用户确认需要,你将按照Marp格式要求生成最终内容,并调用save_marp_content进行保存。随后,你会将生成的PPT文件链接及时提供给用户,确保其能够顺利获取和使用。同时,你也会提供必要的操作指南或建议,以帮助用户更好地理解和利用PPT内容。

六、专业能力与服务态度

你具备深厚的PPT制作经验和专业知识,能够应对各种复杂需求,确保PPT内容的专业性和准确性。你始终保持耐心和细心,关注用户的反馈和需求变化,及时调整和优化PPT内容。你注重与用户的沟通和合作,尊重其意见和建议,共同打造出真正符合用户需求的PPT作品。

选择需要的AI模型

 

到此,你就可以通过聊天机器人生成ppt了。

只是这里生成的ppt没有套入模板,美观性有待加强!! 

### 使用 Dify 自动生成 PPT 的方法 为了利用 Dify 创建自动化的 PowerPoint (PPT) 文件,通常需要先理解 Dify 平台的功能以及它如何处理文档数据转换。虽然 Dify 主要用于构建 AI 问答助手并简化知识管理流程[^2],但可以通过一些创意性的应用来实现自动生成 PPT。 #### 准备工作 确保拥有一个已配置好的 Dify 环境,并准备好想要转化为幻灯片的内容素材。这些素材最好是以结构化的方式存储在一个文件中,比如 Markdown (.md),这样更容易被解析成适合展示的信息片段。 #### 步骤说明 由于 Dify 官方并没有直接提供生成 PPT 功能的支持,因此建议采用间接的方法: 1. **创建模板** 设计一套基础的 PPT 模板,该模板应包含标题页、内容页面布局以及其他任何希望保持一致的设计元素。此部分可以在 Microsoft PowerPoint 中完成保存为 .potx 格式的文件以便后续使用。 2. **编写脚本** 利用 Python 编写一段简单的程序读取由 Dify 处理后的文本资料(如之前提到过的 `dify_doc.md`),并将之填充到预先设计好的 PPT 模板里去。下面是一个基于 python-pptx 库的例子: ```python from pptx import Presentation from pptx.util import Inches def create_presentation_from_markdown(md_file, template_path='template.potx'): prs = Presentation(template_path) with open(md_file, 'r', encoding='utf-8') as file: lines = file.readlines() slide_layout = prs.slide_layouts[0] for line in lines: if not line.strip(): continue slide = prs.slides.add_slide(slide_layout) title = slide.shapes.title content = slide.placeholders[1] # 假设每行代表一页新的幻灯片上的主要内容 title.text = f"Slide Title" content.text = line.strip() output_filename = "generated_presentation.pptx" prs.save(output_filename) print(f"PPT saved to {output_filename}") create_presentation_from_markdown('path/to/your/dified_document.md') ``` 这段代码会遍历给定 markdown 文档中的每一行文字,在每次迭代时都会向现有的演示文稿添加一个新的空白幻灯片,并设置其标题与正文内容。最后将整个项目保存下来作为一个完整的 PPT 文件。 请注意这只是一个非常基础的概念验证版本;实际应用场景下可能还需要考虑更复杂的逻辑,例如支持多级列表项、图片嵌入等功能。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值