Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
L
LAE
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
文靖昊
LAE
Commits
45d5cb3a
Commit
45d5cb3a
authored
Nov 15, 2024
by
文靖昊
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
问题重写逻辑修改,加入正则匹配不规范的回答
parent
be543be5
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
31 additions
and
6 deletions
+31
-6
api.py
src/controller/api.py
+12
-4
rewrite.py
src/server/rewrite.py
+19
-2
No files found.
src/controller/api.py
View file @
45d5cb3a
...
...
@@ -123,12 +123,20 @@ def classify(chat_request: GeoAgentRateRequest):
llm
=
agent_manager
.
get_router_llm
()
re_llm
=
agent_manager
.
get_re_rewriter_llm
()
try
:
# history = re_llm.extend_history(history=chat_request.history)
# rewrite = re_llm.invoke(chat_request.query, history)
answer
=
llm
.
invoke
(
chat_request
.
query
)
if
chat_request
.
query
is
None
:
return
{
'code'
:
500
,
'data'
:
"缺少必要的参数 query"
}
if
chat_request
.
history
is
None
:
history
=
""
else
:
history
=
re_llm
.
extend_history
(
history
=
chat_request
.
history
)
rewrite
=
re_llm
.
invoke
(
chat_request
.
query
,
history
)
answer
=
llm
.
invoke
(
rewrite
)
res
=
{
"datasource"
:
answer
.
datasource
,
"rewrite"
:
chat_request
.
query
"rewrite"
:
rewrite
}
except
Exception
as
e
:
print
(
f
"分类失败, 错误信息: {str(e)},请重新提问"
)
...
...
src/server/rewrite.py
View file @
45d5cb3a
...
...
@@ -83,6 +83,7 @@ A: Laf 是一个云函数开发平台。
from
pydantic
import
BaseModel
,
Field
from
langchain_core.prompts
import
PromptTemplate
from
langchain_core.output_parsers
import
PydanticOutputParser
import
re
class
ReWriterModel
(
BaseModel
):
...
...
@@ -99,10 +100,26 @@ class ReWriteLLM:
input_variables
=
[
"histories"
,
"query"
],
partial_variables
=
{
"format_instructions"
:
parser
.
get_format_instructions
()},
)
self
.
router
=
prompt
|
llm
|
parser
self
.
router
=
prompt
|
llm
self
.
parser
=
parser
def
invoke
(
self
,
question
,
history
):
return
self
.
router
.
invoke
({
"query"
:
question
,
"histories"
:
history
})
response
=
self
.
router
.
invoke
({
"query"
:
question
,
"histories"
:
history
})
try
:
result
=
self
.
parser
.
invoke
(
response
)
except
:
# 定义正则表达式模式
pattern
=
re
.
compile
(
r'重写后的问题:\s*(?:{\s*"rewriter"\s*:\s*"([^"]+)"\s*}|([^,]+))'
)
# 查找所有匹配
matches
=
pattern
.
findall
(
response
.
content
)
for
match
in
matches
:
if
match
[
0
]:
# 第一种情况
return
match
[
0
]
.
strip
()
elif
match
[
1
]:
# 第二种情况
return
match
[
1
]
.
strip
()
return
response
.
content
return
result
.
rewriter
def
extend_history
(
self
,
history
):
history_extend
=
""
...
...
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