''' 1. 大模型以Qwen API形式提供。 1. 重塑了Qwen作为大语言模型做Text2SQL的提示词: sys_prompt = """ 1. 你是一个将文字转换成SQL语句的人工智能。 2. 你需要注意:你只需要用纯文本回复代码的内容,即你不允许回复代码以外的任何信息。 3. SQL变量默认是中文,而且只能从如下的名称列表中选择,你不可以使用这些名字以外的变量名:"长度","宽度","价格","产品ID","比率","类别","*" 4. 你不能写IF, THEN的SQL语句,需要使用CASE。 5. 我需要你转换的文字如下:""" total_prompt = sys_prompt + "在数据表格table01中," + prompt ''' ##TODO: 2. 账号功能。 import time import os import pandas as pd import streamlit as st from code_editor import code_editor import streamlit_authenticator as stauth # from utils.setup import setup_connexion, setup_session_state # from utils.vanna_calls import ( # generate_questions_cached, # run_sql_cached, # generate_plotly_code_cached, # generate_plot_cached, # generate_followup_cached, # ) # import chatsql003 ### 本地ChatGLT 版本。 import chatsql004 ###Qwen API 版本。 import sql_command # from streamlit_pandas_profiling import st_profile_report import dashscope from dotenv import load_dotenv load_dotenv() ### 设置openai的API key dashscope.api_key = os.environ['dashscope_api_key'] st.set_page_config(layout="wide", page_icon="🧩", page_title="本地化国产大模型数据库查询演示") # setup_connexion() def clear_all(): st.session_state.conversation = None st.session_state.chat_history = None st.session_state.messages = [] message_placeholder = st.empty() st.session_state["my_question"] = None return None ## 原始的控制面板 # st.sidebar.title("大模型控制面板") # st.sidebar.checkbox("Show SQL", value=True, key="show_sql") # st.sidebar.checkbox("Show Table", value=True, key="show_table") # st.sidebar.checkbox("Show Plotly Code", value=True, key="show_plotly_code") # st.sidebar.checkbox("Show Chart", value=True, key="show_chart") # st.sidebar.checkbox("Show Follow-up Questions", value=True, key="show_followup") # st.sidebar.button("清除记录,重启一轮新对话", on_click=setup_session_state, use_container_width=True, type='primary') st.title("本地化国产大模型数据库查询演示") # st.title("大语言模型SQL数据库查询中心") # st.info("声明:内容由人工智能生成,仅供参考。如果您本人使用或对外传播本服务生成的输出,您应当主动核查输出内容的真实性、准确性,避免传播虚假信息。") ## 颜色比较明显。 st.markdown("_声明:内容由人工智能生成,仅供参考。如果您本人使用或对外传播本服务生成的输出,您应当主动核查输出内容的真实性、准确性,避免传播虚假信息。_") ### authentication with a local yaml file. import yaml from yaml.loader import SafeLoader with open('./config.yaml') as file: config = yaml.load(file, Loader=SafeLoader) authenticator = stauth.Authenticate( config['credentials'], config['cookie']['name'], config['cookie']['key'], config['cookie']['expiry_days'], config['preauthorized'] ) user, authentication_status, username = authenticator.login('main') # user, authentication_status, username = authenticator.login('用户登录', 'main') print('登录的用户:', username) ### Streamlit Sidebar 左侧工具栏 # st.sidebar.write(st.session_state) if authentication_status: with st.sidebar: st.markdown( """