ChatPPT:自动化PPT文本生成的秘密武器,一键生成专业演讲,试试能否驾驭ChatGLM6B的
文章主题:ChatPPT, 自动PPT文本生成, 生成流程, openai
本文介绍了文档智能如何能够利用大模型,比如chatgpt进行反向生成,做解析的逆操作,实现PPT自动生成的demo。
一、ChatPPT的实现思路
ChatPPT,旨在解决的问题是,自动地生成PPT文本。
1、先看有哪些生成场景
那么会有哪些场景?如果以输入输出来分:
输入的可以是一个用户的主题,例如输入“北京的旅游攻略”,直接输出一份PPT;
输入的可以是一个用户的主题以及主题的大纲,大纲可粗可细,粗则直接放一级标题,细则给出每个章节的层级标题目录。
这两个是发散性生成的范畴,以点扩面。另外一种是总结式,即输入的是一堆文档,提取其中的要点以及要点的内容,逐步地形成一级标题,二级标题,三级标题等。
2、再看实现这套需要哪些组件
无论是上面说的那种,都不在乎包括三个要素:
一组或者多组生成内容的prompt提示。用于指引大模型围绕给定主题、大纲、文章内容生成相关PPT章节的填充内容,这个一般需要我们进行人工设定,并且不同的prompt提示对文本生成质量影响较大。
一个足够好的生成模型。生成模型需要能够准确地理解指令,产生正确的内容,也能准确地按照特定格式地输出内容,以方便快速地获取相应内容。例如,根据主题生成大纲时,需要按照1、2、3等方式生成,如果生成每个章节的一级标题。二级标题时通常会要求使用json格式或者特殊符号作为分割来返回。这些都是要生成模型对结果形式指令有较好的遵循能力。比如ChatGPT、GPT4,或者经过这类技能特殊微调的大模型。
一个可以与PPT文档进行交互的程序组件。这个组件可以执行PPT文档生成过程中所需要的各种操作,包括文档创建、页面的新增、页面内容的编排(例如标题、一级一级、二级标题),页面图片的插入等。以python为例,可以使用python-pptx来实现,该组件提供了许多基础的操作接口。
3、有哪些可以注意的点
🌟 当你拥有这三个核心要素时,🎉 实现目标的那一刻触手可及!但对于想要达到卓越,💡 我们可以遵循这样的策略:首先,深入理解每个组件背后的原理, detalize the mechanics 🕵️♂️,确保每个环节都精确无误。其次,实践是检验真理的唯一标准,apply the knowledge in real-world scenarios 🛠️。不断试验和调整,以优化效果。最后,持续学习和改进,never stop growing 🌱,时刻保持对新知识的好奇心,这样才能与时俱进。记住,成功并非一蹴而就,而是稳健前行的旅程。🚀SEO优化词汇:核心要素、实现目标、卓越策略、深入理解、实践检验、持续学习、优化效果、成功之旅
🌟在创作旅程中,别把宝全押在单一的生成模型上哦!要想产出优质内容,不妨采用逐步迭代的方法。首先,引导模型生成文章的大纲框架,就像指挥交响乐的序章。然后,逐步填充细节,从一级标题到二级,每一步都精准严谨。最后,让这些标题引领你写出具体的内容,这样产出的就是结构完整、逻辑清晰的文章了。🚀这是产品化的智慧,先流程化,再交给技术去实现,确保内容的深度与质量。记得,多步骤才是王道!🏆
这种方式的好处在于,好处在于给到生成模型的压力降低,尤其是对其输出格式的容错率较高。
这种做法存在很大的问题就是,拆成多步会引来生成的次数倍增,是一种时间换质量的做法。
另一个,就是单纯使用python–pptx生成的文档很干瘪,很粗糙。
二、一个开源Demo级PPT生成案例
项目地址:https://github.com/HuiMi24/chatppt
🌟通过ChatPPT和generate_ppt这两个强大工具,您的PPT制作过程将高效且流畅!🚀首先,使用简洁的📚topic设定主题,选择心仪的幻灯片页数,默认的(api_key)确保数据安全,然后选择你的语言偏好。📈接下来,ChatPPT会自动创建精美的内容,只需一步就能获得定制化的ppt文件。无需担心格式或设计,一切都由AI一手搞定!💼最后,将生成的PPT导出到你的设备,准备就绪,完美呈现!💪#ChatPPT#PPT制作神器
🌟🚀文章写作专家在此!🔥✨原函数改写如下,以保护隐私和提升SEO优化:**“`python# 高级内容创作服务 📈def create_content(topic: str, page_count: int, api_key: “保密”, language_choice: str, template_override: Optional[str] = None) -> Dict: “””🌟 为您的品牌定制高质量文章,提升在线可见度!✨ 参数说明:- `topic`: 主题领域,SEO友好的关键词( ogr: 📚)- `page_count`: 需要创作的页面数,策略性选择以优化流量( 👥)- `api_key`: 保密信息,确保内容原创与合规( 🔐)- `language_choice`: 文本语言偏好,如英语、中文等( 🌍)可选参数:- `template_override`: 自定义模板路径,个性化风格定制(optional, 📝)返回格式:生成的文章详情作为字典,包含所有页面内容( `{}`) 示例:“`python# 使用方法content_details = create_content(“健康饮食”, 5, “your_secret_api_key”, “zh”)print(content_details)“`—让专业文案为您的品牌注入活力,提升在线影响力!🚀欲了解更多服务详情,请访问:[隐藏链接](替换为SEO友好的URL)或直接私信咨询。💪“`
robot_print(“Hi, I am your PPT assistant.”
)
robot_print(“I am powered by ChatGPT”
)
# robot_print(“If you have any issue, please contact hui_mi@dell.com”)
当然可以,以下是根据您的需求改写后的内容:🌟【高效创作】🎨 通过顶尖PPT工具,只需几步!📈 使用`chatppt(topic, pages, api_secret)`,打造专业级演示文稿。🌍 支持多种语言选项,满足全球化的沟通需要。💻 快速访问API密钥,开启您的创新之旅!🌐欲了解更多详情?👉 点击链接或搜索”chatppt API教程”,让技术赋能你的演讲,提升影响力!💪记得优化关键词:`PPT制作`, `api使用指南`, `语言支持`,以利于搜索引擎SEO。同时,保留主要信息,删减具体API密钥和联系方式,确保内容的吸引力和实用性。
generate_ppt(ppt_content)
1、引入相关组件
相关组件包括pptx,用于操作ppt;openai,用于文本内容生成;
import openai
import json
import argparse
import time
import random
from pptx import Presentation
2、使用openai根据指定的主题topic来生成指定pages页数和language语言的ppt文档
🌟生成的JSON输出格式是关键所在,它确保了数据的精确性和一致性,但这同时也是最具挑战性的一环。在本地测试过程中,我们注意到使用ChatGLM6B模型时,数据解析问题尤为突出,往往导致无法顺利解析和处理。
此外,对于prompt,设计的也很简单;
messages = [
{
“role”: “user”
,
“content”: f“Im going to prepare a presentation about {topic}, please help to outline detailed about this topic, output with JSON language with follow in format {output_format}, please help to generate {pages} pages, the bullet for each as much as possible, please only return JSON format and use double quotes, please return the content in {language}”
,
},
]
该部分完整的内容如下:
def chatppt(topic: str, pages: int, api_key: str, language: str):
language_map = {“cn”: “Chinese”, “en”: “English”
}
language = language_map[language]
## 输出的格式,对大模型要求较高
output_format = {
“title”: “example title”
,
“pages”
: [
{
“title”: “title for page 1”
,
# “subtitle”: “subtitle for page 1”, “content”
: [
{
“title”: “title for bullet 1”
,
“desctription”: “detail for bullet 1”
,
},
{
“title”: “title for bullet 2”
,
“desctription”: “detail for bullet 2”
,
},
],
},
{
“title”: “title for page 2”
,
# “subtitle”: “subtitle for page 2”, “content”
: [
{
“title”: “title for bullet 1”
,
“desctription”: “detail for bullet 1”
,
},
{
“title”: “title for bullet 2”
,
“desctription”: “detail for bullet 2”
,
},
],
},
],
}
## 构造使用的prompt,这里用的是一步生成答案;
messages = [
{
“role”: “user”
,
“content”: f“Im going to prepare a presentation about {topic}, please help to outline detailed about this topic, output with JSON language with follow in format {output_format}, please help to generate {pages} pages, the bullet for each as much as possible, please only return JSON format and use double quotes, please return the content in {language}”
,
},
]
robot_print(f“Im working hard to generate your PPT about {topic}.”
)
robot_print(“It may takes about a few minutes.”
)
robot_print(f“Your PPT will be generated in {language}”
)
openai.api_key = api_key
completion = openai.ChatCompletion.create(model=“gpt-3.5-turbo”
, messages=messages)
try:
content = completion.choices[0].message.content
# just replace to ” is not a good soluation # print(content)
content = json.loads(content.strip())
return
content
except Exception as e:
print(“Im a PPT assistant, your PPT generate failed, please retry later..”
)
exit
(1)
# raise Exception(“Im PPT generate assistant, some error happened, please retry”)
3、多模型生成的结果进行解析,生成ppt
利用python-pptx进行逐页内容的生成,对于每一页slide,有包括title and subtitle、Pic with caption等不同位置的内容,根据实现得到的页面内容进行解析即可。
def generate_ppt(content: str, template=None):
ppt = Presentation()
if
template:
ppt = Presentation(template)
# Creating slide layout
first_slide_layout = ppt.slide_layouts[0]
# “”” Ref for slide types: # 0 -> title and subtitle # 1 -> title and content # 2 -> section header # 3 -> two content # 4 -> Comparison # 5 -> Title only # 6 -> Blank # 7 -> Content with caption # 8 -> Pic with caption # “””
slide = ppt.slides.add_slide(first_slide_layout)
slide.shapes.title.text = content.get(“title”, “”
)
slide.placeholders[1].text = “Generate by ChatPPT” pages = content.get(“pages”
, [])
robot_print(f“Your PPT have {len(pages)} pages.”
)
for i, page in
enumerate(pages):
page_title = page.get(“title”, “”
)
robot_print(f“page {i+1}: {page_title}”
)
bullet_layout = ppt.slide_layouts[1]
bullet_slide = ppt.slides.add_slide(bullet_layout)
bullet_spahe = bullet_slide.shapes
bullet_slide.shapes.title.text = page_title
body_shape = bullet_spahe.placeholders[1]
for bullet in page.get(“content”
, []):
paragraph = body_shape.text_frame.add_paragraph()
paragraph.text = bullet.get(“title”, “”
)
paragraph.level = 1
paragraph = body_shape.text_frame.add_paragraph()
paragraph.text = bullet.get(“description”, “”
)
paragraph.level = 2
ppt_name = content.get(“title”, “”
)
ppt_name = f“{ppt_name}.pptx”
ppt.save(ppt_name)
robot_print(“Generate done, enjoy!”
)
robot_print(f“Your PPT: {ppt_name}”
)
4、生成效果
该项目中给出了以“What is ChatPPT”、“AWS”是什么为例生成的ppt效果:
该方式提供了一个很简单的例子,基本可以串通流程,但效果有限,可以从prompt构造方式等多个方面进行优化,感兴趣的可以在此基础上进一步开发。
总结
本文主要介绍了chatppt实现的技术原理、三个必备要素以及一个开源的demo级项目,从中我们可以看到,决定最终效果的,是文本内容的生成,这个受限于prompt构造的方式以及生成模型的生成能力。
参考文献
1、https://github.com/HuiMi24/chatppt
AI时代,掌握AI大模型第一手资讯!AI时代不落人后!
免费ChatGPT问答,办公、写作、生活好得力助手!
扫码右边公众号,驾驭AI生产力!
转载请注明:ChatPPT:自动化PPT文本生成的秘密武器,一键生成专业演讲,试试能否驾驭ChatGLM6B的 | ChatGPT资源导航