Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
B
brandkbs2
Overview
Overview
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
shenjunjie
brandkbs2
Commits
0d50d0f7
Commit
0d50d0f7
authored
Aug 12, 2024
by
陈健智
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
ai搜索调整
parent
511201a3
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
60 additions
and
20 deletions
+60
-20
src/main/java/com/zhiwei/brandkbs2/common/DoubaoAIAccountFactor.java
+0
-13
src/main/java/com/zhiwei/brandkbs2/controller/app/AppSearchController.java
+8
-1
src/main/java/com/zhiwei/brandkbs2/service/MarkDataService.java
+12
-0
src/main/java/com/zhiwei/brandkbs2/service/impl/MarkDataServiceImpl.java
+40
-6
No files found.
src/main/java/com/zhiwei/brandkbs2/common/DoubaoAIAccountFactor.java
View file @
0d50d0f7
...
...
@@ -16,19 +16,6 @@ import java.util.List;
*/
public
class
DoubaoAIAccountFactor
{
// public static Account getPersonalAccount() {
// String apiKey = "1ff5c1f2-4fa0-4e40-8ea8-3c9674e05a33";
// List<AccessModel> modelList = new ArrayList<>();
// modelList.add(new AccessModel("ep-20240722180424-45xkt", AccessModel.Model.DOUBAO_PRO_4K));
// modelList.add(new AccessModel("ep-20240723162722-7p4xw", AccessModel.Model.DOUBAO_PRO_32K));
// modelList.add(new AccessModel("ep-20240723153621-6hd22", AccessModel.Model.DOUBAO_PRO_128K));
// modelList.add(new AccessModel("ep-20240723164110-qhtxm", AccessModel.Model.DOUBAO_LITE_4K));
// modelList.add(new AccessModel("ep-20240723164127-44ksx", AccessModel.Model.DOUBAO_LITE_32K));
// modelList.add(new AccessModel("ep-20240723164141-xxmhs", AccessModel.Model.DOUBAO_LITE_128K));
// return new Account(apiKey, modelList);
// }
public
static
Account
getCompanyAccount
()
{
String
apiKey
=
"607764fc-c9d9-47e4-a673-a310852917a0"
;
List
<
AccessModel
>
modelList
=
new
ArrayList
<>();
...
...
src/main/java/com/zhiwei/brandkbs2/controller/app/AppSearchController.java
View file @
0d50d0f7
...
...
@@ -353,11 +353,18 @@ public class AppSearchController extends BaseController {
}
@ApiOperation
(
"搜索-AI搜索"
)
@GetMapping
(
"/ai"
)
@GetMapping
(
"/ai
/answer
"
)
public
ResponseResult
getAISearchResult
(
@RequestParam
(
value
=
"question"
)
String
question
)
{
return
ResponseResult
.
success
(
markDataService
.
getAISearchResult
(
question
));
}
@ApiOperation
(
"搜索-AI参考提问"
)
@GetMapping
(
"/ai/question"
)
public
ResponseResult
getAIReferenceQuestion
(
@RequestParam
(
value
=
"question"
)
String
question
,
@RequestParam
(
value
=
"size"
)
int
size
)
{
return
ResponseResult
.
success
(
markDataService
.
getAIReferenceQuestion
(
question
,
size
));
}
@ApiOperation
(
"搜索-搜索关键词历史记录"
)
@GetMapping
(
"/keyword/cache"
)
public
ResponseResult
getSearchKeywordCache
(
@ApiParam
(
name
=
"searchType"
,
...
...
src/main/java/com/zhiwei/brandkbs2/service/MarkDataService.java
View file @
0d50d0f7
...
...
@@ -837,5 +837,17 @@ public interface MarkDataService {
*/
List
<
String
>
expandOriginRange
(
MarkSearchDTO
dto
);
/**
* ai搜索-ai参考提问
* @param question
* @return
*/
List
<
String
>
getAIReferenceQuestion
(
String
question
,
int
size
);
/**
* ai搜索-搜索结果
* @param question
* @return
*/
JSONObject
getAISearchResult
(
String
question
);
}
src/main/java/com/zhiwei/brandkbs2/service/impl/MarkDataServiceImpl.java
View file @
0d50d0f7
...
...
@@ -119,7 +119,7 @@ public class MarkDataServiceImpl implements MarkDataService {
"3.提及到 XX 渠道的定义为渠道要素,条件给到该渠道名。\n"
+
"4.提及到正面、中性、负面的定义为标签要素,条件给到该标签名。\n"
+
"5.提及到针对 XX ,针对 XX 相关或 XX 相关的定义为搜索条件要素(必须包含 针对/相关 字样),条件给到具体值\n"
+
"
5
.时间和项目要素为必需要素,若不满足则返回“无法回答”。\n"
+
"
6
.时间和项目要素为必需要素,若不满足则返回“无法回答”。\n"
+
"\n"
+
"参考例子:\n"
+
"示例 1:\n"
+
...
...
@@ -136,9 +136,12 @@ public class MarkDataServiceImpl implements MarkDataService {
"1 按照指定输出格式输出。\n"
+
"2 严格按照规则进行提炼。\n"
+
"###"
;
private
static
final
String
RESULT_PROMPT
=
"假如你是专业的分析报告人员,你将根据用户提供的内容,给出自己
的详细分析和见解。并注明理由(提供对应的数据文本1-{0})
"
+
private
static
final
String
RESULT_PROMPT
=
"假如你是专业的分析报告人员,你将根据用户提供的内容,给出自己
提炼的5个的详细分析和见解。并在每点分析后用数字表示注明1-{0}的参考文章,分析结果和参考文章之间严格用”|“作为分隔符进行分隔,并且多个参考文章之间也严格用”|“作为分隔符进行分隔,若没有对应的参考文章则无需返回,示例:分析结果。|1|2|3
"
+
"请分析:"
;
private
static
final
String
REFERENCE_QUESTION_PROMPT
=
"假如你是专业的问题提出人员,提出自己{0}个关于的{1}参考问题,每个问题给到准确的序号,问题必须包含 针对/相关 字样,每个问题之间严格用”|“作为分隔符进行分隔。"
+
"请提出:"
;
@Value
(
"${istarshine.addIStarShineKSData.url}"
)
private
String
addIStarShineKSDataUrl
;
...
...
@@ -3951,6 +3954,22 @@ public class MarkDataServiceImpl implements MarkDataService {
}
@Override
public
List
<
String
>
getAIReferenceQuestion
(
String
question
,
int
size
)
{
try
{
// 选用的模型名称
String
modelName
=
AccessModel
.
Model
.
DOUBAO_PRO_32K
.
getModelName
();
String
projectName
=
GlobalPojo
.
PROJECT_MAP
.
get
(
UserThreadLocal
.
getProjectId
()).
getProjectName
();
ChatCompletionResult
result
=
standardRequest
(
question
,
modelName
,
MessageFormat
.
format
(
REFERENCE_QUESTION_PROMPT
,
size
,
projectName
));
Object
resultContent
=
result
.
getChoices
().
get
(
0
).
getMessage
().
getContent
();
String
[]
splits
=
String
.
valueOf
(
resultContent
).
split
(
"\\|"
);
return
new
ArrayList
<>(
Arrays
.
asList
(
splits
)).
stream
().
filter
(
StringUtils:
:
isNoneBlank
).
map
(
String:
:
trim
).
collect
(
Collectors
.
toList
());
}
catch
(
Exception
e
){
ExceptionCast
.
cast
(
CommonCodeEnum
.
FAIL
,
"获取ai参考提问异常-"
,
e
);
}
return
null
;
}
@Override
public
JSONObject
getAISearchResult
(
String
question
)
{
JSONObject
res
=
new
JSONObject
();
try
{
...
...
@@ -3973,7 +3992,25 @@ public class MarkDataServiceImpl implements MarkDataService {
String
sbContent
=
sb
.
toString
();
result
=
standardRequest
(
sbContent
,
modelName
,
MessageFormat
.
format
(
RESULT_PROMPT
,
list
.
size
())
+
question
);
Object
resultContent
=
result
.
getChoices
().
get
(
0
).
getMessage
().
getContent
();
res
.
put
(
"result"
,
resultContent
);
String
[]
splits
=
String
.
valueOf
(
resultContent
).
split
(
"\\r?\\n"
);
List
<
JSONObject
>
answers
=
new
ArrayList
<>();
for
(
int
i
=
0
;
i
<
splits
.
length
;
i
++)
{
JSONObject
answer
=
new
JSONObject
();
String
[]
sonSplit
=
splits
[
i
].
split
(
"\\|"
);
if
(
0
==
sonSplit
.
length
){
continue
;
}
if
(
i
==
0
){
answer
.
put
(
"answer"
,
splits
[
i
].
trim
());
answers
.
add
(
answer
);
continue
;
}
answer
.
put
(
"answer"
,
sonSplit
[
0
]);
List
<
String
>
sonSplitList
=
new
ArrayList
<>(
Arrays
.
asList
(
sonSplit
)).
stream
().
filter
(
StringUtils:
:
isNoneBlank
).
skip
(
1
).
collect
(
Collectors
.
toList
());
answer
.
put
(
"referenceArticles"
,
sonSplitList
);
answers
.
add
(
answer
);
}
res
.
put
(
"answers"
,
answers
);
res
.
put
(
"articles"
,
articles
);
}
catch
(
Exception
e
){
ExceptionCast
.
cast
(
CommonCodeEnum
.
FAIL
,
"ai搜索异常-"
,
e
);
...
...
@@ -3986,9 +4023,7 @@ public class MarkDataServiceImpl implements MarkDataService {
}
private
ChatCompletionResult
standardRequest
(
String
content
,
String
modelName
,
String
prompt
)
{
// DoubaoAIAccountFactor.Account account = DoubaoAIAccountFactor.getCompanyAccount();
AccessModel
model
=
DoubaoAIAccountFactor
.
getCompanyAccount
().
getModelList
().
stream
().
collect
(
Collectors
.
toMap
(
AccessModel:
:
getModelName
,
m
->
m
)).
get
(
modelName
);
// ArkService service = new ArkService(account.getApiKey());
ChatCompletionResult
chatCompletion
=
null
;
try
{
final
List
<
ChatMessage
>
messages
=
new
ArrayList
<>();
...
...
@@ -3998,7 +4033,6 @@ public class MarkDataServiceImpl implements MarkDataService {
messages
.
add
(
userMessage
);
ChatCompletionRequest
chatCompletionRequest
=
ChatCompletionRequest
.
builder
().
model
(
model
.
getModelId
()).
messages
(
messages
).
build
();
chatCompletion
=
DoubaoAIAccountFactor
.
arkService
.
createChatCompletion
(
chatCompletionRequest
);
log
.
info
(
"chatCompletion-content:{}"
,
JSONObject
.
toJSONString
(
chatCompletion
.
getChoices
().
get
(
0
).
getMessage
().
getContent
()));
if
(
chatCompletion
.
getChoices
().
size
()
>
1
)
{
log
.
error
(
"异常chatCompletion:{}"
,
JSON
.
toJSONString
(
chatCompletion
));
return
null
;
...
...
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