Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
68 changes: 65 additions & 3 deletions app/services/policy_service.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,12 +33,53 @@
qa_chain = RetrievalQA.from_chain_type(
llm=llm,
chain_type="stuff",
retriever=vectorstore.as_retriever(search_kwargs={"k": 8}),
retriever=vectorstore.as_retriever(search_kwargs={"k": 5}),
)


# 상세 설명 추출
def get_policy_description(title: str) -> str:
fallback_hardcoded = {
"중장년 경력지원제": """📌 대상:
- (참여자) 중장년내일센터 및 훈련기관을 통해 자격취득 또는 훈련 이수, 국민취업지원제도에 참여하여 IAP 수립 후 경력전환을 희망하는 50세 이상 중장년
- (참여기업) 고용보험 피보험자수 10인 이상 기업 (기술·경영 혁신형 중소기업은 5인 이상도 가능)

📌 지원 요건:
- 위 대상에 해당하며 경력전환을 위한 훈련 이수 또는 자격취득

📌 지원 내용:
- 주된 업무에서 퇴직한 사무직 등 중장년에게 경력전환형 일경험을
쌓을 수 있도록 지원하여 취업가능성 제고
- 참여자: 참여수당 월 150만원
- 참여기업: 참여자 1인당 월 40만원 운영지원금
- 1~3개월 유망 자격/훈련 분야 실무 수행, 직무교육, 멘토링 제공
""",
"재취업지원서비스 시행지원": """📌 대상:
- 재취업지원서비스 지원 사업주 (300인 이상 기업)

📌 지원 요건:
- 재취업지원서비스 제도 설계 또는 운영을 준비 중인 기업

📌 지원 내용:
- 제도 설계 컨설팅, 인사담당자 교육, 업종별 표준 프로그램 개발·보급
""",
"중장년 내일센터": """📌 대상:
- 40세 이상 중장년층에게 생애설계, 재취업 및 창업 지원, 특화서비스등의 종합 고용지원서비스를 제공하여 고용안정 및 재취업 촉진 도모

📌 지원 요건:
- 중장년층 생애설계, 재취업·창업·전직 필요자

📌 지원 내용:
- 생애경력설계, 전직스쿨, 재도약 프로그램
- 산업별 특화서비스, 중장년 청춘문화공간 운영
- 사업주 대상 고용확대 컨설팅, 직무교육, 채용지원 전담반 운영
""",
}

if title in fallback_hardcoded:
return fallback_hardcoded[title]

# 기본 프롬프트
prompt = f"""
정책명: {title}

Expand All @@ -52,9 +93,30 @@ def get_policy_description(title: str) -> str:

정보를 직접 문서에서 발췌해서, 최대한 사실 그대로 출력해줘.
너의 생각이나 요약 없이, 원문 중심으로 정리해줘.

"""
return qa_chain.run(prompt).strip()

result = qa_chain.run(prompt).strip()

fallback_phrases = [
"찾을 수 없습니다",
"죄송합니다",
"정보가 없습니다",
"I don't",
"no information",
"모르겠습니다",
]

if any(p in result for p in fallback_phrases) or len(result.split()) < 30:
fallback_prompt = f"""
문서에서 정책 제목이 "{title}"로 시작하는 섹션만 발췌해서 그대로 보여줘.
다른 정책 내용은 포함하지 말고, 최대한 많이 보여줘.
"""
result = qa_chain.run(fallback_prompt).strip()

if any(p in result for p in fallback_phrases) or len(result.split()) < 30:
result = "아래 링크에서 정책 원문을 확인해보세요."

return result


# 메인 함수
Expand Down
Loading