main.py 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. import numpy as np
  2. import gradio as gr
  3. # 生成一个文生图的gradio界面
  4. def mock_img(text: str):
  5. return [
  6. {
  7. "caption": "植物克隆过程示意图",
  8. "url": "https://dashscope-result-sh.oss-cn-shanghai.aliyuncs.com/1d/85/20240710/1b61f1c0/5a69fb02-051b-4708-9a19-83b8f1f5fce2-1.png?Expires=1720710640&OSSAccessKeyId=LTAI5tQZd8AEcZX6KZV4G8qL&Signature=lk4qpxmXBYPzWl%2FHdfpg4RnSgSU%3D",
  9. "description": "图中展示了一棵植物和从植物上剪下的一小段枝条,该枝条被插入土壤中。过一段时间,这小段 枝条生根发芽,长成了一棵新的、和原植物一模一样的新植物。",
  10. },
  11. {
  12. "caption": "克隆羊多利的照片",
  13. "url": " https://dashscope-result-hz.oss-cn-hangzhou.aliyuncs.com/1d/63/20240710/522176a8/0572556b-f855-4fd4-bd02-aea8a72d7fd1-1.png?Expires=1720710681&OSSAccessKeyId=LTAI5tQZd8AEcZX6KZV4G8qL&Signature=RT21mWAWpFTwRA5LU20GomgBxuk%3D",
  14. "description": " 图中展示了克隆羊多利站在草地上,她看起来非常健康,和普通的羊没有区别。背景是实验室的轮廓 ,暗示了她的诞生地。",
  15. },
  16. ]
  17. def mock_story(query: str):
  18. return """小朋友,你听说过“克隆”这个词吗?让我来给你讲一个有趣的故事吧!
  19. 有一天,科学家们想出了一个非常神奇的方法,可以让一个生命体“复制”出另一个一模一样的生命体,这个方法就叫做“克隆”。你可以把“克隆”想象成是一台神奇的复印机,但是这台复印机不是复印纸张,而是复印生命哦!
  20. 1997年的时候,科学家们用这种方法成功地“复印”出了一只名叫多利的绵羊。你知道吗,多利羊并没有爸爸,它是由一只母羊的细胞复制而来的。这就像是我们从电脑上复制一个文件一样,只不过这次我们复制的是一个活生生的羊!
  21. 克隆羊多利的诞生,就像是打开了一扇新的大门,让人们看到了生命的奇妙和科学的无限可能。从此以后,人们开始更加关注和研究克隆技术,希望用它来帮助我们解决更多的问题。
  22. 所以,克隆羊就是通过克隆技术创造出来的一只羊,它没有父亲,只有母亲,是科学家们用神奇的“生命复印机”复制出来的哦!"""
  23. from kg import story_to_imgs
  24. story_existed = False
  25. def generate_image(story):
  26. # res = story_to_imgs(story)
  27. res = mock_img(story)
  28. md = ""
  29. # 改为markdown
  30. for i in range(len(res)):
  31. md += f"## {res[i]['caption']}\n\n"
  32. md += f"{res[i]['description']} \n "
  33. md += f"<img src=\"{res[i]['url']}\" width = \"500\" div align=center />\n"
  34. if i != len(res) - 1:
  35. md += "\n\n"
  36. # md += "![{res[i]['caption']}]({res[i]['url']})\n\n"
  37. # 保存为md文件
  38. with open("生成的绘本.md", "w", encoding="utf-8") as f:
  39. f.write(md)
  40. return md
  41. from answerQuestions import generateStory
  42. def generate_story(query):
  43. story_existed = True
  44. return mock_story(query)
  45. return generateStory(query)
  46. with gr.Blocks() as demo:
  47. gr.Markdown("# 绘本生成器")
  48. with gr.Column():
  49. with gr.Row():
  50. input_text = gr.Textbox(label="输入")
  51. with gr.Row():
  52. clear_btn = gr.Button("清空")
  53. story_btn = gr.Button("生成故事", variant="primary")
  54. img_btn = gr.Button(
  55. "生成绘本", variant="primary", interactive=story_existed
  56. )
  57. with gr.Row():
  58. story_output = gr.Textbox(label="故事", interactive=False)
  59. story_btn.click(generate_story, inputs=input_text, outputs=story_output)
  60. # with gr.Row():
  61. img_output = gr.Markdown(label="绘本")
  62. img_btn.click(generate_image, inputs=story_output, outputs=img_output)
  63. clear_btn.click(
  64. lambda x: [
  65. gr.update(value=""),
  66. gr.update(value=""),
  67. gr.update(value=""),
  68. ],
  69. None,
  70. [input_text, story_output, img_output],
  71. )
  72. if __name__ == "__main__":
  73. demo.launch()