Skip to content

Latest commit

 

History

History
765 lines (580 loc) · 22.3 KB

File metadata and controls

765 lines (580 loc) · 22.3 KB

LunaTV AI 功能说明文档

📚 目录


功能概述

LunaTV 的 AI 功能提供智能影视推荐和上下文感知对话,基于 OpenAI 兼容的 API,并支持可选的联网搜索功能。

🎯 重要说明

AI 功能支持三种配置模式:

  1. AI 模型模式 - 配置 AI API(OpenAI/Claude等),提供智能对话和推荐
  2. Tavily 纯搜索模式 - 无需 AI API,完全免费,仅使用 Tavily 联网搜索
  3. 混合模式(推荐) - 同时配置 AI API 和 Tavily,获得最佳体验

关键点:

  • ✅ 启用 AI 功能后,可以选择不配置 AI API(留空即可)
  • ✅ 只需配置 Tavily Keys,即可使用完全免费的联网搜索功能
  • ✅ 用户体验一致,界面统一,只是数据来源不同

最新增强

8 大 AI 增强功能:

  1. Markdown 渲染 - 专业格式化,支持代码高亮、链接和列表
  2. AI 智能协调器 - 智能意图分析和自动联网搜索
  3. 视频上下文 - 针对特定影片的上下文感知对话
  4. 智能 UI 集成 - 影片卡片上的智能 AI 按钮
  5. 流式响应 - 实时逐字显示 AI 回复
  6. 豆瓣数据增强 - 自动注入真实评分、演员、导演、剧情信息
  7. TMDB 数据增强 - 提供关键词标签和相似影片推荐
  8. 🆕 Tavily 纯搜索模式 - 无需 AI API,完全免费使用联网搜索功能

功能特性

1. Markdown 渲染

AI 回复现在支持 GitHub 风格的 Markdown,包括:

  • 代码块 带语法高亮
  • 链接 可点击
  • 列表 (有序和无序)
  • 加粗/斜体 文本格式
  • 表格 用于结构化数据

2. AI 智能协调器(Smart Orchestrator)

协调器自动分析用户意图,决定是否需要联网搜索最新信息。

意图类型:

  • recommendation - 影视剧推荐
  • query - 演员/导演信息、新闻
  • detail - 剧情、评价、评分
  • general - 其他问题

自动联网搜索触发条件:

  • 时效性关键词(最新、今年、2024、2025、即将、上映等)
  • 演员/导演查询(演员、导演、主演等)
  • 新闻请求(新闻、消息、官宣等)

支持的搜索服务:

  • Tavily - 每个 Key 每月 1000 次免费 API 调用

3. 视频上下文支持

从视频卡片使用 AI 时,AI 自动知道:

  • 影片/剧集标题
  • 上映年份
  • 类型(电影/电视剧)
  • 当前集数(电视剧)
  • 豆瓣 ID / TMDB ID

优势:

  • 无需重复说明片名
  • 更准确的回答
  • 自然的对话流程
  • 针对性的网络搜索

4. 智能影片卡片 AI 按钮

桌面端体验:

  • 鼠标悬停在任意影片卡片上
  • 底部中央显示 AI 按钮
  • 智能定位:避免遮挡底部标签
  • 玻璃态设计配合渐变色

移动端体验:

  • 长按或右键点击影片卡片
  • 从操作菜单中选择"AI问片"
  • 全屏 AI 对话框

5. 流式响应

逐字实时显示 AI 回复,带来:

  • 更好的用户体验
  • 即时反馈
  • 降低感知延迟

6. 豆瓣数据增强 🆕

当从影片卡片使用 AI 时,系统自动获取豆瓣真实数据并注入到 AI 上下文中:

自动获取的数据:

  • 豆瓣评分 - 真实用户评分(如 8.5/10)
  • 🎬 导演信息 - 导演名单
  • 👥 主演阵容 - 前5位主演
  • 📝 剧情简介 - 官方剧情摘要(限300字)
  • 🎭 类型标签 - 悬疑、犯罪、喜剧等
  • 🌍 制片地区 - 中国大陆、美国等
  • 📺 集数信息 - 电视剧总集数

