Ce référentiel contient plusieurs Alfresco AI Assistants pour aider les utilisateurs et les clients à obtenir les informations dont ils ont besoin ou à effectuer des tâches complexes, en transmettant simplement chaque demande via un langage naturel.
Pour une explication « dans les coulisses » de ce qui se passe dans notre démo, voir Behind_the_scenes.md.
Ce référentiel contient les applications suivantes :
Nom | Fichiers principaux | Composer le nom | URL | Description |
---|---|---|---|---|
Bot Alfresco Docs | alfresco_docs_bot.py | alfresco_docs_bot | http://localhost:8503 | Ingérez la documentation Alfresco et posez-lui des questions. |
Assistant IA Alfresco | alfresco_ai_assistant.py | alfresco_ai_assistant | http://localhost:8504 | Interagissez avec une instance Alfresco Content Services à l'aide de requêtes en langage naturel. |
La base de données peut être explorée sur http://localhost:7474.
graphique TB
utilisateur(Utilisateur ?)
llm(LLM ?)
vectordb[(Base de données vectorielles)]
documents bruts{{Documentation brute }}
utilisateur --query-embedded-data--> vectordb
vectordb --relevant-data--> llm
llm --réponse finale -> utilisateur
raw-docs --extraction/chunking/embedding---> vectordb
Accès à :
Caractéristiques :
graphique BT
utilisateur(Utilisateur ?)
llm(LLM ?)
API
api de sous-graphe[API ?]
API de découverte
API de recherche
nœud-api
fin
outils de sous-graphe[Outils ]
découverte
transformer
rédiger
fin
utilisateur --query--> llm
llm --choisir--> outils
outils --invoke--> API
api --feed data--> llm
llm --réponse finale -> utilisateur
Accès à :
Caractéristiques :
Créez un fichier .env
à partir du fichier modèle d'environnement env.example
Variables disponibles :
Nom de la variable | Valeur par défaut | Description |
---|---|---|
ALFRESCO_URL | http://localhost:8080 | OBLIGATOIRE - URL de base vers l'instance ACS |
ALFRESCO_USERNAME | administrateur | OBLIGATOIRE - Nom d'utilisateur pour l'instance ACS |
ALFRESCO_PASSWORD | administrateur | OBLIGATOIRE - Mot de passe pour l'instance ACS |
OLLAMA_BASE_URL | http://host.docker.internal:11434 | OBLIGATOIRE - URL vers l'API Ollama LLM |
NEO4J_URI | neo4j://base de données:7687 | OBLIGATOIRE - URL vers la base de données Neo4j |
NEO4J_USERNAME | néo4j | OBLIGATOIRE - Nom d'utilisateur pour la base de données Neo4j |
NEO4J_PASSWORD | mot de passe | OBLIGATOIRE - Mot de passe pour la base de données Neo4j |
LLM | lama3 | OBLIGATOIRE - Il peut s'agir de n'importe quelle balise de modèle Ollama, ou gpt-4 ou gpt-3.5 ou claudev2 |
EMBEDDING_MODEL | phrase_transformer | OBLIGATOIRE - Peut être sentence_transformer, openai, aws, ollama ou google-genai-embedding-001 |
AWS_ACCESS_KEY_ID | OBLIGATOIRE - Uniquement si LLM=claudev2 ou embedding_model=aws | |
AWS_SECRET_ACCESS_KEY | OBLIGATOIRE - Uniquement si LLM=claudev2 ou embedding_model=aws | |
AWS_DEFAULT_REGION | OBLIGATOIRE - Uniquement si LLM=claudev2 ou embedding_model=aws | |
OPENAI_API_KEY | OBLIGATOIRE - Uniquement si LLM=gpt-4 ou LLM=gpt-3.5 ou embedding_model=openai | |
GOOGLE_API_KEY | OBLIGATOIRE - Requis uniquement lors de l'utilisation de GoogleGenai LLM ou du modèle d'intégration google-genai-embedding-001. | |
LANGCHAIN_ENDPOINT | "https://api.smith.langchain.com" | FACULTATIF - URL vers l'API Langchain Smith |
LANGCHAIN_TRACING_V2 | FAUX | FACULTATIF - Activer le traçage Langchain v2 |
LANGCHAIN_PROJECT | FACULTATIF - Nom du projet Langchain | |
LANGCHAIN_API_KEY | FACULTATIF – Clé API Langchain |
Avertissement
Les applications ont été testées uniquement avec Ollama, et plus particulièrement avec Llama3, leur fonctionnement n'est pas garanti avec d'autres LLM.
Pas besoin d'installer Ollama manuellement, il s'exécutera dans un conteneur dans le cadre de la pile lors de l'exécution avec le profil Linux : exécutez docker compose --profile linux up
. Assurez-vous de définir OLLAMA_BASE_URL=http://llm:11434
dans le fichier .env
lorsque vous utilisez le conteneur Docker Ollama.
Pour utiliser le profil Linux-GPU : exécutez docker compose --profile linux-gpu up
. Modifiez également OLLAMA_BASE_URL=http://llm-gpu:11434
dans le fichier .env
.
Si, pour une raison quelconque, vous ne parvenez pas à exécuter le conteneur Ollama, vous pouvez l'installer et l'exécuter localement comme option alternative.
Vous souhaiterez peut-être réduire
num_ctx
à3072
dans commons.py si vous utilisez un GPU ou un CPU bon marché.
L'exécution d'Ollama localement peut donner des résultats lents. Une solution possible consiste à l’exécuter sur une instance EC2 bon marché compatible GPU qui fonctionnera mieux que n’importe quel GPU grand public.
Pour créer un cluster EKS soutenu par une seule instance g4dn.xlarge
:
eksctl create cluster --name hack-turing-titans --node-type=g4dn.xlarge --nodes 1
Installez ingress-nginx et cert-manager pour exposer ollama via https :
helm upgrade --install ingress-nginx ingress-nginx
--repo https://kubernetes.github.io/ingress-nginx
--namespace ingress-nginx --create-namespace
helm install
cert-manager jetstack/cert-manager
--namespace cert-manager
--create-namespace
--set installCRDs=true
Créez manuellement un enregistrement DNS pointant vers l'entrée ingress-nginx CNAME (récupérez-le via kubectl get service -n ingress-nginx
).
Définissez votre FQDN et appliquez la ressource ClusterIssuer pour activer la génération de certificats LetsEncrypt :
sed -i ' s/my-ollama.example.com/YOUR_FQDN/g ' k8s/letsencrypt-prod.yaml
kubectl apply -f k8s/letsencrypt-prod.yaml
Enfin, installez le graphique Ollama :
helm install ollama ollama-helm/ollama
--namespace ollama
--create-namespace
--values ollama.yaml
Avertissement
Il existe un problème de performances qui affecte les applications Python dans les versions 4.24.x
de Docker Desktop. Veuillez effectuer une mise à niveau vers la dernière version avant d'utiliser cette pile.
Pour tout commencer
docker compose up
Si des modifications ont été apportées aux scripts de construction, reconstruisez .
docker compose up --build
Pour passer en mode surveillance (reconstruction automatique en cas de modification de fichier). Commencez par tout démarrer, puis dans un nouveau terminal :
docker compose watch
Arrêt Si la vérification de l'état échoue ou si les conteneurs ne démarrent pas comme prévu, arrêtez complètement pour redémarrer.
docker compose down
Les scripts qui peuvent être nécessaires pour préparer les données afin que les applications fonctionnent correctement, ils peuvent tous être trouvés sous ./scripts.
transformer.py est un script qui doit être exécuté sur un clone local du référentiel docs-alfresco afin de créer le dossier initial-load
avec toute la documentation attendue pour le bot Alfresco Docs.
Ce projet est basé sur docker/genai-stack et est le résultat d'un hackathon interne de trois jours à Hyland par l'équipe Turing Titans .