
JoySafety
생성형 AI 애플리케이션이 널리 보급됨에 따라 콘텐츠 안전, 데이터 유출, 프롬프트 공격 등의 위험이 점점 더 부각되고 있습니다. 대형 언어 모델의 출력이 법규 요구사항을 준수하고 보안 취약점을 방지하는 방법은 기업이 반드시 해결해야 할 핵심 과제가 되었습니다. 이에 JD.com에서 대형 언어 모델 보안 프레임워크인 JoySafety를 정식 오픈소스로 공개합니다. 이 프레임워크는 JD.com 내부에서 널리 사용되며 AI 쇼핑 가이드, 물류 고객센터, 영업 어시스턴트, 의료 문진, 판매자 작업대, 법률 상담, 보안 Q&A 등 다양한 시나리오를 포괄합니다. 일일 수억 건의 호출과 95% 이상의 공격 차단율을 지원하며, 기업에 성숙하고 신뢰할 수 있으며 무료인 대형 언어 모델 보안 솔루션을 제공하는 것을 목표로 합니다.
엔터프라이즈급 실전 검증
고신뢰성 보장
유연한 아키텍처 설계
지능형 로드 밸런싱
설치 즉시 사용
다음 소프트웨어가 설치되어 있는지 확인하세요:
#1.
git clone https://github.com/jd-opensource/JoySafety.git
#2. 프로젝트 경로로 이동
cd JoySafety
#3. 환경 변수 설정 (복사하여 실행 권장, 이후 스크립트/서비스에서 자동 인식)
export SAFETY_ROOT_PATH=`pwd`
#일반적으로 JoySafety 루트 경로
echo ${SAFETY_ROOT_PATH}
=======
#프로젝트 경로로 이동
cd $SAFETY_ROOT_PATH
#
git lfs install
#방법1
git clone https://huggingface.co/jdopensource/JoySafety ${SAFETY_ROOT_PATH}/data/models
#방법2
#네트워크 문제로 인해 [ModelScope](https://modelscope.cn/models/syf20240814/joysafety/files)에서도 다운로드 가능
.env.example을 복사하거나 수동으로 .env 생성: # 참고: Shell 창 전환 시 SAFETY_ROOT_PATH 재설정
cd $SAFETY_ROOT_PATH
cp -f .env.example .env
# 테스트 시 .env 파일에서 변수 SAFETY_MODEL_DIR만 수정, 경로는 실제 모델 다운로드 경로와 일치해야 함【절대 경로】
SAFETY_MODEL_DIR=
docker-compose --env-file .env up
자세한 API 테스트 사례 및 사용 설명은 quickstart/README.md를 참조하세요.
quickstart 디렉토리의 문서를 참조하여 최신 API 테스트 스크립트와 사례 설명을 확인하세요.
이 프로젝트는 여러 비즈니스를 동시에 지원하며, 각 비즈니스를 동적으로 추가할 수 있고 분 단위로 적용됩니다.
완전한 코드 예제: example.py
인식 정책은 전체적으로 DAG이며, rootId에 해당하는 node에서 시작하여 계층적으로 인식 정책을 실행합니다. 정책의 각 node는 function과 router로 구성됩니다. function은 현재 노드에서 실행되는 구체적인 기능이고, router는 현재 노드의 인식 결과를 기반으로 다음에 실행할 노드를 결정합니다.
function 유형에는 single_label_pred (즉시 사용 가능한 두 가지 구현 제공), keyword, kb_search, rag_answer, multi_turn_detect가 포함되며, 구성 방식과 의미는 위의 비즈니스 연동 방법의 전체 예제를 참조하세요. 또한, 단일 노드 내에서 여러 function을 병렬로 실행할 수 있도록 가상 유형 parallel을 지원합니다.
일반적인 router 유형으로는 stupid_end와 groovy가 있습니다. 전자는 직접 종료를 의미하며, 후자는 groovy 스크립트가 인식 결과를 기반으로 다음 node_id를 반환합니다. groovy 스크립트의 내장 변수는 ctx이며, 그 구조는 객체 SessionContext.java를 참조하세요.
전형적인 정책 오케스트레이션 예시는 README.md를 참조하세요.
그룹+비즈니스별로 민감 단어를 관리할 수 있으며, all 비즈니스의 민감 단어는 모든 비즈니스에 적용됩니다.
민감 단어 관리 방법은 sensitive_words_api.md를 참조하세요.
이 프로젝트는 지식을 두 계층으로 관리합니다. 첫 번째 계층: 데이터 영속성을 위해 MySQL 데이터베이스 사용; 두 번째 계층: safety_knowledge+vearch를 사용하여 지식의 벡터화 및 의미 검색 구현.
데이터베이스에서 지식 관리 방법은 knowledge_api.md를 참조하세요. 지식 벡터화 및 vearch 저장은 index_all.py를 참조하세요.
API 문서 참조
다국어 호출:
자주 묻는 질문과 해결 방법은 FAQ를 참조하세요.
제품 특성 상, 프로젝트 내 예제는 제품 기능 설명 용도로만 사용되며 다른 분야에 사용할 수 없으며, 프로젝트 개발자의 견해가 아닙니다.
모범 사례는 best_practice.md를 참조하세요.
.
├── README.md
├── deploy
│ ├── docker-compose.yml // 패키지 시작 서비스 (각 모듈은 개별 시작 가능)
│ └── thirdparty // 타사 종속성 관련 구성 및 문서
│ ├── mysql
│ ├── redis
│ └── vearch
├── safety
│ ├── safety-admin // 구성 및 데이터 관리를 위한 백엔드 서비스
│ ├── safety-api // 외부에 기능을 제공하는 API 서비스
│ ├── safety-basic // 핵심 jar 패키지, safety-admin, safety-basic 및 safety-demo의 Java 부분 서비스
│ ├── safety-demo // safety-api를 사용하는 다국어 예제
│ │ ├── golang
│ │ ├── java
│ │ └── python
│ └── safety-skills // safety-api가 지원하는 각종 스킬 구현 및 배포
│ ├── safety-bert // bert 모델 배포 서비스
│ ├── safety-fasttext // fasttext 모델 배포 서비스
│ ├── safety-keywords // 민감 단어 기능 구현
│ └── safety-knowledge // 지식 검색, 지식 기반 대체 응답 및 다중 턴 대화 탐지 지원
└── quickstart // 사용자 빠른 체험 용
백엔드 관리, 원자적 기능 등록, 정책/비즈니스 시나리오 구성, 데이터 쓰기만 포함됩니다. 사용자/비즈니스 시스템은 참여하지 않으며, 모든 구성 데이터는 최종적으로 데이터베이스에 기록되어 실행 시점에 로드됩니다.
flowchart TD
Quickstart[quickstart/스크립트]
Admin[safety-admin<br/>백엔드 관리]
Bert[safety-bert<br/>독립 서비스]
FastText[safety-fasttext<br/>독립 서비스]
Keywords[safety-keywords<br/>독립 서비스]
Knowledge[safety-knowledge<br/>독립 서비스]
DB[(MySQL/Redis)]
Vearch[(Vearch 벡터 DB)]
Strategy[방어 정책 오케스트레이션]
Business[비즈니스 시나리오 구성]
Quickstart-->|초기화/등록|Admin
Admin-->|원자적 기능 등록|Bert
Admin-->|원자적 기능 등록|FastText
Admin-->|원자적 기능 등록|Keywords
Admin-->|원자적 기능 등록|Knowledge
Admin-->|민감 단어 관리|Keywords
Admin-->|지식 베이스 관리|Knowledge
Admin-->|구성 쓰기|DB
Admin-->|정책 오케스트레이션|Strategy
Admin-->|비즈니스 시나리오 구성|Business
Bert-->|모델/구성|DB
FastText-->|모델/구성|DB
Keywords-->|민감 단어 데이터|DB
Knowledge-->|지식/구성|DB
Knowledge-->|벡터 검색|Vearch
사용자/비즈니스 시스템이 요청을 보내면 API 서비스가 데이터베이스 구성과 정책을 로드하고 각 Skill 서비스를 호출하여 탐지/처리를 수행합니다. safety-admin은 실행 링크에 참여하지 않으며 구성 시점에만 데이터를 기록합니다.
flowchart TD
User[사용자/비즈니스 시스템]
API[safety-api<br/>API 서비스]
Core[safety-basic<br/>Java lib]
Bert[safety-bert<br/>독립 서비스]
FastText[safety-fasttext<br/>독립 서비스]
Keywords[safety-keywords<br/>독립 서비스]
Knowledge[safety-knowledge<br/>독립 서비스]
DB[(MySQL/Redis)]
Vearch[(Vearch 벡터 DB)]
User-->|HTTP/SDK|API
API-->|의존|Core
API-->|정책/구성 읽기|DB
API-->|HTTP/RESTful|Bert
API-->|HTTP/RESTful|FastText
API-->|HTTP/RESTful|Keywords
API-->|HTTP/RESTful|Knowledge
Bert-->|모델/데이터|DB
FastText-->|모델/데이터|DB
Keywords-->|민감 단어 데이터|DB
Knowledge-->|지식/구성|DB
Knowledge-->|벡터 검색|Vearch
모듈 의존 관계 설명:
모듈 의존 관계 설명:
각 모듈의 README 문서를 참조하세요.
모든 좋은 아이디어와 제안을 환영합니다! 프로젝트 공동 구축자가 되고 싶다면 언제든지 Pull Request를 제출하고 기여자 라이선스 계약(CLA)에 서명해 주세요. 문의 사항은 이메일로 연락 주세요: [email protected].
본 프로젝트는 Apache License 2.0 오픈소스 라이선스를 따릅니다. 기업 및 개인은 자유롭게 사용, 수정 및 2차 개발할 수 있습니다.
JoySafety는 완전한 대형 언어 모델 보안 솔루션 구축을 목표로 합니다. 이번 오픈소스는 주로 대형 언어 모델 보호 기능에 초점을 맞추며, 향후 순차적으로 다음을 출시할 예정입니다:
보안 검증 대형 언어 모델 Huggingface 플랫폼에서 일부 보안 검증 대형 언어 모델을 오픈소스로 공개합니다. 이후 Joysafety는 이 시리즈 모델을 통합하여 대형 언어 모델 위험 규정 준수 감사 기능을 구현합니다.
대형 언어 모델 보안 평가: 대형 언어 모델 애플리케이션 출시 전 보안 위험 탐지를 위해 《생성형 AI 서비스 보안 기본 요구사항》의 5대 카테고리 31개 소분류 위험 유형을 포괄합니다.
Agent 보안 보호: 신원 및 권한 관리, 데이터 및 메모리 보호, 도구 및 실행 보안, MCP 코드 보안 탐지, 공급망 및 프로토콜 보안 등 기능을 포함합니다.
JoySafety 공식 위챗 교류 그룹에 가입하세요:

| 모듈 | 언어 | 주요 기능 |
|---|
| safety-admin | Java | 구성 및 데이터 관리 |
| safety-api | Java | 외부 API 서비스, 정책 오케스트레이션, 스트림 탐지 |
| safety-basic | Java | 핵심 라이브러리, 주요 서비스 및 demo 서비스 |
| safety-skills/safety-bert | Python | BERT 분류 모델 서비스 |
| safety-skills/safety-fasttext | Python | FastText 분류 모델 서비스 |
| safety-skills/safety-keywords | Java | 민감 단어 탐지 서비스 |
| safety-skills/safety-knowledge | Python | 지식 검색, RAG, 다중 턴 대화 탐지 |
| quickstart | Python/YAML | 빠른 체험 스크립트 및 샘플 |
| deploy | Docker | 컨테이너화 배포 및 의존성 관리 |