优势:

  • ✅ 回答基于真实数据,不依赖 AI 记忆
  • ✅ 评分准确,来自豆瓣用户
  • ✅ 演员阵容完整
  • ✅ 剧情介绍官方权威
  • ✅ 无需手动输入片名查询

示例对话:

用户:这部电影评分怎么样?
AI:根据豆瓣数据,《利刃出鞘》评分 8.2/10...
    导演:莱恩·约翰逊
    类型:悬疑、犯罪、喜剧

7. TMDB 数据增强 🆕

基于国际电影数据库 TMDB,为 AI 提供更智能的推荐能力:

关键词标签(Keywords):

  • 🏷️ 自动提取影片主题关键词
  • 🎯 帮助 AI 理解影片核心内容
  • 🔍 支持基于主题的推荐

相似影片推荐(Similar Movies):

  • 📊 基于 TMDB 算法的真实相似推荐
  • ⭐ 包含评分和年份信息
  • 🎬 最多显示 5 部相似影片
  • ✅ 比 AI 记忆更准确

工作原理:

  1. 检测到影片有 TMDB ID
  2. 自动获取 keywords 和 similar 数据
  3. 格式化注入到 AI 系统提示词
  4. AI 基于真实数据回答

示例对话:

用户:有没有类似的推荐?
AI:根据 TMDB 数据,与《利刃出鞘》相似的影片有:
1. 东方快车谋杀案 (2017) - 评分: 6.5/10
2. 尼罗河上的惨案 (2022) - 评分: 6.3/10
3. 无人生还 (2015) - 评分: 6.4/10
关键词标签:murder mystery, detective, ensemble cast

8. Tavily 纯搜索模式 🆕

完全免费的 AI 功能选项! 无需配置 AI API 即可使用联网搜索功能。

适用场景:

  • 🆓 预算有限,无法负担 AI API 费用
  • 📰 主要需求是查询最新资讯和时效性信息
  • 🔍 希望获取真实的网络搜索结果而非 AI 生成内容

工作原理:

  1. 用户提出时效性问题(如"2025年最新电影")
  2. 系统检测到需要联网搜索
  3. 直接使用 Tavily API 搜索相关信息
  4. 格式化搜索结果为 Markdown 返回给用户
  5. 无需调用 AI 模型,完全免费

配置方法:

  1. 启用 AI 功能(总开关)
  2. 跳过 AI API 配置(留空即可)
  3. 启用智能协调器
  4. 启用联网搜索
  5. 配置 Tavily API Keys(每个 Key 1000次/月免费)

返回格式示例:

🌐 **搜索结果**(来自 Tavily)

**您正在查看**:流浪地球2 (2023)

找到 5 条相关信息:

### 1. 流浪地球2上映时间确认
2023年春节档上映,票房破40亿...

