一、Streamlit
1.文本
with st.spinner("文本"):
#这里没有执行完成,就一直显示文本
st.success("运行完成显示文本")
st.header("text")
st.info("文本")
st.markdown("[获取OpenAI API Key](https://beta.openai.com/account/api-keys)") #超链接
st.text_input("提示",type="password")
2.侧边栏
with st.sidebar:
xxx
3.提交按钮
submit = st.button("按钮")
4.分割线
st.divider()
5.页面布局
#左右两列
left,right = st.columns(2)
with left:
st.markdown("####")
6.折叠组件
with st.expander("历史消息"):
for i in range(0,len(st.session_state["chat_history"]),2):#每次两个对话,human and ai
human_message = st.session_state["chat_history)"][i]
ai_message = st.session_state["chat_history"][i+1]
st.write(human_message.content)
st.write(ai_message.content)
if i<len(st.session_state["chat_history"])-2:
st.divider() #分割线
二、有记忆的AI
历史消息列表,手动
from langchain.memory import ConversationBufferMemory
memory = ConversationBufferMemory(return_messages=True)#True返回消息就是List,否则为Str
memory.save_context({"input":"用户输入"},{"output":"AI输出"})
memory.load_memory_variables({})
from langchain.prompts import MessagesPlaceholder
pormpt = ChatPromptTemplate.from_messages(
[
("system","你是一个乐于助人的AI大模型"),
MessagesPlaceholder(variable_name="history"),
("human","{user_input}"),
]
)
现成可用
memory = ConversationBufferMemory(return_messages=True)
chain = Conver