File size: 4,915 Bytes
99ee8d1 9d0d207 99ee8d1 38a8402 99ee8d1 38a8402 9d0d207 38a8402 99ee8d1 9d0d207 99ee8d1 38a8402 99ee8d1 38a8402 99ee8d1 38a8402 9d0d207 99ee8d1 9d0d207 38a8402 9d0d207 99ee8d1 3248b60 38a8402 9d0d207 38a8402 9d0d207 38a8402 bed46c4 38a8402 c3caa05 38a8402 |
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 |
import json
import requests
import gradio as gr
import pandas as pd
import os
import openai
openai.api_key = os.environ.get('GPT_3_Token')
def openai_query(
recipient:str = "Employer",
len:int = 400,
recipient_name:str = "John Doe",
context:str = "",
input:str = "",
random_state:float = 0.85
) -> str:
return openai.Completion.create(
engine='text-davinci-002',
prompt="Write a professional email to my " + recipient.lower() + " starting with Hello " + recipient_name + ", about the subject " + context + " and the email should be based on this draft: " + input,
temperature = random_state,
max_tokens= len,
frequency_penalty=0.25,
presence_penalty=0.75,
best_of=1
).get("choices")[0]['text'].strip()
def query(payload, API_URL):
response = requests.request("POST", API_URL, json=payload)
return response.json()
def pre_query(sender, recipient, recipient_name, context, input, model_id):
API_URL = "https://api-inference.huggingface.co/models/" + model_id
if model_id == "bigscience/T0pp":
input_string = "Write a professional email to my " + recipient.lower() + " starting with Hello " + recipient_name + ", about the subject " + context + " and the email should be based on this draft: " + input
data = query(input_string, API_URL)
if type(data) is dict:
return data['error']
else:
return data[0]['generated_text']
if model_id == "bigscience/bloom":
input_string = "Write a professional email to my " + recipient.lower() + " starting with Hello " + recipient_name + ", about the subject " + context + " and the email should be based on this draft: " + input + ": Hello " + recipient_name + ",\n\n"
data = query({
"inputs":input_string,
"parameters":{"max_new_tokens":96,
"return_full_text": False}
}, API_URL)
if type(data) is dict:
return data['error']
else:
return "Hello " + recipient_name + ",\n\n" + data[0]['generated_text'].replace(input_string,'')
if model_id == "EleutherAI/gpt-neo-2.7B":
input_string = "Write a professional email to my " + recipient + " starting with Hello " + recipient_name + ", about the subject " + context + " and the email should be based on this draft: " + input
data = query(input_string, API_URL)
if type(data) is dict:
return data['error']
else:
return data[0]['generated_text']
if model_id == "GPT-3":
return openai_query(recipient, 250, recipient_name, context, input)
return
def set_email_link(email, recipient_address, subject):
email = email.replace(' ', '%20')
link = "<a href=\"" + "mailto:" + recipient_address + "?subject=" + subject.replace(' ', '%20') + "&body=" + email.replace('\n', '%0A') + "\">" + "<button class=\"gr-button-lg gr-button-secondary self-start\">Link generated!<br>Click here</button></a>"
return link
#def set_email_link_html():
demo = gr.Blocks()
with demo:
gr.Markdown(
"""
# <center> Email Assistant
Please fill out the fields below!
""")
with gr.Row():
with gr.Column():
with gr.Group():
with gr.Row():
sender = gr.Dropdown(["student", "professor", "employee", "employer", "coworker", "applicant", "recruiter"], label="From", placeholder="I am a...")
recipient = gr.Dropdown(["student", "professor", "employee", "employer", "coworker", "applicant", "recruiter"], label="Recipient", placeholder="I am sending to my...")
recipient_name = gr.Textbox(label="Recipient Name", placeholder = "Their name is...")
subject = gr.Dropdown([ "Requesting a meeting", "Conflict with scheduled meeting time", "Requesting clarification", "Requesting to leave early", "Requesting a leave of absence", "Requesting a letter of recommendation", "Requesting a referral for a job application"], label= "Subject/Context")
email = gr.Textbox(label="Input", lines=10, placeholder="Enter your Message Here!")
model_id = gr.Dropdown(["GPT-3", "bigscience/T0pp", "bigscience/bloom", "EleutherAI/gpt-neo-2.7B"] ,label = "model_id")
submit_button = gr.Button("Generate my email!")
text_output = gr.Textbox(lines=10, label = "Email", placeholder = "Your generated email!", interactive = True)
with gr.Row():
recipient_address = gr.Textbox(label="To", placeholder ="recipient's address")
link = gr.HTML("<p>Link not generated</p>")
send_email = gr.Button("Send my email!")
input_list = [sender, recipient, recipient_name, subject, email, model_id]
#email_link.change(set_email_link_html, inputs = email_link, outputs=link)
submit_button.click(pre_query, inputs = input_list, outputs=text_output)
send_email.click(set_email_link, inputs = [text_output, recipient_address, subject], outputs = link)
demo.launch(debug=True) |