
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 // 사용자 빠른 체험 용
백엔드 관리, 원자적 기능 등록, 정책/비즈니스 시나리오 구성, 데이터 쓰기만 포함됩니다. 사용자/비즈니스 시스템은 참여하지 않으며, 모든 구성 데이터는 최종적으로 데이터베이스에 기록되어 실행 시점에 로드됩니다.