AI 聊天
概述
Starnion 的 AI 聊天是核心功能,让您能够与基于 LangGraph 的智能体进行自然语言对话。它不仅仅是简单的问答,您还可以通过一条聊天消息触发各类技能——记账、日程管理、文档分析、图片生成、天气查询等等。
智能体会维护对话上下文,记住同一会话中之前说过的内容,因此可以自然地回答追问。同时支持多模态输入(图片、文档、音频):附上文件,AI 将分析或解释其内容。
聊天频道对比
Starnion 提供两种聊天频道。
| 项目 | 网页端 | Telegram |
|---|---|---|
| 访问方式 | 直接在浏览器中使用 | 在 Telegram 应用中与机器人聊天 |
| 文件附件 | 拖放、剪贴板粘贴 | 使用 Telegram 的文件附件功能 |
| 对话管理 | 对话列表、重命名、搜索 | 单一线程(每个频道) |
| 流式响应 | 实时打字效果 | 收到后一次性显示 |
| 离线支持 | 无(需要浏览器) | 支持 Telegram 应用通知 |
| 推荐使用场景 | 长文档处理、文件分析 | 随时随地快速查询、通知 |
基本使用
开始第一次对话
在网页端开始新对话:
- 点击左侧边栏中的 ”+ 新建聊天” 按钮。
- 在聊天输入框中输入消息,按 Enter 或发送按钮。
- AI 的响应以实时流的形式显示。
发送第一条消息时,对话标题会自动生成。例如,询问”今天午餐吃什么好?”可能会生成”午餐推荐”这样的标题。
用户:你好!今天天气怎么样?
AI: 你好!让我查一下首尔当前的天气。
🔧 正在运行 `weather`...
首尔当前天气晴朗,18°C。
空气质量(细颗粒物)处于中等水平。
继续对话
选择已有对话会恢复之前的上下文。由于 AI 记得同一会话线程中说过的一切,您可以使用”再解释一遍”或”用你刚才提到的金额记录一下”这样的指代。
用户:我喝了一杯美式咖啡,花了4500韩元
AI: 已记录 咖啡馆/美式咖啡/4500韩元 ☕
(2025年3月8日 · 刷卡)
用户:把分类从餐饮改成咖啡馆
AI: 已更新为咖啡馆分类。
管理对话列表
左侧边栏显示最近的对话(最多100条),按最近活动时间排序。
- 重命名:点击对话标题旁的编辑图标
- 删除:从对话旁的菜单中选择删除
- 搜索:在顶部搜索栏中搜索对话标题或内容
文件附件
附加图片
附加图片时,AI 会进行视觉分析。多模态视觉模型读取图片并回答您关于图片的问题。
附件方式:
- 点击输入框左侧的 📎 图标,然后选择文件
- 将图片拖放到输入框中
- 用 Ctrl+V(或 Cmd+V)粘贴已复制的图片
示例:
[附加收据图片]
用户:把这张收据的内容记录到我的账本里
AI: 我已分析了收据。
- 星巴克美式咖啡:5500韩元
- 三明治:6800韩元
是否将合计12300韩元记录到咖啡馆分类?
支持格式:JPEG、PNG、GIF、WebP
附加文档
附加 PDF、Word 文件、文本文件或其他文档,AI 将分析、摘要或回答关于其内容的问题。
[附加 合同.pdf]
用户:总结这份合同的重要条款
AI: 我已分析了合同。以下是要点:
1. 合同期限:2025年4月1日至2026年3月31日
2. 违约条款:提前终止需支付剩余期限金额的20%
3. 自动续约:到期前30天未提前通知则自动延长1年
支持格式:PDF、DOCX、TXT、MD、CSV
附加音频
附加音频文件,AI 将转录语音或分析内容。
支持格式:MP3、WAV、M4A、OGG
对话功能
重命名对话
第一条消息后会自动生成对话标题。您也可以将其更改为任意您喜欢的标题。
- 点击侧边栏中对话标题右侧的编辑(✏️)图标
- 输入新标题并按 Enter 或确认按钮
删除对话
将鼠标悬停在侧边栏中的对话条目上会显示删除按钮。已删除的对话无法恢复,该线程中的所有消息历史将被永久删除。
搜索对话
在顶部搜索栏中输入关键词可以搜索对话标题和消息内容。点击搜索结果会直接跳转到该对话。
流式响应
Starnion 实时流式传输 AI 响应。无需等待完整响应,文字会在生成时即时显示在屏幕上。
流式传输工作原理:
AI SDK v6 SSE 流事件顺序:
data: {"type":"start"}
data: {"type":"start-step"}
data: {"type":"text-start","id":"txt"}
data: {"type":"text-delta","id":"txt","delta":"你好"}
data: {"type":"text-delta","id":"txt","delta":"!"}
data: {"type":"text-end","id":"txt"}
data: {"type":"finish-step"}
data: {"type":"finish","finishReason":"stop"}
data: [DONE]
当工具(技能)正在执行时,其状态会内联显示:
🔧 正在运行 `weather`...
🔧 正在运行 `finance_add`...
最大流式传输等待时间为 3分钟,超时后连接会自动关闭。
WebSocket 连接
网页端使用 WebSocket 进行实时双向通信。从连接到消息传递的完整流程如下所示。
浏览器 网关 (Go) 智能体 (Python)
| | |
|-- WS 连接请求 ----------> | |
|<-- 连接已接受 -----------| |
| | |
|-- {method:"chat", | |
| message:"你好", | |
| thread_id:"uuid"} --> | |
| |-- gRPC ChatStream ------->|
| | |-- LLM 调用
| | |<-- token 流
| |<-- TEXT 事件 ------------|
|<-- {event:"text", | |
| text:"你好"} --------| |
| |<-- TEXT 事件 ------------|
|<-- {event:"text", | |
| text:"!"} ----------| |
| |<-- STREAM_END ------------|
|<-- {event:"done"} -------| |
| | |
连接维护:
- Ping 间隔:服务器每50秒发送一次 ping
- Pong 超时:60秒内无响应则关闭连接
- 最大消息大小:64 KB
- 重连:浏览器尝试自动重连
身份验证与安全:
- 建立 WebSocket 连接时,会根据用户 ID 验证对话所有权。
- 尝试访问其他用户的对话会被立即阻止。
上下文保留(RAG 四层记忆)
Starnion 智能体跨多层管理对话上下文。
[发送消息]
|
v
+------------------------+
| 第1层:短期记忆 | 当前对话线程中的最近消息
| (In-Context) | → 通过 LangGraph thread_id 管理
+------------------------+
|
v
+------------------------+
| 第2层:长期记忆 | 每位用户重要信息的永久存储
| (向量存储) | → 通过嵌入搜索检索相关记忆
+------------------------+
|
v
+------------------------+
| 第3层:工具结果 | 技能执行结果(天气、支出等)
| (Tool Results) | → 自动包含在当前对话中
+------------------------+
|
v
+------------------------+
| 第4层:用户档案 | 姓名、偏好、人设设置
| (User Profile) | → 为所有对话提供基础上下文
+------------------------+
实际上下文保留示例:
[对话1 — 一周前]
用户:我每月的交通预算是10万韩元
AI: 好的!我会记住您每月10万韩元的交通预算。
[对话2 — 今天]
用户:我这个月在交通上花了多少钱?
AI: 让我查一下您本月的交通支出。
🔧 正在运行 `finance_summary`...
本月交通支出:73400韩元(占10万韩元预算的73.4%)
还剩26600韩元——管理得很好!👍
对话历史由 LangGraph 的 thread_id 管理。每次开始新对话都会创建新线程。返回之前的对话会恢复该线程的记忆。
使用技巧与示例
充分利用 AI 聊天
具体描述:
好的示例:
用户:今晚我用现金在烤肉店吃了三层肉,花了18000韩元。记录到餐饮类别。
效果较差:
用户:我吃晚饭了
一次处理多个项目:
用户:总结一下今天的支出。
咖啡馆美式4500韩元,午餐8000韩元,便利店3200韩元
AI: 已记录3条。
- 咖啡馆/美式咖啡/4500韩元 ☕
- 餐饮/午餐/8000韩元 🍱
- 餐饮/便利店/3200韩元 🏪
今天共花费:15700韩元
指定日期:
用户:我昨天看了一部电影,票价15000韩元。
AI: 已记录 3月7日 · 娱乐/电影 · 15000韩元 🎬
更多示例对话
查询天气:
用户:明天需要带雨伞吗?
AI: 让我查一下首尔明天的天气。
🔧 正在运行 `weather`...
明天下午(3月9日)起预计有雨。🌧️
建议带上雨伞!
月度支出汇总:
用户:我这个月花了多少钱?
AI: 🔧 正在运行 `finance_summary`...
3月支出(1日-8日):
- 餐饮: 42500韩元
- 咖啡馆: 18000韩元
- 交通: 15400韩元
- 合计: 75900韩元
比上个月同期多花了12.3%。
主要原因是餐饮支出增加。
图片分析:
[附加食物照片]
用户:这大概有多少卡路里?
AI: 我分析了照片。
看起来像拌饭。标准单人份通常
约500-600千卡,具体取决于香油的用量!
文档摘要:
[附加 报告.pdf]
用户:用3句话总结关键要点
AI: 好的,以下是文档的3句话摘要。
1. 2024年营收同比增长23%,主要由线上渠道驱动。
2. 客户满意度达到历史最高92分。
3. 2025年目标是进军新市场并重新推出移动应用。
💬 Telegram 使用示例
用自然语言和尼昂对话即可。无需特殊命令 – 像日常聊天一样说话就行!
日常对话
今天天气真好!有什么推荐的活动吗?
→ 尼昂会推荐适合天气的活动
最近压力好大,好累
→ 尼昂会表示共鸣并建议减压方法
提问
教我怎么做好吃的番茄炒蛋
→ 逐步提供食谱
这周北京天气怎么样?
→ 提供天气信息
文件附件
[附加照片] 帮我整理这张收据
→ 分析收据并自动记录支出
[语音消息](会议录音)
→ 将语音转为文字并进行摘要
常见问题
Q. 对话会保存多久?
A. 对话会永久保存在服务器数据库中,除非您主动删除,否则会一直保留。但对话列表中只显示最近的100条对话。
Q. AI 好像不记得我们之前的对话了。
A. 开始新对话会使其与之前的线程分离。要继续过去的对话,请从侧边栏中选择它。上下文在同一对话线程内保持。
Q. 附件有文件大小限制吗?
A. 目前每个文件最大为20 MB。对于较大的文件,建议在上传前压缩或分割。
Q. 响应中途停止或被截断了。
A. 最大流式传输等待时间为3分钟。复杂任务可能需要更长时间。请检查您的网络连接,或刷新页面后重试。
Q. 我可以同时进行多个对话吗?
A. 可以,您可以在多个浏览器标签页中进行不同的对话。但每个用户只维护一个 WebSocket 连接,因此在新标签页中打开连接可能会中断现有标签页中的实时流式传输。
Q. Telegram 和网页端的对话是关联的吗?
A. 目前每个频道独立管理线程。Telegram 对话和网页端对话分别存储。
Q. 使用的是哪个 AI 模型?
A. 使用默认配置的模型。您可以在设置中更改为您偏好的模型。可用模型列表可在 设置 > 模型 中找到。