| from langchain_google_genai import ChatGoogleGenerativeAI
|
| from langchain_core.prompts import ChatPromptTemplate
|
| from langchain.chains.combine_documents import create_stuff_documents_chain
|
| from langchain.chains import create_retrieval_chain
|
| from src.helper import download_embeding
|
| from langchain_pinecone import PineconeVectorStore
|
| from src.prompt import system_prompt
|
| import os
|
| from flask import Flask, render_template, jsonify, request
|
| from dotenv import load_dotenv
|
| from pinecone import Pinecone
|
| load_dotenv()
|
|
|
| model = ChatGoogleGenerativeAI(model="gemini-2.5-flash", google_api_key=os.getenv("GOOGLE_API_KEY"))
|
| app=Flask(__name__)
|
| PINECONE_API_KEY = os.getenv("PINECONE_API_KEY")
|
| pc = Pinecone(api_key=PINECONE_API_KEY)
|
| index_name='medicalchatbot'
|
| embedding=download_embeding()
|
|
|
| docsearch=PineconeVectorStore.from_existing_index(
|
| index_name=index_name,
|
| embedding=embedding
|
| )
|
|
|
| retiver=docsearch.as_retriever(search_type="similarity", search_kwargs={"k": 3})
|
|
|
|
|
| prompt = ChatPromptTemplate.from_messages(
|
| [
|
| ("system", system_prompt),
|
| ("human", "{input}"),
|
| ]
|
| )
|
|
|
| question_answer_chain=create_stuff_documents_chain(model,prompt)
|
| rag_chain=create_retrieval_chain(retiver,question_answer_chain)
|
|
|
| @app.route("/")
|
| def index():
|
| return render_template('index.html')
|
|
|
| @app.route("/get", methods=["GET", "POST"])
|
| def chat():
|
| msg = request.form.get("msg", "").strip()
|
| if not msg:
|
| return "Please enter a question.", 400
|
|
|
| response = rag_chain.invoke({"input": msg})
|
| answer = response.get("answer", "Sorry, I couldn't generate a response.")
|
| print("Response:", answer)
|
| return answer
|
|
|
|
|
|
|
|
|
| if __name__ == '__main__':
|
| port = int(os.environ.get("PORT", 7860))
|
| app.run(host="0.0.0.0", port=port) |