IntelliLex / app /main.py
Praveen76's picture
Update app/main.py
404305b verified
raw
history blame
2.47 kB
from twilio.rest import Client
import yaml
import json
import os
import yaml
import json
from langchain.embeddings import OpenAIEmbeddings
from langchain_community.vectorstores import Chroma
from helper import retrieve_relevant_context, generate_response_with_context
import sys
from pathlib import Path
file = Path(__file__).resolve()
parent, root = file.parent, file.parents[1]
sys.path.append(str(root))
print("str(root) :",str(root))
print("parent :",parent)
print("CWD :",os.getcwd())
# Load relevant API Keys
file_path = '../Config/API_KEYS.yml'
with open(file_path, 'r') as file:
api_keys = yaml.safe_load(file)
# Extract openai username and key
openai_key = api_keys['OPEN_AI']['Key']
os.environ["OPENAI_API_KEY"] = openai_key
# Extract openai username and key
account_sid = api_keys['TWILIO']['account_sid']
auth_token = api_keys['TWILIO']['auth_token']
account_sid = account_sid
auth_token = auth_token
print("====account_sid:=====",account_sid)
# Define the persist directory
persist_directory = './vector_db/chroma_v01'
# Initialize the embeddings model
embedding_model = OpenAIEmbeddings()
### Vectorstores
from langchain_community.vectorstores import Chroma
# Load the Chroma vector store
vectordb = Chroma(persist_directory=persist_directory, embedding_function=embedding_model)
#setup Twilio client
client = Client(account_sid, auth_token)
from flask import Flask, request, redirect
from twilio.twiml.messaging_response import MessagingResponse
print("flask app is running")
app = Flask(__name__)
@app.route("/whatsapp", methods=['GET', 'POST'])
def incoming_sms():
"""Send a dynamic reply to an incoming text message"""
# Get the message the user sent our Twilio number
body = request.values.get('Body', None)
print("body :",body)
##### Process incoming text #############
incoming_msg = body.strip()
if not incoming_msg:
return str(MessagingResponse())
# Generate response using the RAG-powered system
retrieved_texts = retrieve_relevant_context(vectordb, incoming_msg)
context = "\n".join(retrieved_texts)
response = generate_response_with_context(incoming_msg, context)
print("response :",response)
##### Process incoming text Done #############
# Start our TwiML response
resp = MessagingResponse()
print("TwiML resp :", resp)
resp.message(response)
return str(resp)
if __name__ == "__main__":
app.run(port=5000, debug=True)