File size: 3,626 Bytes
99ee8d1
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
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 + " 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):
    print()
    response = requests.request("POST", API_URL, json=payload)
    return response.json()


def pre_query(model_id, context, input, dates, sender, recipient, recipient_name):
  API_URL = "https://api-inference.huggingface.co/models/" + model_id
  
  if model_id == "bigscience/T0pp":
    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 == "bigscience/bloom":
    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 + ": 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-neox-20b":
    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

title = "Email Assistant"

interface = gr.Interface(
    fn = pre_query,
    
    inputs=[gr.Dropdown(["GPT-3", "bigscience/T0pp", "bigscience/bloom", "EleutherAI/gpt-neox-20b"] ,label = "model_id"),
            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"),
            gr.Textbox(label="Input", lines=10, placeholder="Enter your Message Here!"),
            gr.Textbox(label="Relevant Dates", placeholder ="MM/DD/YYYY"), 
            gr.Dropdown(["student", "employee", "applicant", "recruiter", "boss"], label="Sender"),
            gr.Dropdown(["professor", "supervisor", "coworker", "recruiter", "boss"], label="Recipient"),
            gr.Textbox(label="Recipient Name", placeholder = "George")],
    
    outputs=[gr.Textbox(lines=10, label = "Result")],
    
    title = title,
).launch(debug=True)