Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
C
ciecc-agent
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wangning
ciecc-agent
Commits
2c8526bc
Commit
2c8526bc
authored
Jan 21, 2026
by
wangning
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix
parent
685caf9a
Show whitespace changes
Inline
Side-by-side
Showing
21 changed files
with
1367 additions
and
252 deletions
+1367
-252
workspace.xml
.idea/workspace.xml
+57
-162
AuthInterceptorConfiguration.java
.../spss/server/agent/auth/AuthInterceptorConfiguration.java
+25
-0
ResponseMessage.java
...ro/spss/server/agent/domain/response/ResponseMessage.java
+0
-9
ChatServiceImpl.java
...pss/server/agent/service/chatService/ChatServiceImpl.java
+3
-3
IntentTool.java
...ava/pro/spss/server/agent/service/handler/IntentTool.java
+6
-0
DataSummaryUtil.java
...ain/java/pro/spss/server/agent/utils/DataSummaryUtil.java
+2
-2
DaAgentMessageMapper.xml
src/main/resources/mybatis/mapper/DaAgentMessageMapper.xml
+0
-0
DaAgentSessionMapper.xml
src/main/resources/mybatis/mapper/DaAgentSessionMapper.xml
+0
-0
ResultMapper.xml
src/main/resources/mybatis/mapper/ResultMapper.xml
+0
-0
0_1.txt
src/main/resources/promptwords/0_1.txt
+221
-76
algo_suggest
src/main/resources/promptwords/algo_suggest
+314
-0
algo_suggest_bak260118
src/main/resources/promptwords/algo_suggest_bak260118
+257
-0
algo_suggest_bak260119
src/main/resources/promptwords/algo_suggest_bak260119
+246
-0
algo_knowledge1.jsonl
src/main/resources/testcases/algo_knowledge1.jsonl
+84
-0
algo_knowledge2.jsonl
src/main/resources/testcases/algo_knowledge2.jsonl
+86
-0
algo_knowledge3.jsonl
src/main/resources/testcases/algo_knowledge3.jsonl
+45
-0
default.jsonl
src/main/resources/testcases/default.jsonl
+9
-0
suggest_algorithm.jsonl
src/main/resources/testcases/suggest_algorithm.jsonl
+1
-0
suggest_algorithm_bak.jsonl
src/main/resources/testcases/suggest_algorithm_bak.jsonl
+11
-0
res1.xlsx
src/main/resources/testcases/test_result/res1.xlsx
+0
-0
result.xlsx
src/main/resources/testcases/test_result/result.xlsx
+0
-0
No files found.
.idea/workspace.xml
View file @
2c8526bc
...
...
@@ -5,139 +5,28 @@
</component>
<component
name=
"ChangeListManager"
>
<list
default=
"true"
id=
"26f8285c-12a3-40dc-b957-23c37b8f3c67"
name=
"Changes"
comment=
""
>
<change
afterPath=
"$PROJECT_DIR$/.gitignore"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/.idea/.gitignore"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/.idea/copilot.data.migration.agent.xml"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/.idea/copilot.data.migration.ask.xml"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/.idea/copilot.data.migration.ask2agent.xml"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/.idea/copilot.data.migration.edit.xml"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/.idea/encodings.xml"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/.idea/misc.xml"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/.idea/vcs.xml"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/pom.xml"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/java/pro/spss/server/agent/Application.java"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/java/pro/spss/server/agent/controller/ChatController.java"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/java/pro/spss/server/agent/controller/SseController.java"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/java/pro/spss/server/agent/controller/TestContoller.java"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/java/pro/spss/server/agent/domain/DTO/TaskDTO.java"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/java/pro/spss/server/agent/domain/constant/AlgoConfig.java"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/java/pro/spss/server/agent/domain/constant/AlgoNameConfig.java"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/java/pro/spss/server/agent/domain/constant/AlgoPromptConfig.java"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/java/pro/spss/server/agent/domain/constant/ChatConstants.java"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/java/pro/spss/server/agent/domain/constant/DeaConstants.java"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/java/pro/spss/server/agent/domain/entity/AIResponse.java"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/java/pro/spss/server/agent/domain/entity/AiChatResponse.java"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/java/pro/spss/server/agent/domain/entity/ChatRequest.java"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/java/pro/spss/server/agent/domain/entity/ChatResponse.java"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/java/pro/spss/server/agent/domain/entity/ComputeResult.java"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/java/pro/spss/server/agent/domain/entity/RecognizeIntentResult.java"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/java/pro/spss/server/agent/domain/entity/UserDataBinding.java"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/java/pro/spss/server/agent/domain/enums/ChatStatusEnum.java"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/java/pro/spss/server/agent/domain/enums/ConversationStateEnum.java"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/java/pro/spss/server/agent/domain/enums/CreateWayEnum.java"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/java/pro/spss/server/agent/domain/enums/IntentStatus.java"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/java/pro/spss/server/agent/domain/enums/MessageType.java"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/java/pro/spss/server/agent/domain/enums/ResponseMessageType.java"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/java/pro/spss/server/agent/domain/enums/ResultCodeEnum.java"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/java/pro/spss/server/agent/domain/enums/RoleType.java"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/java/pro/spss/server/agent/domain/enums/TaskStatusEnum.java"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/java/pro/spss/server/agent/domain/pojo/DaAgentMessage.java"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/java/pro/spss/server/agent/domain/pojo/DaAgentSession.java"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/java/pro/spss/server/agent/domain/pojo/TaskMessage.java"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/java/pro/spss/server/agent/domain/request/RequestParams.java"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/java/pro/spss/server/agent/domain/request/UserChatMessage.java"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/java/pro/spss/server/agent/domain/response/ErrorResponse.java"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/java/pro/spss/server/agent/domain/response/QueryResponse.java"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/java/pro/spss/server/agent/domain/response/ResponseMessage.java"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/java/pro/spss/server/agent/domain/response/Result.java"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/java/pro/spss/server/agent/domain/response/ResultWrapper.java"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/java/pro/spss/server/agent/domain/response/TokenResponse.java"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/java/pro/spss/server/agent/exception/BaseException.java"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/java/pro/spss/server/agent/exception/InvalidTokenException.java"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/java/pro/spss/server/agent/exception/SampleException.java"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/java/pro/spss/server/agent/exception/SimpleException.java"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/java/pro/spss/server/agent/exception/ToolExecutionException.java"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/java/pro/spss/server/agent/mapper/DaAgentMessageMapper.java"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/java/pro/spss/server/agent/mapper/DaAgentSessionMapper.java"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/java/pro/spss/server/agent/mapper/ResultMapper.java"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/java/pro/spss/server/agent/service/chatCore/ChatApiConfig.java"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/java/pro/spss/server/agent/service/chatCore/ChatHelper.java"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/java/pro/spss/server/agent/service/chatCore/ChatModelClient.java"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/java/pro/spss/server/agent/service/chatService/BaseChatService.java"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/java/pro/spss/server/agent/service/chatService/ChatServiceImpl.java"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/java/pro/spss/server/agent/service/feign/TaskServiceClient.java"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/java/pro/spss/server/agent/service/handler/ConversationHandler.java"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/java/pro/spss/server/agent/service/handler/ConversationSupport.java"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/java/pro/spss/server/agent/service/handler/IntentHandlerRegistry.java"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/java/pro/spss/server/agent/service/handler/IntentTool.java"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/java/pro/spss/server/agent/service/handler/tools/AlgoExecutorHandler.java"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/java/pro/spss/server/agent/service/handler/tools/DefaultHandler.java"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/java/pro/spss/server/agent/service/handler/tools/IntentStateHandler.java"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/java/pro/spss/server/agent/service/handler/tools/SmartChatTool.java"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/java/pro/spss/server/agent/service/handler/tools/SuggestIntentHandler.java"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/java/pro/spss/server/agent/service/handler/tools/SystemInfoChatTool.java"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/java/pro/spss/server/agent/service/handler/tools/UserAlgoIntentHandler.java"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/java/pro/spss/server/agent/service/messageService/MessageService.java"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/java/pro/spss/server/agent/service/prompt/PromptBuilderService.java"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/java/pro/spss/server/agent/service/sessionService/ChatSessionManager.java"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/java/pro/spss/server/agent/service/sseService/SseService.java"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/java/pro/spss/server/agent/service/sseService/SseServiceImpl.java"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/java/pro/spss/server/agent/service/taskExecutor/TaskExecutor.java"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/java/pro/spss/server/agent/service/taskExecutor/TaskExecutorImpl.java"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/java/pro/spss/server/agent/utils/AgentFileReader.java"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/java/pro/spss/server/agent/utils/AlgoParamAutoGenerator.java"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/java/pro/spss/server/agent/utils/DataSummaryUtil.java"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/java/pro/spss/server/agent/utils/JsonToObjectConverter.java"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/java/pro/spss/server/agent/utils/JsonUtil.java"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/java/pro/spss/server/agent/utils/TxtFileReader.java"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/resources/application-wn.yml"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/resources/application.yml"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/resources/logbackconfig/log-logback-spring.xml"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/resources/mapper/DaAgentMessageMapper.xml"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/resources/mapper/DaAgentSessionMapper.xml"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/resources/mapper/ResultMapper.xml"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/resources/promptwords/0_0.txt"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/resources/promptwords/0_0_0.txt"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/resources/promptwords/0_1.txt"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/resources/promptwords/0_2.txt"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/resources/promptwords/1.txt"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/resources/promptwords/10.txt"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/resources/promptwords/11.txt"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/resources/promptwords/12.txt"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/resources/promptwords/13.txt"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/resources/promptwords/15.txt"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/resources/promptwords/16.txt"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/resources/promptwords/17.txt"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/resources/promptwords/18.txt"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/resources/promptwords/19.txt"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/resources/promptwords/2.txt"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/resources/promptwords/21.txt"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/resources/promptwords/22.txt"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/resources/promptwords/23.txt"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/resources/promptwords/24.txt"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/resources/promptwords/25.txt"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/resources/promptwords/26.txt"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/resources/promptwords/27.txt"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/resources/promptwords/28.txt"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/resources/promptwords/3.txt"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/resources/promptwords/30.txt"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/resources/promptwords/32.txt"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/resources/promptwords/33.txt"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/resources/promptwords/34.txt"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/resources/promptwords/35.txt"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/resources/promptwords/39.txt"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/resources/promptwords/4.txt"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/resources/promptwords/40.txt"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/resources/promptwords/5.txt"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/resources/promptwords/52.txt"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/resources/promptwords/53.txt"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/resources/promptwords/55.txt"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/resources/promptwords/6.txt"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/resources/promptwords/7.txt"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/resources/promptwords/8.txt"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/resources/promptwords/9.txt"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/resources/promptwords/algo_list.txt"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/resources/promptwords/smart_chat.txt"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/java/pro/spss/server/agent/auth/AuthInterceptorConfiguration.java"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/resources/promptwords/algo_suggest"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/resources/promptwords/algo_suggest_bak260118"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/resources/promptwords/algo_suggest_bak260119"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/resources/testcases/algo_knowledge1.jsonl"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/resources/testcases/algo_knowledge2.jsonl"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/resources/testcases/algo_knowledge3.jsonl"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/resources/testcases/default.jsonl"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/resources/testcases/suggest_algorithm.jsonl"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/resources/testcases/suggest_algorithm_bak.jsonl"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/resources/testcases/test_result/res1.xlsx"
afterDir=
"false"
/>
<change
afterPath=
"$PROJECT_DIR$/src/main/resources/testcases/test_result/result.xlsx"
afterDir=
"false"
/>
<change
beforePath=
"$PROJECT_DIR$/.idea/workspace.xml"
beforeDir=
"false"
afterPath=
"$PROJECT_DIR$/.idea/workspace.xml"
afterDir=
"false"
/>
<change
beforePath=
"$PROJECT_DIR$/src/main/java/pro/spss/server/agent/domain/response/ResponseMessage.java"
beforeDir=
"false"
afterPath=
"$PROJECT_DIR$/src/main/java/pro/spss/server/agent/domain/response/ResponseMessage.java"
afterDir=
"false"
/>
<change
beforePath=
"$PROJECT_DIR$/src/main/java/pro/spss/server/agent/service/chatService/ChatServiceImpl.java"
beforeDir=
"false"
afterPath=
"$PROJECT_DIR$/src/main/java/pro/spss/server/agent/service/chatService/ChatServiceImpl.java"
afterDir=
"false"
/>
<change
beforePath=
"$PROJECT_DIR$/src/main/java/pro/spss/server/agent/service/handler/IntentTool.java"
beforeDir=
"false"
afterPath=
"$PROJECT_DIR$/src/main/java/pro/spss/server/agent/service/handler/IntentTool.java"
afterDir=
"false"
/>
<change
beforePath=
"$PROJECT_DIR$/src/main/java/pro/spss/server/agent/utils/DataSummaryUtil.java"
beforeDir=
"false"
afterPath=
"$PROJECT_DIR$/src/main/java/pro/spss/server/agent/utils/DataSummaryUtil.java"
afterDir=
"false"
/>
<change
beforePath=
"$PROJECT_DIR$/src/main/resources/application-wn.yml"
beforeDir=
"false"
afterPath=
"$PROJECT_DIR$/src/main/resources/application-wn.yml"
afterDir=
"false"
/>
<change
beforePath=
"$PROJECT_DIR$/src/main/resources/mapper/DaAgentMessageMapper.xml"
beforeDir=
"false"
afterPath=
"$PROJECT_DIR$/src/main/resources/mybatis/mapper/DaAgentMessageMapper.xml"
afterDir=
"false"
/>
<change
beforePath=
"$PROJECT_DIR$/src/main/resources/mapper/DaAgentSessionMapper.xml"
beforeDir=
"false"
afterPath=
"$PROJECT_DIR$/src/main/resources/mybatis/mapper/DaAgentSessionMapper.xml"
afterDir=
"false"
/>
<change
beforePath=
"$PROJECT_DIR$/src/main/resources/mapper/ResultMapper.xml"
beforeDir=
"false"
afterPath=
"$PROJECT_DIR$/src/main/resources/mybatis/mapper/ResultMapper.xml"
afterDir=
"false"
/>
<change
beforePath=
"$PROJECT_DIR$/src/main/resources/promptwords/0_1.txt"
beforeDir=
"false"
afterPath=
"$PROJECT_DIR$/src/main/resources/promptwords/0_1.txt"
afterDir=
"false"
/>
</list>
<option
name=
"SHOW_DIALOG"
value=
"false"
/>
<option
name=
"HIGHLIGHT_CONFLICTS"
value=
"true"
/>
...
...
@@ -155,22 +44,37 @@
<option
name=
"hideEmptyMiddlePackages"
value=
"true"
/>
<option
name=
"showLibraryContents"
value=
"true"
/>
</component>
<component
name=
"PropertiesComponent"
>
{
"
keyToString
"
: {
"
Maven.ciecc-agent [clean].executor
"
:
"
Run
"
,
"
ModuleVcsDetector.initialDetectionPerformed
"
:
"
true
"
,
"
RunOnceActivity.ShowReadmeOnStart
"
:
"
true
"
,
"
RunOnceActivity.TerminalTabsStorage.copyFrom.TerminalArrangementManager.252
"
:
"
true
"
,
"
RunOnceActivity.git.unshallow
"
:
"
true
"
,
"
Spring Boot.Application.executor
"
:
"
Run
"
,
"
git-widget-placeholder
"
:
"
master
"
,
"
kotlin-language-version-configured
"
:
"
true
"
,
"
project.structure.last.edited
"
:
"
Project
"
,
"
project.structure.proportion
"
:
"
0.15
"
,
"
project.structure.side.proportion
"
:
"
0.21954022
"
,
"
settings.editor.selected.configurable
"
:
"
MavenSettings
"
<component
name=
"PropertiesComponent"
>
<![CDATA[{
"keyToString": {
"Maven.ciecc-agent [clean].executor": "Run",
"Maven.ciecc-agent [compile].executor": "Run",
"ModuleVcsDetector.initialDetectionPerformed": "true",
"RunOnceActivity.ShowReadmeOnStart": "true",
"RunOnceActivity.TerminalTabsStorage.copyFrom.TerminalArrangementManager.252": "true",
"RunOnceActivity.git.unshallow": "true",
"Spring Boot.Application.executor": "Run",
"git-widget-placeholder": "master",
"kotlin-language-version-configured": "true",
"last_opened_file_path": "D:/projects/ciecc-agent/src/main/resources/testcases/test_result",
"project.structure.last.edited": "Project",
"project.structure.proportion": "0.15",
"project.structure.side.proportion": "0.21954022",
"settings.editor.selected.configurable": "MavenSettings"
}
}
</component>
}]]>
</component>
<component
name=
"RecentsManager"
>
<key
name=
"CopyFile.RECENT_KEYS"
>
<recent
name=
"D:\projects\ciecc-agent\src\main\resources\testcases\test_result"
/>
<recent
name=
"D:\projects\ciecc-agent\src\main\resources\testcases"
/>
<recent
name=
"D:\projects\ciecc-agent\src\main\resources\promptwords"
/>
<recent
name=
"D:\projects\ciecc-agent\src\main\resources"
/>
<recent
name=
"D:\projects\ciecc-agent\src\main\java\pro\spss\server\agent"
/>
</key>
<key
name=
"MoveFile.RECENT_KEYS"
>
<recent
name=
"D:\projects\ciecc-agent\src\main\resources\testcases"
/>
<recent
name=
"D:\projects\ciecc-agent\src\main\resources\mybatis"
/>
</key>
</component>
<component
name=
"RunManager"
>
<configuration
name=
"Application"
type=
"SpringBootApplicationConfigurationType"
factoryName=
"Spring Boot"
temporary=
"true"
nameIsGenerated=
"true"
>
<option
name=
"FRAME_DEACTIVATION_UPDATE_POLICY"
value=
"UnknownPolicyInFreeMode"
/>
...
...
@@ -210,20 +114,11 @@
<servers
/>
</component>
<component
name=
"XDebuggerManager"
>
<breakpoint-manager>
<breakpoints>
<line-breakpoint
enabled=
"true"
type=
"java-line"
>
<url>
file://$PROJECT_DIR$/src/main/java/pro/spss/server/agent/service/chatService/ChatServiceImpl.java
</url>
<line>
47
</line>
<option
name=
"timeStamp"
value=
"2"
/>
</line-breakpoint>
<line-breakpoint
enabled=
"true"
type=
"java-line"
>
<url>
file://$PROJECT_DIR$/src/main/java/pro/spss/server/agent/service/chatService/ChatServiceImpl.java
</url>
<line>
72
</line>
<option
name=
"timeStamp"
value=
"3"
/>
</line-breakpoint>
</breakpoints>
</breakpoint-manager>
<watches-manager>
<configuration
name=
"SpringBootApplicationConfigurationType"
>
<watch
expression=
"package pro.spss.server.agent.service.taskExecutor; import com.alibaba.fastjson2.JSONArray; import com.alibaba.fastjson2.JSONObject; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import pro.spss.server.agent.domain.DTO.TaskDTO; import pro.spss.server.agent.domain.entity.ComputeResult; import pro.spss.server.agent.domain.enums.ChatStatusEnum; import pro.spss.server.agent.domain.enums.CreateWayEnum; import pro.spss.server.agent.domain.enums.ResponseMessageType; import pro.spss.server.agent.domain.enums.TaskStatusEnum; import pro.spss.server.agent.domain.pojo.TaskMessage; import pro.spss.server.agent.domain.request.RequestParams; import pro.spss.server.agent.domain.response.ResponseMessage; import pro.spss.server.agent.domain.response.Result; import pro.spss.server.agent.mapper.ResultMapper; import pro.spss.server.agent.service.feign.TaskServiceClient; import pro.spss.server.agent.service.sseService.SseService; import pro.spss.server.agent.utils.AlgoParamAutoGenerator; import pro.spss.server.agent.utils.JsonUtil; import pro.spss.server.agent.utils.TxtFileReader; import java.io.File; import java.util.List; @Slf4j @Service public class TaskExecutorImpl implements TaskExecutor { @Autowired private SseService sseService; @Autowired private TaskServiceClient taskServiceClient; @Autowired private ResultMapper resultMapper; @Value("${path.analysis-result}") private String rootPath; @Override public ResponseMessage executeTask(RequestParams requestParams, String token) { // 若参数为空,尝试基于数据概要和算法ID自动生成一份默认参数 if ((requestParams.getParams() == null || requestParams.getParams().isEmpty()) && requestParams.getAlgoId() != null) { JSONArray autoParams = AlgoParamAutoGenerator.generateDefaults(requestParams.getAlgoId(), requestParams.getDataSummary()); if (!autoParams.isEmpty()) { requestParams.setParams(autoParams); log.info("Auto generated default params for algoId={} size={}", requestParams.getAlgoId(), autoParams.size()); } } TaskDTO taskDTO = TaskDTO.builder() .algoId(requestParams.getAlgoId()) .algoName(requestParams.getAlgoName()) .dataId(requestParams.getDataId()) .dataVersionId(requestParams.getDataVersionId()) .createWay(CreateWayEnum.DATA_FIRST) .params(requestParams.getParams()) .build(); taskDTO.setTaskPriority(1);//TODO log.info(taskDTO.toString()); Result taskResult = taskServiceClient.callExec(taskDTO, token); log.info("任务提交结果:{}", taskResult); if (taskResult == null || !taskResult.getSuccess()) { // sseService.sendMessage(Authenticator.currentUserId(), token, ChatStatusEnum.ALGORUNFAILED); ResponseMessage responseMessage = new ResponseMessage(); responseMessage.setCode(ChatStatusEnum.EXECUTOR_FAILED.getCode()); responseMessage.setMessage(ChatStatusEnum.EXECUTOR_FAILED.getMessage() + (taskResult != null && taskResult.getMessage() != null ? taskResult.getMessage() : "")); responseMessage.setResponse(ChatStatusEnum.EXECUTOR_FAILED.getMessage()); responseMessage.setType(ResponseMessageType.RESULT.getType()); // SseServer.sendMessage(token, ChatStatusEnum.ALGORUNFAILED.toResult()); return responseMessage; } // return waitForTaskResult(taskResult, token); } } "
/>
</configuration>
</watches-manager>
</component>
<component
name=
"github-copilot-workspace"
>
<instructionFileLocations>
...
...
src/main/java/pro/spss/server/agent/auth/AuthInterceptorConfiguration.java
0 → 100644
View file @
2c8526bc
package
pro
.
spss
.
server
.
agent
.
auth
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.core.annotation.Order
;
import
org.springframework.web.servlet.config.annotation.InterceptorRegistry
;
import
org.springframework.web.servlet.config.annotation.WebMvcConfigurer
;
import
pro.spss.server.common.interceptor.AuthInterceptor
;
@Configuration
@Order
(
1
)
public
class
AuthInterceptorConfiguration
implements
WebMvcConfigurer
{
@Bean
public
AuthInterceptor
authInterceptor
()
{
return
new
AuthInterceptor
();
}
@Override
public
void
addInterceptors
(
InterceptorRegistry
registry
)
{
registry
.
addInterceptor
(
authInterceptor
())
.
addPathPatterns
(
"/**"
)
.
excludePathPatterns
(
"/swagger-ui/**"
,
"/v3/api-docs/**"
,
"/api-docs.yaml"
);;
}
}
src/main/java/pro/spss/server/agent/domain/response/ResponseMessage.java
View file @
2c8526bc
...
...
@@ -35,13 +35,4 @@ public class ResponseMessage {
public
ResponseMessage
()
{
startTimestamp
=
System
.
currentTimeMillis
();
}
public
String
toJSONString
()
{
ObjectMapper
mapper
=
new
ObjectMapper
();
try
{
return
mapper
.
writeValueAsString
(
this
);
}
catch
(
JsonProcessingException
e
)
{
throw
new
RuntimeException
(
"JSON序列化失败"
,
e
);
}
}
}
src/main/java/pro/spss/server/agent/service/chatService/ChatServiceImpl.java
View file @
2c8526bc
...
...
@@ -9,6 +9,7 @@ import org.springframework.stereotype.Service;
import
pro.spss.server.agent.domain.enums.ChatStatusEnum
;
import
pro.spss.server.agent.domain.enums.ConversationStateEnum
;
import
pro.spss.server.agent.domain.enums.CreateWayEnum
;
import
pro.spss.server.agent.domain.enums.ResponseMessageType
;
import
pro.spss.server.agent.domain.request.RequestParams
;
import
pro.spss.server.agent.domain.request.UserChatMessage
;
import
pro.spss.server.agent.domain.response.ResponseMessage
;
...
...
@@ -79,10 +80,9 @@ public class ChatServiceImpl implements BaseChatService {
return
false
;
}
// 创建会话列表并写入默认系统消息与 RequestParams
chatSessionManager
.
initSession
(
sessionId
,
CreateWayEnum
.
ALGO_FIRST
);
// 通过 SSE 推送初始提示给前端(保持方法返回 void 的行为)
sseService
.
sendMessage
(
sessionId
,
userChatMessage
.
getToken
(),
initPrompt
);
sseService
.
sendMessage
(
ResponseMessageType
.
INIT
.
getType
(),
sessionId
,
userChatMessage
.
getToken
(),
initPrompt
);
return
true
;
}
...
...
src/main/java/pro/spss/server/agent/service/handler/IntentTool.java
View file @
2c8526bc
...
...
@@ -3,6 +3,8 @@ package pro.spss.server.agent.service.handler;
import
com.alibaba.fastjson2.JSONArray
;
import
com.alibaba.fastjson2.JSONObject
;
import
lombok.extern.slf4j.Slf4j
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Service
;
...
...
@@ -39,6 +41,9 @@ public class IntentTool {
@Autowired
private
PromptBuilderService
promptBuilderService
;
private
static
final
Logger
logger
=
LoggerFactory
.
getLogger
(
IntentTool
.
class
);
/**
* 意图识别:聚合系统提示词模板、动态工具清单、最近历史与用户本轮输入,
* 调用大模型返回目标工具名称。默认回退为 "default"。
...
...
@@ -83,6 +88,7 @@ public class IntentTool {
}
}
log
.
info
(
"历史指令条数:{}(已截断为最近{}条或更少)"
,
history
.
size
(),
intentHistoryLimit
);
log
.
info
(
history
.
toJSONString
());
JSONArray
messages
=
new
JSONArray
();
messages
.
add
(
ChatConstants
.
createMessage
(
ChatConstants
.
ROLE_SYSTEM
,
intentPrompt
));
...
...
src/main/java/pro/spss/server/agent/utils/DataSummaryUtil.java
View file @
2c8526bc
...
...
@@ -69,7 +69,7 @@ public class DataSummaryUtil {
sb
.
append
(
"\n"
);
}
// 粗略算法方向建议
/*
// 粗略算法方向建议
boolean hasNumeric = hasType(columnValues, "numeric");
boolean hasCategorical = hasType(columnValues, "categorical");
sb.append("可能适用的算法方向: ");
...
...
@@ -81,7 +81,7 @@ public class DataSummaryUtil {
sb.append("聚类(K均值/层次), 关联规则挖掘, 编码转换(哑编码, 二值化)\n");
} else {
sb.append("文本/灰色模型或需进一步的数据预处理\n");
}
}
*/
return
sb
.
toString
();
}
...
...
src/main/resources/mapper/DaAgentMessageMapper.xml
→
src/main/resources/m
ybatis/m
apper/DaAgentMessageMapper.xml
View file @
2c8526bc
File moved
src/main/resources/mapper/DaAgentSessionMapper.xml
→
src/main/resources/m
ybatis/m
apper/DaAgentSessionMapper.xml
View file @
2c8526bc
File moved
src/main/resources/mapper/ResultMapper.xml
→
src/main/resources/m
ybatis/m
apper/ResultMapper.xml
View file @
2c8526bc
File moved
src/main/resources/promptwords/0_1.txt
View file @
2c8526bc
你的任务是根据用户上传的数据及其分析需求,从算法库中推荐最多10个不同算法供选择。
推荐规则:
- 触发条件:
- 当用户未明确给出算法名称,或明确要求“推荐/推荐算法/推荐一下/给几个算法/给点建议”等时触发推荐流程。
- 若用户已指定具体算法名称(如“用随机森林”“跑ARIMA”),不触发推荐,直接按用户指定处理。
- 场景识别(关键词示例,命中任一即归入对应场景,可多场景并行):
- 预测/回归/时间序列/趋势/销量/价格 → 经济、管理数据预测
- 因果/影响因素/效应/解释变量 → 数据因果关系分析(统计学/机器学习)
- 决策/规则/评分卡/策略 → 决策分析
- 风险/违约/欺诈/不平衡 → 风险评估分析
- 相关/相关性/相关系数 → 数据相关性分析
- 评价/排序/权重/打分/综合评价 → 评价与排序分析
- 投入产出/效率/DEA → 投入产出效率分析
- 聚类/分群/分桶/客户细分 → 数据分群归类
- 降维/可视化/主成分/因子 → 数据降维及可视化
- 差异/显著性/t检验/两组比较 → 数据差异关系分析
- 分布/正态/偏度/峰度 → 数据特征分析
- 数据类型识别提示(用于过滤与排序):
- 若字段中包含明显时间字段(年/季/月/日/时间戳/date/time/period),优先时间序列模型。
- 若目标为连续数值(价格/销量/金额等),优先回归类模型。
- 若目标为离散标签(类别/等级/0-1/好坏/是否),优先分类/判别/排序与决策模型。
- 若未提供监督目标(仅有特征),优先无监督(聚类/降维/相关等)。
- 若算法含有 label(算法分类),将 label 映射到数据类型维度用于筛选与排序:
- 回归模型 → 回归
- 分类模型 → 分类/判别/决策
- 时间序列分析 → 时间序列
- 聚类算法 → 无监督(聚类)
- 降维方法 → 无监督(降维)
- 关联分析 → 相关性
- 统计检验 → 差异/分布检验
- 综合评价 → 评价与排序/效率
- 领域分析 → 领域特定(结合场景关键词)
- 候选集构造:
- 汇总所有命中场景下的算法形成候选集;若未命中任何场景,则不进行默认推荐,直接返回“模糊需求提醒格式”。
- 若用户明确指明期望的算法类别词(如“回归/分类/时间序列/聚类/降维/检验/综合评价/相关/效率”),优先纳入 label 匹配的算法;如命中多个类别,可并行合并候选。
- 排序与截断(从高到低):
1) 关键词强匹配度(标题词>同义词>泛化词)
2) 数据类型匹配度(时间序列/分类/回归/无监督的一致性,可由 label 辅助判断)
3) 复杂度由低到高(线性/统计 → 树/集成 → 核方法 → 神经网络;同一 label 内排序)
4) 多样性打散(避免同类模型扎堆;按 label 打散,默认同一 label 至多返回 2-3 个,随候选规模自适应调整)
- 最多返回前 N 个(N≤10)。若少于10个,则按实际数量返回。
- 输出约束:
- 仅输出“回复格式”定义的 JSON;不追加解释或多余文本。
- options 仅包含算法库中的 name;中文全称需与库中一致。
- params 暂固定为空数组;字段顺序建议为 response、options、params。
- 不在输出中展示 label,当前回复仅输出 name。
- 其它:
- 对极度模糊的输入,先返回“模糊需求提醒格式”以澄清需求,再进行推荐。
回复格式:
推荐回复格式:
## 1. 你的角色
你是一个【算法推荐引擎】。
你的任务只有一件事:
> 根据用户的自然语言需求,
> 从固定算法库中,
> 推荐最多 10 个最合适的算法,
> 并且只能用 JSON 输出结果。
---
## 2. 绝对规则(任何情况下都不能违反)
1. 所有算法名称,必须严格来自算法库的 `name` 字段
2. 不允许改写、翻译、简化、创造算法名
3. 不在算法库中的算法,直接删除
4. 按 `name` 全局去重
5. 不允许输出空字符串算法名
6. 不允许输出重复算法名
7. 除 JSON 外,不允许输出任何文字
8. 无论是正常推荐还是模糊需求,输出都必须是合法 JSON,禁止输出任何非 JSON 文本
---
## 3. 工作流程(只做这四步)
### Step 1:识别业务场景
#### 第一层:关键词硬匹配
从用户描述中,匹配下面这些场景关键词:
##### 1. 预测类场景 → 经济、管理数据预测
关键词:
预测、预估、预判、估计、推测、趋势、走势、发展趋势、未来、时间序列、时序数据、历史数据、回归、拟合、建模、产量预测、销量预测、需求预测、收入预测、价格预测、曲线拟合、趋势外推
##### 2. 因果关系 → 数据因果关系分析(统计 + 机器学习)
关键词:
因果、因果关系、因果分析、影响、作用、效应、影响程度、哪些因素影响、什么影响了、原因、成因、机制、路径、自变量、因变量、解释变量、被解释变量、回归分析、驱动因素分析
规则:因果场景默认合并【统计方法 + 机器学习方法】
##### 3. 决策支持 → 决策分析
关键词:
决策、辅助决策、决策支持、方案选择、选哪个、怎么选、多方案比较、方案优选、最优方案、策略、路径选择、是否可行、可行性分析、投资决策
##### 4. 风险评估 → 风险评估分析
关键词:
风险、风险评估、风险分析、风险等级、风险分类、预警、风险预警、风险控制、违约风险、信用风险、经营风险、损失、失败概率
##### 5. 相关性分析 → 数据相关性分析
关键词:相关、相关性、关系、相关分析、是否有关联、强相关、弱相关、负相关、正相关
##### 6. 评价 / 排序 → 评价与排序分析
关键词:
评价、评估、测评、打分、综合评价、排名、排序、名次、优先级、哪个更好、哪个最优、绩效评价、满意度评价
##### 7. 效率分析 → 投入产出效率分析
关键词:
效率、效能、投入产出、投入产出比、资源利用率、技术效率、规模效率、生产效率、运营效率
##### 8. 分群 / 聚类 → 数据分群归类
关键词:
分群、分组、聚类、聚类分析、用户分群、客户分群、市场细分、分层、相似样本
##### 9. 降维 / 可视化 → 数据降维及可视化
关键词:
降维、维度压缩、指标合成、指标简化、可视化、二维展示、三维展示、降噪、去冗余
##### 10. 差异分析 → 数据差异关系分析
关键词:
差异、差别、不同、是否有差异、是否显著不同、显著性差异、差异检验、对比、比较两组
##### 11. 特征分析 → 数据特征分析
关键词:
分布、分布情况、数据分布、是否正态、正态性、数据形态、数据特征、偏态、峰度
命中一个或多个 → 全部保留。
---
#### 第二层:同义词与业务词归一
先将用户输入做同义词与业务词归一处理,例如:
- “形势、走向、前景、判断未来” → 预测
- “驱动、决定因素” → 因果
- “怎么选、选哪个” → 决策
- “好不好、优不优” → 评价
- “一类一类、人群分层” → 分群
归一后再执行第一层关键词匹配。
---
#### 第三层:语义兜底规则
- 出现:将来、未来、之后、明年、趋势、发展 → 当【预测】
- 出现:导致、使得、因为、所以、对…有什么影响 → 当【因果】
- 出现:选、比较、哪个更、哪个好、优不优 → 当【评价 / 决策】
- 出现:分几类、哪些人相似、一类一类 → 当【分群】
仍未命中任何场景 →
直接输出【模糊需求 JSON 格式】,并结束流程。
---
### Step 2:生成候选算法
1. 从命中的场景中,取出对应算法
2. 合并后去重
3. 如果用户明确说了类型(如:回归、聚类、时间序列、树模型、评价、检验):
- 最终结果中,至少保留 2 个该类型算法
- 如果库中不足 2 个,则全部保留
4. 删除所有不在算法库 `name` 集合中的算法
如果候选算法为空 →
直接输出【模糊需求 JSON 格式】,并结束流程。
---
### Step 3:排序规则(统一打分)
每个算法打分:
- 场景匹配:+50
- 数据类型匹配:
- 完全匹配 +30
- 部分匹配 +15
- 用户显式偏好:+20
按总分从高到低排序。
---
#### 数据类型匹配判定规则
从用户描述中识别数据形态关键词:
##### 1. 时间序列数据
关键词:
时间序列、时序、按时间、按年份、按月份、按季度、历史数据、连续时间、年度数据、月度数据、日数据
→ 匹配算法 `label` 包含:
时间序列分析、领域分析
##### 2. 连续数值型数据
关键词:
数值、连续值、金额、收入、价格、成本、产量、销量、指标值
→ 匹配算法 `label` 包含:
回归模型、领域分析
##### 3. 分类 / 离散型数据
关键词:
分类、类别、是否、等级、风险等级、好坏、通过/不通过、是/否
→ 匹配算法 `label` 包含:
分类模型
##### 4. 多指标综合评价数据
关键词:
多指标、综合、多个维度、权重、打分、评价体系
→ 匹配算法 `label` 包含:
综合评价、降维方法
##### 5. 样本相似性 / 分组数据
关键词:
相似、分群、分组、聚类、市场细分
→ 匹配算法 `label` 包含:
聚类算法
---
#### 完全匹配 / 部分匹配定义
- 若用户数据类型关键词,与算法 `label` 所属类型完全一致 → 完全匹配 +30
- 若业务相关但不完全一致 → 部分匹配 +15
- 无法判断 → 不加分
---
#### 用户显式偏好判定规则
若用户明确点名算法类型或模型风格,视为显式偏好。
##### 1. 明确说出算法类别
如:回归、聚类、时间序列、树模型、神经网络、评价方法、检验方法
→ 若候选算法 `name` 或 `label` 一致 → +20
##### 2. 明确说出模型风格
- “简单 / 可解释” → 回归模型、判别分析、决策树
- “复杂 / 精度优先” → 随机森林、梯度提升树、BP神经网络、自适应增强算法
- “统计方法” → 回归模型、统计检验、因子分析、主成分分析
- “机器学习” → 树模型、集成模型、神经网络
符合风格 → +20
- 每个算法最多加一次显式偏好分
---
## 4. 输出格式(只能二选一)
### 正常推荐
{
"response": "请从以下算法中选择一种:",
"options": ["算法
名称1", "算法名称
2"],
"options": ["算法
1", "算法
2"],
"params": []
}
模糊需求提醒格式:
### 模糊需求
{
"response": "
请补充您的具体分析目标(预测/分类/聚类/相关/因果/效率等),再试:
",
"response": "
您的需求不够明确,请补充您的分析目标是什么
",
"options": [],
"params": []
}
用户输入(无算法指定):
我想做一个预测模型
系统返回:
{
"response": "请从以下算法中选择一种:",
"options": ["最小二乘回归", "岭回归", "套索回归", "多项式回归", "支持向量机回归", "随机森林", "梯度提升树", "BP神经网络"],
"params": []
}
## 5. 固定算法库(仅用于匹配,不对用户展示)
用户输入(只命中少量候选):
做效率评价(有投入产出但数据项不全)
系统返回:
{
"response": "请从以下算法中选择一种:",
"options": ["数据包络分析(BCC)", "数据包络分析(CCR)", "柯布-道格拉斯生产函数"],
"params": []
}
<ALGOLIB>
算法库(按场景分组):
{
"经济、管理数据预测": [
{"name": "最小二乘回归","description": "最小化残差平方和拟合线性关系,广泛用于连续值预测。","label":"回归模型"},
...
...
@@ -111,8 +255,7 @@
{"name": "决策树","description": "可解释的树模型,揭示变量交互与影响路径。","label":"分类模型"},
{"name": "随机森林","description": "多树集成,稳健处理高维与共线性。","label":"分类模型"},
{"name": "自适应增强算法","description": "提升弱学习器性能,适合复杂非线性关系。","label":"分类模型"},
{"name": "梯度提升树","description": "迭代拟合残差,精确刻画非线性与相互作用。","label":"分类模型"},
{"name": "支持向量机分类","description": "最大间隔分类,核方法处理非线性边界。","label":"分类模型"}
{"name": "梯度提升树","description": "迭代拟合残差,精确刻画非线性与相互作用。","label":"分类模型"}
],
"决策分析": [
{"name": "决策树","description": "直观的决策路径与规则提取。","label":"分类模型"},
...
...
@@ -161,9 +304,11 @@
{"name": "主成分分析","description": "将相关变量转化为不相关主成分。","label":"降维方法"}
],
"数据差异关系分析": [
{"name": "t检验","description": "比较两组均值差异的显著性。","label":"统计检验"}
{"name": "
独立样本
t检验","description": "比较两组均值差异的显著性。","label":"统计检验"}
],
"数据特征分析": [
{"name": "正态检验","description": "检验数据是否符合正态分布。","label":"统计检验"}
]
}
</ALGOLIB>
\ No newline at end of file
src/main/resources/promptwords/algo_suggest
0 → 100644
View file @
2c8526bc
## 1. 你的角色
你是一个【算法推荐引擎】。
你的任务只有一件事:
> 根据用户的自然语言需求,
> 从固定算法库中,
> 推荐最多 10 个最合适的算法,
> 并且只能用 JSON 输出结果。
---
## 2. 绝对规则(任何情况下都不能违反)
1. 所有算法名称,必须严格来自算法库的 `name` 字段
2. 不允许改写、翻译、简化、创造算法名
3. 不在算法库中的算法,直接删除
4. 按 `name` 全局去重
5. 不允许输出空字符串算法名
6. 不允许输出重复算法名
7. 除 JSON 外,不允许输出任何文字
8. 无论是正常推荐还是模糊需求,输出都必须是合法 JSON,禁止输出任何非 JSON 文本
---
## 3. 工作流程(只做这四步)
### Step 1:识别业务场景
#### 第一层:关键词硬匹配
从用户描述中,匹配下面这些场景关键词:
##### 1. 预测类场景 → 经济、管理数据预测
关键词:
预测、预估、预判、估计、推测、趋势、走势、发展趋势、未来、时间序列、时序数据、历史数据、回归、拟合、建模、产量预测、销量预测、需求预测、收入预测、价格预测、曲线拟合、趋势外推
##### 2. 因果关系 → 数据因果关系分析(统计 + 机器学习)
关键词:
因果、因果关系、因果分析、影响、作用、效应、影响程度、哪些因素影响、什么影响了、原因、成因、机制、路径、自变量、因变量、解释变量、被解释变量、回归分析、驱动因素分析
规则:因果场景默认合并【统计方法 + 机器学习方法】
##### 3. 决策支持 → 决策分析
关键词:
决策、辅助决策、决策支持、方案选择、选哪个、怎么选、多方案比较、方案优选、最优方案、策略、路径选择、是否可行、可行性分析、投资决策
##### 4. 风险评估 → 风险评估分析
关键词:
风险、风险评估、风险分析、风险等级、风险分类、预警、风险预警、风险控制、违约风险、信用风险、经营风险、损失、失败概率
##### 5. 相关性分析 → 数据相关性分析
关键词:相关、相关性、关系、相关分析、是否有关联、强相关、弱相关、负相关、正相关
##### 6. 评价 / 排序 → 评价与排序分析
关键词:
评价、评估、测评、打分、综合评价、排名、排序、名次、优先级、哪个更好、哪个最优、绩效评价、满意度评价
##### 7. 效率分析 → 投入产出效率分析
关键词:
效率、效能、投入产出、投入产出比、资源利用率、技术效率、规模效率、生产效率、运营效率
##### 8. 分群 / 聚类 → 数据分群归类
关键词:
分群、分组、聚类、聚类分析、用户分群、客户分群、市场细分、分层、相似样本
##### 9. 降维 / 可视化 → 数据降维及可视化
关键词:
降维、维度压缩、指标合成、指标简化、可视化、二维展示、三维展示、降噪、去冗余
##### 10. 差异分析 → 数据差异关系分析
关键词:
差异、差别、不同、是否有差异、是否显著不同、显著性差异、差异检验、对比、比较两组
##### 11. 特征分析 → 数据特征分析
关键词:
分布、分布情况、数据分布、是否正态、正态性、数据形态、数据特征、偏态、峰度
命中一个或多个 → 全部保留。
---
#### 第二层:同义词与业务词归一
先将用户输入做同义词与业务词归一处理,例如:
- “形势、走向、前景、判断未来” → 预测
- “驱动、决定因素” → 因果
- “怎么选、选哪个” → 决策
- “好不好、优不优” → 评价
- “一类一类、人群分层” → 分群
归一后再执行第一层关键词匹配。
---
#### 第三层:语义兜底规则
- 出现:将来、未来、之后、明年、趋势、发展 → 当【预测】
- 出现:导致、使得、因为、所以、对…有什么影响 → 当【因果】
- 出现:选、比较、哪个更、哪个好、优不优 → 当【评价 / 决策】
- 出现:分几类、哪些人相似、一类一类 → 当【分群】
仍未命中任何场景 →
直接输出【模糊需求 JSON 格式】,并结束流程。
---
### Step 2:生成候选算法
1. 从命中的场景中,取出对应算法
2. 合并后去重
3. 如果用户明确说了类型(如:回归、聚类、时间序列、树模型、评价、检验):
- 最终结果中,至少保留 2 个该类型算法
- 如果库中不足 2 个,则全部保留
4. 删除所有不在算法库 `name` 集合中的算法
如果候选算法为空 →
直接输出【模糊需求 JSON 格式】,并结束流程。
---
### Step 3:排序规则(统一打分)
每个算法打分:
- 场景匹配:+50
- 数据类型匹配:
- 完全匹配 +30
- 部分匹配 +15
- 用户显式偏好:+20
按总分从高到低排序。
---
#### 数据类型匹配判定规则
从用户描述中识别数据形态关键词:
##### 1. 时间序列数据
关键词:
时间序列、时序、按时间、按年份、按月份、按季度、历史数据、连续时间、年度数据、月度数据、日数据
→ 匹配算法 `label` 包含:
时间序列分析、领域分析
##### 2. 连续数值型数据
关键词:
数值、连续值、金额、收入、价格、成本、产量、销量、指标值
→ 匹配算法 `label` 包含:
回归模型、领域分析
##### 3. 分类 / 离散型数据
关键词:
分类、类别、是否、等级、风险等级、好坏、通过/不通过、是/否
→ 匹配算法 `label` 包含:
分类模型
##### 4. 多指标综合评价数据
关键词:
多指标、综合、多个维度、权重、打分、评价体系
→ 匹配算法 `label` 包含:
综合评价、降维方法
##### 5. 样本相似性 / 分组数据
关键词:
相似、分群、分组、聚类、市场细分
→ 匹配算法 `label` 包含:
聚类算法
---
#### 完全匹配 / 部分匹配定义
- 若用户数据类型关键词,与算法 `label` 所属类型完全一致 → 完全匹配 +30
- 若业务相关但不完全一致 → 部分匹配 +15
- 无法判断 → 不加分
---
#### 用户显式偏好判定规则
若用户明确点名算法类型或模型风格,视为显式偏好。
##### 1. 明确说出算法类别
如:回归、聚类、时间序列、树模型、神经网络、评价方法、检验方法
→ 若候选算法 `name` 或 `label` 一致 → +20
##### 2. 明确说出模型风格
- “简单 / 可解释” → 回归模型、判别分析、决策树
- “复杂 / 精度优先” → 随机森林、梯度提升树、BP神经网络、自适应增强算法
- “统计方法” → 回归模型、统计检验、因子分析、主成分分析
- “机器学习” → 树模型、集成模型、神经网络
符合风格 → +20
- 每个算法最多加一次显式偏好分
---
## 4. 输出格式(只能二选一)
### 正常推荐
{
"response": "请从以下算法中选择一种:",
"options": ["算法1", "算法2"],
"params": []
}
### 模糊需求
{
"response": "您的需求不够明确,请补充您的分析目标是什么",
"options": [],
"params": []
}
## 5. 固定算法库(仅用于匹配,不对用户展示)
<ALGOLIB>
{
"经济、管理数据预测": [
{"name": "最小二乘回归","description": "最小化残差平方和拟合线性关系,广泛用于连续值预测。","label":"回归模型"},
{"name": "岭回归","description": "L2 正则化缓解多重共线性,提升线性模型稳定性。","label":"回归模型"},
{"name": "套索回归","description": "L1 正则化实现特征选择,得到更简洁可解释的模型。","label":"回归模型"},
{"name": "多项式回归","description": "通过多项式项捕捉非线性趋势,用于曲线拟合与预测。","label":"回归模型"},
{"name": "支持向量机回归","description": "核方法处理非线性与高维数据,适合复杂趋势预测。","label":"回归模型"},
{"name": "BP神经网络","description": "拟合复杂非线性关系,适合多变量预测任务。","label":"回归模型"},
{"name": "梯度提升树","description": "集成学习提升预测精度,适合非线性与异质特征。","label":"分类模型"},
{"name": "移动平均法","description": "平滑时间序列短期波动,揭示长期趋势。","label":"时间序列分析"},
{"name": "指数平滑法","description": "近期数据权重更高,能刻画趋势与季节性。","label":"时间序列分析"},
{"name": "自回归模型(AR)","description": "基于历史自回归项的时间序列预测。","label":"时间序列分析"},
{"name": "滑动平均模型(MA)","description": "基于历史误差项的时间序列预测。","label":"时间序列分析"},
{"name": "自回归滑动平均模型","description": "平稳序列的组合模型,短期预测常用。","label":"时间序列分析"},
{"name": "差分自回归移动平均模型","description": "对非平稳序列差分后建模,适合长期趋势与季节性分析。","label":"时间序列分析"},
{"name": "灰色模型","description": "小样本、贫信息场景的预测与趋势分析。","label":"领域分析"}
],
"数据因果关系分析(统计学方法)": [
{"name": "最小二乘回归","description": "用于估计因变量与自变量的线性因果关系。","label":"回归模型"},
{"name": "岭回归","description": "在自变量相关性较强时稳健估计因果效应。","label":"回归模型"},
{"name": "套索回归","description": "特征选择识别显著自变量,辅助因果推断。","label":"回归模型"},
{"name": "多项式回归","description": "建模非线性因果关系的简便扩展。","label":"回归模型"},
{"name": "二分类逻辑回归","description": "估计事件发生概率,用于二分类因果效应分析的基础模型。","label":"回归模型"},
{"name": "支持向量机回归","description": "在高维下用于拟合与解释变量影响(需较多数据)。","label":"回归模型"}
],
"数据因果关系分析(机器学习方法)": [
{"name": "决策树","description": "可解释的树模型,揭示变量交互与影响路径。","label":"分类模型"},
{"name": "随机森林","description": "多树集成,稳健处理高维与共线性。","label":"分类模型"},
{"name": "自适应增强算法","description": "提升弱学习器性能,适合复杂非线性关系。","label":"分类模型"},
{"name": "梯度提升树","description": "迭代拟合残差,精确刻画非线性与相互作用。","label":"分类模型"}
],
"决策分析": [
{"name": "决策树","description": "直观的决策路径与规则提取。","label":"分类模型"},
{"name": "随机森林","description": "稳定且准确的多因素决策支持。","label":"分类模型"},
{"name": "自适应增强算法","description": "对不平衡样本的鲁棒决策提升。","label":"分类模型"},
{"name": "判别分析","description": "基于类别的线性/二次判别决策。","label":"分类模型"},
{"name": "优劣解距离法","description": "多属性决策的排序与方案优选。","label":"综合评价"},
{"name": "净现值法","description": "基于现金流现值评估投资可行性。","label":"综合评价"}
],
"风险评估分析": [
{"name": "自适应增强算法","description": "调整样本权重,适用于不平衡风险识别。","label":"分类模型"},
{"name": "决策树","description": "识别关键风险因子与规则路径。","label":"分类模型"},
{"name": "随机森林","description": "复杂多维特征下的稳健风险评估。","label":"分类模型"},
{"name": "判别分析","description": "风险等级识别与分类。","label":"分类模型"},
{"name": "优劣解距离法","description": "多方案风险控制措施优选。","label":"综合评价"},
{"name": "模糊综合评价","description": "处理不确定与模糊信息的风险量化。","label":"综合评价"},
{"name": "灰色模型","description": "信息不完全条件下的风险动态分析。","label":"综合评价"}
],
"数据相关性分析": [
{"name": "皮尔逊相关分析","description": "评估连续变量的线性相关性。","label":"关联分析"},
{"name": "斯皮尔曼相关分析","description": "基于秩的单调相关性,抗异常值。","label":"关联分析"}
],
"评价与排序分析": [
{"name": "秩和比评价法","description": "多指标综合评价与排序。","label":"综合评价"},
{"name": "模糊综合评价","description": "在模糊性场景下的综合评价。","label":"综合评价"},
{"name": "因子分析","description": "提取公共因子进行综合评分。","label":"综合评价"},
{"name": "主成分分析","description": "用主成分进行降维与综合衡量。","label":"综合评价"},
{"name": "优劣解距离法","description": "基于与理想解距离的排序。","label":"综合评价"},
{"name": "数据包络分析(BCC)","description": "规模报酬可变的效率评价。","label":"综合评价"},
{"name": "数据包络分析(CCR)","description": "规模报酬不变的效率评价。","label":"综合评价"}
],
"投入产出效率分析": [
{"name": "柯布-道格拉斯生产函数","description": "资本与劳动投入对产出的关系建模。","label":"领域分析"},
{"name": "数据包络分析(BCC)","description": "分解纯技术效率与规模效率。","label":"综合评价"},
{"name": "数据包络分析(CCR)","description": "评估技术效率的基础DEA模型。","label":"综合评价"}
],
"数据分群归类": [
{"name": "K-均值聚类","description": "相似样本聚为一类,适合大规模数据。","label":"聚类算法"},
{"name": "层次聚类","description": "树状层级结构便于小规模分群分析。","label":"聚类算法"}
],
"指标权重关系分析": [
{"name": "主成分分析","description": "提取关键指标,衡量权重贡献。","label":"降维方法"}
],
"数据降维及可视化": [
{"name": "因子分析","description": "潜在因子提取,简化多变量关系。","label":"降维方法"},
{"name": "主成分分析","description": "将相关变量转化为不相关主成分。","label":"降维方法"}
],
"数据差异关系分析": [
{"name": "独立样本t检验","description": "比较两组均值差异的显著性。","label":"统计检验"}
],
"数据特征分析": [
{"name": "正态检验","description": "检验数据是否符合正态分布。","label":"统计检验"}
]
}
</ALGOLIB>
\ No newline at end of file
src/main/resources/promptwords/algo_suggest_bak260118
0 → 100644
View file @
2c8526bc
# 角色
你是一个【算法推荐引擎】。
你的职责是:
- 根据用户的自然语言需求和数据特征
- 从【固定的标准化算法名称集合】中进行匹配
- 最多推荐 10 个最合适的算法
- 最终结果只能使用 JSON 格式输出
---
# 强约束(必须严格遵守)
1. 最终输出的算法名称,必须严格来自算法库中对象的 `name` 字段
2. 不允许生成、改写、翻译、简化任何算法名称
3. 不在算法库中的算法,一律视为非法并删除
4. 算法库在参与匹配前,必须按 `name` 字段全局去重,`name` 作为唯一合法标识
5. 除 JSON 结果外,不允许输出任何解释性文字
6. 不允许输出空字符串算法名
7. 不允许输出重复算法名
---
# 算法库(结构化数据,仅用于匹配)
<ALGOLIB>
{
"经济、管理数据预测": [
{"name": "最小二乘回归","description": "最小化残差平方和拟合线性关系,广泛用于连续值预测。","label":"回归模型"},
{"name": "岭回归","description": "L2 正则化缓解多重共线性,提升线性模型稳定性。","label":"回归模型"},
{"name": "套索回归","description": "L1 正则化实现特征选择,得到更简洁可解释的模型。","label":"回归模型"},
{"name": "多项式回归","description": "通过多项式项捕捉非线性趋势,用于曲线拟合与预测。","label":"回归模型"},
{"name": "支持向量机回归","description": "核方法处理非线性与高维数据,适合复杂趋势预测。","label":"回归模型"},
{"name": "BP神经网络","description": "拟合复杂非线性关系,适合多变量预测任务。","label":"回归模型"},
{"name": "梯度提升树","description": "集成学习提升预测精度,适合非线性与异质特征。","label":"分类模型"},
{"name": "移动平均法","description": "平滑时间序列短期波动,揭示长期趋势。","label":"时间序列分析"},
{"name": "指数平滑法","description": "近期数据权重更高,能刻画趋势与季节性。","label":"时间序列分析"},
{"name": "自回归模型(AR)","description": "基于历史自回归项的时间序列预测。","label":"时间序列分析"},
{"name": "滑动平均模型(MA)","description": "基于历史误差项的时间序列预测。","label":"时间序列分析"},
{"name": "自回归滑动平均模型","description": "平稳序列的组合模型,短期预测常用。","label":"时间序列分析"},
{"name": "差分自回归移动平均模型","description": "对非平稳序列差分后建模,适合长期趋势与季节性分析。","label":"时间序列分析"},
{"name": "灰色模型","description": "小样本、贫信息场景的预测与趋势分析。","label":"领域分析"}
],
"数据因果关系分析(统计学方法)": [
{"name": "最小二乘回归","description": "用于估计因变量与自变量的线性因果关系。","label":"回归模型"},
{"name": "岭回归","description": "在自变量相关性较强时稳健估计因果效应。","label":"回归模型"},
{"name": "套索回归","description": "特征选择识别显著自变量,辅助因果推断。","label":"回归模型"},
{"name": "多项式回归","description": "建模非线性因果关系的简便扩展。","label":"回归模型"},
{"name": "二分类逻辑回归","description": "估计事件发生概率,用于二分类因果效应分析的基础模型。","label":"回归模型"},
{"name": "支持向量机回归","description": "在高维下用于拟合与解释变量影响(需较多数据)。","label":"回归模型"}
],
"数据因果关系分析(机器学习方法)": [
{"name": "决策树","description": "可解释的树模型,揭示变量交互与影响路径。","label":"分类模型"},
{"name": "随机森林","description": "多树集成,稳健处理高维与共线性。","label":"分类模型"},
{"name": "自适应增强算法","description": "提升弱学习器性能,适合复杂非线性关系。","label":"分类模型"},
{"name": "梯度提升树","description": "迭代拟合残差,精确刻画非线性与相互作用。","label":"分类模型"}
],
"决策分析": [
{"name": "决策树","description": "直观的决策路径与规则提取。","label":"分类模型"},
{"name": "随机森林","description": "稳定且准确的多因素决策支持。","label":"分类模型"},
{"name": "自适应增强算法","description": "对不平衡样本的鲁棒决策提升。","label":"分类模型"},
{"name": "判别分析","description": "基于类别的线性/二次判别决策。","label":"分类模型"},
{"name": "优劣解距离法","description": "多属性决策的排序与方案优选。","label":"综合评价"},
{"name": "净现值法","description": "基于现金流现值评估投资可行性。","label":"综合评价"}
],
"风险评估分析": [
{"name": "自适应增强算法","description": "调整样本权重,适用于不平衡风险识别。","label":"分类模型"},
{"name": "决策树","description": "识别关键风险因子与规则路径。","label":"分类模型"},
{"name": "随机森林","description": "复杂多维特征下的稳健风险评估。","label":"分类模型"},
{"name": "判别分析","description": "风险等级识别与分类。","label":"分类模型"},
{"name": "优劣解距离法","description": "多方案风险控制措施优选。","label":"综合评价"},
{"name": "模糊综合评价","description": "处理不确定与模糊信息的风险量化。","label":"综合评价"},
{"name": "灰色模型","description": "信息不完全条件下的风险动态分析。","label":"综合评价"}
],
"数据相关性分析": [
{"name": "皮尔逊相关分析","description": "评估连续变量的线性相关性。","label":"关联分析"},
{"name": "斯皮尔曼相关分析","description": "基于秩的单调相关性,抗异常值。","label":"关联分析"}
],
"评价与排序分析": [
{"name": "秩和比评价法","description": "多指标综合评价与排序。","label":"综合评价"},
{"name": "模糊综合评价","description": "在模糊性场景下的综合评价。","label":"综合评价"},
{"name": "因子分析","description": "提取公共因子进行综合评分。","label":"综合评价"},
{"name": "主成分分析","description": "用主成分进行降维与综合衡量。","label":"综合评价"},
{"name": "优劣解距离法","description": "基于与理想解距离的排序。","label":"综合评价"},
{"name": "数据包络分析(BCC)","description": "规模报酬可变的效率评价。","label":"综合评价"},
{"name": "数据包络分析(CCR)","description": "规模报酬不变的效率评价。","label":"综合评价"}
],
"投入产出效率分析": [
{"name": "柯布-道格拉斯生产函数","description": "资本与劳动投入对产出的关系建模。","label":"领域分析"},
{"name": "数据包络分析(BCC)","description": "分解纯技术效率与规模效率。","label":"综合评价"},
{"name": "数据包络分析(CCR)","description": "评估技术效率的基础DEA模型。","label":"综合评价"}
],
"数据分群归类": [
{"name": "K-均值聚类","description": "相似样本聚为一类,适合大规模数据。","label":"聚类算法"},
{"name": "层次聚类","description": "树状层级结构便于小规模分群分析。","label":"聚类算法"}
],
"指标权重关系分析": [
{"name": "主成分分析","description": "提取关键指标,衡量权重贡献。","label":"降维方法"}
],
"数据降维及可视化": [
{"name": "因子分析","description": "潜在因子提取,简化多变量关系。","label":"降维方法"},
{"name": "主成分分析","description": "将相关变量转化为不相关主成分。","label":"降维方法"}
],
"数据差异关系分析": [
{"name": "独立样本t检验","description": "比较两组均值差异的显著性。","label":"统计检验"}
],
"数据特征分析": [
{"name": "正态检验","description": "检验数据是否符合正态分布。","label":"统计检验"}
]
}
</ALGOLIB>
---
# 整体流程(必须严格按顺序执行)
## 步骤1:业务场景识别(最高优先级)
根据用户描述中的:
- 业务目标词
- 动作词
- 分析词
匹配以下标准场景:
- 经济、管理数据预测
- 数据因果关系分析
- 决策分析
- 风险评估分析
- 数据相关性分析
- 评价与排序分析
- 投入产出效率分析
- 数据分群归类
- 数据降维及可视化
- 数据差异关系分析
- 数据特征分析
### 命中规则
- 命中多个场景 → 合并对应算法集合并去重
- 一个都没命中 → 进入“模糊需求提醒流程”
- 后续步骤不得否定已识别的场景
### 数据因果关系分析细化
- 默认合并“统计学方法 + 机器学习方法”
- 提到“回归 / 显著性 / 检验” → 统计学方法优先
- 提到“树模型 / 随机森林 / 提升” → 机器学习方法优先
---
## 模糊需求判定规则
若用户描述中满足任一条件:
- 未出现任何业务目标词(如:预测、分析、评估、排序、分类、分群、相关、因果、效率、差异、特征)
- 未能匹配任何业务场景
则直接进入模糊需求提醒流程。
---
## 场景冲突裁决规则
若命中场景 ≥ 3 个:
- 统计用户句子中各场景关键词出现频率
- 频率最高的前 2 个场景作为“主场景”
- 其余场景作为“降权场景”,仅参与排序,不作为主候选集来源
---
## 步骤2:数据类型识别(仅影响排序)
识别以下类型:
- 时间序列数据
- 连续型目标变量
- 离散型目标变量
- 无目标变量数据
- 统计检验类数据
规则:
- 只能影响排序权重
- 不能删除已命中的场景算法
---
## 步骤3:构造候选算法集合
1. 根据“主场景”生成主候选集
2. 将“次场景、降权场景”对应算法并入候选集并去重
3. 若用户明确提到算法类型(如“回归、聚类、树模型、时间序列、评价、检验”):
- 在最终 Top N 中,必须至少出现 2 个该类型算法
- 若该类型在算法库中不足 2 个,则全部保留
4. 执行名称强校验:
- 不在算法库 `name` 集合中的,一律删除
5. 若最终候选集为空 → 进入模糊需求提醒流程
---
## 步骤4:排序与多样性控制
### 排序打分规则
每个算法计算综合得分:
总分 = 场景匹配分 + 数据类型匹配分 + 用户偏好分
1. 场景匹配分:
- 主命中场景:+50
- 次命中场景:+30
- 降权场景:+10
2. 数据类型匹配分:
- 完全匹配:+30
- 部分匹配:+15
- 不匹配:+0
3. 用户显式偏好:
- 明确提及该算法类型:+20
- 提及同类算法:+10
- 未提及:+0
按总分降序排序。
---
### 多样性控制规则
- 同一算法 label 不超过 5 个
- 尽量覆盖不同算法类型
- 若与“用户显式偏好规则”冲突,优先满足用户偏好
- 最终取前 N 个(N ≤ 10)
---
## 步骤5:输出格式(只能二选一)
### 正常推荐格式
{
"response": "请从以下算法中选择一种:",
"options": ["算法名称1", "算法名称2"],
"params": []
}
###模糊需求提醒格式
{
"response": "您的需求不够明确,请补充您的分析目标是什么",
"options": [],
"params": []
}
src/main/resources/promptwords/algo_suggest_bak260119
0 → 100644
View file @
2c8526bc
## 1. 你的角色
你是一个【算法推荐引擎】。
你的任务只有一件事:
> 根据用户的自然语言需求,
> 从固定算法库中,
> 推荐最多 10 个最合适的算法,
> 并且只能用 JSON 输出结果。
---
## 2. 绝对规则(任何情况下都不能违反)
1. 所有算法名称,必须严格来自算法库的 `name` 字段
2. 不允许改写、翻译、简化、创造算法名
3. 不在算法库中的算法,直接删除
4. 按 `name` 全局去重
5. 不允许输出空字符串算法名
6. 不允许输出重复算法名
7. 除 JSON 外,不允许输出任何文字
8. 无论是正常推荐还是模糊需求,输出都必须是合法 JSON,禁止输出任何非 JSON 文本
---
## 3. 工作流程(只做这四步)
### Step 1:识别业务场景
#### 第一层:关键词硬匹配
从用户描述中,匹配下面这些场景关键词:
##### 1. 预测类场景 → 经济、管理数据预测
关键词:
预测、预估、预判、估计、推测、趋势、走势、发展趋势、未来、时间序列、时序数据、历史数据、回归、拟合、建模、产量预测、销量预测、需求预测、收入预测、价格预测、曲线拟合、趋势外推
##### 2. 因果关系 → 数据因果关系分析(统计 + 机器学习)
关键词:
因果、因果关系、因果分析、影响、作用、效应、影响程度、哪些因素影响、什么影响了、原因、成因、机制、路径、自变量、因变量、解释变量、被解释变量、回归分析、驱动因素分析
规则:因果场景默认合并【统计方法 + 机器学习方法】
##### 3. 决策支持 → 决策分析
关键词:
决策、辅助决策、决策支持、方案选择、选哪个、怎么选、多方案比较、方案优选、最优方案、策略、路径选择、是否可行、可行性分析、投资决策
##### 4. 风险评估 → 风险评估分析
关键词:
风险、风险评估、风险分析、风险等级、风险分类、预警、风险预警、风险控制、违约风险、信用风险、经营风险、损失、失败概率
##### 5. 相关性分析 → 数据相关性分析
关键词:
相关、相关性、关系、相关分析、是否有关联、强相关、弱相关、负相关、正相关
##### 6. 评价 / 排序 → 评价与排序分析
关键词:
评价、评估、测评、打分、综合评价、排名、排序、名次、优先级、哪个更好、哪个最优、绩效评价、满意度评价
##### 7. 效率分析 → 投入产出效率分析
关键词:
效率、效能、投入产出、投入产出比、资源利用率、技术效率、规模效率、生产效率、运营效率
##### 8. 分群 / 聚类 → 数据分群归类
关键词:
分群、分组、聚类、聚类分析、用户分群、客户分群、市场细分、分层、相似样本
##### 9. 降维 / 可视化 → 数据降维及可视化
关键词:
降维、维度压缩、指标合成、指标简化、可视化、二维展示、三维展示、降噪、去冗余
##### 10. 差异分析 → 数据差异关系分析
关键词:
差异、差别、不同、是否有差异、是否显著不同、显著性差异、差异检验、对比、比较两组
##### 11. 特征分析 → 数据特征分析
关键词:
分布、分布情况、数据分布、是否正态、正态性、数据形态、数据特征、偏态、峰度
命中一个或多个 → 全部保留。
---
#### 第二层:同义词与业务词归一
先将用户输入做同义词与业务词归一处理,例如:
- “形势、走向、前景、判断未来” → 预测
- “驱动、决定因素” → 因果
- “怎么选、选哪个” → 决策
- “好不好、优不优” → 评价
- “一类一类、人群分层” → 分群
归一后再执行第一层关键词匹配。
---
#### 第三层:语义兜底规则
- 出现:将来、未来、之后、明年、趋势、发展 → 当【预测】
- 出现:导致、使得、因为、所以、对…有什么影响 → 当【因果】
- 出现:选、比较、哪个更、哪个好、优不优 → 当【评价 / 决策】
- 出现:分几类、哪些人相似、一类一类 → 当【分群】
仍未命中任何场景 →
直接输出【模糊需求 JSON 格式】,并结束流程。
---
### Step 2:生成候选算法
1. 从命中的场景中,取出对应算法
2. 合并后去重
3. 如果用户明确说了类型(如:回归、聚类、时间序列、树模型、评价、检验):
- 最终结果中,至少保留 2 个该类型算法
- 如果库中不足 2 个,则全部保留
4. 删除所有不在算法库 `name` 集合中的算法
如果候选算法为空 →
直接输出【模糊需求 JSON 格式】,并结束流程。
---
### Step 3:排序规则(统一打分)
每个算法打分:
- 场景匹配:+50
- 数据类型匹配:
- 完全匹配 +30
- 部分匹配 +15
- 用户显式偏好:+20
按总分从高到低排序。
---
## 4. 输出格式(只能二选一)
### 正常推荐(JSON)
{
"response": "请从以下算法中选择一种:",
"options": ["算法1", "算法2"],
"params": []
}
### 模糊需求(JSON)
{
"response": "您的需求不够明确,请补充您的分析目标是什么",
"options": [],
"params": []
}
## 5. 固定算法库(仅用于匹配,不对用户展示)
<ALGOLIB>
{
"经济、管理数据预测": [
{"name": "最小二乘回归","description": "最小化残差平方和拟合线性关系,广泛用于连续值预测。","label":"回归模型"},
{"name": "岭回归","description": "L2 正则化缓解多重共线性,提升线性模型稳定性。","label":"回归模型"},
{"name": "套索回归","description": "L1 正则化实现特征选择,得到更简洁可解释的模型。","label":"回归模型"},
{"name": "多项式回归","description": "通过多项式项捕捉非线性趋势,用于曲线拟合与预测。","label":"回归模型"},
{"name": "支持向量机回归","description": "核方法处理非线性与高维数据,适合复杂趋势预测。","label":"回归模型"},
{"name": "BP神经网络","description": "拟合复杂非线性关系,适合多变量预测任务。","label":"回归模型"},
{"name": "梯度提升树","description": "集成学习提升预测精度,适合非线性与异质特征。","label":"分类模型"},
{"name": "移动平均法","description": "平滑时间序列短期波动,揭示长期趋势。","label":"时间序列分析"},
{"name": "指数平滑法","description": "近期数据权重更高,能刻画趋势与季节性。","label":"时间序列分析"},
{"name": "自回归模型(AR)","description": "基于历史自回归项的时间序列预测。","label":"时间序列分析"},
{"name": "滑动平均模型(MA)","description": "基于历史误差项的时间序列预测。","label":"时间序列分析"},
{"name": "自回归滑动平均模型","description": "平稳序列的组合模型,短期预测常用。","label":"时间序列分析"},
{"name": "差分自回归移动平均模型","description": "对非平稳序列差分后建模,适合长期趋势与季节性分析。","label":"时间序列分析"},
{"name": "灰色模型","description": "小样本、贫信息场景的预测与趋势分析。","label":"领域分析"}
],
"数据因果关系分析(统计学方法)": [
{"name": "最小二乘回归","description": "用于估计因变量与自变量的线性因果关系。","label":"回归模型"},
{"name": "岭回归","description": "在自变量相关性较强时稳健估计因果效应。","label":"回归模型"},
{"name": "套索回归","description": "特征选择识别显著自变量,辅助因果推断。","label":"回归模型"},
{"name": "多项式回归","description": "建模非线性因果关系的简便扩展。","label":"回归模型"},
{"name": "二分类逻辑回归","description": "估计事件发生概率,用于二分类因果效应分析的基础模型。","label":"回归模型"},
{"name": "支持向量机回归","description": "在高维下用于拟合与解释变量影响(需较多数据)。","label":"回归模型"}
],
"数据因果关系分析(机器学习方法)": [
{"name": "决策树","description": "可解释的树模型,揭示变量交互与影响路径。","label":"分类模型"},
{"name": "随机森林","description": "多树集成,稳健处理高维与共线性。","label":"分类模型"},
{"name": "自适应增强算法","description": "提升弱学习器性能,适合复杂非线性关系。","label":"分类模型"},
{"name": "梯度提升树","description": "迭代拟合残差,精确刻画非线性与相互作用。","label":"分类模型"}
],
"决策分析": [
{"name": "决策树","description": "直观的决策路径与规则提取。","label":"分类模型"},
{"name": "随机森林","description": "稳定且准确的多因素决策支持。","label":"分类模型"},
{"name": "自适应增强算法","description": "对不平衡样本的鲁棒决策提升。","label":"分类模型"},
{"name": "判别分析","description": "基于类别的线性/二次判别决策。","label":"分类模型"},
{"name": "优劣解距离法","description": "多属性决策的排序与方案优选。","label":"综合评价"},
{"name": "净现值法","description": "基于现金流现值评估投资可行性。","label":"综合评价"}
],
"风险评估分析": [
{"name": "自适应增强算法","description": "调整样本权重,适用于不平衡风险识别。","label":"分类模型"},
{"name": "决策树","description": "识别关键风险因子与规则路径。","label":"分类模型"},
{"name": "随机森林","description": "复杂多维特征下的稳健风险评估。","label":"分类模型"},
{"name": "判别分析","description": "风险等级识别与分类。","label":"分类模型"},
{"name": "优劣解距离法","description": "多方案风险控制措施优选。","label":"综合评价"},
{"name": "模糊综合评价","description": "处理不确定与模糊信息的风险量化。","label":"综合评价"},
{"name": "灰色模型","description": "信息不完全条件下的风险动态分析。","label":"综合评价"}
],
"数据相关性分析": [
{"name": "皮尔逊相关分析","description": "评估连续变量的线性相关性。","label":"关联分析"},
{"name": "斯皮尔曼相关分析","description": "基于秩的单调相关性,抗异常值。","label":"关联分析"}
],
"评价与排序分析": [
{"name": "秩和比评价法","description": "多指标综合评价与排序。","label":"综合评价"},
{"name": "模糊综合评价","description": "在模糊性场景下的综合评价。","label":"综合评价"},
{"name": "因子分析","description": "提取公共因子进行综合评分。","label":"综合评价"},
{"name": "主成分分析","description": "用主成分进行降维与综合衡量。","label":"综合评价"},
{"name": "优劣解距离法","description": "基于与理想解距离的排序。","label":"综合评价"},
{"name": "数据包络分析(BCC)","description": "规模报酬可变的效率评价。","label":"综合评价"},
{"name": "数据包络分析(CCR)","description": "规模报酬不变的效率评价。","label":"综合评价"}
],
"投入产出效率分析": [
{"name": "柯布-道格拉斯生产函数","description": "资本与劳动投入对产出的关系建模。","label":"领域分析"},
{"name": "数据包络分析(BCC)","description": "分解纯技术效率与规模效率。","label":"综合评价"},
{"name": "数据包络分析(CCR)","description": "评估技术效率的基础DEA模型。","label":"综合评价"}
],
"数据分群归类": [
{"name": "K-均值聚类","description": "相似样本聚为一类,适合大规模数据。","label":"聚类算法"},
{"name": "层次聚类","description": "树状层级结构便于小规模分群分析。","label":"聚类算法"}
],
"指标权重关系分析": [
{"name": "主成分分析","description": "提取关键指标,衡量权重贡献。","label":"降维方法"}
],
"数据降维及可视化": [
{"name": "因子分析","description": "潜在因子提取,简化多变量关系。","label":"降维方法"},
{"name": "主成分分析","description": "将相关变量转化为不相关主成分。","label":"降维方法"}
],
"数据差异关系分析": [
{"name": "独立样本t检验","description": "比较两组均值差异的显著性。","label":"统计检验"}
],
"数据特征分析": [
{"name": "正态检验","description": "检验数据是否符合正态分布。","label":"统计检验"}
]
}
</ALGOLIB>
\ No newline at end of file
src/main/resources/testcases/algo_knowledge1.jsonl
0 → 100644
View file @
2c8526bc
{
"经济、管理数据预测": [
{"name": "最小二乘回归","description": "最小化残差平方和拟合线性关系,广泛用于连续值预测。","label":"回归模型"},
{"name": "岭回归","description": "L2 正则化缓解多重共线性,提升线性模型稳定性。","label":"回归模型"},
{"name": "套索回归","description": "L1 正则化实现特征选择,得到更简洁可解释的模型。","label":"回归模型"},
{"name": "多项式回归","description": "通过多项式项捕捉非线性趋势,用于曲线拟合与预测。","label":"回归模型"},
{"name": "支持向量机回归","description": "核方法处理非线性与高维数据,适合复杂趋势预测。","label":"回归模型"},
{"name": "BP神经网络","description": "拟合复杂非线性关系,适合多变量预测任务。","label":"回归模型"},
{"name": "梯度提升树","description": "集成学习提升预测精度,适合非线性与异质特征。","label":"分类模型"},
{"name": "移动平均法","description": "平滑时间序列短期波动,揭示长期趋势。","label":"时间序列分析"},
{"name": "指数平滑法","description": "近期数据权重更高,能刻画趋势与季节性。","label":"时间序列分析"},
{"name": "自回归模型(AR)","description": "基于历史自回归项的时间序列预测。","label":"时间序列分析"},
{"name": "滑动平均模型(MA)","description": "基于历史误差项的时间序列预测。","label":"时间序列分析"},
{"name": "自回归滑动平均模型","description": "平稳序列的组合模型,短期预测常用。","label":"时间序列分析"},
{"name": "差分自回归移动平均模型","description": "对非平稳序列差分后建模,适合长期趋势与季节性分析。","label":"时间序列分析"},
{"name": "灰色模型","description": "小样本、贫信息场景的预测与趋势分析。","label":"领域分析"}
],
"数据因果关系分析(统计学方法)": [
{"name": "最小二乘回归","description": "用于估计因变量与自变量的线性因果关系。","label":"回归模型"},
{"name": "岭回归","description": "在自变量相关性较强时稳健估计因果效应。","label":"回归模型"},
{"name": "套索回归","description": "特征选择识别显著自变量,辅助因果推断。","label":"回归模型"},
{"name": "多项式回归","description": "建模非线性因果关系的简便扩展。","label":"回归模型"},
{"name": "二分类逻辑回归","description": "估计事件发生概率,用于二分类因果效应分析的基础模型。","label":"回归模型"},
{"name": "支持向量机回归","description": "在高维下用于拟合与解释变量影响(需较多数据)。","label":"回归模型"}
],
"数据因果关系分析(机器学习方法)": [
{"name": "决策树","description": "可解释的树模型,揭示变量交互与影响路径。","label":"分类模型"},
{"name": "随机森林","description": "多树集成,稳健处理高维与共线性。","label":"分类模型"},
{"name": "自适应增强算法","description": "提升弱学习器性能,适合复杂非线性关系。","label":"分类模型"},
{"name": "梯度提升树","description": "迭代拟合残差,精确刻画非线性与相互作用。","label":"分类模型"}
],
"决策分析": [
{"name": "决策树","description": "直观的决策路径与规则提取。","label":"分类模型"},
{"name": "随机森林","description": "稳定且准确的多因素决策支持。","label":"分类模型"},
{"name": "自适应增强算法","description": "对不平衡样本的鲁棒决策提升。","label":"分类模型"},
{"name": "判别分析","description": "基于类别的线性/二次判别决策。","label":"分类模型"},
{"name": "优劣解距离法","description": "多属性决策的排序与方案优选。","label":"综合评价"},
{"name": "净现值法","description": "基于现金流现值评估投资可行性。","label":"综合评价"}
],
"风险评估分析": [
{"name": "自适应增强算法","description": "调整样本权重,适用于不平衡风险识别。","label":"分类模型"},
{"name": "决策树","description": "识别关键风险因子与规则路径。","label":"分类模型"},
{"name": "随机森林","description": "复杂多维特征下的稳健风险评估。","label":"分类模型"},
{"name": "判别分析","description": "风险等级识别与分类。","label":"分类模型"},
{"name": "优劣解距离法","description": "多方案风险控制措施优选。","label":"综合评价"},
{"name": "模糊综合评价","description": "处理不确定与模糊信息的风险量化。","label":"综合评价"},
{"name": "灰色模型","description": "信息不完全条件下的风险动态分析。","label":"综合评价"}
],
"数据相关性分析": [
{"name": "皮尔逊相关分析","description": "评估连续变量的线性相关性。","label":"关联分析"},
{"name": "斯皮尔曼相关分析","description": "基于秩的单调相关性,抗异常值。","label":"关联分析"}
],
"评价与排序分析": [
{"name": "秩和比评价法","description": "多指标综合评价与排序。","label":"综合评价"},
{"name": "模糊综合评价","description": "在模糊性场景下的综合评价。","label":"综合评价"},
{"name": "因子分析","description": "提取公共因子进行综合评分。","label":"综合评价"},
{"name": "主成分分析","description": "用主成分进行降维与综合衡量。","label":"综合评价"},
{"name": "优劣解距离法","description": "基于与理想解距离的排序。","label":"综合评价"},
{"name": "数据包络分析(BCC)","description": "规模报酬可变的效率评价。","label":"综合评价"},
{"name": "数据包络分析(CCR)","description": "规模报酬不变的效率评价。","label":"综合评价"}
],
"投入产出效率分析": [
{"name": "柯布-道格拉斯生产函数","description": "资本与劳动投入对产出的关系建模。","label":"领域分析"},
{"name": "数据包络分析(BCC)","description": "分解纯技术效率与规模效率。","label":"综合评价"},
{"name": "数据包络分析(CCR)","description": "评估技术效率的基础DEA模型。","label":"综合评价"}
],
"数据分群归类": [
{"name": "K-均值聚类","description": "相似样本聚为一类,适合大规模数据。","label":"聚类算法"},
{"name": "层次聚类","description": "树状层级结构便于小规模分群分析。","label":"聚类算法"}
],
"指标权重关系分析": [
{"name": "主成分分析","description": "提取关键指标,衡量权重贡献。","label":"降维方法"}
],
"数据降维及可视化": [
{"name": "因子分析","description": "潜在因子提取,简化多变量关系。","label":"降维方法"},
{"name": "主成分分析","description": "将相关变量转化为不相关主成分。","label":"降维方法"}
],
"数据差异关系分析": [
{"name": "独立样本t检验","description": "比较两组均值差异的显著性。","label":"统计检验"}
],
"数据特征分析": [
{"name": "正态检验","description": "检验数据是否符合正态分布。","label":"统计检验"}
]
}
\ No newline at end of file
src/main/resources/testcases/algo_knowledge2.jsonl
0 → 100644
View file @
2c8526bc
{
"经济、管理数据预测": [
{"name": "最小二乘回归","description": "最小二乘回归主要是通过寻找多个投入要素与单一产出要素之间的线性关系,从而研究对产出要素影响的显著性。","label":"回归模型"},
{"name": "岭回归","description": "岭回归是估计两个或两个以上密切相关的解释变量和目标响应变量之间的关系。","label":"回归模型"},
{"name": "套索回归","description": "套索回归通过L1正则化对系数进行压缩与特征选择,能在降低模型复杂度的同时处理高维数据、稀疏性和多重共线性问题。","label":"回归模型"},
{"name": "多项式回归","description": "多项式回归用于拟合因变量与自变量之间的非线性关系。","label":"回归模型"},
{"name": "支持向量机回归","description": "支持向量机回归(SVR)是一种适用于预测分析的模型,通过最大化间隔带实现对数据趋势的稳健拟合,并可用于评估特征重要性。","label":"回归模型"},
{"name": "BP神经网络","description": "BP神经网络是一种多层前馈网络,通过反向传播算法进行学习,能有效拟合多个自变量与因变量之间的复杂非线性关系","label":"回归模型"},
{"name": "梯度提升树","description": "梯度提升树通过不断拟合残差提升预测精度,特点是表达能力强、适合复杂非线性数据。","label":"分类模型"},
{"name": "移动平均法","description": "移动平均法用于平滑时间序列、削弱短期波动、突出长期趋势,特点是简单直观但对突变反应较慢。","label":"时间序列分析"},
{"name": "指数平滑法","description": "指数平滑法用于预测时间序列并突出近期数据影响,特点是对新数据敏感,可刻画趋势和季节性。","label":"时间序列分析"},
{"name": "自回归模型(AR)","description": "自回归模型(AR)用于利用历史值预测未来,特点是依赖自身滞后项,适合平稳序列。","label":"时间序列分析"},
{"name": "滑动平均模型(MA)","description": "自回归模型(AR)用于利用历史值预测未来,特点是依赖自身滞后项,适合平稳序列。","label":"时间序列分析"},
{"name": "自回归滑动平均模型","description": "自回归滑动平均模型:用于平稳时间序列的短期预测,特点是同时利用历史值和误差项,预测能力较强。","label":"时间序列分析"},
{"name": "差分自回归移动平均模型","description": "自回归滑动平均模型用于平稳时间序列的短期预测,特点是同时利用历史值和误差项,预测能力较强。","label":"时间序列分析"},
{"name": "灰色模型","description": "灰色模型用于小样本、不完全信息条件下的时间序列预测,特点是对数据要求低、建模简单,但对随机波动刻画能力较弱。","label":"领域分析"}
],
"数据因果关系分析(统计学方法)": [
{"name": "最小二乘回归","description": "最小二乘回归主要是通过寻找多个投入要素与单一产出要素之间的线性关系,从而研究对产出要素影响的显著性。","label":"回归模型"},
{"name": "岭回归","description": "岭回归是估计两个或两个以上密切相关的解释变量和目标响应变量之间的关系。","label":"回归模型"},
{"name": "套索回归","description": "套索回归通过L1正则化对系数进行压缩与特征选择,能在降低模型复杂度的同时处理高维数据、稀疏性和多重共线性问题。","label":"回归模型"},
{"name": "多项式回归","description": "多项式回归用于拟合因变量与自变量之间的非线性关系。","label":"回归模型"},
{"name": "二分类逻辑回归","description": "二分类逻辑回归估计事件发生概率,用于二分类因果效应分析的基础模型。","label":"回归模型"},
{"name": "支持向量机回归","description": "支持向量机回归是一种适用于预测分析的模型,通过最大化间隔带实现对数据趋势的稳健拟合,并可用于评估特征重要性。","label":"回归模型"}
],
"数据因果关系分析(机器学习方法)": [
{"name": "决策树","description": "决策树用于构建可解释的分类规则,特点是结构直观、易理解,但容易过拟合。","label":"分类模型"},
{"name": "随机森林","description": "随机森林通过多棵树集成提升稳定性,特点是抗噪声、能处理高维和共线性。","label":"分类模型"},
{"name": "自适应增强算法","description": "自适应增强算法通过逐步加强弱分类器提高整体性能,特点是对难分类样本更敏感。","label":"分类模型"},
{"name": "梯度提升树","description": "梯度提升树通过不断拟合残差提升预测精度,特点是表达能力强、适合复杂非线性数据。","label":"分类模型"}
],
"决策分析": [
{"name": "决策树","description": "决策树用于构建可解释的分类规则,特点是结构直观、易理解,但容易过拟合。","label":"分类模型"},
{"name": "随机森林","description": "随机森林通过多棵树集成提升稳定性,特点是抗噪声、能处理高维和共线性。","label":"分类模型"},
{"name": "自适应增强算法","description": "自适应增强算法通过逐步加强弱分类器提高整体性能,特点是对难分类样本更敏感。","label":"分类模型"},
{"name": "判别分析","description": "判别分析用于构建线性或二次判别函数进行分类,特点是模型简洁、对数据分布假设较强。","label":"分类模型"},
{"name": "优劣解距离法","description": "优劣解距离法通过计算方案与理想解的距离进行排序,特点是适合多指标综合评价、结果直观。","label":"综合评价"},
{"name": "净现值法","description": "净现值法通过折现现金流判断项目是否可行,特点是考虑时间价值、适合投资决策分析。","label":"综合评价"}
],
"风险评估分析": [
{"name": "自适应增强算法","description": "自适应增强算法通过逐步加强弱分类器提高整体性能,特点是对难分类样本更敏感。","label":"分类模型"},
{"name": "决策树","description": "决策树用于构建可解释的分类规则,特点是结构直观、易理解,但容易过拟合。","label":"分类模型"},
{"name": "随机森林","description": "随机森林通过多棵树集成提升稳定性,特点是抗噪声、能处理高维和共线性。","label":"分类模型"},
{"name": "判别分析","description": "判别分析用于构建线性或二次判别函数进行分类,特点是模型简洁、对数据分布假设较强。","label":"分类模型"},
{"name": "优劣解距离法","description": "优劣解距离法通过计算方案与理想解的距离进行排序,特点是适合多指标综合评价、结果直观。","label":"综合评价"},
{"name": "模糊综合评价","description": "模糊综合评价用于将定性与不确定因素量化进行综合评估,特点是适合模糊信息处理、结果具有一定主观依赖性。","label":"综合评价"},
{"name": "灰色模型","description": "灰色模型用于小样本、不完全信息条件下的时间序列预测,特点是对数据要求低、建模简单,但对随机波动刻画能力较弱。","label":"综合评价"}
],
"数据相关性分析": [
{"name": "皮尔逊相关分析","description": "皮尔逊相关分析用于衡量连续变量之间的线性相关程度,特点是对异常值和分布假设较敏感。","label":"关联分析"},
{"name": "斯皮尔曼相关分析","description": "斯皮尔曼相关分析基于秩次衡量变量间的单调关系,特点是对异常值不敏感、适用范围更广。","label":"关联分析"}
],
"评价与排序分析": [
{"name": "秩和比评价法","description": "秩和比评价法用于将多指标转化为秩次并进行综合排序,特点是计算简单、对量纲不敏感但信息损失较多。","label":"综合评价"},
{"name": "模糊综合评价","description": "模糊综合评价用于将定性与不确定因素量化进行综合评估,特点是适合模糊信息处理、结果具有一定主观依赖性。","label":"综合评价"},
{"name": "因子分析","description": "因子分析用于从多指标中提取公共因子进行综合评价,特点是强调潜在结构、记忆性强。","label":"综合评价"},
{"name": "主成分分析","description": "主成分分析通过构造主成分实现降维和综合衡量,特点是保留主要信息、计算稳定但可解释性较弱。","label":"综合评价"},
{"name": "优劣解距离法","description": "优劣解距离法通过计算方案与理想解的距离进行排序,特点是适合多指标综合评价、结果直观。","label":"综合评价"},
{"name": "数据包络分析(BCC)","description": "数据包络分析(BCC)用于在规模报酬可变条件下评价决策单元效率,特点是能区分纯技术效率与规模效率。","label":"综合评价"},
{"name": "数据包络分析(CCR)","description": "数据包络分析(CCR)用于在规模报酬不变条件下评价效率,特点是模型简洁、适合规模相近的评价对象。","label":"综合评价"}
],
"投入产出效率分析": [
{"name": "柯布-道格拉斯生产函数","description": "柯布-道格拉斯生产函数用于刻画资本和劳动等要素对产出的影响关系,特点是形式简单、参数含义清晰但对函数形式假设较强。","label":"领域分析"},
{"name": "数据包络分析(BCC)","description": "数据包络分析(BCC)用于在规模报酬可变条件下评价决策单元效率,特点是能区分纯技术效率与规模效率。","label":"综合评价"},
{"name": "数据包络分析(CCR)","description": "数据包络分析(CCR)用于在规模报酬不变条件下评价效率,特点是模型简洁、适合规模相近的评价对象。","label":"综合评价"}
],
"数据分群归类": [
{"name": "K-均值聚类","description": "K-均值聚类用于将相似样本划分为若干类,特点是速度快、适合大规模数据但对初始中心敏感。","label":"聚类算法"},
{"name": "层次聚类","description": "层次聚类通过逐步合并或分裂形成树状结构,特点是结果直观、适合小样本但计算复杂度较高。","label":"聚类算法"}
],
"指标权重关系分析": [
{"name": "主成分分析","description": "主成分分析通过构造主成分实现降维和综合衡量,特点是保留主要信息、计算稳定但可解释性较弱。","label":"降维方法"}
],
"数据降维及可视化": [
{"name": "因子分析","description": "因子分析用于从多指标中提取公共因子进行综合评价,特点是强调潜在结构、记忆性强。","label":"降维方法"},
{"name": "主成分分析","description": "主成分分析通过构造主成分实现降维和综合衡量,特点是保留主要信息、计算稳定但可解释性较弱。","label":"降维方法"}
],
"数据差异关系分析": [
{"name": "独立样本t检验","description": "独立样本t检验用于判断两组独立样本均值是否存在显著差异,特点是方法经典、结果直观但对正态性和方差齐性有要求。","label":"统计检验"}
],
"数据特征分析": [
{"name": "正态检验","description": "正态检验用于判断数据是否服从正态分布,特点是为后续参数检验提供依据,但对样本量和异常值较敏感。","label":"统计检验"}
]
}
"描述基于每个算法能做什么+特点"
\ No newline at end of file
src/main/resources/testcases/algo_knowledge3.jsonl
0 → 100644
View file @
2c8526bc
[
{"name":"最小二乘回归","task":["回归","预测"],"data":"非时间序列","relation":"线性","sample":"不限","complexity":"简单"},
{"name":"岭回归","task":["回归","预测"],"data":"非时间序列","relation":"线性","sample":"不限","complexity":"简单"},
{"name":"套索回归","task":["回归","预测"],"data":"非时间序列","relation":"线性","sample":"不限","complexity":"简单"},
{"name":"多项式回归","task":["回归","预测"],"data":"非时间序列","relation":"非线性","sample":"不限","complexity":"复杂"},
{"name":"支持向量机回归","task":["回归","预测"],"data":"非时间序列","relation":"非线性","sample":"偏小样本","complexity":"复杂"},
{"name":"BP神经网络","task":["回归","预测"],"data":"非时间序列","relation":"非线性","sample":"不限","complexity":"复杂"},
{"name":"梯度提升树","task":["回归","分类","预测"],"data":"非时间序列","relation":"非线性","sample":"不限","complexity":"复杂"},
{"name":"移动平均法","task":["预测"],"data":"时间序列","relation":"不限","sample":"偏小样本","complexity":"简单"},
{"name":"指数平滑法","task":["预测"],"data":"时间序列","relation":"不限","sample":"偏小样本","complexity":"简单"},
{"name":"自回归模型(AR)","task":["预测"],"data":"时间序列","relation":"线性","sample":"不限","complexity":"复杂"},
{"name":"滑动平均模型(MA)","task":["预测"],"data":"时间序列","relation":"线性","sample":"不限","complexity":"复杂"},
{"name":"自回归滑动平均模型","task":["预测"],"data":"时间序列","relation":"线性","sample":"不限","complexity":"复杂"},
{"name":"差分自回归移动平均模型","task":["预测"],"data":"时间序列","relation":"线性","sample":"不限","complexity":"复杂"},
{"name":"灰色模型","task":["预测"],"data":"时间序列","relation":"线性","sample":"小样本","complexity":"简单"},
{"name":"决策树","task":["分类","决策"],"data":"非时间序列","relation":"非线性","sample":"不限","complexity":"简单"},
{"name":"随机森林","task":["分类","预测"],"data":"非时间序列","relation":"非线性","sample":"不限","complexity":"复杂"},
{"name":"自适应增强算法","task":["分类","预测"],"data":"非时间序列","relation":"非线性","sample":"不限","complexity":"复杂"},
{"name":"判别分析","task":["分类"],"data":"非时间序列","relation":"线性","sample":"不限","complexity":"简单"},
{"name":"二分类逻辑回归","task":["分类","回归"],"data":"非时间序列","relation":"线性","sample":"不限","complexity":"简单"},
{"name":"皮尔逊相关分析","task":["相关"],"data":"非时间序列","relation":"线性","sample":"不限","complexity":"简单"},
{"name":"斯皮尔曼相关分析","task":["相关"],"data":"非时间序列","relation":"不限","sample":"不限","complexity":"简单"},
{"name":"独立样本t检验","task":["检验"],"data":"非时间序列","relation":"不限","sample":"不限","complexity":"简单"},
{"name":"正态检验","task":["检验"],"data":"非时间序列","relation":"不限","sample":"不限","complexity":"简单"},
{"name":"K-均值聚类","task":["聚类"],"data":"非时间序列","relation":"不限","sample":"不限","complexity":"简单"},
{"name":"层次聚类","task":["聚类"],"data":"非时间序列","relation":"不限","sample":"小样本","complexity":"复杂"},
{"name":"因子分析","task":["降维","评价"],"data":"非时间序列","relation":"线性","sample":"不限","complexity":"复杂"},
{"name":"主成分分析","task":["降维"],"data":"非时间序列","relation":"线性","sample":"不限","complexity":"复杂"},
{"name":"优劣解距离法","task":["排序","评价"],"data":"非时间序列","relation":"不限","sample":"不限","complexity":"简单"},
{"name":"秩和比评价法","task":["排序","评价"],"data":"非时间序列","relation":"不限","sample":"不限","complexity":"简单"},
{"name":"模糊综合评价","task":["评价","排序"],"data":"非时间序列","relation":"不限","sample":"不限","complexity":"复杂"},
{"name":"数据包络分析(CCR)","task":["效率","评价"],"data":"非时间序列","relation":"线性","sample":"不限","complexity":"复杂"},
{"name":"数据包络分析(BCC)","task":["效率","评价"],"data":"非时间序列","relation":"线性","sample":"不限","complexity":"复杂"},
{"name":"柯布-道格拉斯生产函数","task":["效率","回归"],"data":"非时间序列","relation":"线性","sample":"不限","complexity":"简单"}
]
算法标签体系简要说明
通过标签描述算法的适用场景与特性,用于支持算法自动推荐、条件筛选和规则匹配。
任务类型:说明算法能解决的问题,如预测、回归、分类、排序、聚类、相关、检验、降维、评价、效率等。
数据类型:区分是否为时间序列数据。
关系形式:描述模型刻画关系的方式,包括线性、非线性或不限。
样本规模:表示算法对样本数量的适应程度,如小样本或中大样本。
复杂度:表示算法实现和计算难度,分为简单或复杂。
通过这些标签,可以把用户需求与算法能力进行快速匹配,实现智能推荐与筛选。
src/main/resources/testcases/default.jsonl
0 → 100644
View file @
2c8526bc
{"prompt":"你好,系统都能做什么?","token":"t-001","sessionId":"1001","userId":"u-alice"}
{"prompt":"请简单介绍一下你是什么系统","token":"t-002","sessionId":"1001","userId":"u-alice"}
{"prompt":"没有上传数据时,我可以做什么?","token":"t-003","sessionId":"1002","userId":"u-bob"}
{"prompt":"我上传了一个房价数据集,适合用什么算法?","token":"t-004","sessionId":"1003","userId":"u-carol"}
{"prompt":"我选择了随机森林,能推荐一下参数吗?","token":"t-005","sessionId":"1003","userId":"u-carol"}
{"prompt":"确认执行算法并返回结果","token":"t-006","sessionId":"1003","userId":"u-carol"}
{"prompt":"能介绍一下分类算法和回归算法的区别吗?","token":"t-007","sessionId":"1004","userId":"u-dave"}
{"prompt":"默认处理一下我的问题","token":"t-008","sessionId":"1005","userId":"u-erin"}
src/main/resources/testcases/suggest_algorithm.jsonl
0 → 100644
View file @
2c8526bc
{"prompt":"","dataId":"6bd5727bcefd420ebad01a349b1b6028","confirm":false,"sessionId":"S1001","expected":"数据包络分析(BCC)"}
src/main/resources/testcases/suggest_algorithm_bak.jsonl
0 → 100644
View file @
2c8526bc
{"prompt":"能不能根据这些数据帮我建一个模型,用促销支出来预测销售量?","dataId":"1.xlsx","confirm":false,"sessionId":"S1001","expected":"最小二乘回归"}
{"prompt":"我想根据促销支出来预测销售量?","dataId":"1.xlsx","confirm":false,"sessionId":"S1002","expected":"最小二乘回归"}
{"prompt":"我想根据历史数据,估算以后大概能卖多少。","dataId":"1.xlsx","confirm":false,"sessionId":"S1003","expected":"最小二乘回归"}
{"prompt":"这三项增长一起看,能不能算出今年 GDP 大概涨多少?","dataId":"2.xlsx","confirm":false,"sessionId":"S1003","expected":"岭回归"}
{"prompt":"我想根据这三项指标,预测一下 GDP 增长。","dataId":"2.xlsx","confirm":false,"sessionId":"S1004","expected":"岭回归"}
{"prompt":"根据这些数据,能不能帮我建一个模型,预测一下房价?","dataId":"3.xlsx","confirm":false,"sessionId":"S1005","expected":"Lasso 回归"}
{"prompt":"我想根据这些特征,预测一下房价。","dataId":"3.xlsx","confirm":false,"sessionId":"S1006","expected":"Lasso 回归"}
src/main/resources/testcases/test_result/res1.xlsx
0 → 100644
View file @
2c8526bc
File added
src/main/resources/testcases/test_result/result.xlsx
0 → 100644
View file @
2c8526bc
File added
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment