
JoySafety
Con la diffusione delle applicazioni di intelligenza artificiale generativa, i rischi legati alla sicurezza dei contenuti, alla fuga di dati, agli attacchi di iniezione di prompt, ecc., stanno diventando sempre più evidenti. Come garantire che l'output dei grandi modelli sia conforme ai requisiti normativi e prevenire le vulnerabilità di sicurezza è diventata una sfida critica per le aziende. Per questo motivo, JD ha ufficialmente reso open source il framework di sicurezza per i grandi modelli — JoySafety. Questo framework è ampiamente utilizzato all'interno di JD, coprendo scenari come assistenti AI per lo shopping, servizio clienti logistico, assistente alle vendite, consulenza medica, piattaforma di lavoro per i venditori, consulenza legale, FAQ sulla sicurezza, ecc., supportando miliardi di chiamate giornaliere con un tasso di intercettazione degli attacchi superiore al 95%. Si impegna a fornire alle aziende una soluzione di protezione matura, affidabile e gratuita per i grandi modelli.
Validazione pratica a livello aziendale
Alta affidabilità
Progettazione architetturale flessibile
Bilanciamento del carico intelligente
Pronto all'uso
Assicurarsi di avere installato il seguente software:
#1.
git clone https://github.com/jd-opensource/JoySafety.git
#2. Entrare nella directory del progetto
cd JoySafety
#3. Impostare la variabile d'ambiente (si consiglia di copiare ed eseguire; gli script/servizi successivi la riconosceranno automaticamente)
export SAFETY_ROOT_PATH=`pwd`
#Normalmente è la directory radice di JoySafety
echo ${SAFETY_ROOT_PATH}
=======
#Entrare nella directory del progetto
cd $SAFETY_ROOT_PATH
#
git lfs install
#Opzione 1
git clone https://huggingface.co/jdopensource/JoySafety ${SAFETY_ROOT_PATH}/data/models
#Opzione 2
#Se si verificano problemi di rete, è possibile scaricare da [ModelScope](https://modelscope.cn/models/syf20240814/joysafety/files))
.env.example o creare manualmente .env: # Nota: Se si cambia finestra Shell, reimpostare SAFETY_ROOT_PATH
cd $SAFETY_ROOT_PATH
cp -f .env.example .env
# Per i test, modificare solo la variabile SAFETY_MODEL_DIR nel file .env; il percorso deve corrispondere a quello effettivo di download del modello [percorso assoluto]
SAFETY_MODEL_DIR=
docker-compose --env-file .env up
Per i casi di test dettagliati delle API e le istruzioni d'uso, consultare quickstart/README.md.
Fare riferimento alla documentazione nella directory quickstart per gli script di test API più recenti e la spiegazione dei casi.
Il progetto può supportare più servizi aziendali contemporaneamente; ciascuno può essere aggiunto dinamicamente con effetto in pochi minuti.
Un esempio di codice completo: example.py
La strategia di riconoscimento nel suo complesso è un DAG; partendo dal nodo corrispondente a rootId, viene eseguita la strategia di riconoscimento livello per livello; ogni nodo della strategia è composto da due parti: function e router; function è la capacità specifica eseguita dal nodo corrente, router decide il nodo successivo da eseguire in base al risultato di riconoscimento del nodo corrente.
Le categorie di function includono single_label_pred (supporta due implementazioni pronte all'uso), keyword, kb_search, rag_answer, multi_turn_detect. Le modalità di configurazione e il significato sono descritti nell'esempio completo della sezione precedente Come Integrare un Servizio Aziendale. Inoltre, è supportata una categoria virtuale parallel per consentire l'esecuzione parallela di più function all'interno di un singolo nodo.
Le categorie di router comunemente utilizzate includono stupid_end e groovy. La prima indica la terminazione diretta, mentre la seconda utilizza uno script groovy basato sul risultato di riconoscimento per restituire il node_id del passo successivo. La variabile incorporata nello script groovy è ctx, la cui struttura è descritta nell'oggetto SessionContext.java.
Esempi tipici di orchestrazione delle strategie sono disponibili in: README.md
Supporta la gestione delle parole sensibili per gruppo + servizio aziendale. Inoltre, le parole sensibili sotto il servizio all sono valide per tutti i servizi aziendali.
Per le modalità di gestione delle parole sensibili, fare riferimento a: sensitive_words_api.md
La gestione delle conoscenze in questo progetto è suddivisa in due livelli: Primo livello: utilizzo del database MySQL per la persistenza dei dati; Secondo livello: utilizzo di safety_knowledge + vearch per la vettorizzazione delle conoscenze e il recupero semantico.
Per le modalità di gestione delle conoscenze nel database, fare riferimento a: knowledge_api.md; per la vettorizzazione delle conoscenze e l'archiviazione in vearch, fare riferimento a: index_all.py (corretto: il percorso è example/safety-skills/safety-knowledge/index_all.py)
Fare riferimento alla Documentazione API
Chiamate in più lingue:
Domande frequenti e soluzioni sono disponibili in FAQ
In base alle caratteristiche del prodotto, gli esempi nel progetto sono solo per illustrare le funzionalità del prodotto e non devono essere utilizzati in altri ambiti; non rappresentano le opinioni degli sviluppatori del progetto.
Per le best practice, consultare best_practice.md
.
├── README.md
├── deploy
│ ├── docker-compose.yml // Servizi di confezionamento e avvio (ogni modulo può anche essere avviato singolarmente)
│ └── thirdparty // Configurazioni e documentazione relative alle dipendenze di terze parti
│ ├── mysql
│ ├── redis
│ └── vearch
├── safety
│ ├── safety-admin // Servizio backend per la gestione delle configurazioni e dei dati
│ ├── safety-api // Servizio API per fornire capacità all'esterno
│ ├── safety-basic // Pacchetto jar principale, utilizzato da safety-admin, safety-basic e dalla parte Java di safety-demo
│ ├── safety-demo // Esempi multilingua per l'utilizzo di safety-api
│ │ ├── golang
│ │ ├── java
│ │ └── python
│ └── safety-skills // Implementazione e dispiegamento di varie competenze supportate da safety-api
│ ├── safety-bert // Servizio per il dispiegamento del modello BERT
│ ├── safety-fasttext // Servizio per il dispiegamento del modello FastText
│ ├── safety-keywords // Implementazione della capacità di parole sensibili
│ └── safety-knowledge // Supporto per il recupero di conoscenze, la risposta basata su conoscenze e il rilevamento di conversazioni multi-turno
└── quickstart // Script per una rapida esperienza utente
Coinvolge solo la gestione backend, la registrazione delle capacità atomiche, la configurazione delle strategie / scenari aziendali, la scrittura dei dati. L'utente / il sistema aziendale non partecipa; tutti i dati di configurazione vengono infine scritti nel database, per essere caricati durante la fase di esecuzione.
flowchart TD
Quickstart[quickstart/script]
Admin[safety-admin<br/>Gestione backend]
Bert[safety-bert<br/>Servizio indipendente]
FastText[safety-fasttext<br/>Servizio indipendente]
Keywords[safety-keywords<br/>Servizio indipendente]
Knowledge[safety-knowledge<br/>Servizio indipendente]
DB[(MySQL/Redis)]
Vearch[(Vearch database vettoriale)]
Strategy[Orchestrazione strategie difensive]
Business[Configurazione scenari aziendali]
Quickstart-->|Inizializzazione/Registrazione|Admin
Admin-->|Registra capacità atomica|Bert
Admin-->|Registra capacità atomica|FastText
Admin-->|Registra capacità atomica|Keywords
Admin-->|Registra capacità atomica|Knowledge
Admin-->|Gestione parole sensibili|Keywords
Admin-->|Gestione knowledge base|Knowledge
Admin-->|Scrittura configurazioni|DB
Admin-->|Orchestrazione strategie|Strategy
Admin-->|Configurazione scenari aziendali|Business
Bert-->|Modello/Configurazione|DB
FastText-->|Modello/Configurazione|DB
Keywords-->|Dati parole sensibili|DB
Knowledge-->|Conoscenze/Configurazione|DB
Knowledge-->|Recupero vettoriale|Vearch
L'utente / il sistema aziendale invia una richiesta, il servizio API carica le configurazioni e le strategie dal database e chiama i vari servizi Skill per completare il rilevamento / l'elaborazione. safety-admin non partecipa alla catena di esecuzione, scrive solo i dati durante la fase di configurazione.
flowchart TD
User[Utente / Sistema aziendale]
API[safety-api<br/>Servizio API]
Core[safety-basic<br/>Libreria Java]
Bert[safety-bert<br/>Servizio indipendente]
FastText[safety-fasttext<br/>Servizio indipendente]
Keywords[safety-keywords<br/>Servizio indipendente]
Knowledge[safety-knowledge<br/>Servizio indipendente]
DB[(MySQL/Redis)]
Vearch[(Vearch database vettoriale)]
User-->|HTTP/SDK|API
API-->|Dipendenza|Core
API-->|Lettura strategie/configurazioni|DB
API-->|HTTP/RESTful|Bert
API-->|HTTP/RESTful|FastText
API-->|HTTP/RESTful|Keywords
API-->|HTTP/RESTful|Knowledge
Bert-->|Modello/Dati|DB
FastText-->|Modello/Dati|DB
Keywords-->|Dati parole sensibili|DB
Knowledge-->|Conoscenze/Configurazione|DB
Knowledge-->|Recupero vettoriale|Vearch
Spiegazione delle dipendenze tra moduli:
Spiegazione delle dipendenze tra moduli:
Fare riferimento ai documenti README in ciascun modulo
Accogliamo con favore qualsiasi idea o suggerimento! Se desideri diventare co-costruttore del progetto, puoi inviare una Pull Request in qualsiasi momento, firmando anche il Contributore License Agreement (CLA). Per qualsiasi questione, contattare via email: [email protected].
Questo progetto è rilasciato sotto licenza Apache License 2.0, benvenuti aziende e privati a utilizzarlo, modificarlo e svilupparlo liberamente.
JoySafety mira a costruire una soluzione completa di sicurezza per i grandi modelli. Questa release open source riguarda principalmente le capacità di protezione per i grandi modelli. Successivamente verranno rilasciati:
Modello di audit di sicurezza per i grandi modelli Parte del modello di audit di sicurezza per i grandi modelli è stato reso open source sulla piattaforma Huggingface. In futuro, Joysafety integrerà questa serie di modelli per realizzare capacità di audit di conformità del rischio per i grandi modelli.
Valutazione della sicurezza dei grandi modelli: Rilevamento dei rischi di sicurezza prima del lancio delle applicazioni dei grandi modelli, coprendo 5 categorie principali e 31 sottocategorie di tipi di rischio secondo i "Requisiti di base per la sicurezza dei servizi di intelligenza artificiale generativa".
Protezione della sicurezza degli agenti: Include gestione di identità e autorizzazioni, protezione di dati e memoria, sicurezza degli strumenti e dell'esecuzione, rilevamento della sicurezza del codice MCP, sicurezza della catena di approvvigionamento e dei protocolli, ecc.
Benvenuti nel gruppo di chat ufficiale WeChat di JoySafety:

| Modulo | Linguaggio | Funzione Principale |
|---|
| safety-admin | Java | Gestione delle configurazioni e dei dati |
| safety-api | Java | Servizio API esterno, orchestrazione delle strategie, rilevamento in streaming |
| safety-basic | Java | Libreria core, utilizzata dal servizio principale e dal demo |
| safety-skills/safety-bert | Python | Servizio modello di classificazione BERT |
| safety-skills/safety-fasttext | Python | Servizio modello di classificazione FastText |
| safety-skills/safety-keywords | Java | Servizio di rilevamento parole sensibili |
| safety-skills/safety-knowledge | Python | Recupero conoscenze, RAG, rilevamento conversazioni multi-turno |
| quickstart | Python/YAML | Script e esempi per esperienza rapida |
| deploy | Docker | Dispiegamento containerizzato e gestione delle dipendenze |