| | from langchain_community.document_loaders import PyPDFLoader |
| | from langchain_core.messages import AIMessage, HumanMessage |
| | from pydantic import BaseModel |
| | import rag |
| | import time |
| | import gradio as gr |
| | import requests |
| | from main import run_server |
| |
|
| | class ChatInput(BaseModel): |
| | question: str |
| | |
| | chat_history = [] |
| |
|
| |
|
| | def generate_response(chat_input: str, bot_message: str) -> str: |
| | url = "http://127.0.0.1:8000/generatechat/" |
| | payload = { |
| | 'question': chat_input, |
| | } |
| | headers = { |
| | 'Content-Type': 'application/json' |
| | } |
| | |
| | response = requests.post(url, json=payload, headers=headers) |
| | if response.status_code == 200: |
| | data = response.json() |
| | answer = data['response']['answer'] |
| | print("Success:", response.json()) |
| | |
| | |
| | partial_response = "" |
| | for char in answer: |
| | partial_response += char |
| | yield partial_response |
| | time.sleep(0.005) |
| | else: |
| | print("Error:", response.status_code, response.text) |
| | return f"Error: {response.status_code}, {response.text}" |
| | |
| | with gr.Blocks() as demo: |
| | with gr.Column(): |
| |
|
| | chatbot = gr.ChatInterface( |
| | fn=generate_response, |
| | title="ThaiCodex Chat", |
| | description="Ask questions based on the content of the uploaded or specified PDF.", |
| | ) |
| |
|
| | |
| | |
| | |
| | output_text = gr.Textbox(label="Status") |
| | |
| |
|
| | if __name__ == "__main__": |
| | demo.launch() |
| | run_server() |