Эх сурвалжийг харах

将用户id作为ai核心记忆

Taohongrun 5 сар өмнө
parent
commit
050827d0f1

+ 10 - 3
src/main/java/io/github/qifan777/knowledge/ai/agent/userAgent/UserInfo.java

@@ -31,14 +31,17 @@ public class UserInfo extends AbstractAgent implements Function<UserInfo.Request
     @Override
     public String apply(Request request) {
         System.out.println(request.userName);
+        System.out.println(request.userId);
         return ChatClient.create(chatModel)
                 .prompt()
-                .system(s -> s.text("用户名为{userName},需要查询成绩信息。问题:{query}")
+                .system(s -> s.text("用户名为{userName},用户id为{userId},需要查询成绩信息。问题:{query}")
                         .param("userName", request.userName)
+                        .param("userId", request.userId)
                         .param("query", request.query()))
                 .functions(getFunctions(UserNameFunction.class))
                 .user(userSpec -> userSpec
                         .param("userName", request.userName) // 传递参数
+                        .param("userId", request.userId)
                         .text(request.query()))
                 .call()
                 .content();
@@ -47,7 +50,11 @@ public class UserInfo extends AbstractAgent implements Function<UserInfo.Request
     public record Request(
             @JsonProperty(required = true) @JsonPropertyDescription(value = "用户原始的提问") String query,
             @JsonProperty(required = true)
-            @JsonPropertyDescription("this param is user's name")
-            String userName) {
+            @JsonPropertyDescription("用户名称")
+            String userName,
+            @JsonProperty(required = true)
+            @JsonPropertyDescription("用户id")
+            String userId
+            ) {
     }
 }

+ 5 - 1
src/main/java/io/github/qifan777/knowledge/ai/agent/userAgent/UserNameFunction.java

@@ -37,6 +37,7 @@ public  class UserNameFunction implements Function<UserNameFunction.Request, Int
     public Integer apply(Request request) {
 
         System.out.println(request.userName);
+        System.out.println(request.userId);
         return Db.lambdaQuery(User.class).select().eq(User::getNickname, request.userName).one().getScore();
 
 
@@ -45,6 +46,9 @@ public  class UserNameFunction implements Function<UserNameFunction.Request, Int
 
     public record Request( @JsonProperty(required = true)
                            @JsonPropertyDescription("this param is user's name")
-                           String userName) {
+                           String userName,
+            @JsonProperty(required = true)
+            @JsonPropertyDescription("用户id")
+                    String userId) {
     }
 }

+ 3 - 1
src/main/java/io/github/qifan777/knowledge/ai/message/AiMessageController.java

@@ -107,6 +107,7 @@ public class AiMessageController {
                 .user(promptUserSpec -> {
                     toPrompt(promptUserSpec, aiMessageWrapper.getMessage());
                     promptUserSpec.param("userName", Db.lambdaQuery(User.class).select().eq(User::getId,userId).one().getNickname());
+                    promptUserSpec.param("userId", UserContext.getThreadUserId());
                 })
                 // agent列表
                 .functions(functionBeanNames)
@@ -174,7 +175,8 @@ public class AiMessageController {
         1. 当用户查询我的成绩时,只能查询学生名为{username}的成绩,不能查询其他人的成绩
         2. 其他信息查询需保持客观中立
         3. 查询文档文件时需要严格记住当前用户的角色权限为主任
-        """).createMessage(Map.of( "username", username));
+        4. 用户id为:{userId},请勿要更改,格式为uuid,如fe3d0d7d6eb34eb7a6b7985426cf8af7
+        """).createMessage(Map.of( "username", username,"userId",UserContext.getThreadUserId()));
             spec.text(message.getText());
             return;
         }