import streamlit as st import requests # 创建 Streamlit 页面布局 st.title('填充掩码演示') # 示例输入数据 demo_inputs = [ "生活的真谛在于[MASK]。", "[MASK]的海滩世界闻名。", "雨后,我[MASK]在公园里,呼吸新鲜的空气。", "我[MASK]了一部好电影,感觉很愉快。", "再次回到[MASK],我感到很亲切。", "一九四九年,新中国[MASK]。", "在黑暗的[MASK]里,弱肉强食是唯一的法则。", ] # 创建页面布局 # col1, col2 = st.columns(2) #col1 is set to 20% width #col2 is set to 80% width col1, col2 = st.columns([2, 6]) with col1: st.header("Demo Input") for i, input_text in enumerate(demo_inputs): # 为每个示例输入创建一个行布局 row = st.columns([4, 1]) # 调整列的宽度比例 with row[0]: # 左边显示文本 st.write(input_text) with row[1]: # 右边显示选择按钮 if st.button(f"选择", key=f"btn_{i}"): # 给每个按钮一个唯一的key st.session_state['selected_input'] = input_text with col2: st.header("输入") # 如果session_state中有selected_input,则使用它作为输入框的默认值 user_input = st.text_input("请输入文本", value=st.session_state.get('selected_input', '')) # 创建一个按钮,当按下时执行操作 if st.button('发送请求'): # 使用用户输入构造请求URL url = f"http://47.113.113.230:6969/fill_mask?input_text={user_input}" response = requests.post(url) if response.status_code == 200: # 解析响应数据并以表格形式显示结果或错误信息 response_data = response.json() # 将响应内容解析为JSON # 检查是否有错误信息 if response_data['msg'] is not None and response_data['msg'] != "": # 显示错误信息 st.error(f"错误: {response_data['msg']}") else: # 没有错误,准备数据以显示在表格中 elapsed_time = response_data['elapsed_time'] # 显示请求的响应时间 st.text(f"响应时间: {elapsed_time} 秒") results = response_data['results'] # 创建一个空列表用于存储转换后的数据 table_data = [] for result in results: # 将每个结果添加到列表中 table_data.append({"输出文本": result['output_text'], "得分": result['score']}) # 使用Streamlit的table函数显示数据 st.table(table_data) else: # 如果请求失败,显示错误信息 st.error('请求失败,请检查输入或服务器状态。')