|
import datetime |
|
import os |
|
import gradio as gr |
|
import langchain |
|
import weaviate |
|
from langchain.vectorstores import Weaviate |
|
|
|
from chain import get_new_chain1 |
|
|
|
WEAVIATE_URL = "https://tro.weaviate.network/" |
|
|
|
|
|
|
|
def get_weaviate_store(): |
|
client = weaviate.Client( |
|
url=WEAVIATE_URL, |
|
additional_headers={"X-OpenAI-Api-Key": os.environ["OPENAI_API_KEY"]}, |
|
) |
|
return Weaviate(client, "Paragraphs", "content") |
|
|
|
|
|
def set_openai_api_key(api_key, agent): |
|
if api_key: |
|
os.environ["OPENAI_API_KEY"] = api_key |
|
vectorstore = get_weaviate_store() |
|
|
|
qa_chain = get_new_chain1(vectorstore) |
|
|
|
os.environ["OPENAI_API_KEY"] = "" |
|
return qa_chain |
|
|
|
|
|
def chat(inp, history, agent): |
|
history = history or [] |
|
if agent is None: |
|
history.append((inp, "Please paste your OpenAI key to use")) |
|
return history, history |
|
print("\n==== date/time: " + str(datetime.datetime.now()) + " ====") |
|
print("inp: " + inp) |
|
history = history or [] |
|
output = agent({"game_description": inp, "chat_history": history}) |
|
game_environment = output["game_environment"] |
|
history.append((inp, game_environment)) |
|
|
|
return history, history |
|
|
|
|
|
block = gr.Blocks(css=".gradio-container {background-color: darkpurple}") |
|
|
|
with block: |
|
with gr.Row(): |
|
gr.Markdown("<h3><center>Charmed AI</center></h3>") |
|
|
|
openai_api_key_textbox = gr.Textbox( |
|
placeholder="Paste your OpenAI API key (sk-...)", |
|
show_label=False, |
|
lines=1, |
|
type="password", |
|
) |
|
|
|
chatbot = gr.Chatbot() |
|
|
|
with gr.Row(): |
|
message = gr.Textbox( |
|
label="Describe your game", |
|
placeholder="A game about turtles and ninjas who are flying in space in order to explore new planets", |
|
lines=1, |
|
) |
|
submit = gr.Button(value="Dream", variant="secondary").style(full_width=False) |
|
|
|
gr.Examples( |
|
examples=[ |
|
"rougue-like", |
|
"sci-fi", |
|
"underwater sharks", |
|
"haunted house and ghosts", |
|
"cute animals", |
|
"80s theme", |
|
], |
|
inputs=message, |
|
) |
|
|
|
gr.HTML( |
|
""" |
|
""" |
|
) |
|
|
|
gr.HTML( |
|
"<center>Powered by <a href='https://github.com/charmed-ai/'>Charmed-ai</a></center>" |
|
) |
|
|
|
state = gr.State() |
|
agent_state = gr.State() |
|
|
|
submit.click(chat, inputs=[message, state, agent_state], outputs=[chatbot, state]) |
|
message.submit(chat, inputs=[message, state, agent_state], outputs=[chatbot, state]) |
|
|
|
openai_api_key_textbox.change( |
|
set_openai_api_key, |
|
inputs=[openai_api_key_textbox, agent_state], |
|
outputs=[agent_state], |
|
) |
|
|
|
block.launch(debug=True) |
|
|