首页
/ 从0到1构建Tianji-天机智能体:掌握中文社交场景对话系统开发全流程

从0到1构建Tianji-天机智能体:掌握中文社交场景对话系统开发全流程

2026-04-07 12:54:13作者:柯茵沙

核心价值:破解中文社交场景的AI交互难题

在数字化社交日益频繁的今天,如何让AI理解并适应当代中国复杂的社交礼仪和文化语境,成为智能对话系统开发的关键挑战。Tianji-天机智能体作为专注于中文社交场景的开源项目,通过深度融合大语言模型技术与中国文化特点,为解决人情世故中的沟通难题提供了完整解决方案。

该项目的核心价值体现在三个维度:首先,它构建了一套符合中文社交习惯的对话生成机制,能够根据不同场合(如生日祝福、节日问候)、不同对象(长辈、同事、朋友)动态调整语言风格;其次,提供了从数据构建到模型部署的全栈技术路径,涵盖提示词工程、智能体制作、模型微调等关键环节;最后,项目具备高度可扩展性,开发者可基于现有框架快速定制特定领域的对话系统。

智能体Web交互界面

图1:Tianji-天机智能体Web交互界面,支持角色选择与对话参数调节

技术路径:智能体构建的三阶实施框架

一、技术原理:智能体运行机制解析

Tianji智能体的核心技术架构基于"场景-角色-风格"三维模型,通过以下机制实现精准的社交对话生成:

  1. 场景感知模块:通过自然语言理解技术识别用户输入中的场景关键词(如"生日"、"升职"),触发相应的对话模板库
  2. 角色建模系统:基于社会关系网络理论,构建包含28种典型社交角色的特征向量,实现对话风格的个性化调整
  3. 风格迁移引擎:采用Prompt Engineering技术,将基础回复转换为"小红书"、"严肃"等特定风格,同时保持语义准确性

关键技术突破点在于解决了中文社交特有的语境敏感性问题。与通用对话模型不同,Tianji系统能够理解"敬酒词"需要正式庄重,"朋友间祝福"可以轻松活泼,这种细微的风格差异通过多层级的提示词模板和微调数据实现精准控制。

二、实施指南:从数据到部署的五步法

1. 开发环境配置(🔧 工具准备)

目标:搭建支持模型微调与部署的完整开发环境
操作

# 基础依赖安装
python -m pip install --upgrade pip
pip install modelscope==1.9.5 transformers==4.36.2 streamlit==1.39.0 sentencepiece==0.1.99 accelerate==0.24.1

# 安装Xtuner微调工具包
git clone -b v0.1.18 https://gitcode.com/GitHub_Trending/se/self-llm
cd xtuner && pip install -e '.[all]'

效果:获得支持LoRA微调(一种轻量级参数高效调整技术)和Streamlit Web部署的开发环境

常见问题解决

  • 显存不足:设置MAX_JOBS=2环境变量限制并行编译进程
  • 依赖冲突:使用pip check命令检测并解决包依赖问题
  • 网络问题:配置国内PyPI镜像源加速下载

2. 数据集构建(📊 数据流程)

目标:创建高质量的中文社交场景对话数据集
操作

# 角色列表定义(涵盖家庭、职场、社交等多维度关系)
name_list = ['赵老师', '大舅', '李总', '邻居赵大妈', '导师', '同事']

# 场景列表定义(覆盖传统节日、人生重要时刻等场景)
scenes = ['生日', '春节', '乔迁新居', '工作升职', '康复']

# 风格定义(满足不同表达需求)
styles = {
    "小红书": {
        "style_temple":"小红书风格,每条加入1-2个emoji表情包来增加趣味性",
        "examples": [
            '默念你的名,祝你前途云蒸霞蔚,灿若星河!✨',
            '希望你不用奔赴大海,也能看到春暖花开!💐'
        ]
    },
    "正常": {"style_temple":"正常风格,有礼貌即可"},
    "严肃": {"style_temple":"商业严肃风格,要求用在职场或长辈祝福上"}
}

# 数据生成核心逻辑
def generate_conversation_data(role, scene, style):
    """
    生成特定角色、场景和风格的对话数据
    
    参数:
        role: 对话对象角色
        scene: 社交场景
        style: 语言风格
        
    返回:
        格式化的对话数据字典
    """
    # 1. 构建提示词模板
    prompt = f"针对{role}{scene}场景下,用{style}风格生成祝福"
    
    # 2. 调用基础模型生成对话
    response = base_model.generate(prompt)
    
    # 3. 格式化对话数据
    return {
        "conversation": [
            {"system": f"你是一个送祝福大师,现在需要用{style}风格",
             "input": f"帮我给{role}{scene}祝福",
             "output": response}
        ]
    }

效果:生成包含28种角色、18个场景、3种风格的多元化对话数据集

数据集结构示例

图2:Tianji智能体数据集结构示例,包含多维度社交场景定义

常见问题解决

  • 数据重复:使用deduplicate库基于文本相似度去重
  • 质量参差不齐:通过人工标注构建验证集,过滤低质量样本
  • 场景覆盖不全:采用分层抽样方法确保各场景数据均衡

3. 模型微调(🔬 参数优化)

目标:通过LoRA技术微调基础模型,使其适应中文社交场景
操作

