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

113 lines
6.0 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 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())