File size: 5,355 Bytes
c9108b4 4ee16ec c9108b4 4ee16ec c9108b4 4ee16ec c9108b4 c80084f c9108b4 c80084f c9108b4 c80084f c9108b4 c80084f c9108b4 92dea96 c80084f fe3be0f c9108b4 c80084f c9108b4 c80084f c9108b4 92dea96 c80084f 92dea96 fe3be0f c80084f c9108b4 fe3be0f c9108b4 fe3be0f 92dea96 c9108b4 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 |
# refer to repo https://github.com/gradio-app/gradio/blob/main/demo/chatbot_multimodal/run.ipynb for enhancement
import PIL.Image
import gradio as gr
import base64
import time
import os
import google.generativeai as genai
import requests
import pathlib
txt_model = genai.GenerativeModel('gemini-pro')
vis_model = genai.GenerativeModel('gemini-pro-vision')
txt_prompt_1 = """
请列出图片中的所有食物项目,每个项目应在 Markdown 格式的食物-营养成分表中占据一行,表格包括四列:序号、食物、注意营养成分和推荐摄入量。其中,“主要营养成分”指的是食物中的主要成分,而“推荐摄入量”则是该成分的建议每日或每周摄入量。
** 示例食物-营养成分表
| 序号 | 食物 | 主要营养成分 | 推荐摄入量 |
|-----|--------------|------------------------------------------------------------------------------------------|--------------------------------------|
"""
txt_display_1 = 'content of the letter: '
txt_prompt_selfie = """
以照片中的主体人物与背景做为对象,分别对人物与背景分别做出评语,对人物做出3个评语,对背景也做出3个评语。这些评语必须是轻松诙谐的用词与内容。
** 人物评语
| 序号 | 特征 | 评语
|-----|--------------|-----------------------------------------------------------------------------
** 背景评语
| 序号 | 特征 | 评语
|-----|--------------|-----------------------------------------------------------------------------
"""
txt_display_selfie = '--- '
import os
GOOGLE_API_KEY=os.getenv('GOOGLE_API_KEY')
genai.configure(api_key=GOOGLE_API_KEY)
SMS_URL =os.getenv('SMS_URL')
SMS_TOK =os.getenv('SMS_TOK')
sms_text ="..."
# Image to Base 64 Converter
def image_to_base64(image_path):
with open(image_path, 'rb') as img:
encoded_string = base64.b64encode(img.read())
return encoded_string.decode('utf-8')
# Function that takes User Inputs, generates Response and displays on Chat UI
def selfie_response(img):
if not img:
response = txt_model.generate_content(txt_prompt_selfie)
return response
else:
img = PIL.Image.open(img)
response = vis_model.generate_content([txt_prompt_selfie,img])
return response.text
# Function that takes User Inputs, generates Response and displays on Chat UI
def app1_response(img):
if not img:
response = txt_model.generate_content(txt_prompt_1)
return response
else:
img = PIL.Image.open(img)
response = vis_model.generate_content([txt_prompt_1,img])
return response.text
# SMS service ends in March 2024, to restore service @Sinch Simple Text
def send_SMS(resp_text):
url = SMS_URL
headers = {
"Authorization": SMS_TOK,
"Content-Type": "application/json"
}
data = {
"from": "12085686834",
"to": ["18587331029"],
"body": resp_text
}
response = requests.post(url, json=data, headers=headers)
return response.text
return "....."
# gradio block
with gr.Blocks() as app1:
with gr.Column():
gr.Markdown("## 🥷 点评我的餐盘 ##")
gr.Markdown("```for xxxxxx ✉ and/or xxx ⌦, include photo here...```")
image_box = gr.Image(label="✂ 对象:餐盘", type="filepath")
btn1 = gr.Button("点评这盘菜 ☑")
out1 = gr.Textbox(label="here are the actionables...")
btn2 = gr.Button("(disabled)发短信 ↗️")
out2 = gr.Textbox(label="(disabled) no message been sent, this is just a mockup confirmation...")
btn1.click(fn=app1_response, inputs=[image_box], outputs=out1)
btn2.click(fn=send_SMS, inputs=out1, outputs=out2)
gr.Markdown("""
# 🥷 Summerize eMail & Make a Plan #
[demo video](https://youtu.be/lJ4jIAEVRNY)
""")
examples=[
os.path.join(os.path.dirname(__file__), "images/missionemail.png"),
],
with gr.Blocks() as app_selfie:
with gr.Column():
gr.Markdown("## ↗️ 点评我的自拍(注意看我的背后) ##")
gr.Markdown("```xxxx ⌦, paste screenshot here...```")
image_box = gr.Image(label="✂ 提示:与LOGO一起拍,会更好玩!", type="filepath")
btn_selfie1 = gr.Button("生成趣味点评 ☑")
out_selfife1 = gr.Textbox(label="here are the actionables...")
btn_selfie2 = gr.Button("(disabled)发短信 ↗️")
out_selfife2 = gr.Textbox(label="(disabled) no message been sent, this is just a mockup confirmation...")
btn_selfie1.click(fn=selfie_response, inputs=[image_box], outputs=out_selfife1)
btn_selfie2.click(fn=send_SMS, inputs=out_selfife1, outputs=out_selfife2)
gr.Markdown("""
# ↗️ 与logo合拍 #
- screen capture (Win + shift + S)
- use MD editor below
[markdown editor](https://stackedit.io/app#)
""")
examples=[
os.path.join(os.path.dirname(__file__), "images/missionemail.png"),
],
with gr.Blocks() as demo:
gr.Markdown("## 自拍 ↗️ + 餐盘 🥷 ##")
gr.TabbedInterface([app_selfie, app1], ["➀ 自拍", "➁ 餐盘"])
demo.queue()
demo.launch() |