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

使用Gemini-Pro开发LLM聊天机器人时遇Type Error求助

解决Gemini-Pro聊天机器人的st.session_state类型错误及会话管理问题

错误原因分析

出现TypeError大概率是因为Streamlit的st.session_state在初始化阶段未被正确识别为字典类型,或是使用了存在兼容性问题的旧版本Streamlit。此外原代码未实现会话重置逻辑,无法满足结束对话后清空历史的需求。

修复方案及完整代码

以下是修复类型错误并实现会话保存、重置功能的完整代码:

import os
import streamlit as st
from dotenv import load_dotenv
import google.generativeai as gen_ai

load_dotenv()

# 页面配置
st.set_page_config(
    page_title="Chat with Gemini Pro",
    page_icon=":brain:",
    layout="centered"
)

# 配置Gemini-Pro
GOOGLE_API_KEY = os.getenv("GOOGLE_API_KEY")
gen_ai.configure(api_key=GOOGLE_API_KEY)
model = gen_ai.GenerativeModel("gemini-pro")

# 角色转换:适配Streamlit的chat_message组件
def translate_role_for_streamlit(user_role):
    return "assistant" if user_role == "model" else user_role

# 初始化会话状态:兼容session_state类型问题
if not hasattr(st.session_state, "chat_session") or st.session_state.chat_session is None:
    st.session_state.chat_session = model.start_chat(history=[])

# 页面标题及重置按钮
col1, col2 = st.columns([3,1])
with col1:
    st.title("CAIE Bot")
with col2:
    if st.button("重置会话"):
        st.session_state.chat_session = model.start_chat(history=[])
        st.rerun()

# 渲染历史对话
for message in st.session_state.chat_session.history:
    with st.chat_message(translate_role_for_streamlit(message.role)):
        # 处理空内容的异常情况
        if message.parts:
            st.markdown(message.parts[0].text)

# 用户输入处理
user_prompt = st.chat_input("Ask CAIE bot...")
if user_prompt:
    # 显示用户消息
    with st.chat_message("user"):
        st.markdown(user_prompt)
    # 调用Gemini-Pro获取响应
    gemini_response = st.session_state.chat_session.send_message(user_prompt)
    # 显示助手响应
    with st.chat_message("assistant"):
        st.markdown(gemini_response.text)

关键修改说明

  • 修复类型错误:改用hasattr检查chat_session是否存在,避免直接字典键检查时的类型异常;同时确保会话对象为空时重新初始化。
  • 添加会话重置功能:新增"重置会话"按钮,点击后清空历史并重启会话,通过st.rerun()刷新页面。
  • 异常防护:渲染历史消息时增加空内容检查,避免因消息格式异常导致报错。
  • 布局优化:将标题和重置按钮分栏布局,提升交互体验。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 03:12:31