Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in
Toggle navigation
P
poc-api
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
1
Merge Requests
1
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
poc
poc-api
Commits
964a0b97
You need to sign in or sign up before continuing.
Commit
964a0b97
authored
May 12, 2025
by
alex yao
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat:优化长文理解插件
parent
db979b24
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
25 additions
and
19 deletions
+25
-19
DocumentUnderstandIngFunction.java
...document_understanding/DocumentUnderstandIngFunction.java
+18
-12
LongDocumentReaderFunction.java
...tion/long_document_reader/LongDocumentReaderFunction.java
+7
-7
No files found.
src/main/java/cn/com/poc/thirdparty/resource/demand/ai/function/document_understanding/DocumentUnderstandIngFunction.java
View file @
964a0b97
...
...
@@ -30,11 +30,7 @@ public class DocumentUnderstandIngFunction extends AbstractLargeModelFunction {
private
final
String
MODEL
=
"qwen-long"
;
private
final
String
TEMPLATE
=
"# 工作规范:\n 1.工作流程:①对提供的文档内容进行理解,支持信息检索、摘要总结、文本分析。②根据用户提出的问题,提取或者总结文档中与问题相关的内容。2.工作限制:①要将问题与文档内容精准匹配,在理解文档时要带着问题去理解 \n\n"
+
"## 文档内容\n"
+
"${document_content}\n"
+
"## 用户问题\n"
+
"${question}"
;
private
final
String
TEMPLATE
=
"# 工作规范:\n 1.工作流程:①对提供的文档内容进行理解,支持信息检索、摘要总结、文本分析。②根据用户提出的问题,提取或者总结文档中与问题相关的内容。2.工作限制:①要将问题与文档内容精准匹配,在理解文档时要带着问题去理解 \n\n"
;
private
final
String
DESC
=
"仅支持文档doc、docx、pdf、txt、md、xlsx、csv、xls,解析长文档内容理解,支持信息检索、摘要总结、文本分析能力,不可解析网页"
;
...
...
@@ -52,15 +48,13 @@ public class DocumentUnderstandIngFunction extends AbstractLargeModelFunction {
@Override
public
AbstractFunctionResult
<
String
>
doFunction
(
String
content
,
String
identifier
)
{
AbstractFunctionResult
<
String
>
result
=
new
AbstractFunctionResult
<>();
if
(
StringUtils
.
isBlank
(
content
))
{
result
.
setFunctionResult
(
StringUtils
.
EMPTY
);
result
.
setPromptContent
(
StringUtils
.
EMPTY
);
if
(
StringUtils
.
isBlank
(
content
))
{
return
result
;
}
JSONObject
jsonObject
=
JSON
.
parseObject
(
content
);
if
(!
jsonObject
.
containsKey
(
"question"
)
||
!
jsonObject
.
containsKey
(
"file_url"
)){
result
.
setFunctionResult
(
StringUtils
.
EMPTY
);
result
.
setPromptContent
(
StringUtils
.
EMPTY
);
return
result
;
}
...
...
@@ -70,16 +64,28 @@ public class DocumentUnderstandIngFunction extends AbstractLargeModelFunction {
String
documentContent
;
try
{
documentContent
=
DocumentLoad
.
documentToText
(
file
);
if
(
StringUtils
.
isBlank
(
documentContent
)){
return
result
;
}
}
catch
(
Exception
e
)
{
documentContent
=
StringUtils
.
EMPTY
;
return
result
;
}
Message
systemMessage
=
new
Message
();
systemMessage
.
setRole
(
"system"
);
systemMessage
.
setContent
(
TEMPLATE
);
Message
fileContentMessage
=
new
Message
();
fileContentMessage
.
setRole
(
"system"
);
fileContentMessage
.
setContent
(
documentContent
);
Message
message
=
new
Message
();
message
.
setRole
(
"user"
);
message
.
setContent
(
TEMPLATE
.
replace
(
"${document_content}"
,
documentContent
).
replace
(
"${question}"
,
question
));
message
.
setContent
(
question
));
LargeModelResponse
largeModelResponse
=
new
LargeModelResponse
();
largeModelResponse
.
setModel
(
MODEL
);
largeModelResponse
.
setMessages
(
new
Message
[]{
message
});
largeModelResponse
.
setMessages
(
new
Message
[]{
systemMessage
,
fileContentMessage
,
message
});
largeModelResponse
.
setStream
(
false
);
largeModelResponse
.
setUser
(
"Document_Understanding"
);
LargeModelDemandResult
largeModelDemandResult
=
llmService
.
chat
(
largeModelResponse
);
...
...
src/main/java/cn/com/poc/thirdparty/resource/demand/ai/function/long_document_reader/LongDocumentReaderFunction.java
View file @
964a0b97
...
...
@@ -36,6 +36,8 @@ public class LongDocumentReaderFunction extends AbstractLargeModelFunction {
private
final
String
DESC
=
"长文档理解,适合用于文档内容长、文件大的文档,结合用户问题与文档理解的插件,仅支持文档doc、docx、pdf、txt、md、xlsx、csv、xls"
;
private
final
String
SYSTEM_PROMPT
=
"# 工作规范:\n 1.工作流程:①对提供的文档内容进行理解,支持信息检索、摘要总结、文本分析。②根据用户提出的问题,提取或者总结文档中与问题相关的内容。2.工作限制:①要将问题与文档内容精准匹配,在理解文档时要带着问题去理解 \n\n"
;
private
final
FunctionLLMConfig
functionLLMConfig
=
new
FunctionLLMConfig
.
FunctionLLMConfigBuilder
()
.
name
(
"long_document_reader"
)
...
...
@@ -49,15 +51,13 @@ public class LongDocumentReaderFunction extends AbstractLargeModelFunction {
@Override
public
AbstractFunctionResult
<
String
>
doFunction
(
String
content
,
String
identifier
)
{
AbstractFunctionResult
<
String
>
result
=
new
AbstractFunctionResult
<>();
if
(
StringUtils
.
isBlank
(
content
))
{
result
.
setFunctionResult
(
StringUtils
.
EMPTY
);
result
.
setPromptContent
(
StringUtils
.
EMPTY
);
if
(
StringUtils
.
isBlank
(
content
))
{
return
result
;
}
JSONObject
jsonObject
=
JSON
.
parseObject
(
content
);
if
(!
jsonObject
.
containsKey
(
"question"
)
||
!
jsonObject
.
containsKey
(
"file_url"
))
{
result
.
setFunctionResult
(
StringUtils
.
EMPTY
);
result
.
setPromptContent
(
StringUtils
.
EMPTY
);
return
result
;
}
...
...
@@ -68,11 +68,11 @@ public class LongDocumentReaderFunction extends AbstractLargeModelFunction {
try
{
documentContent
=
DocumentLoad
.
documentToText
(
file
);
}
catch
(
Exception
e
)
{
documentContent
=
StringUtils
.
EMPTY
;
return
result
;
}
Message
systemMessage
=
new
Message
();
systemMessage
.
setRole
(
"system"
);
systemMessage
.
setContent
(
"任务是对文档和用户问题进行分析"
);
systemMessage
.
setContent
(
SYSTEM_PROMPT
);
Message
documentMessage
=
new
Message
();
documentMessage
.
setRole
(
"system"
);
...
...
@@ -87,7 +87,7 @@ public class LongDocumentReaderFunction extends AbstractLargeModelFunction {
largeModelResponse
.
setModel
(
MODEL
);
largeModelResponse
.
setMessages
(
messages
);
largeModelResponse
.
setStream
(
false
);
largeModelResponse
.
setUser
(
"
Document_Understanding
"
);
largeModelResponse
.
setUser
(
"
Long_Document_Reader
"
);
LargeModelDemandResult
largeModelDemandResult
=
llmService
.
chat
(
largeModelResponse
);
if
(
largeModelDemandResult
==
null
)
{
result
.
setFunctionResult
(
StringUtils
.
EMPTY
);
...
...
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