Personalize seu nó GaiaNet
Um dos principais objectivos do projeto GaiaNet é permitir que cada indivíduo crie e execute o seu próprio nó de serviço de agente usando LLMs ajustados e conhecimento próprio. Com toda a probabilidade, não vai executar um nó com o LLM padrão do Llama 3.2 3B e a base de conhecimento do guia de Paris. Neste capítulo, discutiremos maneiras de personalizar seu 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 prompts,
estão todas no ficheiro gaianet/config.json
ficheiro. Pode editar este ficheiro diretamente para utilizar os seus modelos e colecções de vectores.
Ou pode selecionar um ficheiro config.json
ao inicializar o nó. Basta passar um URL para a função config.json
ficheiro
no seu gaianet init
comando.
Temos várias predefinições 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 URL para o
config.json
deve apontar para o ficheiro de texto real. (ou seja, o ficheiroraw.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.
É OBRIGATÓRIO executar
gaianet init
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ó GaiaNet por um modelo alternativo alternativo, será necessário fazer alterações no arquivo do modelo, no modelo de prompt 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 GaiaNet 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. 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.
Selecionar uma base de conhecimentos
Uma caraterística fundamental do GaiaNet é 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 usar bases de conhecimento já prontas. Terá de fazer o seguinte.
- especificam o URL para a coleção de vectores (ou seja, o
instantâneo
ousnapshot.tar.gz
) no ficheiroinstantâ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 possam ser armazenados, pesquisados e recuperados. Para diferentes 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 o desempenho de 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 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
- Crie uma base de conhecimentos a partir dos seus conhecimentos ou competências próprios.
- Afinar o seu próprio LLM.
Diverte-te!