Saltar para o conteúdo principal
Versão: 2.0.0

Personalização do nó Gaia

Um dos principais objectivos do projeto Gaia é permitir que cada indivíduo crie e execute o seu próprio nó de serviço de agente usando LLMs ajustados e conhecimento proprietário. É muito provável que não se pretenda executar um nó com o LLM padrão do Llama 3.2 e a base de conhecimento do guia de Paris.

Neste capítulo, discutiremos formas de personalizar o nó.

Configurações pré-definidas

Todas as opções de configuração do nó, tais como definições LLM, recolha de vectores para a base de conhecimentos e avisos, estão todas no gaianet/config.json ficheiro. Pode editar este ficheiro diretamente para utilizar os seus modelos e colecções de vectores.

Ou, pode selecionar um config.json ao inicializar o nó. Basta passar um URL para a função config.json ficheiro no seu gaianet init comando.

Dispomos de várias opções pré-definidas config.json ficheiros à escolha neste repositório.

Por exemplo, o seguinte comando inicializa um nó Gaia com um modelo Llama 3 8B.

gaianet init --config https://raw.githubusercontent.com/GaiaNet-AI/node-configs/main/llama-3-8b-instruct/config.json

O URL para o config.json deve apontar para o ficheiro de texto real. (ou seja, o ficheiro raw.githubusercontent.com URL para links do GitHub) em vez da página HTML do GitHub para esse ficheiro.

O subcomando config

Após a inicialização do nó, ainda é possível fazer alterações na sua configuração editando o config.json ficheiro diretamente. Mas é mais fácil e seguro utilizar o ficheiro gaianet CLI para efetuar alterações.

observação

É OBRIGATÓRIO executar gaianet init e início da gaianet novamente depois de efetuar quaisquer alterações à configuração do nó.

O seguinte comando mostra o config.json campos em que é possível efetuar alterações.

lista de configuração da gaianet

Vejamos agora alguns exemplos.

Selecionar um LLM

Existem mais de 10.000 LLMs de código aberto que pode escolher na Huggingface. Cada um deles tem tamanhos diferentes (os modelos maiores são mais capazes, mas mais caros de executar), capacidades únicas (por exemplo, sem censura, para se destacar em matemática ou raciocínio, para suportar grandes comprimentos de contexto, etc.), conhecimentos de domínio (por exemplo, medicina, codificação), e / ou estilos (por exemplo, para falar como um professor ou um pirata, para responder em código, para acompanhar conversas).

Para substituir o LLM predefinido do nó Gaia por um modelo alternativo alternativo, será necessário fazer alterações no ficheiro do modelo, no modelo de pedido e nos parâmetros de comprimento do contexto do modelo. Esses parâmetros variam de acordo com o modelo, mas podem ser encontrados nos cartões de modelo da organização Gaia Huggingface. Por exemplo, o seguinte comando altera o LLM para um modelo Llama 3 8B.

configuração da gaianet \
--chat-url https://huggingface.co/gaianet/Llama-3-8B-Instruct-GGUF/resolve/main/Meta-Llama-3-8B-Instruct-Q5_K_M.gguf \
--chat-ctx-size 4096 \
--prompt-template llama-3-chat

O modelo llama 3 8B requer pelo menos 16 GB de RAM.

Se nenhum dos modelos afinados publicados for perfeito para o seu caso de utilização, pode também afinar o seu próprio LLM seguindo estes guias. Seu nó Gaia pode executar seus próprios modelos ajustados.

O --chat-url pode apontar para um ficheiro local em $HOME/gaianet em vez de um URL público. Isto permite-lhe utilizar um ficheiro de modelo LLM treinado ou afinado de forma privada.

Selecionar uma base de conhecimentos

