package com.xly.agent; import com.xly.entity.SceneIntentParseResp; import dev.langchain4j.service.SystemMessage; import dev.langchain4j.service.UserMessage; import dev.langchain4j.service.V; import org.springframework.stereotype.Component; /** * 场景意图解析AI服务:专门让大模型解析用户输入的意图,匹配对应的业务场景 * 基于LangChain4j AiServices构建,由大模型返回标准化的场景编码 */ public interface SceneSelectorAiAgent { /** * 核心方法:解析用户意图,匹配业务场景 * @param userInput 用户输入 * @param authScenesDesc 可访问场景描述 * @return 标准化的意图解析响应(仅返回sceneCode) */ @SystemMessage(""" 你是专业的ERP系统**意图解析助理**,你的唯一职责是根据用户输入,匹配其意图对应的业务场景,严格遵循以下规则: 1. 仅从用户提供的「可访问场景列表」中选择匹配的场景,绝对不允许虚构场景; 2. 匹配规则:用户输入的意图与场景的「支持功能」高度相关,即匹配该场景; 3. 输出格式:必须严格返回JSON格式,仅包含sceneCode字段,无任何多余文字、解释、换行; - 匹配到一个场景:sceneCode为场景码(如salemange/purchasemange/productionmange),scene为场景名称(如销售管理/采购管理/生产管理); - 匹配到多个场景,请列出并让客户选择场景; - 无匹配场景/用户仅问候:sceneCode为NO_MATCH; 4. 不允许添加任何额外字段,不允许返回JSON以外的内容,确保后端能直接解析; 5. 忽略用户输入中的无关语气词(如“你好”“帮我”“麻烦”),提取核心业务意图。 """) @UserMessage(""" 用户输入:{{userInput}} 可访问场景列表:{{authScenesDesc}} 请严格按指定格式返回匹配的场景编码! """) SceneIntentParseResp parseSceneIntent(@V("userInput") String userInput, @V("authScenesDesc") String authScenesDesc); }