|
|
|
|
|
|
|
|
from flask import Flask, render_template, request |
|
|
from src.helper import download_hugging_face_embeddings |
|
|
from langchain_pinecone import PineconeVectorStore |
|
|
from langchain.chains import create_retrieval_chain |
|
|
from langchain.chains.combine_documents import create_stuff_documents_chain |
|
|
from langchain_core.prompts import ChatPromptTemplate |
|
|
from src.prompt import * |
|
|
from src.euron_chat import EuronChatModel |
|
|
from dotenv import load_dotenv |
|
|
import os |
|
|
|
|
|
|
|
|
load_dotenv() |
|
|
|
|
|
|
|
|
pinecone_api_key = os.environ.get("PINECONE_API_KEY") |
|
|
euron_api_key = os.environ.get("EURON_API_KEY") |
|
|
if not pinecone_api_key or not euron_api_key: |
|
|
raise ValueError("Missing PINECONE_API_KEY or EURON_API_KEY in environment variables.") |
|
|
|
|
|
app = Flask(__name__) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
embeddings = download_hugging_face_embeddings() |
|
|
index_name = "portfolio" |
|
|
|
|
|
docsearch = PineconeVectorStore.from_existing_index( |
|
|
index_name=index_name, |
|
|
embedding=embeddings |
|
|
) |
|
|
|
|
|
retriever = docsearch.as_retriever(search_type="similarity", search_kwargs={"k": 3}) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
chatModel = EuronChatModel() |
|
|
|
|
|
prompt = ChatPromptTemplate.from_messages( |
|
|
[ |
|
|
("system", system_prompt), |
|
|
("human", "{input}"), |
|
|
] |
|
|
) |
|
|
|
|
|
question_answer_chain = create_stuff_documents_chain(chatModel, prompt) |
|
|
rag_chain = create_retrieval_chain(retriever, question_answer_chain) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@app.route("/") |
|
|
def index(): |
|
|
return render_template('chat.html') |
|
|
|
|
|
@app.route("/get", methods=["GET", "POST"]) |
|
|
def chat(): |
|
|
msg = request.form["msg"] |
|
|
print("User Input:", msg) |
|
|
|
|
|
response = rag_chain.invoke({"input": msg}) |
|
|
print("Response:", response["answer"]) |
|
|
|
|
|
return str(response["answer"]) |
|
|
|
|
|
if __name__ == '__main__': |
|
|
port = int(os.environ.get('PORT', 8080)) |
|
|
app.run(host="0.0.0.0", port=port, debug=False) |