基于 Streamlit 快速搭建腾讯混元 LLM 聊天应用
在当今的 AI 开发浪潮中,构建一个高效且富有创意的 LLM(Large Language Model,大型语言模型)聊天应用已成为许多开发者的首要任务。本指南将重点放在如何快速上手,利用 Python 生态中的 Streamlit 框架和腾讯云混元 API,在较短时间内完成一个具备流式打字机效果的聊天应用。
本文详细介绍了如何使用 Python 和 Streamlit 框架快速搭建基于腾讯云混元 API 的 LLM 聊天应用。内容涵盖环境配置、凭证安全管理、客户端初始化、流式响应生成器实现以及完整的代码示例。文章提供了具体的运行命令、常见问题排查方法以及后续功能扩展建议,旨在帮助开发者在不涉及复杂前端开发的前提下,高效实现具备打字机效果的智能对话系统。

在当今的 AI 开发浪潮中,构建一个高效且富有创意的 LLM(Large Language Model,大型语言模型)聊天应用已成为许多开发者的首要任务。本指南将重点放在如何快速上手,利用 Python 生态中的 Streamlit 框架和腾讯云混元 API,在较短时间内完成一个具备流式打字机效果的聊天应用。
Streamlit 是一个强大的工具,它允许开发者以最快速度搭建数据驱动的 Web 应用,特别适合那些对前端代码望而却步的开发者。本次实操将跳过繁琐的理论推导,专注于实战操作与核心逻辑的实现。
在开始开发之前,请确保已配置好必要的开发环境:
SecretId 和 SecretKey。pip install --upgrade tencentcloud-sdk-python
pip install streamlit
streamlit hello 启动入门实例,确认 Streamlit 运行正常。为了保护密钥安全,严禁将密钥硬编码到代码中。建议将密钥存储在环境变量中。
import os
# 推荐方式:从环境变量读取
secret_id = os.environ.get("TENCENT_SECRET_ID")
secret_key = os.environ.get("TENCENT_SECRET_KEY")
如果本地调试不便设置环境变量,可创建 .env 文件并使用 python-dotenv 加载,但生产环境务必使用云厂商提供的密钥管理服务。
使用腾讯云 SDK 初始化客户端。注意选择正确的区域(如 ap-beijing)。
from tencentcloud.common import credential
from tencentcloud.common.profile.client_profile import ClientProfile
from tencentcloud.hunyuan.v20230901 import hunyuan_client, models
# 实例化认证对象
cred = credential.Credential(secret_id, secret_key)
cpf = ClientProfile()
# 预先建立连接可以降低访问延迟
cpf.httpProfile.pre_conn_pool_size = 3
client = hunyuan_client.HunyuanClient(cred, "ap-beijing", cpf)
req = models.ChatStdRequest()
Streamlit 的 st.write_stream 支持生成器输入,这是实现打字机效果的关键。
def response_generator():
# 此处调用 API 获取响应
resp = client.ChatStd(req)
# 解析返回的流式数据
for event in resp:
data = json.loads(event['data'])
for choice in data['Choices']:
yield choice['Delta']['Content'] + ""
以下是整合后的完整代码示例,包含会话历史管理和消息展示逻辑。
import json
import os
import streamlit as st
from tencentcloud.common import credential
from tencentcloud.common.exception.tencent_cloud_sdk_exception import TencentCloudSDKException
from tencentcloud.common.profile.client_profile import ClientProfile
from tencentcloud.hunyuan.v20230901 import hunyuan_client, models
st.title("混元小助手")
# 初始化认证对象
if not st.session_state.get('initialized'):
secret_id = os.environ.get("TENCENT_SECRET_ID")
secret_key = os.environ.get("TENCENT_SECRET_KEY")
if not secret_id or not secret_key:
st.error("请在环境变量中配置 TENCENT_SECRET_ID 和 TENCENT_SECRET_KEY")
st.stop()
cred = credential.Credential(secret_id, secret_key)
cpf = ClientProfile()
cpf.httpProfile.pre_conn_pool_size = 3
client = hunyuan_client.HunyuanClient(cred, "ap-beijing", cpf)
st.session_state['initialized'] = True
st.session_state['client'] = client
client = st.session_state.get('client')
# 初始化聊天历史
if "messages" not in st.session_state:
st.session_state.messages = []
# 显示历史消息
for message in st.session_state.messages:
with st.chat_message(message["role"]):
st.markdown(message["content"])
# 用户输入处理
if prompt := st.chat_input("有什么需要帮助的?"):
# 添加用户消息
st.session_state.messages.append({"role": "user", "content": prompt})
with st.chat_message("user"):
st.markdown(prompt)
# 构建请求
req = models.ChatStdRequest()
req.Messages = []
for m in st.session_state.messages:
msg = models.Message()
msg.Role = m["role"]
msg.Content = m["content"]
req.Messages.append(msg)
# 显示助手回复(流式)
with st.chat_message("assistant"):
try:
def response_generator():
resp = client.ChatStd(req)
for event in resp:
data = json.loads(event['data'])
for choice in data['Choices']:
yield choice['Delta']['Content'] + ""
response = st.write_stream(response_generator())
st.session_state.messages.append({"role": "assistant", "content": response})
except TencentCloudSDKException as err:
st.error(f"API 调用失败:{err}")
不要直接使用 python 命令运行脚本,必须使用 Streamlit 专用命令:
streamlit run app.py
这将自动在浏览器中打开应用界面。如果遇到端口占用错误,可以指定端口号:
streamlit run app.py --server.port 8501
session_state 中限制历史消息数量,仅保留最近 N 条。ClientProfile 中的超时设置,或检查网络连接稳定性。本文介绍了如何使用 Streamlit 和腾讯云混元 API 快速构建一个具备流式交互能力的 LLM 聊天应用。通过合理的会话状态管理和流式响应处理,开发者可以在无需编写复杂前端代码的情况下,获得流畅的用户体验。
在此基础上,你可以进一步拓展功能:
掌握大模型应用开发技能,不仅能提高编程效率,还能更好地应对实际项目需求。希望本指南能为你开启 AI 应用开发的大门。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online