import os import sys import time import pickle import openai import configparser from flask import Flask, render_template, request, redirect, url_for dir_path = os.path.abspath(os.getcwd()) src_path = dir_path + "/src" sys.path.append(src_path) COMPLETIONS_MODEL = "gpt-3.5-turbo" EMBEDDING_MODEL = "text-embedding-ada-002" config_dir = dir_path + "/src/utils" config = configparser.ConfigParser() config.read(os.path.join(config_dir, 'gpt_local_config.cfg')) # openai.api_key = config.get('token', 'GPT_TOKEN') openai.api_key = os.environ.get("GPT_TOKEN") import embedding_qa as emq # Specify the path to your pickle file pickle_file_path = 'caNano_embedding_pack_5_14.pickle' # Load the pickle file with open(pickle_file_path, 'rb') as file: loaded_data = pickle.load(file) document_df = loaded_data['df'] document_embedding = loaded_data['embedding'] COMPLETIONS_API_PARAMS = { # We use temperature of 0.0 because it gives the # most predictable, factual answer. "temperature": 0.0, "max_tokens": 4000, "model": "gpt-3.5-turbo" } app = Flask("caNanoWiki_AI") # Set the passcode for authentication PASSCODE_auth = "" # Define a variable to track if the user is authenticated authenticated = False last_activity_time = 0 # Timeout duration in seconds timeout_duration = 5 * 60 # Session Length session_duration = 30 * 60 @app.template_filter('nl2br') def nl2br_filter(s): return s.replace('\n', '
') @app.route('/', methods=['GET', 'POST']) def index(): user_input = "" processed_input = None if request.method == 'POST': user_input = request.form['user_input'] processed_input, chosen_sec_idxes = emq.answer_query_with_context( user_input, document_df, document_embedding ) return render_template( 'index.html', processed_input=processed_input, source_sections=chosen_sec_idxes, user_input=user_input) return render_template('index.html') if __name__ == '__main__': app.run(host='0.0.0.0', port=7860)