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样式。
-
安装Node.js(需v14+)
-
通过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没有套入模板,美观性有待加强!!