需求分析

打开deepseek网页,可以看到这个,把无关信息去掉,我们只需要一个聊天框,一个发送按钮;最主要的信息就是这些;
先看下我的实现结果,如下图:

实现流程
这里主要用streamlit来实现页面,如下图:
st.set_page_config(
page_title="DeepSeek 聊天助手",
page_icon="🤖",
layout="wide"
)
# 初始化session state
if "chat_history" not in st.session_state:
st.session_state.chat_history = []
if "excel_data" not in st.session_state:
st.session_state.excel_data = None
if "processed_data" not in st.session_state:
st.session_state.processed_data = None
if "agent" not in st.session_state:
st.session_state.agent = None
# 标题
st.title("🤖 DeepSeek 聊天助手")
st.markdown("---")
侧边栏配置
# 侧边栏 - 配置区域
with st.sidebar:
st.header("⚙️ 配置设置")
# API Key输入
api_key = st.text_input(
"🔑 输入DeepSeek API Key",
type="password",
placeholder="sk-xxxxxxxxxxxxxxxx",
help="请从DeepSeek平台获取您的API Key"
)
# 初始化Agent按钮
if st.button("🚀 初始化AI助手", type="primary"):
if not api_key:
st.error("❌ 请输入API Key")
else:
try:
# 创建客户端
external_client = AsyncOpenAI(
base_url="https://api.deepseek.com",
api_key=api_key,
)
# 设置默认客户端
set_default_openai_client(external_client)
# 创建模型
deepseek_model = OpenAIChatCompletionsModel(
model="deepseek-chat",
openai_client=external_client
)
agent = Agent(name="Assistant",
instructions="你是一名助人为乐的助手。",
model=deepseek_model)
st.session_state.agent = agent
# st.session_state.agent = agent
st.success("✅ AI助手初始化成功!")
except Exception as e:
st.error(f"❌ 初始化失败: {str(e)}")
聊天区域
st.header("💬 智能对话")
# 显示聊天历史
for message in st.session_state.chat_history:
with st.chat_message(message["role"]):
st.markdown(message["content"])
聊天输入框
if prompt := st.chat_input("给deepseek发送信息"):
# 添加用户消息到历史
st.session_state.chat_history.append({"role": "user", "content": prompt})
# 显示用户消息
with st.chat_message("user"):
st.markdown(prompt)
# 显示AI回复
with st.chat_message("assistant"):
if st.session_state.agent is None:
st.warning("⚠️ 请先在侧边栏初始化AI助手")
else:
try:
# 准备上下文信息
context = ""
# 运行Agent
with st.spinner("🤔 思考中..."):
result = asyncio.run(Runner.run(
st.session_state.agent,
[{"role": "user", "content": prompt + context}]
))
except Exception as e:
error_msg = f"❌ 处理请求时出错: {str(e)}"
st.error(error_msg)
总结
主要流程就是网页端发送一个信息,然后,通过agent,调用deepseek的模型,最后deepseek返回信息。因为代码都是用python写的,而python很多东西都是要跟C++交互的,都是语言层面的东西,有兴趣,可以去这里看看。结束,回头看看抽空写点跟streamlit相关的。

2326

被折叠的 条评论
为什么被折叠?



