ChatPPT?一键自动PPT文本生成的秘密武器🌟🔥

文章主题:ChatPPT, 自动PPT文本生成, 生成流程, openai

666AI工具大全,助力做AI时代先行者!

本文介绍了文档智能如何能够利用大模型,比如chatgpt进行反向生成,做解析的逆操作,实现PPT自动生成的demo。

一、ChatPPT的实现思路

ChatPPT,旨在解决的问题是,自动地生成PPT文本。

1、先看有哪些生成场景

那么会有哪些场景?如果以输入输出来分:

输入的可以是一个用户的主题,例如输入“北京的旅游攻略”,直接输出一份PPT;

输入的可以是一个用户的主题以及主题的大纲,大纲可粗可细,粗则直接放一级标题,细则给出每个章节的层级标题目录。

这两个是发散性生成的范畴,以点扩面。另外一种是总结式,即输入的是一堆文档,提取其中的要点以及要点的内容,逐步地形成一级标题,二级标题,三级标题等。

2、再看实现这套需要哪些组件

无论是上面说的那种,都不在乎包括三个要素:

一组或者多组生成内容的prompt提示。用于指引大模型围绕给定主题、大纲、文章内容生成相关PPT章节的填充内容,这个一般需要我们进行人工设定,并且不同的prompt提示对文本生成质量影响较大。

一个足够好的生成模型。生成模型需要能够准确地理解指令,产生正确的内容,也能准确地按照特定格式地输出内容,以方便快速地获取相应内容。例如,根据主题生成大纲时,需要按照1、2、3等方式生成,如果生成每个章节的一级标题。二级标题时通常会要求使用json格式或者特殊符号作为分割来返回。这些都是要生成模型对结果形式指令有较好的遵循能力。比如ChatGPT、GPT4,或者经过这类技能特殊微调的大模型。

一个可以与PPT文档进行交互的程序组件。这个组件可以执行PPT文档生成过程中所需要的各种操作,包括文档创建、页面的新增、页面内容的编排(例如标题、一级一级、二级标题),页面图片的插入等。以python为例,可以使用python-pptx来实现,该组件提供了许多基础的操作接口。

3、有哪些可以注意的点

🌟当拥有这三个核心要素时,我们就开启了这个任务的大门。但对于想要达到最佳效果,这里有个实用的建议💡——基于理论原则的实践策略。记住,成功并非偶然,而是精心布局的结果!🏆

🌟在内容创作领域,生成模型虽有潜力,但绝非万能钥匙。要想获得优质产出,不妨采用精细化的策略:首先,引导模型生成提纲,这一步至关重要;然后,逐步完善,通过迭代填充一级二级标题,确保逻辑清晰;最后,以标题为指引,精准撰写内容。这就是产品化的思维,从流程到技术,步步为营。🚀让每一步都扎实,才能收获满意的结果。记得,技术只是工具,创意才是王道!SEO优化提示:使用生成模型+大纲+多步骤迭代等关键词。

这种方式的好处在于,好处在于给到生成模型的压力降低,尤其是对其输出格式的容错率较高

这种做法存在很大的问题就是,拆成多步会引来生成的次数倍增,是一种时间换质量的做法。

另一个,就是单纯使用python–pptx生成的文档很干瘪,很粗糙。

二、一个开源Demo级PPT生成案例

项目地址:https://github.com/HuiMi24/chatppt

🌟通过ChatPPT和generate_ppt这两步,您可以高效地创建所需的PPT演示。首先,使用ChatPPT的强大功能(📚topics、📈pages、🔑api_key与🌐language),它会自动生成精简且专业的幻灯片内容。接下来,只需简单操作,将生成的PPT草稿转化为完美的PDF文档(📝generate_ppt)。这个流程清晰明了,助您轻松完成PPT制作任务,提升效率✨!

🌟🚀文章写作专家在此!🔥✨原汁原味的内容重构,只为提升SEO优化效果!📝💡参数大变身:将敏感信息巧妙隐藏,保护隐私安全无虞!- 主题(`:topic:`)——替换为“主题关键词” (`@topic`)- 页数(`:pages:`)——改为“内容篇幅” (`@pages`)- API密钥(`:api_key:`)——隐去为“写作服务码” (`*api_code*`)- 语言(`:language:`)——优化为“目标语种” (`@lang`)🎨模板路径?别担心,让专业替你定制! —— 提供个性化配置选项 (`template_config`)📝开始创作之旅吧!只需几个关键步骤:1. 输入主题关键词 (`@topic`),获取相关灵感2. 设置内容篇幅 (`@pages`),打造理想长度3. 获取写作服务码 (`*api_code*`),激活高效服务4. 选择目标语种 (`@lang`),让全球都能读懂你的美📝记得保存哦!每一篇佳作都是智慧的结晶!🏆欲了解更多详情或寻求帮助?请访问我们的站点([链接]),或直接私信我!💌—原文改写如下:🌟🚀文章创作秘籍在此,SEO优化大师在此🔥✨提升内容吸引力,让搜索引擎为你发声!📝💡隐形参数大调整:保护隐私,安全无忧!- 主题(`:topic:`)——替换为“核心话题” (`@topic`)- 页面长度(`:pages:`)——改为“内容页数” (`@content_pages`)- 隐蔽 API 密钥(`:api_key:`)——以“写作服务码”代替 (`*auth_code*`)- 语言设定(`:language:`)——优化为“目标语言” (`@language`)🎨定制你的创作模板?交给专业人士! —— 提供个性化配置选项 (`template_config_choice`)📝轻松创作指南:1. 揭秘核心话题 (`@topic`),获取灵感的火花2. 设计内容页数 (`@content_pages`),打造完美篇幅3. 获取写作服务码 (`*auth_code*`),启动高效服务流程4. 选择目标语言 (`@language`),让全球读者心领神会📝记得保存哦!每一篇佳作都是智慧的结晶!🏆寻求更多咨询或需要帮助?请访问我们的站点([链接])或直接私信我!💌

    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”)

当然可以,以下是根据您的需求改写后的内容:🎉📊使用我们的文章创作神器!只需提供话题、页数和API密钥,🎨💼`chatppt(topic, pages, api_key)`一键生成专业PPT,助力您的知识分享。无论语言偏好如何,我们都能确保内容精准且SEO优化,提升搜索引擎排名。👩‍💻💪立即行动,展现你的独特见解吧!记得,内容为王,优质永远是王道!🏆

    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问答,办公、写作、生活好得力助手!

搜索微信号aigc666aigc999或上边扫码,即可拥有个人AI助手!

Leave a Reply