File size: 4,503 Bytes
90712a8 5af6b15 90712a8 44be91e 90712a8 44be91e 90712a8 |
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 127 128 129 130 131 132 133 134 |
import gradio as gr
import requests
import time
import ast
import os
## Adding the Theme here ##
wordlift_theme = gr.themes.Soft(
primary_hue=gr.themes.Color(
c50="#007AFF",
c100="rgba(0, 122, 255, 0.2)",
c200="#007AFF",
c300="rgba(0, 122, 255, 0.32)",
c400="rgba(0, 122, 255, 0.32)",
c500="rgba(0, 122, 255, 1.0)",
c600="rgba(0, 122, 255, 1.0)",
c700="rgba(0, 122, 255, 0.32)",
c800="rgba(0, 122, 255, 0.32)",
c900="#007AFF",
c950="#007AFF",
),
secondary_hue=gr.themes.Color(
c50="#576b95",
c100="#576b95",
c200="#576b95",
c300="#576b95",
c400="#576b95",
c500="#576b95",
c600="#576b95",
c700="#576b95",
c800="#576b95",
c900="#576b95",
c950="#576b95",
),
neutral_hue=gr.themes.Color(
name="gray",
c50="#f9fafb",
c100="#f3f4f6",
c200="#e5e7eb",
c300="#d1d5db",
c400="#B2B2B2",
c500="#808080",
c600="#636363",
c700="#515151",
c800="#393939",
c900="#272727",
c950="#171717",
),
radius_size=gr.themes.sizes.radius_sm,
).set(
button_primary_background_fill="#2196F3",
button_primary_background_fill_dark="#2196F3",
button_primary_background_fill_hover="#007AFF",
button_primary_border_color="#2196F3",
button_primary_border_color_dark="#2196F3",
button_primary_text_color="#FFFFFF",
button_primary_text_color_dark="#FFFFFF",
button_secondary_background_fill="#F2F2F2",
button_secondary_background_fill_dark="#2B2B2B",
button_secondary_text_color="#393939",
button_secondary_text_color_dark="#FFFFFF",
# background_fill_primary="#F7F7F7",
# background_fill_primary_dark="#1F1F1F",
block_title_text_color="*primary_500",
block_title_background_fill="*primary_100",
input_background_fill="#F6F6F6",
)
# _________________________________________________________________#
def main():
# Load CSS
css_path = os.path.join(os.getcwd(), "assets", "custom.css")
app = gr.Interface(fn=response, inputs=[msg, chatbot], outputs=[msg, chatbot], server_name="localhost")
app.load_css(css_path)
app.launch(share=True, inline=True)
def bot(user_message, history):
# POST request to the API
response = requests.post(
'https://langchain-cd369f3121.wolf.jina.ai/ask',
headers={'accept': 'application/json', 'Content-Type': 'application/json'},
json={"input": user_message, "envs": {}}
)
# Extract the bot's response from the API response
data_str = response.json()['result']
# Print out the response status and content for debugging
print("Response status:", response.status_code)
print("Response content:", response.content)
# Try to parse the response as a tuple
try:
data = ast.literal_eval(data_str)
# Check if the parsed data is a tuple with sources
if isinstance(data, tuple) and len(data) == 2:
bot_message = data[0]
sources = ', '.join(data[1])
# Update the chat history with the bot's response and sources
history.append([user_message, f"{bot_message}\n\nLearn more: {sources}"])
else:
raise ValueError # Not a tuple with sources, treat it as a plain text message
except (SyntaxError, ValueError):
# The response is just a plain text message
bot_message = data_str
# Update the chat history with the bot's response
history.append([user_message, bot_message])
return history
#gr.Chatbot.postprocess = postprocess
with open("assets/custom.css", "r", encoding="utf-8") as f:
customCSS = f.read()
with gr.Blocks(css=customCSS, theme=wordlift_theme) as demo:
chatbot = gr.Chatbot(elem_id="chuanhu_chatbot").style(height="100%")
msg = gr.Textbox(label=" 🪄", placeholder="Type a message to the bot and press enter").style(container=False)
clear = gr.Button("🧹 Start fresh")
response = msg.submit(bot, [msg, chatbot], [chatbot], queue=False)
response.then(lambda: gr.update(interactive=True), None, [msg], queue=False)
clear.click(lambda: None, None, chatbot, queue=False)
#demo = gr.Interface(fn=bot, inputs=msg, outputs=chatbot, theme="dark", title="WL-Chat", description="A chatbot to interact with WordLift's blog.")
demo.queue()
demo.launch(inline=True)
if __name__ == "__main__":
main() |