Files
Liti-agent-Development/Update_prompt_3_5_1_research.txt

90 lines
4.4 KiB
Plaintext

# Ultimate Goal
청구권/청구취지/청구원인 내용에 대한 법률적 "요건사실"을 외부 Database에서 추출하는 쿼리(query) 생성
# Input
- 청구전작업.md
# 작업 1: 검색용 target DB 지정
- 청구전작업.md의 **2. 청구권 우선순위 요약**에 있는 표(table)의 **청구권** column의 각 셀(cell)에 존재하는 내용에서 keyword 추출
- 예: 대여금(연대보증채무) 청구 --> "대여금 청구"
- 예: 구상금 청구 --> "구상금 청구"
- 예: "사해행위취소(개포동 아파트)" --> "사해행위취소 청구"
- 예: 전득자 사해행위취소(김포 근저당) --> "사해행위취소 청구"
- 단, 표(table)에서 "총점"이 5점 미만일 경우는 keyword 추출 대상에서 제외한다.
- 추출한 keyword를 "DB_legally_required_facts_description.md"의 표(table)의 "사건종류" column의 내용에 매칭(matching)
- 예: [keyword: 대여금 청구]이면 [사건종류: 대여금 청구]에 매칭
- "사건 종류"에 대응하는 "Weaviate DB" cell 내용을 추출
- 예: [사건종류: 대여금 청구]이면 "[Collection: Legal_Books] - [Tenant: Loan_Claim_legally_required_facts]" 추출
- 추출한 "Weaviate DB" 항목을 쿼리 검색을 위한 target Weviate DB로 지정
# 작업 2: hybrid search를 위한 쿼리(query) 생성
- 청구전작업.md의 **3. 상위 청구권 상세(Top 5)**에 제시된 "(1) C-001: .. ", "(2) C-002: .."들 각 항목들과 **4. 기타 청구권(6위 이하)**에 제시된 "청구권"을 **작업 1**에서 생성한 keyword에 매칭하여 청구권 별 "사건 종류"를 결정
- 청구전작업.md의 **3. 상위 청구권 상세(Top 5)**에 제시된 "(1) C-001: .. ", "(2) C-002: .."들 각 항목의 "청구취지"와 "청구원인"을 추출하고, **4. 기타 청구권(6위 이하)**에 제시된 "청구권"과 "청구취지"/"청구원인"(only if it exists)을 추출
- 각 "청구취지"/"청구원인" 혹은 "청구권"에 대한 사건별 "요건사실(legally required facts)"을 검색하기 위한 쿼리를 생성
- 쿼리는 Weaviate의 hybrid search에 최적화된 파라미터값을 부여함
- 쿼리 작성 시 부여할 파라미터값은 아래에 제시된 Weaviate용 hybrid search 정의(<def_hybrid_search>)를 참조할 것
<def_hybrid_search>
- def search_hybrid(
collection_name: str,
query: Optional[str] = None,
alpha: Optional[float] = None,
vector: Any = None,
query_properties: Any = None,
fusion_type: Optional[str] = None,
limit: Optional[int] = None,
offset: Optional[int] = None,
bm25_operator: Optional[str] = None,
bm25_minimum_match: Optional[int] = None,
auto_limit: Optional[int] = None,
filters: Optional[str] = None,
group_by: Optional[str] = None,
rerank_query: Optional[str] = None,
rerank_property: Optional[str] = None,
target_vector: Optional[str] = None,
include_vector: bool = False,
tenant: Optional[str] = None
) -> List[dict]:
"""Perform a hybrid search on a collection."""
- search_bm25(collection_name: str, query: str, limit: int = 10, tenant: Optional[str] = None) -> List[dict]:
"""Perform a BM25 (keyword) search on a collection."""
</def_hybrid_search>
# 작업 3: output format
- 청구전작업.md의 **2. 청구권 우선순위 요약**에 있는 "claim_id"와 "청구권" 조합별로 작업 2에서 작성한 쿼리를 기록
- 쿼리들은 순서대로 json 형식으로 기록
- 최종 output은 queries_legal_facts_search.json로 생성
# 제약조건
1. mcp tools는 List_MCP_Tools.txt에 있는 것들 중에서 필요한 것을 골라서 프롬프트에 삽입
2. MCP Tools 사용 시 아래의 에러처리 규칙을 프롬프트 상위에 표기
- 에러 처리 규칙
**파일 도구 에러:**
- 반환값이 `"Error:"`로 시작하면 실패 → 네임스페이스 변경 후 **1회만 재시도**
- 재시도 실패 시 해당 작업만 건너뛰고 진행
- 무한 재시도 금지
**Weaviate 도구 에러:**
- 반환값이 `{"error": "..."}` 형태면 실패
- tenant 지정 누락 에러 시: tenant 파라미터 확인 후 재시도
- 그 외 에러 시: `DB_CRITERIA = "조회실패"` 설정 후 **Fallback 결정 트리** 적용
**검증/재시도 상한:**
- 동일 작업 최대 2회 재시도 (총 3회 시도)
- 3회 시도 후에도 실패 시: 최선의 결과로 진행 + `VALIDATION WARNING` 기록