三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

IntelliQ高级技巧:自定义意图与词槽模板的扩展方法

IntelliQ高级技巧:自定义意图与词槽模板的扩展方法

IntelliQ高级技巧:自定义意图与词槽模板的扩展方法

【免费下载链接】IntelliQAdvanced Multi-Turn QA System with LLM and Intent Recognition. 基于LLM大语言模型意图识别、参数抽取结合slot词槽技术实现多轮问答、NL2API. 打造Function Call多轮问答最佳实践项目地址: https://gitcode.com/gh_mirrors/in/IntelliQ

IntelliQ是一款基于LLM大语言模型意图识别、参数抽取结合slot词槽技术实现多轮问答、NL2API的高级系统,通过自定义意图与词槽模板,用户可以灵活扩展其功能,满足个性化业务需求。

为什么需要自定义意图与词槽模板?

在实际应用中,不同行业、不同业务场景往往需要特定的意图识别和参数提取规则。IntelliQ提供的默认意图和词槽模板可能无法完全覆盖所有业务需求,此时自定义意图与词槽模板就显得尤为重要。通过自定义,用户可以:

  • 实现特定业务场景的精准意图识别
  • 提取业务所需的个性化参数
  • 优化多轮对话流程,提升用户体验

自定义意图的完整步骤

1. 了解意图定义结构

在IntelliQ中,意图定义主要包含keywordsapibusinessKeyslots四个部分,具体结构如下:

{ "keywords": ["关键词1", "关键词2", "关键词3"], "api": "/api/业务接口", "businessKey": "业务标识", "slots": ["参数1", "参数2", "参数3"] }

2. 编辑intentMap.js文件

意图定义文件位于frontend/src/utils/intentMap.js,用户可以在此文件中添加新的意图定义。例如,要添加一个"查询会员积分"的意图,可以按以下方式编辑:

{ "keywords": ["会员积分", "积分查询", "我的积分"], "api": "/api/member_points", "businessKey": "member_points", "slots": ["phone", "member_id"] }

3. 测试意图识别功能

添加完成后,需要测试意图识别是否正常工作。可以通过调用detectIntent函数来验证新添加的意图是否能被正确识别:

import { detectIntent } from './intentMap'; console.log(detectIntent("查询我的会员积分"));

词槽模板的扩展方法

1. 认识词槽模板结构

词槽模板定义了每个意图所需的参数信息,包括参数名称、描述、类型和是否必填等,结构如下:

{ "scene_name": "业务标识", "name": "业务名称", "description": "业务描述", "parameters": [ { "name": "参数名称", "desc": "参数描述", "type": "参数类型", "required": true/false } ], "enabled": true }

2. 修改scene_templates.json文件

词槽模板文件位于scene_config/scene_templates.json,用户可以在此文件中为新添加的意图定义词槽模板。例如,为"会员积分查询"意图添加词槽模板:

{ "scene_name": "member_points", "name": "会员积分查询", "description": "查询会员积分信息,提交手机号和会员ID。", "parameters": [ { "name": "member_id", "desc": "会员ID", "type": "string", "required": true } ], "enabled": true }

3. 配置通用字段

scene_templates.json文件的common_fields部分,可以定义所有意图都可能用到的通用字段,如手机号:

"common_fields": [ {"name": "phone", "desc": "手机号,必须是11位数字", "type": "string", "required": true} ]

多轮对话流程设计

IntelliQ的核心优势在于支持多轮对话,通过词槽技术实现参数的逐步收集。下面是一个多轮对话流程的示意图:

1. 词槽填充逻辑

frontend/src/utils/businessBot.js文件中,handleBusinessInput函数实现了词槽填充逻辑。当用户输入不完整时,系统会自动识别缺失的参数并提示用户补充:

export async function handleBusinessInput({ input, slotValues = {}, mockSlots, intent: currentIntent }) { const intent = currentIntent || detectIntent(input); if (!intent || !intent.api) return { type: 'faq', text: '未识别到业务意图' }; // 词槽填充逻辑... }

2. 自定义提示语

用户可以在scene_config/scene_prompts.py文件中自定义词槽查询的提示语,优化用户体验:

slot_query_user = """你是一个专业的客服。根据用户输入和需要查询的槽位信息,友好地向用户询问缺失的信息。 槽位信息:{0} 用户输入:{1} 请用自然语言回复,不要使用任何Markdown格式。"""

实际应用示例

场景:添加"查询会员等级"意图

  1. frontend/src/utils/intentMap.js中添加意图定义:
{ "keywords": ["会员等级", "等级查询", "我的等级"], "api": "/api/member_level", "businessKey": "member_level", "slots": ["phone", "member_id"] }
  1. scene_config/scene_templates.json中添加词槽模板:
{ "scene_name": "member_level", "name": "会员等级查询", "description": "查询会员等级信息,提交手机号和会员ID。", "parameters": [ { "name": "member_id", "desc": "会员ID", "type": "string", "required": true } ], "enabled": true }
  1. 测试效果:

用户输入:"查询我的会员等级"

系统回复:"请提供您的会员ID"

用户输入:"123456"

系统回复:"您的会员等级为:钻石会员"

总结

通过自定义意图与词槽模板,IntelliQ可以灵活适应各种业务场景,为用户提供更加精准、高效的多轮问答服务。掌握这些高级技巧,将帮助您充分发挥IntelliQ的潜力,打造个性化的智能问答系统。

希望本文对您有所帮助,如有任何问题,欢迎查阅项目文档或提交issue。

【免费下载链接】IntelliQAdvanced Multi-Turn QA System with LLM and Intent Recognition. 基于LLM大语言模型意图识别、参数抽取结合slot词槽技术实现多轮问答、NL2API. 打造Function Call多轮问答最佳实践项目地址: https://gitcode.com/gh_mirrors/in/IntelliQ

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

← 返回列表