File size: 3,159 Bytes
2743222 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
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()
|