四格漫畫產生器 == :::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) ``` ::: 介面: ![image](https://hackmd.io/_uploads/H1TSMX7aT.png) 輸入: ![image](https://hackmd.io/_uploads/Syb9Gm7ap.png) 輸出: ![image](https://hackmd.io/_uploads/rJu7dM7Tp.png) ![image](https://hackmd.io/_uploads/r1tVdzX66.png) ![image](https://hackmd.io/_uploads/S1zb_fmTp.png) ![image](https://hackmd.io/_uploads/ry1DOfXaT.png) {%hackmd AkrfIbY9QdC81IwIukVVPQ %}