File size: 3,794 Bytes
930f89e
 
f22cb33
 
 
 
 
 
1fe660b
f22cb33
 
 
 
 
 
8c29b70
f22cb33
 
 
 
 
 
 
 
 
 
 
 
 
ba9c0ad
f22cb33
 
 
b34adbe
 
f22cb33
60361bd
f22cb33
 
 
 
 
 
 
930f89e
f22cb33
 
930f89e
f22cb33
 
 
 
930f89e
1fe660b
a34f4ad
b34adbe
 
1fe660b
b34adbe
1fe660b
 
 
 
 
 
 
 
 
 
 
bd53307
f22cb33
98556ba
b8f63e5
128b53d
930f89e
b8f63e5
 
 
 
60361bd
98556ba
1fe660b
60361bd
f22cb33
 
 
 
 
 
 
 
 
 
 
128b53d
 
 
 
 
 
 
 
 
 
 
 
f22cb33
128b53d
 
 
 
 
 
 
 
 
 
 
f22cb33
29fc1b8
 
128b53d
29fc1b8
 
 
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
# 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 = """The image contains the contents of a letter. I'd like to follow the request mentioned in the letter. Please provide 3 actionable items to assist me. When responding, use the following format:

# Sender and Subject #
1- Action 1 (no more than 20 words)
2- Action 2 (no more than 20 words)
3- Action 3 (no more than 20 words)

For example:
# From Richard regarding 'Shipping to Customer ABC' #
1- Pack Product A
2- Ship before 3:00 PM today
3- Notify Richard after shipment
"""

txt_display_1 = 'content of the letter: '
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 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
    
# gradio block
with gr.Blocks() as app1:
    with gr.Column():
        gr.Markdown("```for email and/or instruction, paste screenshot here...```")
        image_box = gr.Image(type="filepath")
        btn1 = gr.Button("generate To-Dos")
        out1 = gr.Textbox(label="here are the actionables...")
        btn2 = gr.Button("Send to Mobile")
        out2 = gr.Textbox(label="response from SMS gateway...")
    
        btn1.click(fn=app1_response, inputs=[image_box], outputs=out1)
        btn2.click(fn=send_SMS, inputs=out1, outputs=out2)

    gr.Markdown("""
    # Make a Plan #
    
    	- screen capture (Win + shift + S)
        - click **Make a Plan** to upload
        - await LLM Bot (Gemini, in this case) response
        - receive THREE actionable items
    
    [demo](https://youtu.be/lJ4jIAEVRNY)

    """)
    
with gr.Blocks() as app2:
    with gr.Column():
        gr.Markdown("```Stock-Out Shamer, paste ERP Inv screenshot here...```")
        image_box = gr.Image(type="filepath")
        btn1 = gr.Button("check ROQ")
        out1 = gr.Textbox(label="here is the watch list...")
        btn2 = gr.Button("send out reminders")
        out2 = gr.Textbox(label="response or feed back?")
    
        btn1.click(fn=app1_response, inputs=[image_box], outputs=out1)
        btn2.click(fn=send_SMS, inputs=out1, outputs=out2)

    gr.Markdown("""
    # Make a Plan #
    
    	- screen capture (Win + shift + S)
        - click **Make a Plan** to upload
        - await LLM Bot (Gemini, in this case) response
        - receive THREE actionable items
    
    [demo](https://youtu.be/lJ4jIAEVRNY)

    """)

with gr.Blocks() as demo:
    gr.Markdown("## Workflow Bot ##")
    gr.TabbedInterface([app1, app2], ["To-Dos", "SOS"])

demo.queue()
demo.launch()