AI 超级智能体 - 实现敏感词拦截Advisor
实现了自定义常见敏感词拦截Advisor,使用了https://github.com/houbb/sensitive-word 这个插件。
▼text复制代码private static final String DEFAULT_FAILURE_RESPONSE = "用户内容涉及敏感内容,我无法回答。问点其他问题试试呢?"; private int order = 2; public CommonSafeGuardAdvisor() {} @Override public ChatClientResponse adviseCall(ChatClientRequest chatClientRequest, CallAdvisorChain callAdvisorChain) { String userMessages = chatClientRequest.prompt().getUserMessage().getText(); boolean IsContains = SensitiveWordHelper.contains(userMessages); if(IsContains) { return createFailureResponse(chatClientRequest); } ChatClientResponse chatClientResponse = callAdvisorChain.nextCall(chatClientRequest); return chatClientResponse; } @Override public Flux<ChatClientResponse> adviseStream(ChatClientRequest chatClientRequest, StreamAdvisorChain streamAdvisorChain) { String userMessages = chatClientRequest.prompt().getUserMessage().getText(); boolean IsContains = SensitiveWordHelper.contains(userMessages); if(IsContains) { return createFailureResponseFlux(chatClientRequest); } Flux<ChatClientResponse> chatClientResponseFlux = streamAdvisorChain.nextStream(chatClientRequest); return chatClientResponseFlux; } private ChatClientResponse createFailureResponse(ChatClientRequest chatClientRequest) { return ChatClientResponse.builder().chatResponse(ChatResponse.builder().generations(List.of(new Generation(new AssistantMessage(this.DEFAULT_FAILURE_RESPONSE)))).build()).context(Map.copyOf(chatClientRequest.context())).build(); } private Flux<ChatClientResponse> createFailureResponseFlux(ChatClientRequest chatClientRequest) { ChatClientResponse response = ChatClientResponse.builder().chatResponse(ChatResponse.builder().generations(List.of(new Generation(new AssistantMessage(this.DEFAULT_FAILURE_RESPONSE)))).build()).context(Map.copyOf(chatClientRequest.context())).build(); return Flux.just(response); } @Override public int getOrder() { return this.order; } @Override public String getName() { return this.getClass().getSimpleName(); }
评论
问答助学
相关内容
0个评论
全部评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
内容推荐
Day 12✅ 今天做了:vue前端, 了解vue - Nginx - springboot关系⏰ 明天计划:继续搞前端的功能实现
4
🚩JavaD121、某个接口有10个抽象方法和100个具体的实现类,考虑到接口后期可能需要增加方法,设计接口时,通过中间的一个抽象类(适配器抽象类)默认实现或空实现接口(都是使用普通方法),然后具体的100个子类覆写自己想要的方法。后期接口增加方法时,给适配器抽象类增加一个普通方法,第101个具体子类再覆写适配器抽象类的第101个方法。2、抽象方法可以声明为static,错,因为static方法
2
🚩JavaD131、抽象类、继承、多态、接口、内部类,单独每一章节能懂,综合后就似懂非懂2、每一章节重复看视频,还是懂,做综合题,这一遍刷题是对的,再接着刷题是错的。3、死板的知识适合我,灵活的不适合。4、五大山头压着都懵圈了,看来还要多花时间在这五大山头
3
Day 13✅ 今天做了:Vue表单搜索, 搜索栏布局⏰ 明天计划:继续学前端
2
ARTS 0913: 双栈互补实现队列、CIDR 聚合化解路由膨胀与 AI 作弊串通绝非偶然 Bug
1

