You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让用户在运行中的公开Streamlit应用中输入自有API密钥?

实现让用户输入自有API密钥的Streamlit应用方案

下面提供几种可行的实现方式,各有适用场景:

方法1:应用内直接添加密钥输入组件(无需用户克隆部署)

这是最便捷的方案,用户不用自己部署,直接访问你公开的Streamlit应用就能用,密钥仅在当前会话临时生效,不会被存储。

  • 用Streamlit的密码输入框和文件上传组件收集密钥:
import streamlit as st
import openai
from google.cloud import texttospeech

# 收集OpenAI API密钥
openai_key = st.text_input("请输入你的OpenAI API密钥", type="password")
# 收集Google TTS的服务账号密钥(Google TTS需要JSON格式的服务账号文件)
google_tts_key_file = st.file_uploader("上传你的Google TTS服务账号JSON文件", type="json")

# 验证密钥存在后初始化服务
if openai_key and google_tts_key_file:
    openai.api_key = openai_key
    # 从上传的文件初始化Google TTS客户端
    tts_client = texttospeech.TextToSpeechClient.from_service_account_file(google_tts_key_file.name)
    
    # 这里写你的核心应用逻辑,比如文本生成、语音合成等
    st.success("密钥验证通过,可以使用功能啦!")
  • 注意:一定要在应用里明确提醒用户,不要在公共设备上输入密钥,且你的应用代码绝对不能做密钥的持久化操作(比如存数据库、写入本地文件)。

方法2:让用户克隆仓库后自行部署(你当前的方案)

这个方案适合有一定技术基础、对密钥安全性要求较高的用户,密钥完全由用户自己掌控:

  1. 把应用代码上传到GitHub仓库,同时准备一个示例配置文件(比如secrets.toml.example):
# secrets.toml.example
OPENAI_API_KEY = "替换成你的OpenAI密钥"
GOOGLE_TTS_KEY_PATH = "替换成你的Google TTS服务账号JSON文件路径"
  1. 在应用代码里读取Streamlit的secrets配置:
import streamlit as st
import openai
from google.cloud import texttospeech

# 从secrets读取密钥
openai_key = st.secrets["OPENAI_API_KEY"]
google_tts_key_path = st.secrets["GOOGLE_TTS_KEY_PATH"]

# 初始化服务
openai.api_key = openai_key
tts_client = texttospeech.TextToSpeechClient.from_service_account_file(google_tts_key_path)
  1. 写清楚部署文档,告诉用户:
    • 克隆仓库到本地
    • 复制secrets.toml.example为.streamlit/secrets.toml并填入自己的密钥
    • 安装依赖后启动应用,或者用Streamlit Cloud、Heroku等平台部署时配置对应secrets

方法3:通过环境变量传入密钥(适合本地运行或自定义云部署)

如果用户不想用Streamlit的secrets,也可以让他们通过环境变量传递密钥:

  • 应用代码里读取环境变量:
import os
import openai
from google.cloud import texttospeech

# 从环境变量获取密钥
openai_key = os.getenv("OPENAI_API_KEY")
google_tts_key_path = os.getenv("GOOGLE_TTS_KEY_PATH")

# 初始化服务
if openai_key and google_tts_key_path:
    openai.api_key = openai_key
    tts_client = texttospeech.TextToSpeechClient.from_service_account_file(google_tts_key_path)
  • 用户本地运行时,终端设置环境变量再启动应用:
# Linux/macOS
export OPENAI_API_KEY="你的OpenAI密钥"
export GOOGLE_TTS_KEY_PATH="你的Google TTS密钥文件路径"
streamlit run app.py

# Windows(PowerShell)
$env:OPENAI_API_KEY="你的OpenAI密钥"
$env:GOOGLE_TTS_KEY_PATH="你的Google TTS密钥文件路径"
streamlit run app.py
  • 部署到云平台时,直接在平台的环境变量配置面板填入密钥即可。

内容的提问来源于stack exchange,提问作者shakedzy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 09:32:55