113 lines
6.0 KiB
Python
113 lines
6.0 KiB
Python
import asyncio
|
||
from typing import List, Dict, Any
|
||
|
||
from app.repository.milvus.intent_classification_repository import IntentClassificationRepository
|
||
from app.client.embedding_client_manager import embedding_client
|
||
|
||
|
||
INTENT_DATA = {
|
||
"课程内容": [
|
||
"课程针对零基础,涵盖动作设计、场景建模等方向,推荐游戏动画方向,并建议考虑场景建模以规避美术基础劣势。",
|
||
"UE5相关有3门课(场景建模地编、UE特效、UE开发),但'人物动起来'属于动作课,不使用虚幻,用3dmax/Maya,仅线下班,周期6个月,学费31800元。"
|
||
],
|
||
"其他": [
|
||
"课程覆盖游戏设计全流程,特效线上课8-10个月,每周2-3次直播(晚7:30-9:30),提供录播和答疑,费用11800元。特效行业需求大,薪资6000-9000元起,需自身具备制作能力,AI是工具而非替代,可推荐就业。",
|
||
"UE5相关有3门课(场景建模地编、UE特效、UE开发),但'人物动起来'属于动作课,不使用虚幻,用3dmax/Maya,仅线下班,周期6个月,学费31800元。"
|
||
],
|
||
"就业支持": [
|
||
"课程周期8-10个月,当前班级(5月14日开课)预计12月结业。内推渠道包括公司自留岗位和合作企业,就业老师会按学历、技术、城市、薪资匹配,测试流程3-5个工作日,并提供面试辅导。",
|
||
"有专门就业老师负责对接,提供内推服务。"
|
||
],
|
||
"开班时间": [
|
||
"销售邀请用户于6月1日前入班学习,新班将于6.1开课,用户可据此安排时间。",
|
||
"人满即止,七月份班已有两三人。"
|
||
],
|
||
"费用咨询": [
|
||
"第九联盟(点晴科技)提供线上课程11800元/8-10个月和线下课程33800元/6个月全日制,大学生可线上+寒暑假线下结合(按线下收费)。支持包括3年回放和答疑、重读机会,以及简历辅导、模拟面试、测试指导、校招群内推等服务。",
|
||
"课程方案有:31800元/7个月全日制;11800元/8-10个月。"
|
||
],
|
||
"校区地址": [
|
||
"西安有分校区授课;上海总部授课;武汉校区仅做项目(不授课),并非关闭;青岛、厦门、合肥、漯河分公司也仅做项目。",
|
||
"机构名称为第九联盟,地址在漕河泾,是点晴科技旗下品牌,主营游戏动漫美术人才孵化。"
|
||
],
|
||
"退款政策": ['原画对新人要求高,需原创和设计能力,建议造型能力强者考虑角色建模。退款政策:7天无理由全额退款,8-30天退一半,超过30天不退,可休学。', '7天无理由退全款,30天内退一半,之后不退。', '5月27日起7天内可无理由全额退款。'],
|
||
"优惠活动": [
|
||
"是的,如果尾款不连续交满6个月则没有优惠,需补尾款19800元(原价31800元减去已付12000元)。",
|
||
"报名线下班会额外赠送一套线上正式课程,线上课程可让学生在校提前打基础,寒暑假可集中线下学习直接入班。该课程也可以结合线上内容赶时间进度。"
|
||
],
|
||
"报名流程": [
|
||
"两种模式:先线上后补差价转线下,或直接全款预留线下位置。线上课程8-10个月,学费11800元,含直播(每周三次,19:30-21:30)、录播、老师答疑及就业辅导。",
|
||
"需要填写姓名、学历、学校、城市、出生日期、学习目的、联系方式等信息。"
|
||
],
|
||
"报到时间": [
|
||
"建议与家人确定后尽早来。"
|
||
],
|
||
"住宿咨询": [
|
||
"合作宿舍约1000元/月,4/6人间,按空房分配。",
|
||
"不需要,上海有宿舍可选,分4人间和6人间,费用约1000元/月;也可以自行租房,单间费用约2000-3000元/月。"
|
||
],
|
||
"上课方式": ['可寒暑假线下累积学习(7-8个月),在校期间免费开通线上班辅助', '可寒暑假线下累积学习(7-8个月),在校期间免费开通线上班辅助'],
|
||
"职业方向": [
|
||
"动画特效岗适合基础;地编需综合能力,可从模型岗转;TA难度大需美术+代码。课程为6个月线下周一至周五上课,就业方向以游戏行业为主,有学生入职腾讯、网易、米哈游的案例。"
|
||
],
|
||
"课程建议": [
|
||
"动画特效岗适合基础;地编需综合能力,可从模型岗转;TA难度大需美术+代码。课程为6个月线下周一至周五上课,就业方向以游戏行业为主,有学生入职腾讯、网易、米哈游的案例。"
|
||
]
|
||
}
|
||
|
||
|
||
async def insert_intent_data():
|
||
"""
|
||
将意图分类数据入库到Milvus
|
||
"""
|
||
repo = IntentClassificationRepository()
|
||
|
||
repo.create_collection()
|
||
|
||
all_data = []
|
||
all_contents = []
|
||
|
||
for category, contents in INTENT_DATA.items():
|
||
for content in contents:
|
||
all_data.append({
|
||
"intent_category": category,
|
||
"content": content
|
||
})
|
||
all_contents.append(content)
|
||
|
||
print(f"开始向量化 {len(all_contents)} 条内容...")
|
||
vectors = await embedding_client.aembed_documents(all_contents)
|
||
print(f"向量化完成")
|
||
|
||
for i, item in enumerate(all_data):
|
||
item["content_vector"] = vectors[i]
|
||
|
||
ids = await repo.save_intent_data(all_data)
|
||
print(f"入库成功,插入 {len(ids)} 条记录")
|
||
|
||
return ids
|
||
|
||
|
||
async def query_by_category(category: str):
|
||
"""
|
||
根据意图类别查询
|
||
"""
|
||
repo = IntentClassificationRepository()
|
||
results = await repo.search_by_intent_category(category)
|
||
print(f"\n查询 '{category}' 结果:")
|
||
for i, item in enumerate(results):
|
||
print(f" {i+1}. {item.get('content', '')[:50]}...")
|
||
|
||
|
||
async def main():
|
||
print("=== 意图分类数据入库 ===")
|
||
await insert_intent_data()
|
||
|
||
# print("\n=== 查询测试 ===")
|
||
# await query_by_category("课程内容")
|
||
# await query_by_category("就业支持")
|
||
# await query_by_category("费用咨询")
|
||
|
||
|
||
if __name__ == "__main__":
|
||
asyncio.run(main()) |