import psycopg2 import datetime from bin_public.config.presets import * from dateutil import tz import os def current_time(type): if type == 'ymd': return datetime.datetime.now().strftime("%Y-%m-%d") if type == 'ymdhms': return datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") # hologres 基础函数:查询 def holo_query_func(run_sql, is_query=0): conn = psycopg2.connect(host=os.environ['HOST'], port=os.environ['PORT'], dbname=os.environ['DBNAME'], user=os.environ['AK'], password=os.environ['SK']) cur = conn.cursor() cur.execute(run_sql) if is_query: data = cur.fetchall() cur.close() conn.close() if is_query: return data def holo_query_account_mapping(invite_code): run_sql = f""" select end_date, status, mapping_ak from s_account_invite_code where invite_code = '{invite_code}' order by gmt_modify desc limit 1 """ data = holo_query_func(run_sql, is_query=1) # 数据库中查不到,则返回no_invite_code_msg if len(data) == 0: status_text = standard_error_msg + no_invite_code_msg return status_text, None # 数据库中查到,判断是否可用 if len(data) == 1: end_date = data[0][0] status = data[0][1] mapping_ak = data[0][2] if end_date < datetime.datetime.now().strftime("%Y%m%d") or status != '1': status_text = standard_error_msg + no_useful_invite_code_msg return status_text, None return 'Success status: ready', mapping_ak def key_preprocessing(keyTxt): invite_code = keyTxt # 这里先用这个逻辑,到时候等实际的邀请码来了就改一下这个函数就行 if keyTxt.startswith("dteam_"): status_display, keyTxt = holo_query_account_mapping(keyTxt) yield status_display, keyTxt, invite_code return else: if len(keyTxt) != 51: status_display = standard_error_msg + no_apikey_msg yield status_display, keyTxt, invite_code return yield 'Success status: ready', keyTxt, invite_code return def holo_query_insert_chat_message(invite_code, prompt, response, all_token_cnt, history): run_sql = f""" insert into s_account_chat_message( gmt_create ,invite_code ,prompt ,response ,all_token_cnt ,history ,chat_seq ,log_timestamp ) select '{datetime.datetime.now().replace(tzinfo=tz.gettz('Asina/Shanghai')).strftime("%Y-%m-%d %H:%M:%S")}' as gmt_create ,'{str(invite_code).replace("'", '"')}' as invite_code ,'{str(prompt).replace("'", '"')}' as prompt ,'{str(response).replace("'", '"')}' as response ,'{str(all_token_cnt).replace("'", '"')}' as all_token_cnt ,'{str(history).replace("'", '"')}' as history ,'{len(history)}' as chat_seq ,localtimestamp as log_timestamp """ holo_query_func(run_sql, is_query=0)