Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
ccran
/
lufa-contract
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Members
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
663fd9f2
authored
Jun 03, 2026
by
ccran
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat: fix review bugs;
parent
300ece59
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
21 additions
and
16 deletions
+21
-16
core/config.py
+3
-3
core/tools/segment_review.py
+16
-11
data/rules.xlsx
+0
-0
utils/http_util.py
+2
-2
No files found.
core/config.py
View file @
663fd9f2
...
...
@@ -46,7 +46,7 @@ FILE_SUFFIX = "-审核批注"
## 关键参数**
use_non_fastgpt_llm
=
False
use_lufa
=
Tru
e
use_lufa
=
Fals
e
use_jp_machine
=
True
## 关键参数**
...
...
@@ -68,9 +68,9 @@ else:
base_fastgpt_url
=
"http://192.168.252.71:18088"
base_backend_url
=
"http://192.168.252.71:48080"
else
:
outer_backend_url
=
"http://172.21.107.45:48080"
outer_backend_url
=
"http
s
://172.21.107.45:48080"
base_fastgpt_url
=
"http://172.21.107.45:3030"
base_backend_url
=
"http://172.21.107.45:
48080
"
base_backend_url
=
"http://172.21.107.45:
1122
"
ocr_url
=
"http://172.21.107.45:8202/openapi/ocrUploadFile"
segment_review_api_key
=
(
"fastgpt-vLu2JHAfqwEq5FUQhvATFDK0yDS6fs804v7KwWBMyU4sRrHzh4UGl89Zpa"
...
...
core/tools/segment_review.py
View file @
663fd9f2
...
...
@@ -309,7 +309,7 @@ class SegmentReviewTool(LLMTool):
party_role
:
str
,
context_summaries
:
Optional
[
List
[
Dict
]]
=
None
,
context_memories
:
Optional
[
List
[
Dict
]]
=
None
,
merge_rules_prompt
:
bool
=
Tru
e
,
merge_rules_prompt
:
bool
=
Fals
e
,
)
->
Dict
:
rules
=
rules
or
[]
result
=
self
.
_evaluate_rules
(
...
...
@@ -372,7 +372,9 @@ class SegmentReviewTool(LLMTool):
context_memories
:
Optional
[
List
[
Dict
]],
)
->
List
[
Dict
[
str
,
str
]]:
ruleset_text
=
"
\n\n
"
.
join
([
self
.
_stringify_rule
(
rule
)
for
rule
in
rules
])
user_content
=
REVIEW_USER_PROMPT
.
format
(
user_content
=
(
REVIEW_USER_PROMPT_JP
if
not
use_lufa
else
REVIEW_USER_PROMPT_LF
)
.
format
(
segment_id
=
segment_id
,
segment_text
=
segment_text
,
party_role
=
party_role
,
...
...
@@ -494,24 +496,27 @@ class SegmentReviewTool(LLMTool):
if
__name__
==
"__main__"
:
tool
=
SegmentReviewTool
()
segment_text
=
"""
answer: 1.1“甲方(买方)”是指【冕宁县穗发新能源有限公司 】,包括其指定继承人(其指定继承人将全面继承需方在本合同的权利、义务和责任)。
answer: 14.11由于买方与卖方的合同分包商和外购设备供货商没有直接的合同关系,故本合同设备的卖方的分包和外购设备的付款由卖方负责。但如果发生由于个别原因(包括但不限于买方虽按时向卖方付款而卖方没有按时向其分包商或外购设备供货商付款等情形)导致卖方的分包和外购设备有可能无法按时交货以至于影响施工进度的情况,买方有权暂时中止向卖方付款。在卖方向其分包商或外购设备供货商支付相关款项后,买方将继续向卖方付款,同时买方还将追究卖方延误工期的责任。如果卖方仍未向其分包商或外购设备供货商付款,买方将出于保障工程进度的目的,有权直接向其分包商或外购设备供货商付款。但在此情况下,卖方必须协助买方同卖方的分包商或外购设备供货商另行签订转付款协议书,同时该协议书中此转付款连同买方发生的贷款利息将从下一笔买方向卖方的应付款中扣除。
answer: 14.12若买方认为卖方因财务或其他问题未能履行本合同内的义务,买方有权自行或另请其他方履行本合同余下的义务。卖方保证分包合同中将载有规定,在卖方无法继续经营或履行分包合同的情况下,卖方在各分包合同下的权利自动转让给买方或买方指定的其他方。
answer: 20.8.2 卖方资质出现失效、未通过年审(年检)或被主管部门注销的,买方有权单方面解除合同并将合同未完成事项转由有资质的单位承接,已完成的事项按实结算。如因上述情形导致买方损失的,卖方应予完全赔偿。 """
买方取消订单时,卖方有证据证明其已经安排生产的,如是定制产品,买方应当按取消订单产品价款的80
%
向卖方赔偿损失;如是常规产品,买方应当按照取消订单部分产品价款的50
%
向卖方赔偿损失。
"""
result
=
tool
.
run
(
segment_id
=
1
,
segment_text
=
segment_text
,
rules
=
[
{
"title"
:
"
第三方
审查"
,
"title"
:
"
变更取消责任
审查"
,
"rule"
:
"""
1)
货款支付不能涉及第三方(业主或委托付款方)
2)
不能明确提及甲方将履行义务转移给第三方(业主或委托付款方)
3)
买方转移债务到第三方(业主或委托付款方),由卖方直接向第三方(业主或委托付款方)行使债权,审查不合格
1)
我司不能接受,买方单方面变更或取消合同,同时又未明确责任或者责任过轻不足以弥补损失
2)
我司不能接受,甲方合同发生变更同时又未明确甲方违约金额
3)
我司不能接受,甲方中途退货没有规定甲方违约责任或甲方违约金额低于80
%
(定制产品)/50
%
(常规产品)
"""
,
"case"
:
"""
## 案例1:
原文:买方取消订单时,卖方有证据证明其已经安排生产的,如是定制产品,买方应当按取消订单产品价款的80
%
向卖方赔偿损失;如是常规产品,买方应当按照取消订单部分产品价款的50
%
向卖方赔偿损失。
结论:审查合格,定制产品为80
%
的额度,常规产品为50
%
的额度
"""
}
],
party_role
=
"
麓谷发展
"
,
party_role
=
"
甲方
"
,
)
print
(
json
.
dumps
(
result
,
ensure_ascii
=
False
,
indent
=
2
))
...
...
data/rules.xlsx
View file @
663fd9f2
No preview for this file type
utils/http_util.py
View file @
663fd9f2
...
...
@@ -113,7 +113,7 @@ def _resolve_download_filename(url: str, response: requests.Response) -> str:
# 下载url到本地path
def
download_file
(
url
,
path
,
input_url_to_inner
=
True
):
if
not
url
.
startswith
(
"http:"
):
if
not
url
.
startswith
(
"http:"
)
and
not
url
.
startswith
(
"https:"
)
:
url
=
base_fastgpt_url
+
url
url
=
url
.
replace
(
outer_backend_url
,
base_backend_url
)
logger
.
info
(
f
"url准备下载:{url}"
)
...
...
@@ -146,5 +146,5 @@ def url_replace_fastgpt(origin: str):
if
__name__
==
"__main__"
:
# d = '/home/ccran/file.docx'
d
=
"/
home/ccran/lufa-contract/tmp/default.json
"
d
=
"/
Users/chenran/VsProject/lufa-contract/demo/2020100593中建大成建筑(B类).pdf
"
print
(
upload_file
(
d
))
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