# 微调配置文件核心参数修改
def modify_finetune_config():
    """修改微调配置文件以适应Tianji数据集"""
    # 1. 指定本地模型路径
    config.pretrained_model_name_or_path = "/path/to/internlm2-chat-7b"
    
    # 2. 配置训练数据路径
    config.data_path = "/path/to/tianji-wishes-chinese-v0.1.json"
    
    # 3. 设置评估参数(关键!确保微调效果)
    config.evaluation_freq = 50  # 每50步评估一次
    config.SYSTEM = "你现在是一个送祝福大师,帮我针对不同人和事情、节日送对应的祝福"
    config.evaluation_inputs = ['祝姐姐生日快乐', '祝妹妹谈判顺利','祝大家元宵节快乐']
    
    # 4. 优化训练超参数
    config.max_epochs = 3  # 祝福类任务3轮训练足够
    config.lr = 2e-4  # 学习率设置
    config.batch_size = 4  # 根据显存调整
    
    return config

# 启动微调命令
# xtuner train ./finetune_config.py --deepspeed deepspeed_zero2

效果:模型在保持基础能力的同时,生成符合中文社交习惯的祝福内容

常见问题解决

  • 过拟合:增加weight_decay参数(推荐0.01),使用早停策略
  • 训练不稳定:启用梯度裁剪gradient_clip_val=1.0
  • 显存溢出:使用4-bit量化或梯度检查点技术

4. 模型评估与优化(📈 性能调优)

目标:验证模型在社交场景下的表现并优化生成效果
操作

# 模型转换:将LoRA权重转换为HF格式
xtuner convert pth_to_hf "${SCRIPT_PATH}" "${WEIGHTS_PATH}" "${HF_OUTPUT_DIR}"

# 模型合并:合并基础模型与LoRA权重
xtuner convert merge \
    "${SRC_MODEL_PATH}" \
    "${HF_OUTPUT_DIR}" \
    "${MERGE_OUTPUT_DIR}" \
    --max-shard-size "2GB"

# 交互测试
xtuner chat ./merge \
    --prompt-template internlm2_chat \
    --system "你现在是一个送祝福大师" \
    --temperature 0.7

效果:获得可直接部署的完整模型,生成示例如下:

  • 输入:"祝弟弟工作升职,小红书风格"
  • 输出:"弟弟呀,你的才华如同春日里的花朵,绽放出绚烂的光彩。工作如鱼得水,升职之路顺顺利利,愿你继续闪耀,成为职场的明星!加油哦!🌟🌈"

温度参数对生成效果的影响

图3:不同温度参数对生成概率分布的影响,温度0.7时效果最佳

常见问题解决

  • 生成内容过长:调整max_new_tokens参数控制长度
  • 风格不稳定:增加风格示例数量,优化Prompt模板
  • 重复生成:设置repetition_penalty=1.1惩罚重复内容

5. Web部署(🚀 上线运行)

目标:构建用户友好的Web交互界面
操作

# 安装Streamlit
pip install streamlit==1.39.0

# 启动Web服务
streamlit run ./web_demo.py --server.address 127.0.0.1 --server.port 6006

WebDemo启动日志

图4:Streamlit WebDemo启动日志,显示服务地址与模型加载进度

效果:通过浏览器访问http://127.0.0.1:6006即可使用天机智能体

常见问题解决

  • 端口冲突:使用--server.port指定其他端口
  • 加载缓慢:启用模型缓存--cache-dir参数
  • 界面卡顿:优化前端渲染逻辑,减少不必要的重绘

三、场景落地:核心应用与扩展方案

核心应用场景

Tianji智能体已实现三大类核心应用:

  1. 祝福生成系统:覆盖28种社交角色、18个生活场景,支持3种语言风格

    • 节日祝福:春节、中秋等传统节日定制化祝福
    • 人生时刻:生日、升职、乔迁等重要事件祝福
    • 社交礼仪:敬酒词、感谢语、道歉话术等
  2. 对话风格迁移:实现同一内容在不同风格间的转换

    • 正式场合:商务祝福、职场沟通
    • 非正式场合:朋友间调侃、家庭聚会
    • 网络流行:小红书风格、抖音热梗融合
  3. 文化适应助手:针对不同地域文化特点调整表达方式

    • 地域差异:北方豪爽风格 vs 南方委婉风格
    • 代际差异:与长辈沟通 vs 与晚辈沟通
    • 场合差异:婚礼致辞 vs 丧礼慰问

项目扩展图谱

基于Tianji框架,开发者可通过以下方式扩展功能:

  1. 功能模块组合

    基础模型 + RAG模块 → 知识增强型社交助手
    对话系统 + 语音模块 → 多模态祝福生成器
    微调框架 + 情感分析 → 情绪感知型对话系统
    
  2. 新场景开发

    # 新增"面试话术"场景示例
    interview_scenes = ['自我介绍', '优缺点分析', '职业规划', '薪资谈判']
    interview_roles = ['面试官', '应聘者']
    
    # 扩展数据生成脚本
    for role in interview_roles:
        for scene in interview_scenes:
            generate_interview_data(role, scene)
    
  3. 跨领域迁移

    • 教育领域:师生沟通助手
    • 医疗领域:医患对话指导
    • 销售领域:客户沟通话术生成

学习资源导航

入门级资源

进阶级资源

专家级资源

通过本指南,开发者不仅能够掌握Tianji-天机智能体的完整构建流程,更能深入理解中文社交场景下AI交互系统的设计原则。项目的开源特性和模块化架构为二次开发提供了极大便利,期待社区贡献更多创意场景和优化方案,共同推动中文智能对话技术的发展。

登录后查看全文
热门项目推荐
相关项目推荐