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