Spaces:
Paused
Paused
import gradio as gr | |
from src.model_loader import load_model | |
from src.retriever import setup_retriever | |
from src.llm_chain import setup_llm_chain | |
from src.utils import generate_response | |
from langchain_core.runnables import RunnablePassthrough | |
from huggingface_hub import InferenceClient | |
""" | |
For more information on `huggingface_hub` Inference API support, please check the docs: https://huggingface.co/docs/huggingface_hub/v0.22.2/en/guides/inference | |
""" | |
client = InferenceClient("HuggingFaceH4/zephyr-7b-beta") | |
def main(): | |
# Load necessary components | |
retriever = setup_retriever() | |
llm_chain = setup_llm_chain() | |
# Set up retrieval-augmented generation chain | |
rag_chain = ( | |
{"context": retriever, "question": RunnablePassthrough()} | |
| llm_chain) | |
interface = gr.Interface( | |
fn=lambda question: generate_response(question, rag_chain), | |
inputs=gr.Textbox(placeholder="Ask your question...", label="Your Question", lines=2), | |
outputs=gr.Textbox(label="Bloodraven's Response", lines=5, interactive=False), | |
title="Bloodraven Chatbot", | |
description="Ask any question and receive cryptic, prophetic answers from the Bloodraven from A Song of Ice and Fire.", | |
css=""" | |
.gradio-container { | |
font-family: 'Arial', sans-serif; /* Simple, clear font */ | |
background-color: #f9f9f9; /* Light gray background */ | |
color: #333333; /* Dark gray text for contrast */ | |
} | |
.input_textbox, .output_textbox { | |
border-radius: 5px; /* Rounded corners */ | |
border: 2px solid #007bff; /* Bright blue border */ | |
background-color: #ffffff; /* White background for input/output boxes */ | |
color: #333333; /* Dark gray text for visibility */ | |
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1); /* Subtle shadow */ | |
} | |
.input_textbox:focus, .output_textbox:focus { | |
border-color: #ff4500; /* Bright orange-red border on focus */ | |
} | |
.title { | |
font-size: 36px; /* Larger title */ | |
font-weight: bold; /* Bold title */ | |
text-align: center; /* Centered title */ | |
color: #007bff; /* Bright blue for title */ | |
} | |
.description { | |
font-size: 20px; /* Larger description font */ | |
text-align: center; /* Centered description */ | |
margin-bottom: 20px; /* Space below description */ | |
color: #555555; /* Medium gray for description */ | |
} | |
.footer { | |
text-align: center; /* Center footer text */ | |
margin-top: 20px; /* Space above footer */ | |
color: #888888; /* Light gray for footer text */ | |
} | |
""", | |
examples=[ | |
["How are Daenerys and Jon Snow related?"], | |
["What is the fate of Bran Stark?"], | |
["Tell me about the Iron Throne."], | |
] | |
) | |
interface.launch(share=True) | |
if __name__ == "__main__": | |
main() | |