大家好,这里是程序员晚枫,正在all in AI编程实战。
第16讲:AI聊天机器人——从零开发一个完整应用
项目目标
我们要做一个网页版AI聊天机器人,功能包括:
- 网页界面,打开即用
- 多轮对话,记住上下文
- 支持不同角色切换
- 对话历史保存
1、安装Streamlit
pip install streamlit openai
2、核心代码
import streamlit as st
from openai import OpenAI
st.set_page_config(page_title="AI聊天助手", page_icon="🤖")
client = OpenAI(api_key="你的Key", base_url="https://api.deepseek.com")
if "messages" not in st.session_state:
st.session_state.messages = [
{"role": "system", "content": "你是程序员晚枫的AI助手,擅长Python编程教学"}
]
st.title("🤖 AI聊天助手")
for msg in st.session_state.messages[1:]:
with st.chat_message(msg["role"]):
st.markdown(msg["content"])
if prompt := st.chat_input("输入你的问题..."):
with st.chat_message("user"):
st.markdown(prompt)
st.session_state.messages.append({"role": "user", "content": prompt})
with st.chat_message("assistant"):
response = client.chat.completions.create(
model="deepseek-chat",
messages=st.session_state.messages,
stream=True
)
reply = st.write_stream(
(chunk.choices[0].delta.content or "" for chunk in response)
)
st.session_state.messages.append({"role": "assistant", "content": reply})3、运行
streamlit run app.py
浏览器自动打开,就可以和AI聊天了!
4、添加角色切换
with st.sidebar:
st.header("设置")
role = st.selectbox(
"选择角色",
["Python老师", "翻译助手", "文案写手", "通用助手"]
)
role_prompts = {
"Python老师": "你是Python编程老师,回答要包含代码示例",
"翻译助手": "你是专业翻译,支持中英互译",
"文案写手": "你是文案专家,擅长写营销文案",
"通用助手": "你是通用AI助手"
}
if st.button("切换角色"):
st.session_state.messages = [
{"role": "system", "content": role_prompts[role]}
]
st.rerun()5、添加清空功能
with st.sidebar:
if st.button("清空对话"):
st.session_state.messages = [
{"role": "system", "content": role_prompts[role]}
]
st.rerun()6、部署到云端
把代码推到GitHub,用Streamlit Cloud免费部署:
- 创建GitHub仓库
- 上传 app.py 和 requirements.txt
- 访问 https://streamlit.io/cloud
- 连接GitHub仓库,一键部署
下讲预告
学会了聊天机器人,下一讲我们学 AI自动化办公——让AI帮你处理Excel、Word、PDF。
敬请期待!
程序员晚枫专注AI编程培训,小白看完他和图灵社区合作的教程《30讲 · AI编程训练营》就能上手做AI项目。
前3讲可以试听,试听链接:https://www.bilibili.com/cheese/play/ss982042944
