Spaces:
Build error
Build error
Implement lots of state
Browse files- app.py +54 -12
- requirements.txt +1 -0
app.py
CHANGED
@@ -1,14 +1,31 @@
|
|
|
|
1 |
import openai
|
2 |
import gradio as gr
|
|
|
|
|
|
|
3 |
import datetime
|
4 |
|
5 |
-
|
|
|
|
|
|
|
|
|
|
|
6 |
|
|
|
7 |
|
8 |
-
|
|
|
9 |
if api_key:
|
10 |
openai_api_key = api_key
|
11 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
12 |
|
13 |
|
14 |
def openai_create(prompt, openai_api_key, temperature):
|
@@ -29,11 +46,11 @@ def openai_create(prompt, openai_api_key, temperature):
|
|
29 |
return response.choices[0].text
|
30 |
|
31 |
|
32 |
-
def desc2sheet(desc, openai_api_key, temperature):
|
33 |
if not openai_api_key or openai_api_key == "":
|
34 |
return "<pre>Please paste your OpenAI API key (see https://beta.openai.com)</pre>"
|
35 |
|
36 |
-
html =
|
37 |
return html
|
38 |
|
39 |
|
@@ -42,9 +59,21 @@ def update_temperature(temp_slider, temp_state):
|
|
42 |
temp_state = temp_slider
|
43 |
return temp_state
|
44 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
45 |
block = gr.Blocks(css=".gradio-container {background-color: lightgray}")
|
46 |
|
47 |
with block:
|
|
|
|
|
|
|
|
|
|
|
48 |
with gr.Row():
|
49 |
temperature_slider = gr.Slider(label="GPT Temperature", value=0.0, minimum=0.0, maximum=1.0, step=0.1)
|
50 |
title = gr.Markdown("""<h3><center>GPT-3.5 Table-inator</center></h3>""")
|
@@ -53,23 +82,36 @@ with block:
|
|
53 |
|
54 |
table = gr.Markdown("")
|
55 |
with gr.Row():
|
56 |
-
request = gr.Textbox(label="GPT prompt: " +
|
|
|
57 |
placeholder="Ex: Computer languages")
|
58 |
|
59 |
submit = gr.Button(value="Create", variant="secondary").style(full_width=False)
|
60 |
|
61 |
-
|
62 |
-
temperature_state = gr.State(0.0)
|
63 |
|
64 |
-
submit.click(desc2sheet,
|
65 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
66 |
|
67 |
openai_api_key_textbox.change(set_openai_api_key,
|
68 |
-
inputs=[openai_api_key_textbox, openai_api_key_state
|
69 |
-
|
|
|
70 |
|
71 |
temperature_slider.change(update_temperature,
|
72 |
inputs=[temperature_slider, temperature_state],
|
73 |
outputs=[temperature_state])
|
74 |
|
|
|
|
|
|
|
|
|
|
|
75 |
block.launch()
|
|
|
1 |
+
import os
|
2 |
import openai
|
3 |
import gradio as gr
|
4 |
+
from langchain import OpenAI
|
5 |
+
from langchain.prompts import PromptTemplate
|
6 |
+
from langchain.chains import LLMChain
|
7 |
import datetime
|
8 |
|
9 |
+
NUM_WORDS_DEFAULT = 20
|
10 |
+
PROMPT_TEMPLATE = PromptTemplate(
|
11 |
+
input_variables=["original_words", "num_words"],
|
12 |
+
template="Restate, into an HTML div, in about {num_words} words, the following, with emotions of admiration, "
|
13 |
+
"in a formal manner, in a passive voice: \n{original_words}\n",
|
14 |
+
)
|
15 |
|
16 |
+
# initial_prompt = "Restate, into an HTML div, in about 60 words, the following, with emotions of admiration, in a formal manner, in a passive voice: "
|
17 |
|
18 |
+
|
19 |
+
def set_openai_api_key(api_key, openai_api_key, temperature, llm_chain):
|
20 |
if api_key:
|
21 |
openai_api_key = api_key
|
22 |
+
|
23 |
+
os.environ["OPENAI_API_KEY"] = api_key
|
24 |
+
llm = OpenAI(model_name='text-davinci-003', temperature=temperature, max_tokens=512)
|
25 |
+
os.environ["OPENAI_API_KEY"] = ""
|
26 |
+
|
27 |
+
llm_chain = LLMChain(llm=llm, prompt=PROMPT_TEMPLATE, verbose=True)
|
28 |
+
return openai_api_key, llm_chain
|
29 |
|
30 |
|
31 |
def openai_create(prompt, openai_api_key, temperature):
|
|
|
46 |
return response.choices[0].text
|
47 |
|
48 |
|
49 |
+
def desc2sheet(desc, openai_api_key, temperature, llm_chain, num_words):
|
50 |
if not openai_api_key or openai_api_key == "":
|
51 |
return "<pre>Please paste your OpenAI API key (see https://beta.openai.com)</pre>"
|
52 |
|
53 |
+
html = llm_chain.run({'original_words': desc, 'num_words': num_words})
|
54 |
return html
|
55 |
|
56 |
|
|
|
59 |
temp_state = temp_slider
|
60 |
return temp_state
|
61 |
|
62 |
+
|
63 |
+
def update_num_words(slider, state):
|
64 |
+
if slider:
|
65 |
+
state = slider
|
66 |
+
return state
|
67 |
+
|
68 |
+
|
69 |
block = gr.Blocks(css=".gradio-container {background-color: lightgray}")
|
70 |
|
71 |
with block:
|
72 |
+
openai_api_key_state = gr.State()
|
73 |
+
temperature_state = gr.State(0.0)
|
74 |
+
llm_chain_state = gr.State()
|
75 |
+
num_words_state = gr.State(NUM_WORDS_DEFAULT)
|
76 |
+
|
77 |
with gr.Row():
|
78 |
temperature_slider = gr.Slider(label="GPT Temperature", value=0.0, minimum=0.0, maximum=1.0, step=0.1)
|
79 |
title = gr.Markdown("""<h3><center>GPT-3.5 Table-inator</center></h3>""")
|
|
|
82 |
|
83 |
table = gr.Markdown("")
|
84 |
with gr.Row():
|
85 |
+
request = gr.Textbox(label="GPT prompt: " + PROMPT_TEMPLATE.template_format,
|
86 |
+
value="Paris in the spring",
|
87 |
placeholder="Ex: Computer languages")
|
88 |
|
89 |
submit = gr.Button(value="Create", variant="secondary").style(full_width=False)
|
90 |
|
91 |
+
num_words_slider = gr.Slider(label="Number of words", value=NUM_WORDS_DEFAULT, minimum=10, maximum=100, step=10)
|
|
|
92 |
|
93 |
+
submit.click(desc2sheet,
|
94 |
+
inputs=[
|
95 |
+
request, openai_api_key_state, temperature_state, llm_chain_state, num_words_state],
|
96 |
+
outputs=[table])
|
97 |
+
|
98 |
+
request.submit(desc2sheet,
|
99 |
+
inputs=[
|
100 |
+
request, openai_api_key_state, temperature_state, llm_chain_state, num_words_state],
|
101 |
+
outputs=[table])
|
102 |
|
103 |
openai_api_key_textbox.change(set_openai_api_key,
|
104 |
+
inputs=[openai_api_key_textbox, openai_api_key_state, temperature_state,
|
105 |
+
llm_chain_state],
|
106 |
+
outputs=[openai_api_key_state, llm_chain_state])
|
107 |
|
108 |
temperature_slider.change(update_temperature,
|
109 |
inputs=[temperature_slider, temperature_state],
|
110 |
outputs=[temperature_state])
|
111 |
|
112 |
+
num_words_slider.change(update_num_words,
|
113 |
+
inputs=[num_words_slider, num_words_state],
|
114 |
+
outputs=[num_words_state])
|
115 |
+
|
116 |
+
|
117 |
block.launch()
|
requirements.txt
CHANGED
@@ -1,2 +1,3 @@
|
|
1 |
openai
|
2 |
gradio
|
|
|
|
1 |
openai
|
2 |
gradio
|
3 |
+
langchain
|