123Sabrina commited on
Commit
28591a6
·
verified ·
1 Parent(s): 7f0918d

Update src/streamlit_app.py

Browse files
Files changed (1) hide show
  1. src/streamlit_app.py +17 -19
src/streamlit_app.py CHANGED
@@ -17,7 +17,7 @@ st.set_page_config(
17
  )
18
 
19
  # 設定 Gemini API 金鑰
20
- GEMINI_API_KEY = st.sidebar.text_input("Gemini API Key", "AIzaSyC3fbJVYQbINa8ztuOS5dFE4ud0I9jhy3o", type="password")
21
 
22
  if GEMINI_API_KEY:
23
  # 設定 API 金鑰
@@ -36,22 +36,6 @@ if 'csv_log' not in st.session_state:
36
  # 添加標題行
37
  st.session_state.csv_log.append(["Timestamp", "User", "Gemini"])
38
 
39
- # 函數: 生成並下載 CSV
40
- def get_csv_download_link(csv_data, filename="chat_log.csv"):
41
- # 創建 CSV 字符串
42
- csv_string = io.StringIO()
43
- writer = csv.writer(csv_string)
44
- for row in csv_data:
45
- writer.writerow(row)
46
-
47
- # 對 CSV 字符串進行 base64 編碼
48
- csv_string = csv_string.getvalue()
49
- b64 = base64.b64encode(csv_string.encode()).decode()
50
-
51
- # 創建下載連結
52
- href = f'<a href="data:file/csv;base64,{b64}" download="{filename}">下載 CSV 檔案</a>'
53
- return href
54
-
55
  # 函數: 記錄對話到 CSV
56
  def log_to_csv(user_message, gemini_response):
57
  timestamp = datetime.now().isoformat()
@@ -131,9 +115,23 @@ with st.sidebar:
131
  st.title("台南開放資料 Gemini 分析")
132
  st.markdown("---")
133
 
134
- # 下載 CSV 按鈕
135
  st.markdown("### 下載對話記錄")
136
- st.markdown(get_csv_download_link(st.session_state.csv_log), unsafe_allow_html=True)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
137
 
138
  st.markdown("---")
139
  st.markdown("### 關於")
 
17
  )
18
 
19
  # 設定 Gemini API 金鑰
20
+ GEMINI_API_KEY = st.sidebar.text_input("Gemini API Key", "AIzaSyBxrwdxgs6JemK25piF_RFnxJ9SqKuqhEE", type="password")
21
 
22
  if GEMINI_API_KEY:
23
  # 設定 API 金鑰
 
36
  # 添加標題行
37
  st.session_state.csv_log.append(["Timestamp", "User", "Gemini"])
38
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
39
  # 函數: 記錄對話到 CSV
40
  def log_to_csv(user_message, gemini_response):
41
  timestamp = datetime.now().isoformat()
 
115
  st.title("台南開放資料 Gemini 分析")
116
  st.markdown("---")
117
 
118
+ # 下載 CSV 按鈕 - 使用原生 download_button 代替 HTML 連結
119
  st.markdown("### 下載對話記錄")
120
+
121
+ # 準備 CSV 資料
122
+ csv_string = io.StringIO()
123
+ writer = csv.writer(csv_string)
124
+ for row in st.session_state.csv_log:
125
+ writer.writerow(row)
126
+ csv_bytes = csv_string.getvalue().encode('utf-8-sig')
127
+
128
+ # 使用原生下載按鈕
129
+ st.download_button(
130
+ label="下載對話記錄 CSV",
131
+ data=csv_bytes,
132
+ file_name="chat_log.csv",
133
+ mime="text/csv",
134
+ )
135
 
136
  st.markdown("---")
137
  st.markdown("### 關於")