今天看到尹相志老师用 GPT-4o 伪代码的方式做绘本生成,实际测试了下,被惊呆了。
https://www.youtube.com/watch?v=3rb-54Q5fig
先看生成的部分效果图:
Prompt
为了方便阅读,我把这个Prompt翻译成简体中文了,完整Prompt如下,实际执行时:
- 碰到GPT-4o停下来时,输入“继续”即可;
- 碰到生成图片时,不生成图片,而是输出文字,@一下 DALL.E 即可;
以下为**微代码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 在训练的时候,已经训练过大量的优质代码,可以轻易的理解伪代码的含义,实际上 LLM 对于伪代码的理解能力也是相当强的。
至于用什么形式来描述 Prompt,在发现自然语言控制不足时,用微代码是一种不错的选择。就像有网友说的:“将来可能一部电影就是几万行代码,世界也是数字与代码。”
标签:prompt,绘本,代码,生成,GPT,Prompt,image From: https://www.cnblogs.com/ghj1976/p/18252238/jing-dianprompt-xin-shang--shi-yong-wei-dai-map