四格漫畫產生器
==
:::spoiler 程式碼
```python=
import gradio as gr
import json
import base64
from openai import OpenAI
def make_story(character1, character2):
global API
promptC=f'''
以下列角色為主角,生成四格漫畫的故事
輸出格式:python list
###
蔡英文、賈伯斯
###
["背景是一個現代辦公室,蔡英文坐在辦公桌前執行公務。賈伯斯意外闖入,一眼就被她的領導風采吸引。","蔡英文和賈伯斯在一場科技論壇上相遇,開始交流彼此的理念。他們的眼神中閃爍著對創新和改變的熱情。","在一家咖啡廳,蔡英文和賈伯斯共同討論著未來的願景,手握著咖啡杯的瞬間,他們的手不經意地碰撞,心靈也漸漸產生共鳴。","最後,他們一同走在晚霞下的海灘,蔡英文和賈伯斯手牽著手,展望著未來,這段跨越國界的愛情故事就此展開。"]
###
孫悟空、米老鼠
###
["在一個神奇的世界,孫悟空和米老鼠偶然相遇。他們一起在森林中遊玩,彼此快樂地分享著自己的故事。","孫悟空身手矯捷,米老鼠智慧過人,兩人配合默契,攻擊猛烈,抵禦著森林裡的妖魔鬼怪。","在一場決鬥中,孫悟空和米老鼠互相扶持,最終戰勝了強大的敵人。他們鼓掌慶祝胜利,也把對彼此的信任和友誼重申。","最後,孫悟空和米老鼠一起乘著神風雲舟,飛向未知的冒險,這段跨越種族和邊界的友情之旅就此開始。"]
###
{character1}、{character2}
###
'''
client = OpenAI(api_key=API)
res = client.completions.create(
model="gpt-3.5-turbo-instruct",
prompt=promptC,
max_tokens=500
)
story_C = json.loads(res.choices[0].text)
result = []
for i in range(len(story_C)):
result.append(f"story{i}.png")
result.append(story_C[i])
draw_story(story_C[i], i)
return result
def draw_story(sentence,i):
global API
promptE=f"""
將以下文字翻譯成英文
###
在一次戰鬥中,孫悟空身受重傷,米老鼠用他的智慧發揮出了非凡的能力,最終成功打敗了敵人。
###
In a battle, Sun Wukong was seriously injured. Mickey Mouse used his wisdom to display extraordinary abilities and finally succeeded in defeating the enemy.
###
{sentence}
###
"""
client = OpenAI(api_key=API)
res = client.completions.create(
model="gpt-3.5-turbo-instruct",
prompt=promptE,
max_tokens=500
)
sentence_E = res.choices[0].text
response = client.images.generate(
model="dall-e-2",
prompt=sentence_E,
size="256x256",
quality="standard",
response_format="b64_json",
n=1,
)
imagestr = response.data[0].b64_json
with open(f"story{i}.png","wb+") as fh:
fh.write(base64.urlsafe_b64decode(imagestr))
demo = gr.Interface(
fn = make_story,
inputs=[gr.Textbox(label="角色1"),gr.Textbox(label="角色2")],
outputs=[gr.Image(type="filepath",height=256,width=256,label="1"),gr.Textbox(label="1")
,gr.Image(type="filepath",height=256,width=256,label="2"),gr.Textbox(label="2")
,gr.Image(type="filepath",height=256,width=256,label="3"),gr.Textbox(label="3")
,gr.Image(type="filepath",height=256,width=256,label="4"),gr.Textbox(label="4")],
title="四格漫畫生成器",
description="輸入兩個角色,生成一段故事",
allow_flagging="never",
)
demo.launch(inline=True, share=True)
```
:::
介面:

輸入:

輸出:




{%hackmd AkrfIbY9QdC81IwIukVVPQ %}