Personalização do nó

Queremos permitir-lhe criar e executar o seu próprio nó de serviço de agente. Provavelmente não utilizará a base de conhecimento padrão do Phi-3 LLM e do guia de Paris. Por isso, vamos mostrar-lhe como personalizar o seu nó!

Configurações pré-definidas

O gaianet/config.json contém todas as opções de configuração do nó, como as definições do LLM, a coleção de vectores para a base de conhecimentos e os avisos. Pode editar este ficheiro diretamente para utilizar os seus modelos e colecções de vectores, ou pode selecionar uma config.json quando se inicializa o nó.

Basta passar um URL para o config.json no seu ficheiro gaianet init o URL para o comando config.json deve apontar para o ficheiro de texto real.

Dispomos de várias opções pré-definidas config.json ficheiros à escolha neste repositório. Por exemplo, o seguinte comando inicializa um nó GaiaNet 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 subcomando config

Mesmo depois de inicializar o nó, é possível fazer alterações na sua configuração editando o config.json ficheiro. No entanto, é uma boa prática utilizar o ficheiro gaianet CLI para efetuar as alterações, uma vez que é mais seguro e mais fácil.

Depois de terem sido efectuadas quaisquer alterações à configuração do nó, ogaianet init tem de ser executado.

lista de configuração da gaianet mostra o comando config.json campos que podem ser alterados.

Seleção de um LLM

A Huggingface tem mais de 10.000 LLMs de código aberto e afinados para escolher. Cada um deles tem tamanhos diferentes (os modelos maiores são mais capazes, mas mais caros de executar), capacidades únicas (por exemplo, alguns podem suportar grandes comprimentos de contexto, não têm censura, ou são excelentes em matemática), experiência de domínio (como codificação ou medicina), e/ou estilos (alguns respondem em código, podem falar como um pirata, etc).

Fazer alterações no arquivo de modelo, no modelo de prompt e nos parâmetros de comprimento do contexto do modelo permitirá que você substitua o LLM padrão do seu nó por um modelo alternativo ajustado. Os parâmetros variam dependendo do modelo, mas eles podem ser encontrados nos cartões de modelo da organização Huggingface da gaianet.

Por exemplo, o seguinte comando altera o LLM para um modelo Llama 3 8B:

gaianet config \
  --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 aperfeiçoados publicados for perfeito para o seu caso de utilização, pode também aperfeiçoar o seu próprio LLM seguindo estes guias. O seu nó GaiaNet pode executar os 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.

Seleção de uma base de conhecimentos

Uma caraterística fundamental do GaiaNet é que os utilizadores podem criar e implementar bases de conhecimentos próprias no nó para complementar o LLM. Cada base de conhecimento é um ficheiro instantâneo para uma coleção de vectores. Pode utilizar bases de conhecimentos já prontas, mas encorajamo-lo a criar a sua própria base de conhecimentos. Terá de fazer o seguinte:

  1. especificam o URL para a coleção de vectores (ou seja, o instantâneo ou snapshot.tar.gz ) no ficheiro instantâneo opção.

  2. utilizar o mesmo modelo de incorporação que gerou esta coleção de vectores.

  3. modificar o sistema_prompt para dar ao modelo conhecimentos de base.

  4. 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":

configuração da gaianet \
  --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 consistir em 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 possa ser armazenado, pesquisado e recuperado. Para 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 local para ver as referências de desempenho dos modelos de incorporação. Pode encontrar muitos deles na organização gaianet na Huggingface.

Personalizar avisos

Em config.json, também é possível personalizar os prompts. 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

Última atualização