Este repositório contém vários Alfresco AI Assistants para ajudar usuários e clientes a obter as informações que precisam ou realizar tarefas complexas, simplesmente transmitindo cada solicitação por meio de linguagem natural.
Para uma explicação "nos bastidores" do que está acontecendo em nossa demonstração, consulte Behind_the_scenes.md.
Este repositório contém os seguintes aplicativos:
Nome | Arquivos principais | Compor nome | URLs | Descrição |
---|---|---|---|---|
Bot de documentos ao ar livre | alfresco_docs_bot.py | alfresco_docs_bot | http://localhost:8503 | Obtenha a documentação do Alfresco e faça perguntas. |
Assistente de IA ao ar livre | alfresco_ai_assistant.py | alfresco_ai_assistant | http://localhost:8504 | Interaja com uma instância do Alfresco Content Services usando solicitações de linguagem natural. |
O banco de dados pode ser explorado em http://localhost:7474.
gráfico TB
usuário(Usuário?)
llm(LLM ?)
vectordb[(banco de dados vetorial)]
raw-docs{{Documentação bruta }}
usuário --query-embedded-data--> vectordb
vectordb --dados relevantes--> llm
llm --resposta final--> usuário
raw-docs --extração/chunking/incorporação---> vectordb
Acesse em :
Características :
gráfico BT
usuário(Usuário?)
llm(LLM ?)
API
API de subgrafo[API ?]
API de descoberta
API de pesquisa
API do nó
fim
ferramentas de subgrafo[Ferramentas]
descoberta
transformar
redigir
fim
usuário --query--> llm
llm --escolha--> ferramentas
ferramentas --invoke--> API
api --feed dados--> llm
llm --resposta final--> usuário
Acesse em :
Características :
Crie um arquivo .env
a partir do arquivo de modelo de ambiente env.example
Variáveis disponíveis:
Nome da variável | Valor padrão | Descrição |
---|---|---|
ALFRESCO_URL | http://localhost:8080 | OBRIGATÓRIO - URL base para a instância ACS |
ALFRESCO_USERNAME | administrador | OBRIGATÓRIO - Nome de usuário para a instância ACS |
ALFRESCO_SENHA | administrador | OBRIGATÓRIO - Senha para a instância ACS |
OLLAMA_BASE_URL | http://host.docker.internal:11434 | OBRIGATÓRIO - URL para API Ollama LLM |
NEO4J_URI | neo4j://banco de dados:7687 | OBRIGATÓRIO - URL para banco de dados Neo4j |
NEO4J_USERNAME | neo4j | OBRIGATÓRIO - Nome de usuário para banco de dados Neo4j |
NEO4J_SENHA | senha | OBRIGATÓRIO - Senha para banco de dados Neo4j |
LLM | lhama3 | OBRIGATÓRIO - Pode ser qualquer tag de modelo Ollama ou gpt-4 ou gpt-3.5 ou claudev2 |
EMBEDDING_MODEL | frase_transformador | OBRIGATÓRIO - Pode ser sentença_transformer, openai, aws, ollama ou google-genai-embedding-001 |
AWS_ACCESS_KEY_ID | OBRIGATÓRIO - Somente se LLM=claudev2 ou embedding_model=aws | |
AWS_SECRET_ACCESS_KEY | OBRIGATÓRIO - Somente se LLM=claudev2 ou embedding_model=aws | |
AWS_DEFAULT_REGION | OBRIGATÓRIO - Somente se LLM=claudev2 ou embedding_model=aws | |
OPENAI_API_KEY | OBRIGATÓRIO - Somente se LLM=gpt-4 ou LLM=gpt-3.5 ou embedding_model=openai | |
GOOGLE_API_KEY | OBRIGATÓRIO - obrigatório apenas ao usar o GoogleGenai LLM ou o modelo de incorporação google-genai-embedding-001 | |
LANGCHAIN_ENDPOINT | "https://api.smith.langchain.com" | OPCIONAL - URL para API Langchain Smith |
LANGCHAIN_TRACING_V2 | falso | OPCIONAL - Habilitar rastreamento Langchain v2 |
LANGCHAIN_PROJECT | OPCIONAL - Nome do projeto Langchain | |
LANGCHAIN_API_KEY | OPCIONAL - Chave API Langchain |
Aviso
Os aplicativos foram testados apenas com Ollama e, especificamente, llama3, não há garantia de que funcionem com outros LLMs.
Não há necessidade de instalar o Ollama manualmente, ele será executado em um contêiner como parte da pilha ao executar com o perfil Linux: execute docker compose --profile linux up
. Certifique-se de definir OLLAMA_BASE_URL=http://llm:11434
no arquivo .env
ao usar o contêiner docker Ollama.
Para usar o perfil Linux-GPU: execute docker compose --profile linux-gpu up
. Altere também OLLAMA_BASE_URL=http://llm-gpu:11434
no arquivo .env
.
Se, por qualquer motivo, você não conseguir executar o contêiner Ollama, poderá instalá-lo e executá-lo localmente como opção alternativa.
Você pode querer reduzir
num_ctx
para3072
em commons.py se estiver executando uma GPU ou CPU barata.
Executar o Ollama localmente pode produzir resultados lentos. Uma solução possível é executá-lo em uma instância EC2 barata habilitada para GPU, que terá melhor desempenho do que qualquer GPU de consumo.
Para criar um cluster EKS apoiado por uma única instância g4dn.xlarge
:
eksctl create cluster --name hack-turing-titans --node-type=g4dn.xlarge --nodes 1
Instale o ingress-nginx e o cert-manager para expor 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
Crie manualmente um registro DNS apontando para o CNAME de entrada ingress-nginx (recupere-o via kubectl get service -n ingress-nginx
).
Configure seu FQDN e aplique o recurso ClusterIssuer para habilitar a geração 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 o gráfico Ollama:
helm install ollama ollama-helm/ollama
--namespace ollama
--create-namespace
--values ollama.yaml
Aviso
Há um problema de desempenho que afeta os aplicativos python nas versões 4.24.x
do Docker Desktop. Atualize para a versão mais recente antes de usar esta pilha.
Para começar tudo
docker compose up
Se alterações nos scripts de construção tiverem sido feitas, reconstrua o .
docker compose up --build
Para entrar no modo de observação (reconstrução automática nas alterações do arquivo). Primeiro inicie tudo, depois no novo terminal:
docker compose watch
Desligamento Se a verificação de integridade falhar ou os contêineres não iniciarem conforme o esperado, desligue completamente para reiniciar.
docker compose down
Scripts que podem ser necessários para preparar dados para que os aplicativos sejam executados corretamente, todos podem ser encontrados em ./scripts.
transformer.py é um script que deve ser executado em um clone local do repositório docs-alfresco para criar a pasta initial-load
com toda a documentação esperada para o bot Alfresco Docs.
Este projeto é baseado em docker/genai-stack e é o resultado de um hackathon interno de três dias em Hyland pela equipe Turing Titans .