|
import gradio as gr |
|
import requests |
|
import time |
|
import ast |
|
import os |
|
|
|
|
|
|
|
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", |
|
|
|
|
|
block_title_text_color="*primary_500", |
|
block_title_background_fill="*primary_100", |
|
input_background_fill="#F6F6F6", |
|
) |
|
|
|
|
|
|
|
|
|
def main(): |
|
|
|
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): |
|
|
|
response = requests.post( |
|
'https://langchain-cd369f3121.wolf.jina.ai/ask', |
|
headers={'accept': 'application/json', 'Content-Type': 'application/json'}, |
|
json={"input": user_message, "envs": {}} |
|
) |
|
|
|
data_str = response.json()['result'] |
|
|
|
|
|
print("Response status:", response.status_code) |
|
print("Response content:", response.content) |
|
|
|
|
|
try: |
|
data = ast.literal_eval(data_str) |
|
|
|
if isinstance(data, tuple) and len(data) == 2: |
|
bot_message = data[0] |
|
sources = ', '.join(data[1]) |
|
|
|
history.append([user_message, f"{bot_message} (Ref: {sources})"]) |
|
else: |
|
raise ValueError |
|
except (SyntaxError, ValueError): |
|
|
|
bot_message = data_str |
|
|
|
history.append([user_message, bot_message]) |
|
|
|
return history |
|
|
|
|
|
|
|
with open("/Users/cyberandy/Documents/GitHub/langchain-wl-chat/wl-chat/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.queue() |
|
demo.launch(share=True, inline=True) |
|
|
|
if __name__ == "__main__": |
|
main() |