|
from langchain_community.embeddings import OpenAIEmbeddings
|
|
from langchain_community.vectorstores import Pinecone
|
|
from langchain_text_splitters import CharacterTextSplitter
|
|
from langchain_openai import OpenAIEmbeddings
|
|
from langchain_community.document_loaders import HuggingFaceDatasetLoader
|
|
from langchain_pinecone import PineconeVectorStore
|
|
from pinecone import Pinecone, ServerlessSpec
|
|
from langchain_pinecone import PineconeVectorStore
|
|
from langchain_openai import ChatOpenAI
|
|
from langchain_core.output_parsers import StrOutputParser
|
|
from langchain import hub
|
|
from langchain_core.runnables import RunnablePassthrough
|
|
import os
|
|
import gradio as gr
|
|
|
|
from dotenv import load_dotenv
|
|
load_dotenv()
|
|
|
|
|
|
dataset_name = "Pijush2023/Yale_Psychilogy"
|
|
page_content_column = 'Biography'
|
|
loader = HuggingFaceDatasetLoader(dataset_name, page_content_column)
|
|
data = loader.load()
|
|
|
|
text_splitter = CharacterTextSplitter(chunk_size=300, chunk_overlap=50)
|
|
documents = text_splitter.split_documents(data)
|
|
|
|
|
|
embeddings=OpenAIEmbeddings(api_key=os.environ['OPENAI_API_KEY'])
|
|
|
|
chat_model= ChatOpenAI(api_key=os.environ['OPENAI_API_KEY'], temperature=0.5, model='gpt-3.5-turbo-0125')
|
|
|
|
|
|
pc = Pinecone(api_key=os.environ['PINECONE_API_KEY'])
|
|
|
|
index_name = "medical"
|
|
|
|
if index_name not in pc.list_indexes().names():
|
|
pc.create_index(
|
|
name=index_name,
|
|
dimension=1536,
|
|
metric='cosine',
|
|
spec=ServerlessSpec(
|
|
cloud='aws',
|
|
region='us-east-1'
|
|
)
|
|
)
|
|
|
|
vectorstore = PineconeVectorStore(index_name=index_name, embedding=embeddings)
|
|
vectorstore.add_documents(documents)
|
|
|
|
query = "who is the best doctor for depression?"
|
|
vectorstore.similarity_search(query,k=1)
|
|
|
|
retriever = vectorstore.as_retriever(search_kwargs={'k':1})
|
|
docs = retriever.invoke("who is the best doctors for depression ?")
|
|
|
|
prompt=hub.pull("rlm/rag-prompt")
|
|
|
|
rag_chain=(
|
|
{"context":retriever , "question" : RunnablePassthrough()}
|
|
| prompt
|
|
| chat_model
|
|
| StrOutputParser()
|
|
)
|
|
|
|
query="depression"
|
|
rag_chain.invoke(query)
|
|
|
|
def generate_answer(message, history):
|
|
return rag_chain.invoke(message)
|
|
|
|
|
|
answer_bot = gr.ChatInterface(
|
|
generate_answer,
|
|
chatbot=gr.Chatbot(height=300),
|
|
textbox=gr.Textbox(placeholder="Ask me a question about Doctor on Psychiatry", container=False, scale=7),
|
|
title="Psychiatry Doctor Chat-Bot",
|
|
description="This is a chat bot related to top School in United States about Psychiatry",
|
|
theme="soft",
|
|
examples=["depression", "Mental-Stress", "Bipolar Disorder", "Eating Disorders" , "etc....."],
|
|
cache_examples=False,
|
|
retry_btn=None,
|
|
undo_btn=None,
|
|
clear_btn=None,
|
|
submit_btn="Ask"
|
|
)
|
|
|
|
answer_bot.launch()
|
|
|
|
|