sales-assistant-py-new/app/chat_qa/classification/history_intent.py

439 lines
118 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import os
import asyncio
import json
import time
from datetime import datetime, timedelta
from typing import List, Dict
from langchain_core.prompts import PromptTemplate
from app.chat_qa.classification.text_intent import TextIntent
from app.chat_qa.classification.general_text_extract import TextExtract
from app.chat_qa.classification.standard_intent import standard_intent
from app.client.embedding_client_manager import EmbeddingClientManager, embedding_client
from app.client.milvus_client_manager import milvus_client
from app.client.mysql_client_manager import db_assistant_mysql_client_manager
from app.dto.summary_dto import SummaryDto
from app.llm import llm
from app.models.mysql import ArchiveMessages
from app.repository.archive_messages_repository import ArchiveMessagesRepository
from app.repository.milvus.intent_classification_repository import IntentClassificationRepository
from app.repository.milvus.summary_repository import SummaryRepository
from app.core.log import logger
from app.reranker_utils import get_reranker_model
import re
intent_prompt = """
你是一个专业的QA提取专家。请分析以下聊天记录提取或生成1-2个高质量的QA对。
## 核心规则
### 1. QA提取规则
- 优先提取用户明确提出的问题及其对应的回答
- 如果对话中没有明确的问题,根据讨论内容生成一个总结性问题
- 答案必须基于聊天记录中的实际内容,不能编造
- 如果某个问题在聊天记录中没有明确答案则不生成QA
- 最多生成2个QA对优先选择最有价值的信息
### 2. 单意图选择规则(关键)
**每个QA对只能有一个意图标签不能以顿号、逗号或“和”分隔多个意图。**
当内容可能对应多个意图时,按以下优先级选择唯一意图:
| 优先级 | 选择规则 | 说明 |
|-------|---------|------|
| **P0** | **优先匹配已有意图标签** | 必须优先从已有意图体系(含扩展示例)中选择最匹配的标签,禁止新建与原标签语义高度重复的意图。**当销售单方面介绍课程内容无用户明确提问直接使用对应的主题标签如“3D场景建模”、“3D角色建模”严禁新建“XXX课程咨询”类标签。** 例:“场景线上课程介绍” → 使用“3D场景建模”而非“场景线上课程咨询”。 |
| **P1** | **核心诉求优先** | 选择最能代表用户核心诉求的意图。例如:报名流程说明 → “报名咨询”(核心是报名咨询),而非“线上直播教学”(只是提到线上) |
| **P2** | **动作维度优先于主题维度** | 当主题和诉求冲突时优先选择主题维度。例如3D建模费用 → “3D建模”主题 |
| **P3** | **直接提及优先于间接关联** | 用户明确说出的意图优先于推断出的意图 |
| **P4** | **去重合并** | 多个子诉求属于同一类别时,只输出一个意图标签 |
### 3. 意图分类体系(必须从中选择或基于其扩充)
{intent_list}
**扩充规则:** 仅当用户问题涉及的具体方向在已有标签中完全无法覆盖时,才可创建更细粒度的标签。创建时必须严格对比已有标签,确保无重复语义。例如:“原画好就业吗” → 可扩充为“原画就业”,因为已有标签中无“就业”与“原画”的结合且不冲突。
### 4. 多意图拆分规则(新增)
- 若同一段对话明确涉及多个不重叠的核心意图如同时介绍“3D场景建模”和“就业咨询”必须拆分为多个QA对每个QA对聚焦一个意图。
- 每个QA对的answer仅包含与该意图直接相关的信息不相关的信息不得混杂其中避免信息污染。
- 若几个意图高度关联无法拆分如介绍课程时自然提到费用但核心是课程则按单意图规则选择最核心的标签其余信息可融入answer作为补充但intents仍为单一核心意图。
## 输出格式要求
- 输出纯JSON不要任何解释、不要markdown标记、不要注释
- 将中文引号 "" '' 替换为英文引号 "" ''
- 删除所有注释(// 和 /* */
- 删除markdown代码块标记```json ```
- 删除JSON前后多余的文本说明
- 修复末尾多余的逗号(如 }},] 或 }},}}
- 确保所有字符串用双引号包裹
- 确保布尔值是小写的 true/falsenull 是小写的
- 如果键名没有引号,给键名加上双引号
## 输出格式
{{
"qa_pairs": [
{{
"intents": "意图标签(只能有一个,不能并列)",
"answer": "回答内容"
}},
{{
"intents": "意图标签(只能有一个,不能并列)",
"answer": "回答内容"
}}
]
}}
# 历史对话
{message_str}
其中INTERNAL表示销售EXTERNAL表示用户
要求:
- 一个intents对应的answer必须包含聊天记录中所有可用信息确保信息不遗漏
- 意图标签必须从上述分类中选择或基于其合理扩充
- **intents字段必须是单个字符串不能包含顿号、逗号或“和”**
- 优先选择最有价值的1-2个QA对
- 当销售INTERNAL主动进行课程/产品介绍而非回答用户EXTERNAL明确提问时意图标签应选择主题维度3D角色建模而非诉求维度课程咨询
"""
from FlagEmbedding import FlagReranker
class HistoryIntent:
def __init__(self, archive_messages_repository: ArchiveMessagesRepository,
embedding_client: EmbeddingClientManager,
summary_repository: SummaryRepository,
reranker: FlagReranker
):
self.archive_messages_repository = archive_messages_repository
self.embedding_client = embedding_client
self.summary_repository = summary_repository
self.reranker = reranker
async def get_day_ms_timestamp(self, date_str: str):
"""
输入日期字符串 如 "2025-06-10"
:return: start_ms(当日0点毫秒时间戳), end_ms(当日23:59:59毫秒时间戳)
"""
# 解析日期,生成当日 00:00:00
day_start = datetime.strptime(date_str, "%Y-%m-%d")
# 当日最后一秒 23:59:59
day_end = day_start + timedelta(days=1) - timedelta(seconds=1)
# timestamp() 返回秒,*1000 转毫秒,转整数
start_ms = int(day_start.timestamp() * 1000)
end_ms = int(day_end.timestamp() * 1000)
return start_ms, end_ms
async def get_message_summary(self, date: str = None):
stime = time.time()
intent_repo = IntentClassificationRepository()
# 获取意图分类
intent_list:list[str] = await intent_repo.get_style_intent_categories()
if date:
start_ts, end_ts = await self.get_day_ms_timestamp(date)
day_ArchiveMessages = await self.archive_messages_repository.get_message_statistics_by_date(start_date=start_ts,
end_date=end_ts)
logger.info(f"{date}共产生了{len(day_ArchiveMessages)}条会话")
else:
day_ArchiveMessages = await self.archive_messages_repository.get_message_statistics_by_date()
# 改成map
date_user_message_a_set = set()
summary_list: list[str] = []
for idx, day_message in enumerate(day_ArchiveMessages, 1): #打印计数
logger.info(f"处理第{idx}会话")
day_date = str(day_message.created_at)
user_a = day_message.from_user
# 找出发送人相关的接收人信息
date_user_message_a = await self.archive_messages_repository.get_message_statistics_by_date_user(day_date,
user_a)
# 找出发送人与接收人 相关的所有会话信息
for date_a in date_user_message_a:
date_user_b = date_a.to_user
# if date_user_b != "[\"wmI1AkDQAAdVhy2ENtY6fecaw9-pi4uQ\"]":
# continue
date_user_a = date_a.from_user
date_user_b_clean = date_user_b.replace("[\"", "").replace("\"]", "")
date_user_a_append = "[\"" + date_user_a + "\"]"
# 判断只要存在就跳过
if date_user_a + date_user_b in date_user_message_a_set or date_user_b_clean + date_user_a_append in date_user_message_a_set:
logger.info(f"已存在{date_user_a}{date_user_b}{day_date}对话,跳过")
continue
logger.info(f"查询{date_user_a}{date_user_b}{day_date}对话开始")
list1 = await self.archive_messages_repository.get_message_statistics_by_date_user(day_date,
date_user_a,
date_user_b)
list2 = await self.archive_messages_repository.get_message_statistics_by_date_user(day_date,
date_user_b_clean,
date_user_a_append)
# 查询过的聊天账号,后续不再查询
date_user_message_a_set.add(date_user_a + date_user_b)
date_user_message_a_set.add(date_user_b_clean + date_user_a_append)
coro_list = list1 + list2
coro_list.sort(key=lambda x: x.created_at, reverse=False)
logger.info(f"查询{date_user_a}{date_user_b}对话共:{len(coro_list)}")
# 获取意图分类
summary_res = await self.intent_message(coro_list, intent_list)
summary_list.append(summary_res)
#summary_list = ['{\n "qa_pairs": [\n {\n "intents": "发票开具",\n "answer": "聂萌个人发票36800元场景建模吴宇杭个人发票场景建模3个月21800元一共2个。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "学习情况",\n "answer": "卢非学习一直挺好的,很刻苦,状态和之前一样保持,目前是第二个案例阶段,进度正常进行。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "课程咨询",\n "answer": "销售提供了二维码供用户扫描,以便进一步进行课程咨询。"\n }\n ]\n}', '{\n "qa_pairs": []\n}', '{\n "qa_pairs": [\n {\n "intents": "预约参观",\n "answer": "学生孙传扬是场景暑假3班的下学期大四家长也会一起过来参观远中校区。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "游戏特效",\n "answer": "王新文2004年1月25日出生来自上海市本科毕业于内蒙古艺术学院公共艺术专业2026届学习目的为就业。报名日期为2026年7月27日入学时间同为2026年7月27日学习方向为游戏特效学习性质为全日制线下全流程。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "课程咨询",\n "answer": "销售表示群里有一个名额,如果用户没有被添加,可以提醒销售,销售会再次拉群。销售也可以直接拉群。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "电脑配置",\n "answer": "电脑不限品牌CPU最好i5或者以上显卡要4060或者以上内存16G预算足的话最好32G固态硬盘512G。正常和配电脑的说用来做游戏建模会给你配置合适的。"\n },\n {\n "intents": "3D角色建模",\n "answer": "如果是角色课程就是先跟7月份开的这一期并且会额外赠送一次免费转新班的机会。"\n }\n ]\n}', '{\n "qa_pairs": []\n}', '{\n "qa_pairs": [\n {\n "intents": "分期付款",\n "answer": "没有分期付款或两次缴费的方式,需要一次性缴费完成之后签协议对接教务。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "3D角色建模",\n "answer": "如果用户不是非原画不可也可以考虑模型方向目前三维视觉呈现是主流。课程从0教学线上直播周期是8-10个月是针对就业的系统课程。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "课程咨询",\n "answer": "用户询问是否可以单独报名学习某个软件如3dmax销售回复称没有单独学软件的课程因为案例都是全流程的软件不会单独拆开学。用户进一步询问是否可以分开购买课程先买基础部分再全部购买销售回复没有拆分这是针对就业的系统课有配套服务和针对就业的服务。"\n },\n {\n "intents": "就业咨询",\n "answer": "用户对机构质量有疑虑提到之前了解的线下机构比较一般并担心就业占比。销售回复称他们的学生进头部大厂的比例是最高的很多机构甚至拿不出大厂offer并展示了今日的学生offer案例同时提供了与学生背景相似山东工艺美院的个人作品集和访谈供用户参考。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "特效",\n "answer": "线上班费用是13800元好几年没涨价了因为整体课程体系更新以及增加了教务所以上涨了2千。没有优惠政策费用一直都是统一的。插班学不是自学上过的课程需要自己补录播有问题随时问老师。答疑主要是群里沟通老师会把群消息置顶看得更及时也有班主任督班。报名流程是缴费、填资料、签合同、对接教务。缴费时需备注全名咨询对接老师选择贺老师。之后需要提供姓名、报名日期、所在城市、专业、学历、在读/毕业院校、出生日期、学习目的、电话、QQ、微信、身份证号码、学习方向等信息。签协议后对接教务老师教务老师会对接软件安装、资源教程、看课权限、班级群等。可以先插班如果觉得太赶进度学起来困难可以和教务老师沟通免费转新班。"\n },\n {\n "intents": "报名流程",\n "answer": "报名流程是:缴费、填资料、签合同、对接教务。缴费时需备注全名,咨询对接老师选择贺老师。之后需要提供姓名、报名日期、所在城市、专业、学历、在读/毕业院校、出生日期、学习目的、电话、QQ、微信、身份证号码、学习方向等信息。签协议后对接教务老师教务老师会对接软件安装、资源教程、看课权限、班级群等。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "线上直播教学",\n "answer": "我们提供线上和线下面授两种模式。线上费用是13800元线下费用是36800元。师资一样内容案例不是一模一样教学软件流程是一样的。线上直播周期是8-10个月正式课每周上3节安排在晚上7点半到9点半直播直播之后生成录播回放。线下周期是7个月听讲和练习都在班里时间更紧凑。线下在上海和西安。"\n },\n {\n "intents": "3D场景建模",\n "answer": "角色和场景是两个岗位方向。无论场景模型地编还是角色模型,都是先学道具。角色模型岗位需要道具+角色;场景模型岗位需要道具+场景;地编岗位需要道具+场景+地编。角色不需要学地编地编也不需要学角色但地编得学场景模型。您的风景园林专业背景场景模型0基础都可以学。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "课程咨询",\n "answer": "孩子是准大一设计类,希望往游戏和动画方向走。销售表示只要是美术生,都是对口的,同一起跑线,学校里面无论什么专业,都是一样要校外报班的,很多美院的数媒、动画、游戏设计专业的学生也都是在第九联盟学习的。"\n }\n ]\n}', '{\n "qa_pairs": []\n}', '{\n "qa_pairs": [\n {\n "intents": "线上直播教学",\n "answer": "线上正式课每周上3节都是安排在晚上7点半到9点半直播直播之后会生成录播回放。线上费用是13800元。线上有班主任督学也有班级答疑群氛围挺好的手机端和电脑端都有学习账号后台可以查看学习进度。线上模式不影响做兼职或全职。"\n },\n {\n "intents": "3D场景建模",\n "answer": "场景模型技能可以用在游戏,也可以用在影视动画。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "课程咨询",\n "answer": "家长,您好,我是第九联盟课程咨询贺老师。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "课程咨询",\n "answer": "用户确认已收到邮寄的物品,并表示感谢。"\n }\n ]\n}', '{\n "qa_pairs": []\n}', '{\n "qa_pairs": []\n}', '{\n "qa_pairs": []\n}', '{\n "qa_pairs": [\n {\n "intents": "游戏特效",\n "answer": "线下课程周期为6个月学费是36800元。针对在校大学生有寒暑假分段线下课程平常额外赠送线上打基础做巩固的课程。线上课程费用是13800元转线下需补差价23000元。"\n },\n {\n "intents": "就业咨询",\n "answer": "机构整体就业率在90%有学生出国留学做作品集或因身体原因需重修。只要能好好学习就业没问题。针对在校学生有专门的校招群部分企业有直接内推渠道在简历制作、作品集整理、投递、测试、面试模拟和offer选择上都能提供帮助。学历方面技术岗位主要看技能水平大专学历也有进大厂的先例。休学延毕不影响就业只有挂科才有影响。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "课程咨询",\n "answer": "销售提供了一些学生个人作品集和访谈供用户参考。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "就业咨询",\n "answer": "用户担心家这边游戏行业不是很发达,销售回应如果考虑深圳广州就业的话,机会非常多,惠州确实少一些。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "3D场景建模",\n "answer": "场景模型线上课程周期8-10个月费用13800元全程线上学习。线下课程费用36800元食宿自理住宿为4.6人间每月1000-1300元吃饭每天五六十元。在校大学生可以选择寒暑假分段线下学习平常额外赠送线上看课权限。线上+线下模式灵活学生线上学完阶段后线下可从任意阶段开始学费仍为36800元。课程内容为场景模型+地编,地编岗位一般不要新人,通常从场景模型岗入行后再转地编。"\n },\n {\n "intents": "就业咨询",\n "answer": "场景模型在成都好就业因为成都游戏动漫产业发达。北上广深杭州成都西安武汉都是岗位需求较多的城市。AI只是一个工具可以优化重复性工作但替代不了人工尤其是意识流的东西。学习完成后如果作品集合格可以推荐就业也有内推机会。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "课程咨询",\n "answer": "用户询问为什么角色班是两个班级一个老师以及质疑线下班是否只有20人左右表示如果得不到答复将投诉师资不足强行开班。销售回应会去了解情况并安排教务老师联系用户但用户表示联系段老师后被告知无法处理将自行向更高层面投诉。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "UE引擎开发",\n "answer": "UE人才更稀缺一些也是大趋势。"\n },\n {\n "intents": "线上直播教学",\n "answer": "有线上的,这个就是线下授课同步线上直播。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "公司介绍",\n "answer": "第九联盟是点晴的子公司,点晴主要做项目制作,第九是做培训的。"\n },\n {\n "intents": "寒暑假教学",\n "answer": "针对在校大学生是寒暑假分段线下+平常额外赠送线上的模式。线下周期是6.7个月寒暑假累积学满这个周期一般需要2-3学年。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "课程咨询",\n "answer": "地编课程有7个月的长期班从0到就业的系统课线下费用36800元线上费用13800元。短期班只有线下3个月费用21800元需要根据作品情况沟通老师能否接收针对性地做辅导优化但不包含推工作虽然也会尽量帮忙推但不会写进协议。"\n },\n {\n "intents": "就业咨询",\n "answer": "推工作方面长期班会帮忙推工作短期班不包含推工作但也会尽量帮忙推不写进协议。对于26届毕业生如果作品不错会尽力推校招补录机会补录不理想则走社招先入行。虽然两年内未缴社保算应届生但有些企业会卡毕业年届腾讯卡得较松多益、叠纸也有一定机会具体看公司内部计划。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "3D角色建模",\n "answer": "线下角色建模课程是全日制脱产学习7个月上课时间周一至周五9:30-12:00、13:30-18:00晚上18:50-21:30不强制地点在上海。线下费用为36800元提供配套设备。下一期预计8月底9月初开班小班制每期十几二十人。住宿有收费统一学生公寓4-6人间每月1000-1300元不等。线上课程为8-10个月直播周期回看权限永久答疑有效期3年费用13800元。线上和线下是两套独立的系统课程均针对就业。"\n },\n {\n "intents": "试听课",\n "answer": "可以安排试听课。线下试听需到现场,线上试听可观看线上课程的录播回看。用户提供姓名后,销售提供了两个线上试听链接:线上角色道具基础试听和线上角色猫猫头试听,点击即可观看。"\n }\n ]\n}', '{\n "qa_pairs": []\n}', '{\n "qa_pairs": [\n {\n "intents": "住宿咨询",\n "answer": "我们这边也有学生公寓的哦住多久交多少的住宿费就行一个月1千左右的。周末双休你可以再回家住。"\n },\n {\n "intents": "优势/竞争力",\n "answer": "上海这边资源肯定是最好的。主要看学校效果的,如果学不出来,时间精力和钱都是白花了。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "线上直播教学",\n "answer": "线上课程的专业性同样有保障,但需要学生自己更加自律。如果经济条件暂时不支持线下学习,可以先存钱,之后考虑线上课程。"\n }\n ]\n}', '{\n "qa_pairs": []\n}', '{\n "qa_pairs": [\n {\n "intents": "上课时间",\n "answer": "上课时间为9:30而非9:00。如果有具体对接问题可以扫码添加教务老师的微信老师会在9:30左右到电脑旁后进行对接。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "课程咨询",\n "answer": "用户为高一学生,询问高中生能否学习游戏动漫模型课程。销售确认用户身份后,询问其学习目的是兴趣爱好还是就业,并告知学习费用要一万多,需要家人支持。用户表示需要询问家人后再决定。"\n }\n ]\n}', '{\n "qa_pairs": []\n}', '{\n "qa_pairs": []\n}', '{\n "qa_pairs": [\n {\n "intents": "宿舍地址",\n "answer": "锦馨公寓的男生梁铭凯退住了,需要将他的东西打包好放在一边。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "课程咨询",\n "answer": "用户刘默,目前大三,视觉传达专业,尚未确定具体学习方向。课程咨询老师介绍了与视觉传达专业对口的课程方向,包括角色模型、场景模型、游戏特效和游戏动画,并计划明天详细说明各方向区别。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "实习咨询",\n "answer": "作品出来就可以进行推荐实习啦。"\n },\n {\n "intents": "班主任联系方式",\n "answer": "我可以推给您班主任老师的微信,您备注一下是黄耀妈妈就好了。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "课程咨询",\n "answer": "用户表示暂时不会过来,还需要考察,销售告知用户如果这次不过来,这个暑假的课程就结束了。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "3D角色建模",\n "answer": "哈喽哈喽"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "就业咨询",\n "answer": "我们就业率基本在85%这个数据主要是提交作品集后1个月以内给到的。剩下的学生有的是作品集没有完善好所以没办法对接就业等完善好以后还是正常的推荐就业。能不能冲大厂以及能否就业需要看个人能力因为技术岗都是要看个人的我们只是能带给你专业的技术但每个人的吸收能力、学习能力不同结果也会不一样。推荐就业主要有两种渠道一是我们公司项目组有招聘需求的情况下需要内部测试符合要求的话公司自留另一个是内推到一些合作的企业后期也会有就业指导课程把简历和作品集给到就业老师。就业老师会根据你的学历、技术水平、行业经验、想去的城市、期望薪资等针对性推荐匹配的企业。厦门也可以推荐不过相对上海、广州、深圳会少一点。"\n },\n {\n "intents": "上课安排",\n "answer": "线下上课时间是周一至周五周末双休具体为早上9:30-12:00下午1:30-6:00晚上6:50-9:30不强制。线下是滚动式开班基本上一个半月开一次新班级一整套完整的课程周期为7个月。线上是网课8-10个月周期一周2-3次晚上7:30-9:30直播直播结束后会给到录播回放有老师答疑。如果没时间看直播也不影响也可以只看录播回放自己上手练习时不懂就问老师。线上是随时都可以学习的。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "报名流程",\n "answer": "用户吴宇杭报名日期为2026年7月27日学习方向为场景就读于四川省宜宾市职业技术学校计算机动画制作专业中专学历学习目的为就业。报名时需填写姓名、报名日期、专业、学历、在读院校、所在城市居住城市、出生日期、学习目的、电话、QQ、微信、身份证号码和学习方向。后续需签署合同先签署3个月合同之后补齐差价再转换为系统班合同签署时使用提供的链接登录签署名字后提交即可。"\n },\n {\n "intents": "预科上课",\n "answer": "用户询问明天预科是否有老师讲课销售确认明天预科有老师讲课。上课时间为9点半建议不要迟到。另外用户询问耳机用途表示若用于听课可带头戴式蓝牙耳机但建议使用3.5毫米耳机。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "合同",\n "answer": "合同在法大大上传后可以用法大大在线签署。目前合同价格已修改,但印章之前有问题,波总已重新上传印章。合同波总说后面要调整。"\n },\n {\n "intents": "报名流程",\n "answer": "学生已经交过钱,对接完老师后,等待签署合同。合同在系统维护升级后,通过法大大在线签署即可。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "住宿咨询",\n "answer": "住宿是自费的有4人间和6人间一个月基本1000-1200元是上下铺。如果住不满一个月会按天折算一天大约30-40元。具体住哪里需要等来了才能看。吃饭方面学校周边有小店、食堂也可以点外卖一天50块基本足够。"\n },\n {\n "intents": "UE引擎开发",\n "answer": "课程中UE引擎的使用是从建筑案例开始涉及的最后一个案例是纯UE引擎地编的四个正式课案例中有两个涉及到UE。课程设置是从企业岗位技术要求针对性授课的确保学完后符合企业用人标准而不是像其他机构那样什么都学一点但都不精。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "上课安排",\n "answer": "管导十点会上课。"\n }\n ]\n}', '{\n "qa_pairs": []\n}', '{\n "qa_pairs": [\n {\n "intents": "课程咨询",\n "answer": "关于您昨天提出的需求,我们目前已经做好方案了,马老师会发在群里。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "快递服务",\n "answer": "用户请求帮忙叫快递寄送物品包括1条被子、床单和枕头并表示会支付运费。销售同意帮忙并告知已找到袋子打包还发现一个孩子的快递一并打包。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "宿舍地址",\n "answer": "宿舍配置包括被子、褥子、枕头和一个小桌子,用户为下铺。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "3D场景建模",\n "answer": "用户聂萌报名日期2026年7月27日专业为视觉传达设计本科学历在读院校邵阳学院当前大学就读年级为大四所在城市邵阳出生日期2005年10月2日学习目的为校招电话19873607263QQ 2027219235微信jlnm1002身份证号码430725200510020063学习方向为场景建模。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "合同",\n "answer": "用户咨询关于3个月21800元短期合同的签署问题销售反馈系统在维护公章可能有问题重新上传最终可以处理并签署。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "报到流程",\n "answer": "报到地点在7号楼建议9:20左右到达。需要加班主任段老师的微信她会负责安排学生的位置。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "合同",\n "answer": "当前的合同是3个月的签署合同等后面补齐差价后会再转换成系统班的合同。"\n },\n {\n "intents": "报名流程",\n "answer": "在十月中下旬需要补交15000元的差价。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "3D角色建模",\n "answer": "纪年ovo这里是关于3D角色建模的相关介绍。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "报到流程",\n "answer": "用户到达公司楼下后,销售指示直接上三楼办理手续,然后再去段老师那边。用户确认收到指令。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "预约参观",\n "answer": "用户询问学校在几楼,销售确认用户还在学校。"\n }\n ]\n}', '{\n "qa_pairs": []\n}', '{\n "qa_pairs": [\n {\n "intents": "3D场景建模",\n "answer": "场景建模专业课程,主要面向场景建模方向的学生,学习目的包括校招和就业。例如:学员聂萌(视传专业,本科,邵阳学院大四,学习目的校招,方向场景建模)和学员吴宇杭(计算机动画制作专业,中专,四川省宜宾市职业技术学校,学习目的就业,方向场景)。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "3D场景建模",\n "answer": "UE5是强大的引擎工具可用于特效、开发和模型搭建。对于美术方向推荐UE场景模型适合业余爱好且可作为副业。场景建模课程学习3dmax、maya、zbrush、sp、八猴渲染器、ue5、ps等软件分为四个阶段枪械道具、车辆载具硬表面、单体建筑物、UE场景。课程针对就业从基础到进阶学完有推荐就业。线上课程价格为13800元。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "课程咨询",\n "answer": "用户坐标深圳意向学习游戏设计线上课程希望了解机构推荐联系方式为电话17796303493和微信号gcs06151121。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "线上直播教学",\n "answer": "线上网课周期为8-10个月费用为13800元每周上课2-3次时间为晚上7点半到9点半采用直播形式直播结束后会提供录播回放有老师答疑并且推荐就业。"\n },\n {\n "intents": "兴趣/提升班",\n "answer": "如果只是作为兴趣爱好而非专业就业方向,建议可以只看网上的免费教程即可。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "学习模式",\n "answer": "你目前正在参加线下集中训练课程强度较高晚上8点才结束。虽然会累一点但能跟得上进度就不错学习就是要先苦后甜。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "课程咨询",\n "answer": "我们目前没有单独针对AI的课程但建模课和二次元原画课后期都会涉及AI相关的内容。教学重点是结合AI和制作思路方法来学习因为AI只是一个工具我们可以通过它来做出对应的作品。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "就业咨询",\n "answer": "技术岗就业都是需要通过考核才可以的。不然成了交钱买工作了。哪里学习技能也不可能有这样的承诺呀国家都管不了的就业事情,哪个机构敢保就业。"\n }\n ]\n}', '{\n "qa_pairs": []\n}', '{\n "qa_pairs": [\n {\n "intents": "课程咨询",\n "answer": "用户表示大概率会报名课程,销售员容容老师回应认可,并感谢销售员邓老师的帮助,邓老师也礼貌回应表示这是自己的业绩。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "校区分布",\n "answer": "您好,我们目前在上海有线下校区。虽然您考虑郑州线下,但建议您来上海学习,因为大厂都在上海,在上海学习才能学到真正的东西。"\n }\n ]\n}', '{\n "qa_pairs": []\n}', '{\n "qa_pairs": [\n {\n "intents": "课程咨询",\n "answer": "家长您好呀,之前试听课有发给孩子看一下不?孩子还没看,这几天出去和同学玩了。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "3D角色建模",\n "answer": "用户是新疆艺术学院雕塑系即将大四的学生,对原画和角色模型感兴趣,销售引导其关注角色模型方向。用户表示想学一个暑假班,但担心开学后时间不多,销售推荐了线上课程,并发送了试听课和报价。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "电脑配置",\n "answer": "用户反馈电脑上的3Dmax 2024版一直卡顿并且上周承诺本周更换版本但未兑现。销售表示会与班主任沟通安排IT老师协助处理。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "课程咨询",\n "answer": "用户表示家人说以后再报,目前是大二学生,开学大二。销售询问是否有校招想法,并告知学生基本上都是和用户一样大的,用户表示需要会再找销售。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "校区分布",\n "answer": "第九联盟线下校区在上海、西安、青岛,广州没有校区。"\n },\n {\n "intents": "3D场景建模",\n "answer": "场景建模线下课程费用为36800元线上为13800元。线下为周一到周五全日制上课上午九点半到下午六点需要在校区中午12点到1点半有午休晚上可自习到十一点周末无课程但学生可指纹进入校区自习。线上课程时间主要在晚上教学案例与线下可能略有区别但流程一致。线下场景班最近开班时间为本月初下个月底也有新班。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "3D角色建模",\n "answer": "角色建模线上职业班费用为13800元课程为一周三次直播课时间在晚上7:30-9:30每次两小时时长约8个月。每节直播会生成录播可回看课程采用学练考结合方式每周有课后练习并批改指导考核为作品集老师会指导和评分。课程针对0基础到入行的系统职业班。"\n },\n {\n "intents": "就业咨询",\n "answer": "课程属于就业班会统一签署就业协议包括作品集服务、面试模拟、简历指导、企业内推以及校招和社招辅导。公司本身是游戏公司点晴科技承接大厂项目合作企业包括腾讯、网易、米哈游、莉莉丝、叠纸等。校招有两季3-5月春招和8-11月秋招明年结束前有补录机会。"\n }\n ]\n}', '{\n "qa_pairs": []\n}', '{\n "qa_pairs": []\n}', '{\n "qa_pairs": [\n {\n "intents": "预约参观",\n "answer": "用户表示当天无法到访,需要过几天后再联系销售。销售回复好嘞,表示理解。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "课程咨询",\n "answer": "我们线上和线下都是有的纯线上的话13800线下的价格是36800。"\n },\n {\n "intents": "3D场景建模",\n "answer": "场景地编的课程上手不难,岗位需求也大,咱们会学习到在游戏动画里面的道具,汽车枪械,单体建筑物,山石崖壁和植被雕刻等等的内容。如果担心就业和上手难度的话,选择场景方向是最稳妥的。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "报到流程",\n "answer": "用户将于明天下午3点到达虹桥销售已告知其直接前往报到地点。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "课程咨询",\n "answer": "用户咨询线上Unity 2D开发课程但销售表示主要做UE开发用户表示不考虑并建议互删。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "就业咨询",\n "answer": "用户表示目前考虑就业,销售介绍有就业推荐服务,并询问用户的年龄、学校和专业以了解基本情况。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "课程咨询",\n "answer": "13班的教学老师是吴老师他带出过很多大厂学生。14班的教学老师目前还没有确定。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "就业咨询",\n "answer": "我们的课程都是属于就业班,咱们都是会统一签署就业协议的。包括作品集服务,面试模拟,简历指导和企业内推,校招辅导和社招辅导都有的。"\n },\n {\n "intents": "3D场景建模",\n "answer": "场景模型7个月时间全日制的学习方式早上九点半到下午六点钟。简单好上手的话选择这个方向。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "饭钱",\n "answer": "蔡蔡老师(●°u°●)\u200b 」这是芊芊这个月的饭钱(●°u°●)\u200b 」这周她说家里安排去夏令营,这周都不来(●°u°●)\u200b 」一共309.58。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "就业咨询",\n "answer": "用户因能力达不到公司要求在试用期被公司辞退未获得赔偿。销售建议用户看看秋招补录并表示会先向就业老师咨询补录名额情况。用户认为补录可能不招26届但表示社招也可以能找个小厂干就行。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "交通咨询",\n "answer": "用户因长智齿疼痛询问附近是否有牙科医院,销售推荐去牙防所或三甲医院,并提醒用户牙防所是公立医院,私立医院不建议去。"\n }\n ]\n}', '{\n "qa_pairs": []\n}', '{\n "qa_pairs": [\n {\n "intents": "3D场景建模",\n "answer": "线下场景课程周期是7个月学习3dmax/mayazbrushsp八猴渲染器ue5ps等软件包括预科+正式课道具硬表面单体建筑物ue环境4个阶段费用是36800元。"\n },\n {\n "intents": "作品评估",\n "answer": "往届建模学员作品集已发送,包含校招和社招的作品。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "UE引擎开发",\n "answer": "开发线上跟线下课程是同步进行的是全日制的直播课跟线下是一套课程早上9.30-12.00像学生可能平常有点忙的话我们也有直播后的回放课整理出来然后老师一对一解答线上7个月的课程费用是13800哈相当于线上学习了线下完整的课程哦。学习案例包括从c++开始推箱子贪吃蛇俄罗斯方块魔塔图形学部分黄金旷工3d引擎ue部分2d横版3d密室坦克射击fps联网对战rpgvr数字孪生。主要是学习案例的逻辑功能和代码框架。"\n },\n {\n "intents": "分期付款",\n "answer": "学费一次性哈我们也有支付宝花呗分期有3期6期12期学生自己也可以走信用卡类分期都可以的哈花呗分期的话家长的也可以哦。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "游戏特效",\n "answer": "线下系统班学费在3万左右。特效和地编是完全平行的岗位模型比较好就业岗位量多需求量更大。"\n },\n {\n "intents": "3D场景建模",\n "answer": "地编需要会做模型包括建模和场景搭建配合渲染灯光需要较好的审美能力。地编岗位不多很多公司是模型师转的或招聘有模型经验的。学生学习需要学习场景模型课程会涉及初级内容入行后有项目经验可以再转。线下系统班学费在3万左右。"\n }\n ]\n}', '{\n "qa_pairs": []\n}', '{\n "qa_pairs": [\n {\n "intents": "校园网络",\n "answer": "学校没有WiFi因为是局域网涉及到保密性所以学生不能用WiFi但学生可以使用自己的手机上网。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "就业咨询",\n "answer": "有合格的作品集有就业服务的。我们有就业老师内推就业学习到后期按老师的要求完成了作品我们就会根据学生的需求帮你做企业内推直接跳过HR筛选简历的过程。我们自己项目组有空缺的情况下也会留用学生。"\n },\n {\n "intents": "学习模式",\n "answer": "线上是一周三次课一次2个小时学生练习的话建议是每天。线下我们在上海、西安、青岛都有校区武汉有分公司但目前在做保密项目暂时不对外招生。线下有合作的宿舍学生也可以出去住吃饭可以带饭有冰箱和微波炉周边也有大食堂但住宿不包含在学费内。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "就业咨询",\n "answer": "可以联系就业老师夏老师,她那边有简历模板,可以指导如何写简历。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "报到流程",\n "answer": "带个自己喝水的水杯和笔记本就行,如果有有线耳机的话,可以带个有线耳机,可以插到电脑上的那种。到了之后,先跟他们进去,在那个蓝凳子上坐一下。"\n },\n {\n "intents": "外卖地址",\n "answer": "如果点外卖的话11点就可以点啦地址是上海市徐汇区桂箐路7号华东理工G7科技园区3号楼3楼。学校右转过马路是社区大食堂。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "交通咨询",\n "answer": "从沈杜公路地铁站到学校地铁通勤需要一个小时以上,时间较长。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "课程咨询",\n "answer": "用户表示认可OK未提出具体问题销售未进行介绍。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "作品评估",\n "answer": "作品集需要自己先画出来,然后老师在修改,最后优化成系统的作品集。"\n },\n {\n "intents": "课程咨询",\n "answer": "学美术肯定是越早越好,因为还需要打磨作品,我们学的早的高考完就来啦。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "3D角色建模",\n "answer": "角色建模线上课程8-10个月学习mayazbrushspMDxgen八猴渲染器ps等软件。包括预科+正式课角色道具形体套装风格化完整角色写实完整角色4个阶段。角色模型比较吃美术功底对头部肌肉线条形体等要求较高。"\n },\n {\n "intents": "作品评估",\n "answer": "环艺背景与场景建模贴合,但如果人体美术功底可以的话走角色建模也没问题。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "线上直播教学",\n "answer": "线上职业班一周三次直播课每次两个小时时间是晚上7:30到9:30时长大概8个月左右。建议学生每天花两到三个小时练习。正式课从8月10号开始一周三次课一次两个小时预科阶段一周两次课一次两个小时。"\n },\n {\n "intents": "3D场景建模",\n "answer": "是的场景课程是预科阶段斧子案例8月10号开始正式课案例。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "3D场景建模",\n "answer": "场景线下课程周期是7个月费用是36800元。学习软件包括3dmax/maya、zbrush、sp、八猴渲染器、ue5、ps等课程包括预科+正式课道具、硬表面、单体建筑物、ue环境4个阶段。场景模型比较好入行量也大对美术功底要求较低适合没有美术功底的同学。"\n },\n {\n "intents": "校区分布",\n "answer": "山东有青岛校区地址是山东省青岛市黄岛区长江中路519号建国大厦1604室。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "公司介绍",\n "answer": "第九联盟是点晴科技公司旗下的一个品牌主要是做游戏动漫美术人才孵化的项目。母公司点晴科技成立于10年目前有近700人在游戏美术外包国内规模排名前三。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "退费咨询",\n "answer": "用户因学习压力大想退学退款但销售表示合同已超过7天且合同是从周一签的当天算起需先问领导再决定。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "3D角色建模",\n "answer": "角色建模线上课程需要8-10个月学习maya、zbrush、sp、MD、xgen、八猴渲染器、ps等软件包括预科+正式课角色道具、形体套装、风格化完整角色、写实完整角色4个阶段学费13800元每周三次直播课晚上7:30-9:30每次两小时。线下全日制课程需要7个月学习软件及基础以及商业案例最终成果需出4-5套作品学费36800元。线上结合线下模式按线下收费线上免费赠送。非美术生也可学习学完后有就业老师内推就业服务。"\n },\n {\n "intents": "公司介绍",\n "answer": "第九联盟是点晴科技公司旗下的品牌点晴科技是一家游戏动漫制作公司成立10年目前近700人在游戏美术外包国内规模排名前三与腾讯、网易、米哈游等大厂有合作。公司曾参与多个解禁项目并有央视采访视频。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "3D角色建模",\n "answer": "教孩子角色建模的老师是小栗老师。孩子上课能听懂,现在的案例也不是特别难。"\n }\n ]\n}', '{\n "qa_pairs": []\n}', '{\n "qa_pairs": [\n {\n "intents": "就业咨询",\n "answer": "就业老师已与学生本人沟通,了解到学生面试未通过的原因是新人较多、公司多方面筛选。建议关注秋招补录机会。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "特效",\n "answer": "线上职业班一周三次直播课晚上7.30-9.30一次两个小时时长大概8个月左右。线上是直播+录播+老师解答老师也是总部的老师。纯线上学习8-10个月课程学费是13800元线上课程结束提交作品集审核通过有就业老师内推就业的服务未毕业的大学生有专门的校招群。学费一次性支付支持支付宝花呗分期有3期、6期、12期花呗分期可以用家长的学生自己也可以走信用卡类分期。"\n },\n {\n "intents": "就业咨询",\n "answer": "线上职业班课程结束后,提交作品集审核通过,有就业老师内推就业的服务,未毕业的大学生有专门的校招群。第九联盟有校招辅导内容,内部对接的校招渠道与一些头部研发公司有内部定向合作。就业老师提供线下一对一面对面指导和线上视频连线答疑,提前梳理高频面试问题,帮助提升上岸率。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "课程咨询",\n "answer": "我们这边有原画、模型、动作、特效、开发等多个方向的内容。"\n }\n ]\n}', '{\n "qa_pairs": []\n}', '{\n "qa_pairs": [\n {\n "intents": "UE引擎开发",\n "answer": "我们的学习过程从C++基础开始案例包括推箱子、贪吃蛇、俄罗斯方块、魔塔。图形学部分涉及黄金旷工、3D引擎。UE部分包括2D横版、3D密室、坦克、射击FPS、联网对战RPG、VR、数字孪生。主要是学习案例的逻辑功能和代码框架。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "3D场景建模",\n "answer": "场景线上课程周期是8-10个月学习3dmax/mayazbrushsp八猴渲染器ue5ps等软件包括预科+正式课道具硬表面单体建筑物ue环境4个阶段。环艺跟场景比较贴合。"\n },\n {\n "intents": "就业咨询",\n "answer": "你开学大三的话,其实可以系统学习做作品集尝试看看校招。如果先住学的话后面专升本过了还可以尝试校园招聘。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "提供服务",\n "answer": "学生吃饭费用为309.58元,请转给公司账户,而不是销售个人账户。销售会提供老师的收款码或支付宝账号用于转账。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "试听课",\n "answer": "我们也有试听课的,你有时间的话可以发你去感受看看。"\n }\n ]\n}', '{\n "qa_pairs": []\n}', '{\n "qa_pairs": []\n}', '{\n "qa_pairs": []\n}', '{\n "qa_pairs": [\n {\n "intents": "住宿咨询",\n "answer": "卢非已经退出了原来的宿舍,目前是和班级同学一起在其他宿舍住,宿舍费用单独结算给宿舍公寓负责人。原则上不能再住回原来的宿舍,但如果学生还有意愿,可以再向宿舍老师询问。同时,机构可以推荐正规的中介,也可以帮助学生安排住宿。"\n },\n {\n "intents": "学习反馈",\n "answer": "卢非整体学习状态保持得很不错,特别刻苦,学习没有问题,能跟上课程进度。如有进度落下,机构会及时与家长沟通。"\n }\n ]\n}', '{\n "qa_pairs": []\n}', '{\n "qa_pairs": [\n {\n "intents": "交通咨询",\n "answer": "离公司最近的地铁站是12号线虹漕路地铁站公司附近也有9号线但9号线相对有点距离。公司位置已发送可以按照导航或视频指引来走。"\n },\n {\n "intents": "报到流程",\n "answer": "到公司楼下了上三楼即可,老师会来接。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "大学生扶持计划",\n "answer": "大学生扶持计划的价格是3580元课程是录播形式。"\n }\n ]\n}', '{\n "qa_pairs": []\n}', '{\n "qa_pairs": []\n}', '{\n "qa_pairs": [\n {\n "intents": "3D建模",\n "answer": "建模按照行业岗位划分为角色建模和场景建模。角色建模是做人物设计,比如欧卡风、写实、风格化人物。场景建模是制作道具以及单体建筑,比如刀、枪、斧头、建筑。学习的话,只需要学一个方向,学到专精整理出作品集就可以就业。"\n },\n {\n "intents": "课程咨询",\n "answer": "杭州这边有线下培训您妹妹想做3D建模方向可以了解我们的培训内容和实际上课情况。"\n }\n ]\n}', '{\n "qa_pairs": []\n}', '{\n "qa_pairs": [\n {\n "intents": "提供服务",\n "answer": "用户询问老师是否有口罩,并表示听说二班群里有人得新冠了,需要紧急使用。销售回复说会到公司查看是否有口罩并送过去。用户后续表示自己已购买但尚未送达。销售告知用户,有新冠风险的学生在试听教室,不在用户所在区域,用户所在环境空气流通,相对安全,建议用户先关注自身状况,有问题随时联系。用户询问是否有棉签用于自测,销售表示没有。用户自测后结果为一条杠(阴性),销售告知用户可安心并做好预防。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "公司介绍",\n "answer": "第九联盟开设了场景建模、角色建模、游戏特效、游戏动画、游戏开发几个方向。游戏制作流程是策划师策划流程原画师画出2D原画建模师做三维建模分场景和角色动作设计师给人物动物加上动作设计和骨骼绑定特效师匹配视觉效果开发工程师写代码打包上线。"\n },\n {\n "intents": "就业咨询",\n "answer": "有两位中专院校的学生,一位学场景建模,一位学角色建模,最后都就业了。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "3D场景建模",\n "answer": "场景建模课程有线上和线下两种模式。线上是直播授课有回放老师全天答疑费用为13800元线下是面授形式老师周一到周五全天在教室提供场地和设备教的案例比线上多费用为36800元。线上比较看重学习自律性线下效果会更好。"\n },\n {\n "intents": "游戏制作流程",\n "answer": "游戏各岗位的关系是策划师策划游戏或动画流程原画师根据文字画出2D原画原画师画完后转给建模师做三维建模分场景和角色两个大方向建完模型后到动作设计师处给人物动物等加上动作设计和骨骼绑定然后到特效师处匹配视觉效果如buff特效、攻击特效等最后给开发工程师写好代码打包上线。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "上课地点",\n "answer": "用户王老师告知胡同学带人到达H88并指引上九楼即可。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "班级安排",\n "answer": "学生小邓已被安排在周老师的班级中,周老师会单独关注他的学习进度。后续作品集相关事宜也由周老师跟进。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "大学生扶持计划",\n "answer": "大学生扶持计划课程价格为3580元是录播课程没有就业服务。"\n },\n {\n "intents": "报名流程",\n "answer": "用户报名后,销售会对接班主任老师,用户可以通过班主任老师的微信进行后续课程开通等事宜。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "3D场景建模",\n "answer": "线上场景建模课程费用为13800元课程周期8-10个月学习3dmax/maya、zbrush、sp、八猴渲染器、ue5、ps等软件包括预科案例+正式课道具、载具、单体建筑物、ue环境4个阶段。线上班预科案例一周2节课4-8周正式课8个月一周3节课每节课2小时晚上7点半到9点半直播有回放可永久观看老师答疑服务3年内有效。随到随学最近一期5月20号开新班正式课8月10号开始现正上预科前面直播回放都会提供。有一次免费转新班机会可跟两期案例不同。线上和线下所教知识点一样案例完全不同线上是老师专门为线上同学直播讲课。老师会带着做案例布置作业并点评指导从找素材到制作自己的作品最后提供一对一作品集指导和就业服务。答疑服务和推荐就业不额外收费一次性支付费用后无其他费用。"\n },\n {\n "intents": "实训项目",\n "answer": "线上课程也是用项目案例教学按照项目组规范标准授课规范模型制作流程做出来的作品集符合企业用人标准有对应的企业就业推荐。有学员仅报名线上也拿到了企业offer。鹰角是我们的投资方有合作但有学生因项目组要求不能宣传所以未发朋友圈。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "公司介绍",\n "answer": "点晴科技是我们的母公司从事游戏制作GGAC是一个有影响力的全球动漫美术赛事平台ABOX是一个游戏行业外包平台第九联盟是做游戏美术人才培训的。第九联盟母公司上海点晴科技曾受CCTV2财经频道邀请采访关于国产3A游戏的报道。我们持有办学资质上海线下环境可在线上查看有官方版本和内部录制版本。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "报到流程",\n "answer": "您可以直接上9楼找王浩老师他会给您安排位置。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "课程咨询",\n "answer": "学校里面所教的更多的是偏理论的知识点,跟企业的要求差距大。学校的老师资历深但没有企业实战经验,不清楚企业用人要求,所以教书本内容达不到就业水平,需要出来学习。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "公司介绍",\n "answer": "点晴科技是母公司从事游戏制作GGAC是全球动漫美术赛事平台ABOX是游戏行业外包平台第九联盟是游戏美术人才培训母公司上海点晴科技受CCTV2财经频道邀请采访关于国产3A游戏的报道。"\n },\n {\n "intents": "3D角色建模",\n "answer": "销售介绍了角色建模和场景建模的学生作品和就业访谈。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "课程咨询",\n "answer": "用户询问是否有UI动效方向的课程销售回复目前有的方向是场景建模、角色建模、游戏特效、游戏动画、游戏开发没有UI动效方向。用户又问有没有速成课程销售表示速成不靠谱并提到线上学习周期基本在8到10个月左右。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "3D角色建模",\n "answer": "这是上一期角色建模会讲到的案例,一共是五个阶段。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "上课安排",\n "answer": "家长,学生已经安排进班了,现在正在上课。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "宿舍地址",\n "answer": "宿舍问题,销售到教室门口找用户沟通。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "住宿咨询",\n "answer": "小邓同学右手边的学生王泰来和他一个公寓,可以认识一下,到时候一起回也行。王泰来是四川美院的学生。"\n },\n {\n "intents": "外卖地址",\n "answer": "从内部路出来之后,左手边加油站往左边走,有很多吃饭的地方,可以出来吃,或者点外卖。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "特效",\n "answer": "您可以通过联系销售老师(如第九联盟|晴天老师)咨询特效相关培训课程的报名事宜。"\n },\n {\n "intents": "课程咨询",\n "answer": "家长您好,关于游戏相关的培训课程,您可以联系销售老师(如第九联盟|晴天老师)进行详细咨询和报名。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "就业咨询",\n "answer": "我们这边有女生的就业访谈,她们一般大一大二就开始学,学完之后通过校招的方式去游戏大厂实习。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "课程咨询",\n "answer": "用户是一名家长,正在为高二的孩子咨询游戏设计方面的机构。孩子喜欢游戏并学习画画,但计划走大提琴艺考,上大学后再辅修设计。用户询问了游戏前沿地区(杭州、深圳),以及公司业务范围,并希望了解杭州、上海、深圳哪家机构靠谱。销售确认了用户线索,并指出用户孩子去年高一,今年高二。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "预约参观",\n "answer": "用户表示对3D角色建模方向感兴趣并计划在本周或下周前往学校参观去之前会提前通知销售。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "报名流程",\n "answer": "用户报名3D场景建模线上就业班的流程为首先填写个人信息收集表包括姓名、报名日期、专业、学历、在读/毕业院校、当前大学就读年级、所在城市、出生日期、学习目的、电话、QQ、微信、身份证号码、学习方向等真实信息用于申请合同。然后通过付费链接登录并支付支付时需填写真实姓名并选择容容老师。支付完成后销售会协助办理入学并申请合同。学生需按照合同提示操作并签字。合同签好后需添加班主任火火老师的微信班主任会负责开通课程权限、发送软件链接、拉学习群等后续事宜。销售已将学生对接至下一个班但现阶段可以先跟着当前班级的预科课程学习打基础后续若想进入新班也可以调整。"\n },\n {\n "intents": "上课安排",\n "answer": "用户咨询关于请假和课程安排的问题。销售回复称,已把用户对接至下一个班,但目前可以跟着当前班级的预科课程逐步学习打基础。如果当前班级能跟上,就留在该班;如果后续想进入后面的新班,也可以调整到新班。用户查看当前班级后认为跟不上,销售确认用户已被安排在下一个班,并建议从第一节预科课开始听。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "转介绍规则",\n "answer": "转介绍的有效期是14天过了这个时间就不算转介绍了。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "就业咨询",\n "answer": "就业推荐的企业不是随机的是根据学生情况安排的。校招学生想去哪个企业都可以自由填报和高考志愿填报原理类似。会有就业老师整理招聘信息并提供内推码不限人数学生都可以填报而不是老师规定只能投递某个企业。薪资方面校招进入大研发企业基本起薪10k+校招未进入大企业进入中小企业起薪在5-10K头部企业薪酬更高十几二十几K都有。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "床位安排",\n "answer": "用户宿舍周末来了一个新室友,用户周末不在没见到,用户看到新室友的东西已经搬进来了。销售表示不清楚具体安排,并询问是否已经安排入住。"\n },\n {\n "intents": "交通咨询",\n "answer": "销售建议用户可以趁假期游玩附近城市如苏州、杭州高铁约1小时、南京约2小时、上海但需注意安全并做好攻略。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "试听课",\n "answer": "老师发的体验课需要听一下感觉怎么样。"\n }\n ]\n}', '{\n "qa_pairs": []\n}', '{\n "qa_pairs": [\n {\n "intents": "3D角色建模",\n "answer": "我们各个专业线上的课程都是13800元线上学习周期是8到10个月每周三次课。角色是几个专业中最卷的集合了很多人体基础好的学生如美院的雕塑、油画、造型等专业的学生。角色学习风格化和二次元都要学。"\n },\n {\n "intents": "线上直播教学",\n "answer": "我们支持线上授课。各个专业线上的课程都是13800元线上学习周期是8到10个月每周三次课。动作专业只有线下课程没有线上。线下动作课程学费是36800元6个月全日制。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "交通咨询",\n "answer": "附近有路线图,如果按照导航找不到,可以看看路线图。"\n },\n {\n "intents": "预约参观",\n "answer": "有老师接待,已经和老师打过招呼了,直接上三楼即可。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "3D场景建模",\n "answer": "同学如果还在看模型方向的话老师可以找个试听给你感受一下。2026年场景试听链接https://wangxiao.9artedu.com/#/courses/detail?id=100"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "3D角色建模",\n "answer": "用户表示想了解模型方向,并且之前没有接触过这块内容。"\n }\n ]\n}', '{\n "qa_pairs": []\n}', '{\n "qa_pairs": [\n {\n "intents": "退费咨询",\n "answer": "用户提供了退款所需的银行账户信息,包括账号、开户行、开户姓名、网点号、银行机构代码、网点名称、网点地址和联系电话。销售表示会处理,并通知用户来办手续。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "课程咨询",\n "answer": "线下原画一期课程为6个月费用是31800元地址在上海。线上只有课程回放没有直播课。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "报名流程",\n "answer": "用户王智颖报名日期为2026年7月27日专业数字媒体艺术本科学历就读于重庆城市科技学院大三所在城市重庆学习目的是对该行业感兴趣并希望从事相关工作学习方向为场景建模。销售提供了学费付费链接要求用户登录后退出再点击支付填写姓名并选择容容老师。随后提供了入学合同用户按提示操作提交后销售申请用章并让用户签字。最后销售对接班主任班主任负责学生的日常授课老师负责上课和答疑指导就业老师负责就业的指导和推荐。用户当前学习安排是先跟着前一个班的回放打基础下个月中旬开新班如果跟不上现班可转到新班。"\n },\n {\n "intents": "上课安排",\n "answer": "用户报名后,销售告知用户现阶段先跟着前一个班的回放往前学打基础,下个月中旬会开新班,用户会被放到下一个班。如果用户能跟上当前班就跟,跟不了的话可以到新班,每一期课程案例都不一样,相当于多打一些基础。此外,销售询问用户是否有平板,如果有就可以用平板听课同时用电脑做作品,如果没有就切屏。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "预约参观",\n "answer": "用户计划在8月十几号左右到校参观并表示会在来的前几天提前通知销售。"\n }\n ]\n}', '{\n "qa_pairs": []\n}', '{\n "qa_pairs": [\n {\n "intents": "转介绍规则",\n "answer": "你推荐的学员入学满一个月后我会给你申请转介绍费会有800块。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "游戏特效",\n "answer": "我们没有专门做作品集的课。如果要报提升班需要把作品发给老师看确定按照短期的课程能够学出来才会安排。正常来说线下的全日制课程6个月价格是36800。线上的学习周期是8~10个月是直播课上课时间是每周有三次课每次课两个小时价格是13800。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "寒暑假教学",\n "answer": "林伟同学的学习性质为寒暑假他于2026年7月27日入学学习方向为分镜动画明天需要安排分镜动画的位置。保密培训统一在下周一进行明天可以正常入学。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "3D场景建模",\n "answer": "用户想了解线上场景建模课程学习,销售方已提供课程大纲和公司介绍。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "3D场景建模",\n "answer": "线下场景建模地编课程大纲学习3dmax/mayazbrushsp八猴渲染器ue5ps等软件正式课包括道具硬表面单体建筑物ue地编、植被等阶段。正式课程周期7个月。课程包含场景建模和地编内容两者有相通性。线下ue场景地编班由场景建模资产制作和ue地编课程方向两部分组成。线上场景建模课程周期8-10个月学习软件相同包括预科+正式课道具载具单体建筑物ue环境4个阶段。线上课程费用13800元线下课程费用36800元寒暑假班线上线下结合费用36800元线上课程附赠。线上课案例比线下简单但知识点一致。线上课安排预科一周2节课4-8周正式课8个月一周3节课每节课2小时晚上7点半到9点半直播有回放永久可看老师答疑服务3年内有效。课程结束有作品集辅导和就业推荐包含在费用内。零基础可以学从软件基础开始。"\n },\n {\n "intents": "游戏特效",\n "answer": "线上特效课程学习3dmaxunityueSDps等软件。学习1个来月unity特效7个月ue特效主修ue特效。课程周期8-10个月。线上特效班上课安排预科一周2节课4-6周学习unity特效正式课7个月学习ue特效一周3节课每节课2小时周二、周四、周六晚上7点半到9点半直播有回放永久可看老师答疑服务3年内有效。线上课程费用13800元官方统一定价。课程结束有一对一课程辅导和就业推荐包含在费用内。零基础可以学。特效岗位相比地编更容易找实习但学习难度更大。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "就业咨询",\n "answer": "同学你好,线上和线下都是享有同等的就业推荐服务的。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "游戏特效",\n "answer": "线上特效班上课安排预科一周2节课4-6周学习unity特效。正式课7个月学习ue特效一周3节课每节课2个小时周二、周四、周六晚上都是晚上7点半到9点半直播直播结束有回放回放可以随时反复观看有问题微信班级群里问老师老师在线答疑。课程回放永久可看老师答疑服务3年内都可以。课程周期8-10个月学习3dmaxunityueSDps等软件。学习1个来月unity特效7个月ue特效主修ue特效。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "动作/分镜",\n "answer": "游戏动画课程是线下正式课6个月的学习主要学3dmax、maya等软件先从动画原理与软件基础入门学习后期主要练习掌握人物运动规律作品集制作。动画师比较稀缺课程直接安排到项目组中由一线项目组动画老师带教是实战学习模式而非纯培训教学。上课会以表演形式帮助学生理解人物运动规律。"\n },\n {\n "intents": "校区分布",\n "answer": "线下校区目前在上海,武汉没有培训基地,但有项目分公司点晴科技。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "3D场景建模",\n "answer": "线上场景建模课程学习安排为预科一周2节课共4-8周正式课8个月一周3节课每节课2小时晚上7点半到9点半直播有回放可永久观看老师答疑服务3年内有效。课程周期8-10个月学习3dmax/maya、zbrush、sp、八猴渲染器、ue5、ps等软件包括预科和正式课道具、载具、单体建筑物、ue环境4个阶段。课程费用为13800元一次性缴清无额外收费。课程结束提交作品集审核通过的学生有就业推荐测试面试有专业课老师和教务老师一对一辅导老师也会辅导作品打磨。"\n },\n {\n "intents": "寒暑假教学",\n "answer": "针对在校大学生有线上加线下相结合的寒暑假班学习模式平时在校通过线上直播课程学习暑假到上海校区总部集中学习。寒暑假线下课程周期加起来共7个月大概是三个暑假一个寒假或两个暑假两个寒假的时间。线上加线下学费为36800元纯线下学习课程费用也是36800元。食宿自理住宿由机构统一安排合作公寓费用为1000-1100元一个月。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "就业咨询",\n "answer": "没有保就业这种说法,包就业是不合规的,国家不认可。真正有意义的就业规划是培养好学生的能力,我们提供的是推荐就业和作品集指导,只要作品做得好会尽可能推荐到好的公司。"\n },\n {\n "intents": "就业咨询",\n "answer": "想进腾讯动漫这类大公司社招很难需要3-5年工作经验不招新人。培训班出来的大概率是进外包公司积累经验后再通过社招进大厂。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "线上直播教学",\n "answer": "线上课程有场景建模、角色建模、特效、ue开发4个方向费用均为13800元课程结束提交作品集审核通过的学生有就业推荐。"\n },\n {\n "intents": "就业咨询",\n "answer": "线上课程结束后提交作品集审核通过的学生有就业推荐。"\n }\n ]\n}', '{\n "qa_pairs": []\n}', '{\n "qa_pairs": [\n {\n "intents": "报名流程",\n "answer": "报名流程如下:首先通过官网链接用手机号或微信号注册,注册后退出重新进入,可使用微信支付,若使用浏览器打开则可支付宝支付。缴费通过统一的官方支付链接进行。然后签署电子协议,协议通过企业微信小程序法大大签订,需输入手机号和身份证号提交,再签署姓名,后续出证步骤无需操作。电子协议永久保存,第三方平台可申请出证保护双方权益。最后可获取电子发票。"\n },\n {\n "intents": "寒暑假教学",\n "answer": "学生晏天乐的学习性质为寒暑假入学时间为2026年7月28日学习方向为场景建模地编。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "3D场景建模",\n "answer": "第九联盟的线下校区有上海、西安、青岛三个城市。线下场景建模地编课程学习3dmax/maya、zbrush、sp、八猴渲染器、ue5、ps等软件正式课包括道具、硬表面、单体建筑物、ue地编、植被等阶段正式课程周期7个月。线上场景建模课程周期8-10个月学习软件与线下相同包括预科+正式课道具、载具、单体建筑物、ue环境4个阶段。预科一周2节课4-8周正式课8个月一周3节课每节课2个小时晚上7点半到9点半直播直播结束有回放回放永久可看老师答疑服务3年内都可以。线上课程费用是13800元官方统一定价。课程结束提交作品集审核通过的学生有就业推荐测试面试也有专业课老师和教务老师一对一辅导。有试听课试听链接为https://wangxiao.9artedu.com/#/courses/detail?id=100。对于有基础的学生可以安排进进阶进度学习的班级大概三个月但只有线下才有进阶进度的班。如果不在三个城市寒暑假可以到上海学习。对于国外学生可以考虑线上学习。"\n },\n {\n "intents": "3D角色建模",\n "answer": "线上角色建模课程周期8-10个月学习maya、zbrush、sp、MD、xgen、八猴渲染器、ps等软件包括预科+正式课角色道具、美型角色、二次元角色、写实角色4个阶段。预科一周2节课4-8周正式课8个月一周3节课每节课2个小时晚上7点半到9点半直播直播结束有回放回放永久可看老师答疑服务3年内都可以。线上课程费用是13800元官方统一定价。两个课程都报没有优惠。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "宿舍地址",\n "answer": "宿舍地址是上海市徐汇区田林街道古井路32号。如果早上需要住宿可以直接去这个公寓入住公寓有负责人接待到后说自己是第九联盟的学生负责人会安排入住。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "游戏特效",\n "answer": "线上特效课程周期8-10个月学习3dmax、unity、ue、SD、ps等软件。学习1个来月unity特效7个月ue特效主修ue特效。线上特效班上课安排预科一周2节课4-6周学习unity特效正式课7个月学习ue特效一周3节课每节课2个小时周二、周四、周六晚上7点半到9点半直播直播结束有回放回放可随时反复观看有问题微信班级群里问老师老师在线答疑。课程回放永久可看老师答疑服务3年内都可以。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "校区分布",\n "answer": "我们的线下校区目前是:上海、西安,青岛 三个城市。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "床位安排",\n "answer": "老师发现用户宿舍只有一人居住担心用户孤单提出可以帮用户换到距离学校更近约1.4公里)的宿舍。新宿舍环境和现宿舍一样好,有独立洗衣机,目前空余床位是上铺。用户之前充的水卡和电费可以退,房租也可以退。用户最终表示因为作业忙、六日回家,暂时不搬了,老师表示理解并建议用户添加宿舍老师微信以便后续联系。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "发票开具",\n "answer": "家长您好,孩子这边的报名手续已经办理好了,发票需要下午下班之前开出来给您。"\n },\n {\n "intents": "预约参观",\n "answer": "家长您好请问是今天带着孩子一起过来吗您说15分钟到到了之后我们在三楼您走进大门坐电梯到三楼即可。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "3D场景建模",\n "answer": "线下场景建模地编课程大纲包括学习3dmax/mayazbrushsp八猴渲染器ue5ps等软件正式课包括道具硬表面单体建筑物ue地编、植被等阶段。正式课程周期为7个月。寒暑假场景建模班课程费用是36800元官方统一定价。教学案例线下相对难一些线上的教学案例相对简单一些知识点完全一致。"\n },\n {\n "intents": "寒暑假教学",\n "answer": "我们有一个针对在校大学生的寒暑假班采用线上加线下相结合的学习模式。平时在校期间通过线上直播课程学习寒暑假时到上海校区总部进行线下学习。该班型只针对在校大学生开放线上课程相当于附赠服务。线下寒暑假课程累计上课时间为7个月。"\n }\n ]\n}', '{\n "qa_pairs": []\n}', '{\n "qa_pairs": [\n {\n "intents": "试听课",\n "answer": "在2026年7月27日万老师询问原画试听的学生是否结束确认试听已结束学员试听好了。"\n },\n {\n "intents": "公司介绍",\n "answer": "波总去接学员了,波总不在办公室。"\n }\n ]\n}', '{\n "qa_pairs": []\n}', '{\n "qa_pairs": [\n {\n "intents": "校区分布",\n "answer": "杭州没有校区,线下校区在上海,因为公司本身是一家大型的游戏美术制作实体公司,线下是在项目基地里学习的,没有到处单独只开办培训的。"\n },\n {\n "intents": "3D建模",\n "answer": "用户对3D建模感兴趣销售询问用户是想线上还是线下学习用户倾向线下但杭州没有校区。销售进一步询问用户是在校大学生还是毕业了以及喜欢场景还是角色建模。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "3D角色建模",\n "answer": "你可以自己选择跟角色建模的课程,和周老师讲你是从原画那边过来的,学习一下角色模型。"\n },\n {\n "intents": "2D原画",\n "answer": "原画那边已经排好位置了你明天上午10点到总部这边。原画那边不需要准备什么。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "线上直播教学",\n "answer": "线上课程是在第九联盟官网的pc端进行直播教学报名后线上教务老师会专门对接手机登录也可以观看。课程采用晚上7点半到9点半直播的形式直播结束有回放回放永久可看。老师在线答疑答疑服务3年内有效。"\n },\n {\n "intents": "3D场景建模",\n "answer": "线上场景建模课程周期8-10个月学费13800元学习3dmax/maya、zbrush、sp、八猴渲染器、ue5、ps等软件包括预科+正式课道具、硬表面、单体建筑物、ue环境4个阶段。最近开课时间是8月17号线上每隔3-5个月开一期新班随报随学报名后可以先看老班录播新班开课后再转到新班跟完全部课程且有一次免费转新班的机会。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "考勤打卡",\n "answer": "请假需要在钉钉中申请,并同步告知班主任。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "3D角色建模",\n "answer": "线下角色建模课程学习maya/3dmax、zbrush、sp、MD、xgen、八猴渲染器、ps、ue5正式课包括角色道具、形体套装、风格化完整角色、写实完整角色4个阶段正式课程周期7个月学费36800元。"\n },\n {\n "intents": "就业咨询",\n "answer": "课程结束提交作品集审核通过的学生,我们是有就业推荐的。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "报到流程",\n "answer": "用户到达3楼门口销售确认用户是远中并告知会有老师来接用户进入。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "预约参观",\n "answer": "用户胡婷钰已到达远中校区。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "线上直播教学",\n "answer": "针对孩子目前的情况我们可以让他继续跟着线下教学走但人不在教室通过老师定期发送课程文件录屏、资料的方式学习这些文件需要保密不能外发。等他支教结束约1月左右再回到线下继续完成学习。"\n },\n {\n "intents": "就业咨询",\n "answer": "我们是就业课程,作品需要符合行业制作标准和流程,选案例前需提交老师确认。作品的考核会直接与就业推荐挂钩,作品最终需达到可供推荐工作的效果。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "公司介绍",\n "answer": "点晴科技成立于2013年总部位于上海目前公司总人员近700人在全国设立了6家分公司分别位于武汉、西安、厦门、青岛、合肥、漯河。作为腾讯、网易、UBI、米哈游、盛趣、巨人、游族等知名游戏开发商的核心供应商点晴参与了无数热卖一线大作的美术制作如:王者荣耀、阴阳师、和平精英、荒野行动、第五人格、天涯明月、决战平安京、绝地求生、终结者11、孤岛惊魂...连续3年成为腾讯游戏、网易游戏的最大数字资产、数字内容供应商其数字艺术资产外包平台A BOX累计交易金额近2亿元4万多人参与制作完成超10万多套资产制作。"\n },\n {\n "intents": "就业咨询",\n "answer": "我们有一个专门的校招群学完之后我们会根据你学出来的作品留用在我们公司或推荐就业。就业老师会在群里发各大企业的校招信息和内推码等学完作品出来我们就业老师都会辅助你们写简历、准备作品、面试、谈薪资到就业拿offer的。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "课程咨询",\n "answer": "用户表示想要了解这个行业,并引荐了第九联盟的老师。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "报到流程",\n "answer": "同学到达后,可先在蓝色长椅处等待,老师忙完手头工作后会过去。老师会询问姓名、学校及专业,并确认是否已到校区。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "3D场景建模",\n "answer": "UE美术相关的有场景建模地编和UE特效两个方向。线下场景建模地编课程大纲包括学习3dmax/maya、zbrush、sp、八猴渲染器、ue5、ps等软件正式课包括道具、硬表面、单体建筑物、ue地编、植被等阶段正式课程周期7个月。线下班学费36800元线上班学费13800元。线下食宿费用额外自理上海有宿舍4人间6人间900-1100元/月。"\n },\n {\n "intents": "就业咨询",\n "answer": "一般中等偏下的学生第一份工作6000~9000元之间中等偏上的学生8000~12000元之间。如果对工作期待度很高想要一毕业马上就拿很高的薪资是不太现实的。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "3D场景建模",\n "answer": "线下场景建模地编课程大纲包括学习3Dmax/Maya、ZBrush、SP、八猴渲染器、UE5、PS等软件正式课包括道具、硬表面、单体建筑物、UE地编、植被等阶段正式课程周期7个月学费36800元。食宿费用额外自理有宿舍宿舍费用约900-1100元/月。"\n },\n {\n "intents": "3D角色建模",\n "answer": "线下角色建模课程大纲包括学习Maya/3Dmax、ZBrush、SP、MD、Xgen、八猴渲染器、PS、UE5等软件正式课包括角色道具、形体套装、风格化完整角色、写实完整角色4个阶段正式课程周期7个月。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "课程咨询",\n "answer": "用户是一位准大一学生的家长,希望与老师交流孩子的学习方向和规划,并预约在今晚九点半后进行沟通。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "预约参观",\n "answer": "用户已到达远中校区。"\n }\n ]\n}', '{\n "qa_pairs": []\n}', '{\n "qa_pairs": []\n}', '{\n "qa_pairs": []\n}', '{\n "qa_pairs": [\n {\n "intents": "预约参观",\n "answer": "用户告知销售已到达销售回复让用户来3楼用户确认在三楼后销售表示过来接用户。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "预约参观",\n "answer": "用户已到达远中校区。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "3D场景建模",\n "answer": "别再纠结线上能不能学出来啦咱就是说只要愿意学结果不会差。恭喜线上场景班李同学拿到网易实习offer大写的牛。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "3D角色建模",\n "answer": "3D角色建模课程是CG行业的核心课程之一主要教授使用Maya、ZBrush等软件进行角色建模、雕刻、贴图绘制等技能适合对游戏、影视角色制作感兴趣的学生。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "特效",\n "answer": "线上特效课程周期8-10个月学习3dmax、unity、ue、SD、ps等软件学习1个来月unity特效7个月ue特效主修ue特效。线上特效班上课安排预科一周2节课4-6周周二、周四晚上学习unity特效正式课7个月学习ue特效一周3节课每节课2个小时都是晚上7点半到9点半直播直播结束有回放回放可永久观看有问题微信班级群里问老师老师在线答疑答疑服务3年内有效。学费13800元。线下特效课程正式周期6个月学习3dmax/maya、ue5、unity、SD、ps等软件5个月ue特效课程学习+1个月作品集制作学费36800元。线上线下学习的软件、制作流程、课程阶段一致线上班需要自律。线下总部在上海西安有分公司线上班是上海总部的老师授课。"\n },\n {\n "intents": "上课地点",\n "answer": "线下总部在上海,西安有分公司。线上班是上海总部的老师授课。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "电脑配置",\n "answer": "用户赵老师电脑的盒子没电了打不开已联系IT处理。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "退费咨询",\n "answer": "用户已向宿管老师办理退租,但宿管老师表示退租相关费用由销售方收取。销售方确认用户已办理退租,并建议用户离开线下学习后,可转为线上网课学习,同时销售方表示愿意在用户有作品时,私下帮助联系就业老师进行辅导。"\n }\n ]\n}', '{\n "qa_pairs": []\n}', '{\n "qa_pairs": []\n}', '{\n "qa_pairs": [\n {\n "intents": "报到流程",\n "answer": "用户到达后,销售指导其先上三楼等待,并告知会有老师来找他。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "线上直播教学",\n "answer": "线上有场景建模、角色建模、特效和UE开发四门课程可供选择。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "预约参观",\n "answer": "用户表示已经到达西安校区,并希望参观校区及查看在学同学的作品。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "课程咨询",\n "answer": "老师,这里。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "预约参观",\n "answer": "用户谢斐、逯思含、史天骄三人计划于2026年7月27日下午4点左右前往西安线下参观了解销售已安排西安张老师接待并统一报备预约。"\n },\n {\n "intents": "3D建模",\n "answer": "西安线下有场景建模、角色建模、动作、特效4门课下午4点过去不一定能试听老师可以带你们参观了解如果要试听试学可以再约时间。"\n }\n ]\n}', '{\n "qa_pairs": []\n}', '{\n "qa_pairs": [\n {\n "intents": "上课安排",\n "answer": "特效二班结束时间不固定,学生可根据自己学校开学时间自行决定离校日期。需提前两天找班主任签休学通知单,并对接线上教务老师开通线上班课程。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "调价通知",\n "answer": "用户询问是否涨价目前3D场景建模的费用需要进一步确认。"\n },\n {\n "intents": "3D场景建模",\n "answer": "用户询问3D场景建模的报名费用和试听课以及住宿费用。目前3D场景建模的报名费用需要确认试听课可以发送住宿费用为每月一定金额具体金额需进一步确认。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "调价通知",\n "answer": "不能原价再收单因为调价后所有学生都是统一标准一旦破例会失去信誉也无法向已交36800的学生交代以后价格标准就不好说了。建议跟学生好好说早点报名、早点毕业入行赚钱早一个月毕业差价就回来了。"\n }\n ]\n}', '{\n "qa_pairs": []\n}', '{\n "qa_pairs": [\n {\n "intents": "转介绍规则",\n "answer": "这是一个转介绍的客户是老板朋友的孩子13岁想学二次元原画作为兴趣学习不需要就业可能断断续续学习。对方之前电话沟通过需要安排试听由万老师对接费用上可以打一个小折。孩子已经到店试听家长在楼下咖啡店等待销售回来后需要和家长在大会议室沟通具体安排。"\n },\n {\n "intents": "二次元风格",\n "answer": "有一个13岁的孩子想学二次元原画是兴趣学习不喜欢就业方向只是很喜欢这一块可能断断续续学习。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "发票开具",\n "answer": "发票开具到公司需要提供曹恒睿的在职证明,并加盖公司公章。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "预约参观",\n "answer": "用户表示还没到楼里,并询问老师在哪,需要确认老师的位置或引导用户到达指定地点。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "住宿咨询",\n "answer": "是的,您可以直接去公寓签合同,介绍费会直接抵扣到学费里。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "预约参观",\n "answer": "用户已到达门口。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "预约参观",\n "answer": "用户告知销售赵老师大约二十分钟后到校区,销售回复好的,并告知会与班主任拉群沟通。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "特效",\n "answer": "一位升大三的数媒学弟想了解特效的线上和线下课程他的微信号是xtao-778。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "开课安排",\n "answer": "目前线下课程的开班安排需要结合具体情况确认。用户提到上周才放假,因此具体开班时间需进一步沟通确定。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "3D场景建模",\n "answer": "线上场景建模课程学习3dmax/mayazbrushsp八猴渲染器ue5ps等软件包括预科+正式课道具硬表面单体建筑物ue环境4个阶段。课程周期8~10个月前1-2个月预科每周2节课后8个月正式课每周一、三、五晚上7点半到9点半直播有录播回放可永久查看课程服务周期3年可无理由重修一次学费总价13800元。场景适合新人学习就业方向包括游戏动漫、影视、广告、元宇宙、医疗、消防、航天等行业。"\n },\n {\n "intents": "公司介绍",\n "answer": "第九联盟和点晴是一家的点晴是游戏美术制作公司第九联盟是其100%控股的子公司做CG人才孵化。"\n }\n ]\n}', '{\n "qa_pairs": []\n}', '{\n "qa_pairs": []\n}', '{\n "qa_pairs": [\n {\n "intents": "试听课",\n "answer": "试听课安排在下午2点地点在总部徐汇区桂菁路7号3号楼。如果找不到地方可以拨打联系电话17301891081。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "预约参观",\n "answer": "同学你到远中校区了嘛?同学你这边是迟到明天再来,还是就不来取消了,看到消息了和老师说一下。用户回复:不好意思老师 今天迟到了 可以明天再来吗。销售回复:好的。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "线上直播教学",\n "answer": "线上场景建模8月17号有新班角色建模8月27号有新班。线上基本每隔4-5个月才会开一期新班。"\n },\n {\n "intents": "就业咨询",\n "answer": "近期报名我们线上班的学生名单可以看看大多数大一大二在校生居多。本科生的薪资水平可以达到9000到1.3w。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "报到流程",\n "answer": "同学你到远中校区了嘛?用户已签到。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "3D场景建模",\n "answer": "我们线下课程有场景建模ue地编方向线上也有场景建模课程。线下学习7个月周一到周五上课上午9点半到12点下午1点半到6点。线上学习8-10个月预科案例一周2节课4-8周正式课8个月一周3节课每节课2小时晚上7点半到9点半直播有回放课程回放永久可看老师答疑服务3年内。线下学费36800元线上学费13800元。线下总部在上海西安有分公司青岛分公司在山东省青岛市黄岛区长江中路519号建国大厦。"\n },\n {\n "intents": "就业咨询",\n "answer": "考虑就业的话只要选择一个方向专精学习即可。在我们这里学习的90%是数媒、视传、动画、环艺等美术生相关专业的学生。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "课程咨询",\n "answer": "用户提到他们改学西点,因为能给他们带来大的利益容量,还是利益驱动。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "3D角色建模",\n "answer": "线下角色建模课程周期为8-10个月学习maya、zbrush、sp、MD、xgen、八猴渲染器、ps等软件。包括预科+正式课角色道具美型写实角色二次元角色风格化角色4个阶段。线下角色建模课程大纲包括学习maya/3dmax、zbrush、sp、MD、xgen、八猴渲染器、ps、ue5。正式课包括角色道具、形体套装、风格化完整角色、写实完整角色4个阶段正式课程周期7个月。"\n }\n ]\n}', '{\n "qa_pairs": []\n}', '{\n "qa_pairs": [\n {\n "intents": "预约参观",\n "answer": "用户告知到访时间改为15:30左右销售确认可以。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "垃圾处理",\n "answer": "用户反馈垃圾投放处的指纹识别无法使用显示非法指纹。销售表示已反馈问题会再次联系IT同步处理。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "二次元风格",\n "answer": "二次元原画那边是有位置的但由于里面有一个抑郁症随时可能会自杀的学生万老师担心我们学生进去会引起那个学生的情绪所以暂时不能安排学习。另外李老师带的4个学生中有两个都是有情绪病的不一定有精力带实训生。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "课程咨询",\n "answer": "用户通过了联系人验证,销售主动询问用户是否想了解线上建模课程。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "3D角色建模",\n "answer": "线上角色建模课程周期8-10个月学习mayazbrushspMDxgen八猴渲染器ps等软件。包括预科+正式课角色道具美型写实角色二次元角色风格化角色4个阶段。线上班每隔3~5个月开一期新班随报随学。目前8月27号会开一个新班现在报名会先开通老班课程权限可先看录播学习等开新班后转到新班从头到尾跟一遍8-10个月的课程。线上每一期班级课程案例都不一样不会重复学习报名学生有一次免费转新班的机会。"\n },\n {\n "intents": "开课安排",\n "answer": "线上班每隔3~5个月开一期新班随报随学。目前8月27号会开一个新班。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "公益课程",\n "answer": "绘啦有免费课程,感兴趣可以自学。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "校区分布",\n "answer": "用户已到达远中校区。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "原画就业",\n "answer": "孩子被绘画专业录取如果以后走原画建议尽早开始学习具体的开始时间和作品集产出时长需要根据课程安排和个人进度确定。原画起薪确实相对较低2-3年后随着经验积累工资水平会有显著提升但具体数值因个人能力和市场变化而异。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "报到流程",\n "answer": "王魏然还没到,其他同学都已经到了。陈雅萱明天来。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "预约参观",\n "answer": "同学已经到达远中校区,销售确认同学已到校,准备进行后续安排。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "课程咨询",\n "answer": "您好Firmiana simple请问有什么可以帮助您的"\n }\n ]\n}', '{\n "qa_pairs": []\n}', '{\n "qa_pairs": [\n {\n "intents": "课程咨询",\n "answer": "同学,看到你在官网了解线上学习。主要是不太清楚哪些内容,可以直接与我沟通。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "原画就业",\n "answer": "我们原画没涨价报的话还是31800。"\n }\n ]\n}', '{\n "qa_pairs": []\n}', '{\n "qa_pairs": []\n}', '{\n "qa_pairs": [\n {\n "intents": "预约参观",\n "answer": "您已到达远中校区请前往7号楼3楼参观。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "交通咨询",\n "answer": "1楼大厅沙发后面有电梯坐电梯到3楼来。"\n }\n ]\n}', '{\n "qa_pairs": [\n {\n "intents": "3D场景建模",\n "answer": "抱歉该对话中没有提供关于3D场景建模的课程介绍或用户提问信息。"\n }\n ]\n}']
logger.info(f"总共:{summary_list}")
logger.info(f"识别到意图数量:{len(summary_list)}")
#将意图分类结果进行合并
summary_merged :Dict[str, List[str]] = await self.merge_intents_from_content(summary_list)
logger.info(f"合并后的意图数量:{len(summary_merged)},{summary_merged}")
check_text = TextIntent()
text_extract = TextExtract()
for key, value in summary_merged.items():
# 重排序取最相近的2个
reranked_value:List[str] = await self.rerank_merged_intents(value, key)
# 检查意图, 并返回最匹配的意图
# intent_key: str = await check_text.intent_message(str(reranked_value), key, intent_list)
# logger.info(f"老的意图:{key},新的意图:{intent_key}, value:{reranked_value}")
#
# key = intent_key
reranked_value_tmp: List[str] = []
for answers in reranked_value:
# 文本改写
answer = await text_extract.text_extract(answers)
reranked_value_tmp.append(answer)
reranked_value = reranked_value_tmp
#从milvus中获取
milvus_content = await intent_repo.get_content_by_intent_category(key)
milvus_contents = [item["content"] for item in milvus_content]
milvus_review_contents = [item["review_content"] for item in milvus_content if item.get("review_content")]
print(key,reranked_value, milvus_contents, milvus_review_contents)
# 调用模型 将重排序结构 milvus_content, 标准内容 传给大模型总结优先提取将重排序内容结果然后加milvus_content, 标准内容 总结
new_content = await text_extract.message_extract("\n".join(reranked_value), "\n".join(milvus_review_contents), "\n".join(milvus_contents))
logger.info(f"key[{key}]最新总结:{new_content}")
insert_data = []
insert_data.append({
"intent_category": key,
"content": "\n".join(milvus_contents),
"review_content": new_content,
"content_vector" : [0.0] * 1024
})
if insert_data:
await intent_repo.upsert_intent_data(insert_data)
logger.info(f"key[{key}]入库完成upsert {len(insert_data)}")
logger.info(f"运行结束:{(time.time() - stime)}")
async def intent_message(self, coro_list: List[ArchiveMessages], intent_list:list[str]) -> str:
lines = [
f"{msg.created_at} {msg.from_role}{msg.content}"
for msg in coro_list
if not (msg.msgtype == "voice" and "[语音]" not in msg.content)
]
message_str = "\n".join(lines)
prompt_template = PromptTemplate(template=intent_prompt, input_variables=["message_str","intent_list"])
chain = prompt_template | llm
result = await chain.ainvoke({"message_str": message_str,"intent_list": str(intent_list)})
res_new = str(result.content) if hasattr(
result, 'content') else str(result)
return res_new
async def merge_intents_from_content(self, summary_list:list[str]) -> Dict[str, List[str]]:
merged: Dict[str, List[str]] = {}
for content in summary_list:
json_candidates = self._extract_jsons(content)
for json_str in json_candidates:
try:
data = json.loads(json_str)
qa_pairs = data.get("qa_pairs", [])
for pair in qa_pairs:
intent = pair.get("intents", "")
answer = pair.get("answer", "")
if intent and answer and len(answer) > 6:
if intent not in merged:
merged[intent] = []
merged[intent].append(answer)
except (json.JSONDecodeError, AttributeError):
continue
#logger.info(f"合并完成,共 {len(merged)} 个intent")
return merged
def _extract_jsons(self, content: str) -> List[str]:
results = []
start = 0
while start < len(content):
brace_start = content.find("{", start)
if brace_start == -1:
break
depth = 0
end = brace_start
for i in range(brace_start, len(content)):
if content[i] == "{":
depth += 1
elif content[i] == "}":
depth -= 1
if depth == 0:
end = i + 1
break
if end > brace_start:
results.append(content[brace_start:end])
start = end
else:
start = brace_start + 1
return results
def _calc_completeness_score(self, answer: str, query: str) -> float:
if not answer:
return 0.0
length_score = min(len(answer) / 50.0, 1.0)
punctuations = "。!?!?:;,"
punct_score = 1.0 if any(p in answer for p in punctuations) else 0.0
modal_particles = ["", "", "", "", "", "", ""]
modal_penalty = 0.3 if any(answer.rstrip().endswith(m) for m in modal_particles) else 0.0
unique_ratio = len(set(answer)) / max(len(answer), 1)
diversity_score = min(unique_ratio / 0.4, 1.0)
query_chars = set(query)
answer_chars = set(answer)
overlap = query_chars & answer_chars
keyword_score = min(len(overlap) / max(len(query_chars), 1), 1.0)
score = (
0.30 * length_score
+ 0.20 * punct_score
+ 0.20 * diversity_score
+ 0.20 * keyword_score
- 0.10 * modal_penalty
)
return max(0.0, min(score, 1.0))
def _filter_invalid_answers(self, answers: List[str]) -> List[str]:
modal_particles = ["", "", "", "", "", "", ""]
filtered = []
for a in answers:
if len(a) < 6:
continue
stripped = a.strip()
if not stripped:
continue
if len(stripped) <= 3 and any(stripped.endswith(m) for m in modal_particles):
continue
if len(set(stripped)) < max(2, len(stripped) // 3):
continue
filtered.append(a)
return filtered
async def rerank_merged_intents(self, intent_value: List[str], query: str, top_k: int = 2, max_rerank: int = 20) -> List[str]:
if not intent_value:
return []
filtered = self._filter_invalid_answers(intent_value)
if not filtered:
logger.warning(f"所有答案均被规则过滤,返回原数据前{top_k}")
return intent_value[:top_k]
sorted_by_len = sorted(filtered, key=lambda x: len(x), reverse=True)
rerank_candidates = sorted_by_len[:max_rerank]
if self.reranker is None:
logger.warning("reranker不可用直接返回前top_k条")
return rerank_candidates[:top_k]
pairs = [[query, answer] for answer in rerank_candidates]
try:
scores = self.reranker.compute_score(pairs, normalize=True)
except Exception as e:
logger.error(f"rerank失败: {e}直接返回前top_k条")
return rerank_candidates[:top_k]
if not isinstance(scores, list):
scores = [scores]
final_scores = []
for i, answer in enumerate(rerank_candidates):
rerank_score = scores[i] if i < len(scores) else 0.0
completeness_score = self._calc_completeness_score(answer, query)
fused = 0.7 * rerank_score + 0.3 * completeness_score
final_scores.append((answer, fused, rerank_score, completeness_score))
final_scores.sort(key=lambda x: x[1], reverse=True)
print(final_scores)
result = [item[0] for item in final_scores[:top_k]]
details = ", ".join(
f"'{a[:20]}...'(融合={f:.3f}, rerank={r:.3f},完整={c:.3f})"
for a, f, r, c in final_scores[:top_k]
)
logger.info(f"rerank完成: 过滤前{len(intent_value)}条→过滤后{len(filtered)}条→rerank{len(rerank_candidates)}条→top{top_k}: {details}")
return result
async def build(day:str):
logger.info(f"执行日期:{day}")
db_assistant_mysql_client_manager.init()
embedding_client.init()
milvus_client.init()
try:
async with db_assistant_mysql_client_manager.session_factory() as db_assistant:
archive_messages_repository = ArchiveMessagesRepository(db_assistant)
summary_repository = SummaryRepository()
reranker = get_reranker_model()
service = HistoryIntent(archive_messages_repository, embedding_client, summary_repository, reranker)
await service.get_message_summary(day)
# intent_value: List[str] = ['公司介绍','课程咨询','3D建模','3D场景建模','3D角色建模','2D原画','二次元风格','写实风格','动作/分镜','游戏动作/分镜','开发','UE引擎开发','3D大师课','GGAC绘殓课程','大学生扶持计划','兴趣/提升班','学习模式','线下面授教学','线上直播教学','寒暑假教学','提供服务','优势/竞争力','校区分布','退费咨询','住宿咨询','学不会怎么办','就业咨询','学历咨询']
# pairs = [["场景建模", answer] for answer in intent_value]
#
# scores = reranker.compute_score(pairs, normalize=True)
# print(scores)
finally:
await embedding_client.close()
await db_assistant_mysql_client_manager.close()
milvus_client.close()
if __name__ == '__main__':
start = datetime(2026, 7, 28)
end = datetime(2026, 7, 28)
result = []
temp = start
while temp <= end:
# 按 年-月-日 无补零格式输出
date_format = f"{temp.year}-{temp.month}-{temp.day}"
result.append(date_format)
temp += timedelta(days=1)
for date in result:
asyncio.run(build(date))