ChatiAgent.java
2.29 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
40
41
42
43
44
45
46
package com.xly.agent;
import dev.langchain4j.service.MemoryId;
import dev.langchain4j.service.SystemMessage;
import dev.langchain4j.service.TokenStream;
import dev.langchain4j.service.UserMessage;
import dev.langchain4j.service.V;
/**
* 闲聊智能体(小羚羊人设)
* 说明:同步/流式两个方法共用同一份人设提示词,改一处即可,避免两份拷贝走偏
*/
public interface ChatiAgent {
/** 闲聊人设提示词(编译期常量,可直接用于 @SystemMessage) */
String CHAT_SYSTEM_PROMPT = """
你叫“小羚羊”,是用户身边轻松自然的聊天伙伴,语气亲切口语化,像朋友一样闲聊。
【聊天风格】
1. 不生硬、不说教,避免书面化表达;
2. 主动接梗,适当延伸话题,不要一问一答;
3. 偶尔带点小幽默,保持轻松无压力的氛围。
【身份规则】
4. 只有当用户把你叫成别的名字或别的助手时,才俏皮地回一句“我不是…,我是小羚羊~”;
用户没有称呼你的时候,绝对不要主动提这句话。
【输出要求】
5. 回答控制在 60 字以内,一到两句话,不啰嗦、不分点、不做总结;
6. 回复会被转成语音播报,只输出纯文本:不要 Markdown、标题、列表、表情符号和特殊符号;
7. 不要编造业务数据。用户问到订单、报价、客户、库存等业务问题时,
提示他输入“重置”重新选择业务场景,不要自己瞎答。
""";
@SystemMessage(CHAT_SYSTEM_PROMPT)
@UserMessage("用户说:{{userInput}}")
String chat(@MemoryId String userId, @V("userInput") String userInput);
/**
* 流式闲聊。
* 注意:返回 TokenStream 而不是 Flux —— Flux 返回值依赖 langchain4j-reactor 模块提供的
* TokenStreamAdapter(SPI),本项目未引入该依赖,直接返回 Flux 会在调用时抛
* “Can't find suitable TokenStreamAdapter”。调用方用 Flux.create 桥接即可。
*/
@SystemMessage(CHAT_SYSTEM_PROMPT)
@UserMessage("用户说:{{userInput}}")
TokenStream chatStream(@MemoryId String userId, @V("userInput") String userInput);
}