Spaces:
Sleeping
Sleeping
Update src/streamlit_app.py
Browse files- 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", "
|
| 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 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 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("### 關於")
|