Uma caraterística fundamental do Gaia é que os utilizadores podem criar e implementar uma base de conhecimentos própria no nó para complementar o o LLM. Cada base de conhecimentos é um ficheiro instantâneo para uma coleção de vectores. Encorajamo-lo a criar a sua própria base de conhecimentos. Mas também pode utilizar bases de conhecimento já prontas. Terá de fazer o seguinte.

  • especificam o URL para a coleção de vectores (ou seja, o instantâneo ou snapshot.tar.gz ) no ficheiro instantâneo opção.
  • utilizar o mesmo modelo de incorporação que gerou esta coleção de vectores.
  • modificar o prompt_do_sistema para dar ao modelo um conhecimento de base.
  • modificar o rag_prompt para instruir o modelo a responder à pergunta quando o contexto é recuperado da coleção de vectores.

O exemplo seguinte altera a base de conhecimentos no nó de "Paris guidebook" para "London guidebook".

gaianet config \
--snapshot https://huggingface.co/datasets/gaianet/london/resolve/main/london_768_nomic-embed-text-v1.5-f16.snapshot.tar.gz \
--embedding-url https://huggingface.co/gaianet/Nomic-embed-text-v1.5-Embedding-GGUF/resolve/main/nomic-embed-text-v1.5.f16.gguf \
--embedding-ctx-size 8192 \
--system-prompt "Você é um guia turístico em Londres, Reino Unido. Por favor, responda corretamente à pergunta de um visitante de Londres." \
--rag-prompt "O texto seguinte é o contexto para a pergunta do utilizador.\n----------------\n"

O --snapshot pode apontar para um ficheiro local em $HOME/gaianet em vez de um URL público. Isto permite-lhe utilizar um instantâneo de coleção de vectores privado.

Dependendo da qualidade e do tamanho dos vectores, poderá também ser necessário alterar o qdrant- opções para personalizar o comportamento de recuperação.

  • qdrant-limit define o número máximo de contextos relevantes a adicionar à pergunta. Se a sua base de conhecimentos for constituída por grandes secções de texto (ou seja, cada capítulo de livro é um vetor), deve provavelmente definir este valor como 1 ou 2 para limitar o comprimento do pedido a um tamanho razoável.
  • qdrant-score-threshold é a "pontuação" mínima de correspondência que o conteúdo do conhecimento deve atingir para ser considerado "relevante". Isto depende da qualidade do texto de conhecimento e do modelo de incorporação. Em geral, esta pontuação deve ser superior a 0,5 para reduzir o contexto irrelevante no prompt.

O modelo de incorporação codifica e transforma o texto em vectores para que este possa ser armazenado, pesquisado e recuperado. Para material de contexto material de contexto diferente, pode ser necessário um modelo de incorporação diferente para obter o melhor desempenho. A tabela de classificação do MTEB é um bom sítio para ver o desempenho de modelos de incorporação. Pode encontrar muitos deles na organização gaia no Huggingface.

Personalizar avisos

Em config.jsonTambém é possível personalizar os avisos. Os prompts são muitas vezes adaptados para o LLM afinado ou para a base de conhecimento para gerar respostas óptimas do nó.

O --system-prompt define um prompt do sistema. Fornece o fundo e a "personalidade" do nó. Cada pedido de API pode definir o seu próprio aviso do sistema.

O --rag-prompt é a mensagem a anexar após a mensagem do sistema (ou consulta do utilizador). Introduz o contexto RAG recuperado da base de dados vetorial, que o segue.

O --rag-policy especifica onde a opção pano-prompt e o contexto deve ir. Por defeito, o seu valor é mensagem do sistema e coloca o contexto no prompt do sistema. Mas também pode definir para última mensagem do utilizador, que coloca o pano-prompt e contexto em frente à última mensagem do utilizador.

Próximas etapas

Lembre-se de reinicializar e reiniciar o nó depois de fazer alterações na configuração.

# Se o nó estiver a funcionar
# gaianet stop

gaianet init

gaianet start

Em seguida, pode

Diverte-te!