Download app.py from Jagukumar/Medical-Yale-Model: direct link, hf CLI and curl.
- Browser
- Download file 3.16 kB
-
https://huggingface.co/Jagukumar/Medical-Yale-Model/resolve/main/app.py
- Command line
-
hf download hf://Jagukumar/Medical-Yale-Model/app.py
-
curl -L -o app.py https://huggingface.co/Jagukumar/Medical-Yale-Model/resolve/main/app.py
3.16 kB
| 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']) | |
| # Instantiate chat model | |
| chat_model= ChatOpenAI(api_key=os.environ['OPENAI_API_KEY'], temperature=0.5, model='gpt-3.5-turbo-0125') | |
| # pip install pinecone-client | |
| 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) | |
| # Set up chat bot interface | |
| 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() | |