📎 来源:[mtime.com](https://www.mtime.com/...)

---

💡 **提示**:以上信息来自实时网络搜索,可能需要进一步核实。

优势:

  • ✅ 完全免费(仅需 Tavily 免费额度)
  • ✅ 实时网络数据,最新资讯
  • ✅ 真实来源链接,可追溯
  • ✅ 支持视频上下文(从影片卡片使用)

限制:

  • ❌ 仅限时效性问题(需要触发联网搜索关键词)
  • ❌ 无法进行通用影视推荐(需要 AI 分析)
  • ❌ 无法进行上下文对话(需要 AI 理解)
  • ❌ 返回原始搜索结果,无 AI 总结和分析

最佳实践:

  • 配置 5-10 个 Tavily Keys(5000-10000次/月免费)
  • 问题中包含时效性关键词(最新、今年、2025、上映等)
  • 结合影片卡片使用,获得更精准的搜索结果

管理员配置指南

配置模式选择 🆕

LunaTV 现在支持三种配置模式,满足不同需求:

模式 AI API Tavily Keys 适用场景
AI 模式 ✅ 必需 ❌ 可选 标准影视推荐和对话
Tavily 模式 ❌ 不需要 ✅ 必需 零成本,仅时效性查询
混合模式 ✅ 必需 ✅ 必需 最佳体验,AI+实时搜索

重要提示: 至少需要配置一种模式才能启用 AI 功能。

Tavily 纯搜索模式配置步骤 🆕

完全免费方案!无需任何 AI API 费用。

配置步骤:

  1. 启用 AI 功能 - 打开"启用AI推荐功能"总开关
  2. 跳过 AI API 配置 - API地址、API密钥、模型名称全部留空(不填)
  3. 启用智能协调器 - 打开"启用智能协调器(意图分析)"开关
  4. 启用联网搜索 - 打开"启用联网搜索(Tavily)"开关
  5. 配置 Tavily Keys - 输入至少1个 Tavily API Key(推荐5-10个)

重要说明:

  • 📌 虽然 AI 总开关是开启的,但不需要填写任何 AI API 信息
  • 📌 系统会检测到"只配置了 Tavily",自动使用纯搜索模式
  • 📌 用户看到的界面和体验是一致的,只是返回搜索结果而非 AI 生成内容

验证方法:

保存配置后,系统会提示:

  • ✅ "AI推荐配置保存成功" - 表示配置有效
  • ❌ "请至少配置一种模式" - 表示需要补充配置

基础 AI 设置

进入:管理面板 → AI推荐配置

设置项 说明 默认值
启用 AI AI 功能总开关 false
API URL OpenAI 兼容的 API 端点(Tavily模式可选) https://api.openai.com/v1
API Key 你的 API 密钥(Tavily模式可选) (可选)
模型 模型名称(如 gpt-4, gpt-3.5-turbo) gpt-3.5-turbo
温度 响应随机性 (0-2) 0.7
最大 Token 最大响应长度 3000

💡 提示: 如果只想使用 Tavily 纯搜索模式,可以跳过 API URL 和 API Key 配置。

智能协调器设置(高级)

展开:智能协调器设置(高级)

启用智能协调器

切换以启用意图分析和自动联网搜索。

启用联网搜索

需要先启用协调器。启用后,AI 会自动为时效性问题联网搜索。

Tavily API Keys(多 Key 支持)

为什么要多个 Key?

  • 每个 Tavily 账号提供 每月 1000 次免费 API 调用
  • 配置多个 Key 可以增加配额
  • 示例:5 个 Key = 每月 5000 次免费调用

如何获取 Tavily API Key:

  1. 访问 https://tavily.com
  2. 注册免费账号(无需信用卡)
  3. 从控制台获取 API Key
  4. 用多个邮箱重复以上步骤获取更多 Key

配置方法:

每行输入一个 API Key:
tvly-xxxxxxxxxxxxxx
tvly-yyyyyyyyyyyyyy
tvly-zzzzzzzzzzzzzz

Key 轮询机制:

  • 系统自动轮询使用可用的 Key
  • 失败的 Key 会被标记并跳过
  • 遇到 401/429 错误时自动切换下一个 Key

用户使用指南

使用全局 AI 按钮

位置: 右上角(桌面端)或顶部栏(移动端)

步骤:

  1. 点击 AI 按钮(⭐ Sparkles 图标)
  2. 输入你的问题
  3. 按回车或点击发送
  4. 查看流式响应

示例问题:

  • "推荐一些高分科幻电影"
  • "2025年有什么新上映的电影?"
  • "诺兰的电影有哪些?"

在影片卡片上使用 AI

桌面端:

  1. 鼠标悬停在任意影片/剧集卡片上
  2. 底部中央出现 AI 按钮
  3. 点击打开 AI 对话
  4. AI 已经知道你在问哪部影片

移动端:

  1. 长按或右键点击影片卡片
  2. 从菜单选择"AI问片"
  3. AI 对话框打开,带有上下文

示例上下文感知问题:

  • "这部讲什么?" → AI 知道你在问这部特定的影片
  • "评分怎么样?"
  • "有续集吗?"
  • "演员阵容如何?"

快捷操作按钮

从影片卡片打开 AI 对话时,会显示针对该影片的快捷操作按钮:

  • 📖 剧情介绍 - 获取该影片的剧情摘要
  • 影片评价 - 查看豆瓣/TMDB评分和演员阵容
  • 🎬 相似推荐 - 推荐类似的影片

从全局 AI 按钮打开时,会显示通用推荐选项:

  • 🎬 推荐热门电影 - 最近的热门电影
  • 📺 推荐电视剧 - 口碑好的电视剧
  • 😂 推荐喜剧片 - 搞笑的喜剧电影
  • 🔥 推荐动作片 - 精彩的动作电影
  • 💕 推荐爱情片 - 经典的爱情电影
  • 🔍 推荐悬疑片 - 烧脑的悬疑推理电影

技术说明

流式实现

后端(SSE):

// API 返回 Server-Sent Events 流
Content-Type: text/event-stream
data: {"text": "你好"}
data: {"text": "世界"}
data: [DONE]

前端:

// 客户端实时接收 chunk
sendAIRecommendMessage(messages, context, (chunk) => {
  // 每个 chunk 更新 UI
  streamingContent += chunk;
});

意图分析算法

关键词匹配:

  • 时间关键词:最新、今年、2024、2025、即将、上映
  • 人物关键词:演员、导演、主演、作品
  • 新闻关键词:新闻、消息、官宣、定档

决策逻辑:

needWebSearch = hasTimeKeyword ||
                hasPersonKeyword ||
                hasNewsKeyword ||
                (hasRecommendKeyword && hasTimeKeyword);

API Key 轮询

轮询策略:

class ApiKeyRotator {
  - 维护可用 Key 列表
  - 跟踪失败的 Key
  - 从可用 Key 中轮询选择
  - 所有 Key 耗尽时自动重置
}

故障转移流程:

  1. 尝试第一个 Key
  2. 如果 401/429 错误 → 标记为失败
  3. 尝试下一个可用 Key
  4. 重复直到成功或所有 Key 耗尽

视频上下文结构

interface VideoContext {
  title?: string;           // "流浪地球2"
  year?: string;            // "2023"
  douban_id?: number;       // 26266893
  tmdb_id?: number;         // 550988
  type?: 'movie' | 'tv';    // "movie"
  currentEpisode?: number;  // 5(电视剧)
}

系统提示词增强:

## 【当前视频上下文】
用户正在浏览: 流浪地球2 (2023)

## 【豆瓣影片详情】(真实数据,优先参考)
片名: 流浪地球2 (2023)
豆瓣评分: 8.3/10
导演: 郭帆
主演: 吴京、刘德华、李雪健、沙溢、宁理
类型: 科幻、冒险、灾难
制片地区: 中国大陆
剧情简介: 太阳即将毁灭,人类在地球表面建造出巨大的推进器...

## 【TMDB数据】(国际化数据和相似推荐)
关键词标签: space, disaster, science fiction, chinese cinema
相似影片推荐(基于TMDB算法):
1. 流浪地球 (2019) - 评分: 7.6/10
2. 2012 (2009) - 评分: 5.8/10
3. 明日之战 (2021) - 评分: 7.5/10

常见问题

Q: Tavily 可以免费获得多少次 API 调用?

A: 每个 Tavily 账号每月提供 1000 次免费 API 调用。你可以用不同的邮箱注册多个账号,并在 LunaTV 中配置所有 Key 以实现自动轮询。

示例:

  • 1 个 Key = 每月 1,000 次调用
  • 5 个 Key = 每月 5,000 次调用
  • 10 个 Key = 每月 10,000 次调用

Q: Tavily Key 用完额度后会怎样?

A: 系统会自动:

  1. 检测到 429(速率限制)错误
  2. 标记该 Key 为失败
  3. 切换到下一个可用 Key
  4. 无缝继续请求

Q: AI 功能必须配置 Tavily 才能使用吗?

A: 不是。Tavily 是可选的,仅用于联网搜索功能。基础的 AI 推荐功能无需 Tavily 即可工作。但是,对于时效性问题(如"2025年最新电影"),联网搜索能提供更准确的结果。

Q: 可以不配置 AI API,只使用 Tavily 吗?🆕

A: 可以! 这是 LunaTV 的 Tavily 纯搜索模式,完全免费。

配置步骤:

  1. 启用 AI 功能(总开关)
  2. 跳过 API URL 和 API Key(留空)
  3. 启用智能协调器
  4. 启用联网搜索
  5. 配置 Tavily API Keys

能做什么:

  • ✅ 查询最新上映信息("2025年最新电影")
  • ✅ 搜索演员导演动态("诺兰最新电影")
  • ✅ 获取实时影视资讯
  • ✅ 从影片卡片查询片源状态

不能做什么:

  • ❌ 通用影视推荐("推荐科幻电影")
  • ❌ 上下文对话("为什么推荐这部?")
  • ❌ 剧情分析和总结

成本:

  • 完全免费!每个 Tavily Key 提供 1000次/月
  • 配置 5 个 Key = 5000次/月免费使用

限制:

  • 仅对时效性问题有效(需触发联网搜索关键词)
  • 返回原始搜索结果,无 AI 分析

适合人群:

  • 预算有限的个人用户
  • 主要需求是查询最新资讯
  • 不需要 AI 对话功能

Q: 全局 AI 按钮和影片卡片 AI 按钮有什么区别?

A:

功能 全局 AI 按钮 影片卡片 AI 按钮
上下文 影片信息
问题类型 通用 上下文感知
示例 "推荐科幻电影" "这部讲什么?"
联网搜索 通用搜索 针对性搜索

Q: 可以使用 Claude API 代替 OpenAI 吗?

A: 可以!任何 OpenAI 兼容的 API 都可以使用,包括:

  • OpenAI GPT-3.5/GPT-4
  • Claude(通过兼容代理)
  • 本地模型(Ollama, LM Studio)
  • 其他提供商(Groq, Together.ai 等)

只需相应配置 API URL 和密钥即可。

Q: 为什么影片卡片上没有显示 AI 按钮?

A: 请检查:

  1. ✅ 管理面板中 AI 功能已启用
  2. ✅ 已配置有效的 API 密钥
  3. ✅ 桌面端需鼠标悬停在卡片上(移动端需长按)
  4. ✅ 影片有标题(上下文必需)

Q: 智能定位是如何工作的?

A: AI 按钮会自动调整位置:

  • 有底部标签(已完结、已上映等) → 按钮上移(bottom-14)
  • 无底部标签 → 按钮靠近底部(bottom-4)
  • 防止重叠 与现有 UI 元素

Q: 可以禁用流式响应吗?

A: 目前流式响应默认启用以获得更好的用户体验。如需使用非流式模式,需要修改前端代码,不传递流式回调函数。

Q: 豆瓣和 TMDB 数据增强需要额外配置吗?

A: 不需要额外配置!

  • 豆瓣数据:自动启用,从影片卡片使用 AI 时自动获取
  • TMDB数据:如果管理员已配置 TMDB API Key(用于演员搜索功能),AI 会自动使用

工作流程:

  1. 用户从影片卡片打开 AI 对话
  2. 系统检测到 douban_idtmdb_id
  3. 自动并行获取豆瓣和 TMDB 数据
  4. 注入到 AI 系统提示词
  5. AI 基于真实数据回答

Q: 豆瓣数据从哪里来?是爬虫吗?

A: 是的,LunaTV 使用合法的网页爬虫技术:

  • ✅ 遵守 robots.txt 规则
  • ✅ 添加随机延时,避免频繁请求
  • ✅ 24小时缓存,减少服务器压力
  • ✅ 仅用于个人学习和推荐,不用于商业

Q: TMDB 数据需要配置吗?

A: TMDB 功能可选

  • ✅ 如果已配置 TMDB API Key(管理面板 → 站点配置 → TMDB设置),AI 会自动使用
  • ❌ 如果未配置,AI 仍然可以工作,但没有 keywords 和 similar 推荐
  • 💡 建议配置 TMDB,获取免费 API Key:https://www.themoviedb.org/settings/api

Q: AI 推荐的相似影片准确吗?

A: 使用 TMDB 数据增强后,准确度显著提升

对比:

数据源 准确度 来源
AI 记忆 ⭐⭐⭐ 训练数据(可能过时)
TMDB算法 ⭐⭐⭐⭐⭐ 真实用户行为和算法

示例:

  • ❌ 没有 TMDB:AI 凭记忆推荐,可能不准确
  • ✅ 有 TMDB:基于 TMDB 算法的5部真实相似影片

Q: 为什么有时 AI 不提及豆瓣评分?

A: 这是正常的 AI 行为:

  1. AI 策略:根据用户问题选择性回答
  2. Token 优化:省略未明确询问的信息
  3. 数据存在:豆瓣数据已注入系统提示词

解决方法:

  • 明确询问:"这部电影评分怎么样?"
  • 或:"详细介绍一下演员阵容"
  • AI 会优先使用豆瓣真实数据回答

Q: 我的数据如何存储?

A:

  • 对话历史缓存在浏览器 localStorage,保留 30 分钟
  • 服务器不存储聊天历史
  • 仅最新请求缓存 5 分钟(仅限简单查询)
  • 上下文数据(影片信息)随请求发送,不存储

Q: 如何获得更多免费额度?

A: Tavily 策略(推荐):

  1. 用多个邮箱注册 Tavily 账号
  2. 每个账号获取 1 个 API Key(1000次/月)
  3. 在管理面板配置所有 Key
  4. 系统自动轮询使用

示例:

  • 注册 5 个 Tavily 账号 = 5000 次/月免费
  • 注册 10 个 Tavily 账号 = 10000 次/月免费

Q: AI 回复中的电影名为什么可以点击?

A: 系统会自动识别 AI 回复中的《片名》格式,并将其:

  1. 高亮显示为蓝色
  2. 自动提取片名
  3. 生成搜索链接

支持的格式:

  • 《片名》 - 主要格式
  • "片名" - 备用格式
  • 【片名】 - 备用格式

点击后会跳转到搜索页面,显示该影片的可用播放源。

Q: 为什么 AI 回复有时不使用 Markdown?

A: 可能的原因:

  1. AI 模型选择不使用(温度设置影响)
  2. 问题类型不适合 Markdown(简单问答)
  3. 系统提示词未正确传递

建议在问题中明确要求:"请用 Markdown 格式回复"


支持

如有问题或功能请求,请:

  1. 查看此文档
  2. 检查管理面板设置
  3. 查看浏览器控制台错误
  4. 联系管理员

附录:配置示例

完整配置示例

{
  "AIRecommendConfig": {
    "enabled": true,
    "apiUrl": "https://api.openai.com/v1",
    "apiKey": "sk-xxxxxxxxxxxxxxxx",
    "model": "gpt-4",
    "temperature": 0.7,
    "maxTokens": 3000,
    "enableOrchestrator": true,
    "enableWebSearch": true,
    "tavilyApiKeys": [
      "tvly-key1xxxxxxxxxx",
      "tvly-key2xxxxxxxxxx",
      "tvly-key3xxxxxxxxxx"
    ]
  }
}

推荐配置方案

方案一:基础 AI 模式(无联网搜索)

  • ✅ 启用 AI
  • ✅ 配置 OpenAI API
  • ❌ 不启用 Orchestrator
  • 适合:基础推荐需求,无需最新资讯

方案二:Tavily 纯搜索模式(完全免费)🆕

  • ✅ 启用 AI
  • ❌ 不配置 OpenAI API(留空)
  • ✅ 启用 Orchestrator
  • ✅ 启用联网搜索
  • ✅ 配置 5-10 个 Tavily Key
  • 适合:预算有限,仅需时效性查询

方案三:智能混合模式(推荐)

  • ✅ 启用 AI
  • ✅ 配置 OpenAI API
  • ✅ 启用 Orchestrator
  • ✅ 启用联网搜索
  • ✅ 配置 3-5 个 Tavily Key
  • 适合:需要 AI 对话+最新资讯

方案四:高级配置(大量调用)

  • ✅ 启用 AI
  • ✅ 使用高性能模型(GPT-4)
  • ✅ 启用 Orchestrator
  • ✅ 启用联网搜索
  • ✅ 配置 10+ 个 Tavily Key
  • 适合:高频使用场景

Tavily 纯搜索模式配置示例 🆕

{
  "AIRecommendConfig": {
    "enabled": true,
    "apiUrl": "",
    "apiKey": "",
    "model": "",
    "temperature": 0.7,
    "maxTokens": 3000,
    "enableOrchestrator": true,
    "enableWebSearch": true,
    "tavilyApiKeys": [
      "tvly-key1xxxxxxxxxx",
      "tvly-key2xxxxxxxxxx",
      "tvly-key3xxxxxxxxxx",
      "tvly-key4xxxxxxxxxx",
      "tvly-key5xxxxxxxxxx"
    ]
  }
}

说明:

  • API 字段留空或为空字符串
  • 仅配置 Tavily Keys
  • 完全免费(每月 5000 次调用)

最后更新: 2025-12-30 版本: 6.1.0 文档语言: 简体中文 新增功能: Tavily 纯搜索模式(完全免费)、豆瓣和 TMDB 数据增强