| 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()
|
|
|
|
|