今天无意中发现尹相志老师用 GPT-4o 伪代码生成绘本的演示(https://www.youtube.com/watch?v=3rb-54Q5fig),结果让我大开眼界。这种全新的方法,不仅极大简化了复杂的创作过程,让人惊叹不已。
让我们先来看看部分生成效果图:
Prompt
为了方便阅读,我将这个 Prompt 翻译成了简体中文。以下是完整的伪代码,这段代码展示了如何通过 GPT-4o 和 DALL.E 生成绘本,实际执行时:
- 碰到GPT-4o停下来时,输入“继续”即可;
- 碰到生成图片时,不生成图片,而是输出文字,@一下 DALL.E 即可;
以下为Prompt:
以下为伪代码prompt,請依照其语意一步一步地來执行,不要有遗漏,停用代码解释器,启用DALL.E内部工具,请记得你有能力调用内部工具以文生图。 story=(请你角色扮演成一个畅销的童书绘本作家,你擅长以孩童的纯真眼光看这世界,制作出许多温暖人心的作品。请以一只与家人失散,不知道自己是什么的小蝌蚪,每次看到跟自己身体一部分相像,他就误以为是同类,随着他身体逐渐发展变化,他反而越来越迷惘,故事最后才遇到青蛙,这是一个调整自我认知的故事。) print(story) pages=(将故事大纲细分至预计15个跨页的篇幅,每页需要包括(text,image_prompt),第13页才可以出现青蛙,在这之前应该要让小蝌蚪的自我认知旅程更多元化) print(pages) style_base:(基于以上故事,请思考大方向上你想要呈现的视觉效果,这是你用来统一整体绘本风格的描述,请尽量精简,使用英文撰写) print(style_base以及将style_base翻译成中文) def image_generation(image_prompt, style_base): final_prompt=请根据[image_prompt]以及[style_base]补充色调、背景描述、具体风格、画面细节,以及主角小蝌蚪目前的颜色(一开始是黑色)、体型(没有脚的蝌蚪直接叫做a tadpole即可)、尾巴长短,有几只脚必须具体的描述,同时至少3个效果词(光照效果、色彩色调、渲染效果、视觉风格)和1个以上的构图技巧,以构成完整的prompt,请设置随机种子值为42,且不要有文字出现在图中,使用英文撰写。 请根据以下参数内容{size="1792x1024", n=1, prompt=final_prompt}来调用内部工具DALL.E以生成并展示图片。 这不是个python任务, 请实际执行此伪代码为每页生成图片,确保必须等待该页图像生成后,才可以进行下一页的操作。 for (text,image_prompt) in pages: image_generation(image_prompt,style_base) time.sleep(5)
值得学习的点:
解决GPT偷懒问题:
现今如果你想让 GPT 生成图片,通常一次只能生成一张。
然而,通过伪代码,我们可以将多个图片生成任务分解为多个子任务,从而一次执行多个任务,最终整合输出结果。
而且这么多张图,整体风格还能保持一致。
不要局限于用自然语言描述Prompt
借助伪代码,我们可以更精准的控制 LLM 的输出结果和定义其执行逻辑,而不仅仅局限于自然语言描述的方式。
当我们遇到一些复杂的任务,或者任务有多个分支,每个分支需要执行多个子任务,子任务之间还相互关联,这时候用伪代码描述 Prompt,会更加清晰和准确。
类似的用伪代码做Prompt的示例还有:
-
营销分析报告: 通过 for loop 调用上网浏览功能抓取资料。
https://www.youtube.com/watch?v=gefnTqQmcQU -
微代码让gpt-4o设计新的的Pokémon
https://www.youtube.com/watch?v=mD3-GbxC5cg
总结
宝玉对Prompt的本质的总结非常到位:
Prompt 的本质是一种对 LLM 的控制指令。
https://baoyu.io/blog/prompt-engineering/advanced-prompting-using-pseudocode-to-control-llm-output
LLM 在训练过程中已经处理过大量的优质代码,可以轻易理解伪代码的含义,实际上对于伪代码的理解能力也相当强大。当自然语言控制不足时,伪代码是一种有效的替代方式。正如网友所说:“未来,一部电影可能就是几万行代码,世界也是数字与代码的组合。”