TroubleGraph / app.py
Prajith04's picture
update
9c5508e
import gradio as gr
from gliner import GLiNER
from langchain_community.vectorstores import Qdrant
from langchain_community.embeddings import HuggingFaceEmbeddings
from langchain_qdrant import QdrantVectorStore
from langchain_groq import ChatGroq
from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder
from langchain_core.runnables import RunnableMap
from langchain_core.output_parsers import StrOutputParser
from langchain.memory import ChatMessageHistory
import re
from datasets import load_dataset
from langchain.schema import Document
import os
from dotenv import load_dotenv
load_dotenv()
# Initialize once
gliner_model = GLiNER.from_pretrained("urchade/gliner_medium-v2.1")
embedding_model = HuggingFaceEmbeddings(model_name="sentence-transformers/all-MiniLM-L6-v2")
# Qdrant setup
doc_store = QdrantVectorStore.from_existing_collection(
embedding=embedding_model,
collection_name="customer_support_docsv1",
url=os.getenv("QDRANT_URL"),
api_key=os.getenv("QDRANT_API_KEY"),
)
retriever = doc_store.as_retriever(search_type="similarity", search_kwargs={"k": 1})
llm = ChatGroq(api_key=os.getenv("GROQ_API_KEY"), model="meta-llama/llama-4-scout-17b-16e-instruct")
chat_prompt = ChatPromptTemplate.from_messages([
("system", "You are an intelligent assistant. Use context and chat history to answer and don't include tags."),
MessagesPlaceholder("chat_history"),
("human", "{query}")
])
rag_chain = RunnableMap({
"context": lambda x: retriever.invoke(x["query"]),
"query": lambda x: x["query"],
"chat_history": lambda x: x["chat_history"]
}) | chat_prompt | llm | StrOutputParser()
# Shared memory
memory = ChatMessageHistory()
# Gradio handler
def chat_fn(message, history_list):
# Use LangChain-style history for context
response = rag_chain.invoke({
"query": message,
"chat_history": memory.messages
})
# Append new messages to the LangChain memory
memory.add_user_message(message)
memory.add_ai_message(response)
return response
chatbot = gr.ChatInterface(fn=chat_fn, title="🛠️ Customer Support Chatbot",
flagging_mode="manual",flagging_options=["solved","Not solved"],
examples=["""Dear Support Team, we are encountering a significant problem
with our AWS Management Service that is impacting our service availability.
An immediate fix is essential to reinstate normal deployment operations.""","""
I am writing to express concern about my HP DeskJet 3755 printer, which is malfunctioning.
It encounters errors when printing wirelessly,
affecting all connected devices in my home network.
This has significantly disrupted my ability to manage daily tasks.
Could you please assist in diagnosing and resolving this issue? Any help would be appreciated.
"""],cache_examples=False)
chatbot.launch()