SceneSelectorAiAgent.java
2.19 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
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);
}