Este repositorio contiene varios asistentes de IA de Alfresco para ayudar a los usuarios y clientes a obtener la información que necesitan o realizar tareas complejas, simplemente transmitiendo cada solicitud a través del lenguaje natural.
Para obtener una explicación "detrás de escena" de lo que sucede en nuestra demostración, consulte detrás_de_escenas.md.
Este repositorio contiene las siguientes aplicaciones:
Nombre | Archivos principales | componer nombre | URL | Descripción |
---|---|---|---|---|
Bot de documentos de Alfresco | alfresco_docs_bot.py | alfresco_docs_bot | http://localhost:8503 | Ingiere la documentación de Alfresco y hazle preguntas. |
Asistente de IA de Alfresco | alfresco_ai_assistant.py | alfresco_ai_assistant | http://localhost:8504 | Interactuar con una instancia de Alfresco Content Services mediante solicitudes en lenguaje natural. |
La base de datos se puede explorar en http://localhost:7474.
graficar tuberculosis
usuario(¿Usuario?)
llm(LLM?)
vectordb[(base de datos de vectores)]
raw-docs{{Documentación sin procesar}}
usuario --query-embedded-data--> vectordb
vectordb --datos-relevantes--> llm
llm --respuesta final--> usuario
raw-docs --extracción/fragmentación/incrustación---> vectordb
Accede en :
Características :
gráfico BT
usuario(¿Usuario?)
llm(LLM?)
API
API de subgrafo[API?]
API de descubrimiento
API de búsqueda
API de nodo
fin
herramientas de subgrafo[Herramientas]
descubrimiento
transformar
redactar
fin
usuario --consulta--> llm
llm --elegir--> herramientas
herramientas --invocar--> api
api --datos de alimentación--> llm
llm --respuesta final--> usuario
Accede en :
Características :
Cree un archivo .env
a partir del archivo de plantilla de entorno env.example
Variables disponibles:
Nombre de la variable | Valor predeterminado | Descripción |
---|---|---|
ALFRESCO_URL | http://localhost:8080 | OBLIGATORIO: URL base de la instancia de ACS |
ALFRESCO_NOMBRE DE USUARIO | administración | OBLIGATORIO: nombre de usuario para la instancia de ACS |
ALFRESCO_CONTRASEÑA | administración | OBLIGATORIO: Contraseña para la instancia de ACS |
OLLAMA_BASE_URL | http://host.docker.internal:11434 | OBLIGATORIO: URL de la API de Ollama LLM |
NEO4J_URI | neo4j://base de datos:7687 | OBLIGATORIO: URL a la base de datos Neo4j |
NEO4J_NOMBRE DE USUARIO | neo4j | OBLIGATORIO: nombre de usuario para la base de datos Neo4j |
NEO4J_CONTRASEÑA | contraseña | REQUERIDO - Contraseña para la base de datos Neo4j |
LLM | llama3 | REQUERIDO: puede ser cualquier etiqueta del modelo Ollama, gpt-4, gpt-3.5 o claudev2. |
EMBEDDING_MODEL | transformador_oración | REQUERIDO: puede ser sentencia_transformer, openai, aws, ollama o google-genai-embedding-001 |
AWS_ACCESS_KEY_ID | OBLIGATORIO: solo si LLM=claudev2 o embedding_model=aws | |
AWS_SECRET_ACCESS_KEY | OBLIGATORIO: solo si LLM=claudev2 o embedding_model=aws | |
AWS_DEFAULT_REGION | OBLIGATORIO: solo si LLM=claudev2 o embedding_model=aws | |
OPENAI_API_KEY | OBLIGATORIO: solo si LLM=gpt-4 o LLM=gpt-3.5 o embedding_model=openai | |
GOOGLE_API_KEY | OBLIGATORIO: solo se requiere cuando se utiliza GoogleGenai LLM o el modelo de inserción google-genai-embedding-001 | |
LANGCHAIN_ENDPOINT | "https://api.smith.langchain.com" | OPCIONAL: URL a la API de Langchain Smith |
LANGCHAIN_TRACING_V2 | FALSO | OPCIONAL: habilitar el seguimiento de Langchain v2 |
LANGCHAIN_PROJECT | OPCIONAL: nombre del proyecto Langchain | |
LANGCHAIN_API_KEY | OPCIONAL: clave API de Langchain |
Advertencia
Las aplicaciones han sido probadas únicamente con Ollama, y específicamente con llama3, no se garantiza que funcionen con otros LLM.
No es necesario instalar Ollama manualmente, se ejecutará en un contenedor como parte de la pila cuando se ejecute con el perfil de Linux: ejecute docker compose --profile linux up
. Asegúrese de configurar OLLAMA_BASE_URL=http://llm:11434
en el archivo .env
cuando utilice el contenedor acoplable Ollama.
Para utilizar el perfil Linux-GPU: ejecute docker compose --profile linux-gpu up
. También cambie OLLAMA_BASE_URL=http://llm-gpu:11434
en el archivo .env
.
Si, por cualquier motivo, no puede ejecutar el contenedor Ollama, puede instalarlo y ejecutarlo localmente como opción alternativa.
Es posible que desees reducir
num_ctx
a3072
en commons.py si estás ejecutando una GPU o CPU económica.
Ejecutar Ollama localmente puede producir resultados lentos. Una posible solución es ejecutarlo en una instancia EC2 económica habilitada para GPU que funcionará mejor que cualquier GPU de consumo.
Para crear un clúster EKS respaldado por una única instancia g4dn.xlarge
:
eksctl create cluster --name hack-turing-titans --node-type=g4dn.xlarge --nodes 1
Instale ingress-nginx y cert-manager para exponer ollama a través de 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
Cree manualmente un registro DNS que apunte al CNAME de ingreso ingress-nginx (recupérelo a través de kubectl get service -n ingress-nginx
).
Configure su FQDN y aplique el recurso ClusterIssuer para habilitar la generación de certificados LetsEncrypt:
sed -i ' s/my-ollama.example.com/YOUR_FQDN/g ' k8s/letsencrypt-prod.yaml
kubectl apply -f k8s/letsencrypt-prod.yaml
Finalmente instale el gráfico de Ollama:
helm install ollama ollama-helm/ollama
--namespace ollama
--create-namespace
--values ollama.yaml
Advertencia
Existe un problema de rendimiento que afecta a las aplicaciones Python en las versiones 4.24.x
de Docker Desktop. Actualice a la última versión antes de utilizar esta pila.
para empezar todo
docker compose up
Si se han realizado cambios en los scripts de compilación, reconstruya .
docker compose up --build
Para ingresar al modo de vigilancia (reconstrucción automática al cambiar el archivo). Primero inicie todo, luego en la nueva terminal:
docker compose watch
Apagar Si la verificación de estado falla o los contenedores no se inician como se esperaba, apáguelo por completo para comenzar nuevamente.
docker compose down
Los scripts que pueden ser necesarios para preparar los datos para que las aplicaciones se ejecuten correctamente se pueden encontrar en ./scripts.
transformador.py es un script que debe ejecutarse en un clon local del repositorio de docs-alfresco para crear la carpeta initial-load
con toda la documentación esperada para el bot de Alfresco Docs.
Este proyecto se basa en docker/genai-stack y es el resultado de un hackathon interno de tres días en Hyland realizado por el equipo de Turing Titans .