import os import sys import time import openai import configparser import sqlite3 dir_path = os.path.abspath(os.getcwd()) utils_path = dir_path + "/src/app_utils" src_path = dir_path + "/src" sys.path.append(utils_path) sys.path.append(src_path) from flask import Flask, render_template, request, redirect, url_for, g import application_utils as au COMPLETIONS_MODEL = "gpt-3.5-turbo" EMBEDDING_MODEL = "text-embedding-ada-002" config_dir = utils_path 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") # Specify the path to db file db_name = 'caNanoData_Public.db' COMPLETIONS_API_PARAMS = { # We use temperature of 0.0 because it gives # the most predictable, factual answer. "temperature": 0.0, "max_tokens": 400, "model": "gpt-3.5-turbo" } app = Flask("caNanoLibrarian") def get_db(): db = getattr(g, '_database', None) if db is None: db = g._database = sqlite3.connect('caNanoData_Public.db') return db @app.teardown_appcontext def close_db(exception): db = getattr(g, '_database', None) if db is not None: db.close() @app.template_filter('nl2br') def nl2br_filter(s): return s.replace('\n', '
') @app.route('/', methods=['GET', 'POST']) def index(): connection = get_db() user_input = "" # processed_input = None if request.method == 'POST': user_input = request.form['user_input'] result_df, query = au.custom_query( user_input, connection, GPT4=True, print_prompt=False, print_query=True, print_time=False ) return render_template( 'index.html', processed_input=result_df.to_html( classes='dataframe custom-style', index=False), source_sections=query, user_input=user_input) return render_template('index.html') if __name__ == '__main__': app.run(host='0.0.0.0', port=7860)