AI应用-智能机器人实战
·
好了,前面我们已经学习了streamlit的基本用法,现在,我们开始制作一个智能机器人伴侣。
AI插件安装
首先,我们要在pycharm上面安装AI插件,来帮助我们提高开发效率。
在pycharm点击:File>Settings>Plugins,在搜索框中输入:lingma,点击install。
注意:安装好后要重启pycharm
这样,在我们编程的时候就会给我们提示代码,我们只需要按TAB就可以使用代码,如果没有提示,可以按ALT+P!
基本页面布局
消息输入输出
代码:
import streamlit as st
import os
from openai import OpenAI
#设置页面配置项
st.set_page_config(
#网页标题
page_title="AI_智能伴侣",
page_icon="a",
#网页布局(wide/centered)
layout="wide",
#控制的是侧边栏的状态
initial_sidebar_state="expanded",
#点击页面右上角的三点按钮后,'Get Help','Report a bug', 'About'三个按钮的跳转页面
menu_items={
'Get Help': 'https://www.extremelycoolapp.com/help',
'Report a bug': "https://www.extremelycoolapp.com/bug",
'About': "# This is a header. This is an *extremely* cool app!"
}
)
#大标题
st.title("AI_智能伴侣")
#logo
st.logo("./resource/logo.jpg")
#系统提示词
system_prompt = "你是一个温柔的猫娘!请用温柔可爱的语气与我对话!"
#创建一个与AI大模型交互的客户端对象(DEEPSEEK_API_KEY是环境变量的名字,值是Deepseek的API_KEY)
client = OpenAI(
api_key=os.environ.get('DEEPSEEK_API_KEY'),
base_url="https://api.deepseek.com")
#消息输入框
prompt = st.chat_input("请输入问题")
if prompt:
st.chat_message("user").write(prompt)
print("--------->调用AI大模型,提示词:",prompt)
#调用AI大模型
response = client.chat.completions.create(
model="deepseek-v4-pro",
messages=[
{"role": "system", "content": system_prompt},
{"role": "user", "content": prompt},
],
stream=False,
reasoning_effort="high",
extra_body={"thinking": {"type": "enabled"}}
)
# 输出大模型返回的结果
print("-------->大模型返回的结果:", response.choices[0].message.content)
st.chat_message("assistant").write(response.choices[0].message.content)
结果:
页面消息展示
页面消息展示
由于每次提问都会重新刷新页面,我们还需要用到streamlit里面的session state。
我们需要将用户输入的提示词和AI返回的结果都保存在容器里面,每次提问都会把之前的记录遍历输出。
代码
#初始化聊天信息
if "messages" not in st.session_state:
st.session_state.messages = []
#展示历史对话
for message in st.session_state.messages:
st.chat_message(message["role"]).write(message["content"])
#消息输入框
prompt = st.chat_input("请输入问题")
if prompt:
st.chat_message("user").write(prompt)
print("--------->调用AI大模型,提示词:",prompt)
#保存用户输入的提示词
st.session_state.messages.append({"role":"user", "content":prompt})
#调用AI大模型
response = client.chat.completions.create(
model="deepseek-v4-pro",
messages=[
{"role": "system", "content": system_prompt},
{"role": "user", "content": prompt},
],
stream=False,
reasoning_effort="high",
extra_body={"thinking": {"type": "enabled"}}
)
# 输出大模型返回的结果
print("-------->大模型返回的结果:", response.choices[0].message.content)
st.chat_message("assistant").write(response.choices[0].message.content)
#保存大模型返回的结果
st.session_state.messages.append({"role":"assistant", "content":response.choices[0].message.content})
结果

会话记忆问题
于AI大模型的交互本质是无状态的,每次请求都是独立的。
这就要求我们将历史对话消息列表在上传给AI,修改代码如下:
代码
#调用AI大模型
response = client.chat.completions.create(
model="deepseek-v4-pro",
messages=[
{"role": "system", "content": system_prompt},
*st.session_state.messages#展开历史对话消息列表,实现多轮对话上下文
],
stream=False,
reasoning_effort="high",
extra_body={"thinking": {"type": "enabled"}}
)
结果

完整代码
import streamlit as st
import os
from openai import OpenAI
#设置页面配置项
st.set_page_config(
#网页标题
page_title="AI_智能伴侣",
page_icon="a",
#网页布局(wide/centered)
layout="wide",
#控制的是侧边栏的状态
initial_sidebar_state="expanded",
#点击页面右上角的三点按钮后,'Get Help','Report a bug', 'About'三个按钮的跳转页面
menu_items={
'Get Help': 'https://www.extremelycoolapp.com/help',
'Report a bug': "https://www.extremelycoolapp.com/bug",
'About': "# This is a header. This is an *extremely* cool app!"
}
)
#大标题
st.title("AI_智能伴侣")
#logo
st.logo("./resource/logo.jpg")
#系统提示词
system_prompt = "你是一个温柔的猫娘!请用温柔可爱的语气与我对话!"
#初始化聊天信息
if "messages" not in st.session_state:
st.session_state.messages = []
#展示历史对话
for message in st.session_state.messages:
st.chat_message(message["role"]).write(message["content"])
#if message["role"] == "user":
# st.chat_message("user").write(message["content"])
#else:
# st.chat_message("assistant").write(message["content"])
#创建一个与AI大模型交互的客户端对象(DEEPSEEK_API_KEY是环境变量的名字,值是Deepseek的API_KEY)
client = OpenAI(
api_key=os.environ.get('DEEPSEEK_API_KEY'),
base_url="https://api.deepseek.com")
#消息输入框
prompt = st.chat_input("请输入问题")
if prompt:
st.chat_message("user").write(prompt)
print("--------->调用AI大模型,提示词:",prompt)
#保存用户输入的提示词
st.session_state.messages.append({"role":"user", "content":prompt})
#调用AI大模型
response = client.chat.completions.create(
model="deepseek-v4-pro",
messages=[
{"role": "system", "content": system_prompt},
*st.session_state.messages#展开历史对话消息列表,实现多轮对话上下文
],
stream=False,
reasoning_effort="high",
extra_body={"thinking": {"type": "enabled"}}
)
# 输出大模型返回的结果
print("-------->大模型返回的结果:", response.choices[0].message.content)
st.chat_message("assistant").write(response.choices[0].message.content)
#保存大模型返回的结果
st.session_state.messages.append({"role":"assistant", "content":response.choices[0].message.content})
更多推荐

所有评论(0)