惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Blog — PlanetScale
Blog — PlanetScale
GbyAI
GbyAI
Engineering at Meta
Engineering at Meta
博客园 - 司徒正美
T
Tailwind CSS Blog
F
Full Disclosure
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
小众软件
小众软件
IT之家
IT之家
J
Java Code Geeks
Y
Y Combinator Blog
Microsoft Security Blog
Microsoft Security Blog
B
Blog
V
V2EX
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Hugging Face - Blog
Hugging Face - Blog
美团技术团队
The Cloudflare Blog
Recent Announcements
Recent Announcements
博客园 - 【当耐特】
Google DeepMind News
Google DeepMind News
罗磊的独立博客
博客园 - 叶小钗
阮一峰的网络日志
阮一峰的网络日志
The GitHub Blog
The GitHub Blog
云风的 BLOG
云风的 BLOG
aimingoo的专栏
aimingoo的专栏
大猫的无限游戏
大猫的无限游戏
酷 壳 – CoolShell
酷 壳 – CoolShell
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
S
Security @ Cisco Blogs
MyScale Blog
MyScale Blog
MongoDB | Blog
MongoDB | Blog
U
Unit 42
H
Heimdal Security Blog
Recent Commits to openclaw:main
Recent Commits to openclaw:main
V2EX - 技术
V2EX - 技术
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Google Online Security Blog
Google Online Security Blog
N
News and Events Feed by Topic
Hacker News - Newest:
Hacker News - Newest: "LLM"
PCI Perspectives
PCI Perspectives
博客园 - 三生石上(FineUI控件)
I
InfoQ
SecWiki News
SecWiki News
N
News and Events Feed by Topic
D
DataBreaches.Net
Schneier on Security
Schneier on Security
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO

博客园 - ymworkroom

Python中包的导入 Python中__name__与__all__两个特殊变量的作用 Python中模块导入方式 国内安装Claude方案 连接mysql8.0时报:KeyNotFoundException: 给定关键字不在字典中 vscode中运行的vue项目,vscode关闭后仍然运行,如何停止 [INS-30131] 执行安装程序验证所需的初始设置失败 Java中CornExpression说明 java项目开发常用配置文件模板 oracle数据库导入dmp文件,两种方法 Oracle dmp文件导入(还原)到不同的表空间和不同的用户下 pdf.js在IIS中配置使用笔记 禁止达梦数据库中not null字段插入空字符串 错误:java.lang.NoClassDefFoundError: org/jaxen/JaxenException 服务器级的urn筛选器无效:筛选器必须为空,或服务器属性必须等于实际的服务器名称处理方法 oracle下安装logminer笔记 .net导出图片到Excel .net获取网络图片 Lotus Notes连接Domino服务器时出错 配置Mysql远程访问 mysql Access denied for user root@localhost错误处理备忘 MsSql判断表是否有自增标识 .net用NPOI生成Word表格 .net读取Lotus Domino文件数据库并写入DataTable中
Python学习——Ai+streamlit实现Ai伴侣(练习流式输出)
ymworkroom · 2026-07-08 · via 博客园 - ymworkroom
 1 import streamlit as st
 2 import os
 3 from zhipuai import ZhipuAI
 4 
 5 st.set_page_config(
 6     page_title="AI智能伴侣",
 7     layout="wide",
 8     initial_sidebar_state="expanded",
 9     menu_items={},
10     page_icon="🤖"
11 )
12 key=os.environ.get("ZHIPUAI_API_KEY")
13 if not key:
14     print("未找到key")
15     st.stop()
16 
17 
18 client=ZhipuAI(api_key=key)
19 st.title("AI智能伴侣")
20 def_personality="一个性格开朗大方的东北妹子。"
21 if "message_list" not in st.session_state:
22     #st.session_state["message_list"] = []
23     st.session_state.message_list = []
24 if "nick_name" not in st.session_state:
25     #st.session_state["nick_name"] = "小美"
26     st.session_state.nick_name = "小美"
27 if "personality" not in st.session_state:
28     #st.session_state["personality"] = "一个性格开朗大方的东北妹子。"
29     st.session_state.personality =def_personality
30 
31 with st.sidebar:
32     st.sidebar.title("AI伴侣控制面板")
33     nick_name=st.sidebar.text_input("昵称:",value=st.session_state.nick_name)
34     personality=st.sidebar.text_area("性格:",value=st.session_state.personality)
35     if nick_name:
36         st.session_state.nick_name= nick_name
37     if personality:
38         st.session_state.personality = personality
39 
40 
41 #由于每次执行streamlit都会刷新页面,所以在这里将历史对话都输出来
42 for message in st.session_state.message_list:
43     st.chat_message(message["role"]).write(f" {message['content']}")
44 
45 
46 role_prompt=f"你叫{st.session_state.nick_name},{st.session_state.personality}"
47 prompt = st.chat_input("说点什么呢?")
48 if prompt:
49     st.chat_message("user").write(f" {prompt}")
50     st.session_state["message_list"].append({"role":"user","content":f"{prompt}"})
51     response=client.chat.completions.create(
52         model="glm-4.6v",
53         messages=[
54             {"role":"system","content":role_prompt},
55             #解包列表中的元素,滚雪球式将历史消息按顺序一起发送,解决AI记忆问题。
56             *st.session_state["message_list"]
57         ],
58         stream=True
59     )
60     #流式输出大模型返回的结果
61     msg_container=st.empty()
62     full_content = ""
63     for chunk in response:
64         if chunk.choices[0].delta.reasoning_content is not None:
65             content=chunk.choices[0].delta.reasoning_content
66             full_content+=content
67             msg_container.chat_message("assistant").write(full_content)
68         if chunk.choices[0].delta.content is not None:
69             content = chunk.choices[0].delta.content
70             full_content += content
71             msg_container.chat_message("assistant").write(full_content)
72     st.session_state["message_list"].append({"role":"assistant","content":f"{full_content}"})