这是代码
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"
)
GOOGLE_API_KEY = os.getenv("GOOGLE_API_KEY")
gen_ai.configure(api_key=GOOGLE_API_KEY)
model = gen_ai.GenerativeModel("gemini-pro")
def translate_role_for_streamlit(user_role):
if user_role == "model":
return "assistant"
else:
return user_role
if "chat_session" not in st.session_state:
st.session_state.chat_session = model.start_chat(history=[])
st.title("CAIE Bot")
for message in st.session_state.chat_session.history:
with st.chat_message(translate_role_for_streamlit(message.role)):
st.markdown(message.parts[0].text)
user_prompt = st.chat_input("Ask CAIE bot...")
if user_prompt:
st.chat_message("user").markdown(user_prompt)
gemini_response = st.session_state.chat_session.send_message(user_prompt)
with st.chat_message("assistant"):
st.markdown(gemini_response.text)
!streamlit run main.py
我在排队时遇到错误
if "chat_session" not in st.session_state:
我想检查用户是否与机器人进行了活跃的聊天,如果有,那么机器人会保存之前的对话历史记录以供下一次对话使用。会话结束后,历史记录将重置
类型错误是因为您在不存储值的类上使用
in
。 in
仅适用于集合、列表和其他包含值的数据结构。
如果你想看看某个东西是否具有
chat_session
属性,你可以尝试hasattr(st.session_state, "chat_session")
。
另请参阅: