Ir al contenido principal
Versión: 1.0.0

Personalice su nodo GaiaNet

Un objetivo clave del proyecto GaiaNet es permitir que cada individuo cree y ejecute su propio nodo de servicio de agente utilizando LLM ajustados y conocimientos propios. nodo de servicio de agente utilizando LLMs afinados y conocimiento propio. Con toda probabilidad usted no va a ejecutar un nodo con el LLM Llama 3.2 3B por defecto y la base de conocimiento de la guía de París. En este capítulo, discutiremos las formas de personalizar su nodo.

Configuraciones preestablecidas

Todas las opciones de configuración del nodo, como los ajustes de LLM, la recopilación de vectores para la base de conocimientos y los avisos, se encuentran en el gaianet/config.json archivo. Puede editar este archivo directamente para utilizar sus modelos y colecciones vectoriales. También puede seleccionar un archivo config.json al inicializar el nodo. Basta con pasar una URL a la función config.json archivo en su gaianet init mando. Disponemos de varios config.json archivos para elegir en este repositorio. Por ejemplo, el siguiente comando inicializa un nodo GaiaNet con un modelo Llama 3 8B.

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

La dirección URL del config.json debe apuntar al archivo de texto real. (es decir, el raw.githubusercontent.com URL para enlaces GitHub) en lugar de la página HTML de GitHub para ese archivo.

El subcomando config

Después de inicializar el nodo, puede realizar cambios en su configuración editando el archivo config.json archivo directamente. Pero es más fácil y seguro utilizar la función gaianet CLI para realizar cambios.

Debe ejecutar gaianet init de nuevo después de realizar cualquier cambio en la configuración del nodo.

El siguiente comando muestra el config.json campos en los que puede realizar cambios.

gaianet config list

Veamos algunos ejemplos.

Seleccione un LLM

En Huggingface puedes elegir entre más de 10.000 LLM de código abierto. Cada uno de ellos tiene diferentes tamaños (los modelos más grandes son más capaces pero más caros de ejecutar), capacidades únicas (por ejemplo, sin censura, para sobresalir en matemáticas o razonamiento, para soportar gran longitud de contexto, etc.), experiencia en el dominio (por ejemplo, medicina, codificación), y / o estilos (por ejemplo, para hablar como un maestro o un pirata, para responder en código, para seguir conversaciones).

Para reemplazar el LLM por defecto del nodo GaiaNet con un modelo alternativo alternativo, tendrá que hacer cambios en el archivo del modelo, la plantilla de aviso y los parámetros de longitud del contexto del modelo. Estos parámetros varían dependiendo del modelo, pero pueden encontrarse en las tarjetas de modelo de la organización Huggingface de GaiaNet. Por ejemplo, el siguiente comando cambia el LLM a un 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

El modelo llama 3 8B requiere al menos 16 GB de RAM.

Si ninguno de los modelos finetuned publicados es perfecto para su caso de uso, también puede finetune su propio LLM siguiendo estas guías. Su nodo GaiaNet puede ejecutar sus propios modelos afinados.

En --chat-url podría apuntar a un archivo local bajo $HOME/gaianet en lugar de una URL pública. Esto te permite utilizar un archivo de modelo LLM entrenado o ajustado de forma privada.

Seleccione una base de conocimientos

Una característica clave de GaiaNet es que los usuarios pueden crear y desplegar bases de conocimiento propias en el nodo para complementar el LLM. Cada base de conocimiento es un archivo de instantánea para una colección de vectores. Le animamos a crear su propia base de conocimientos. Pero también puede utilizar bases de conocimientos ya creadas. Deberá hacer lo siguiente

  • especifique la dirección URL de la colección de vectores (es decir, la dirección instantánea o snapshot.tar.gz archivo) en el instantánea opción.
  • utilizar el mismo modelo de incrustación que generó esta colección de vectores.
  • modificar el system_prompt para dotar al modelo de conocimientos previos.
  • modificar el rag_prompt para ordenar al modelo que responda a la pregunta cuando se recupere el contexto de la colección de vectores.

El siguiente ejemplo cambia la base de conocimientos del nodo de "Guía de París" a "Guía de Londres".

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 "Usted es un guía turístico en Londres, Reino Unido. Responda con precisión a la pregunta de un visitante de Londres". \
--rag-prompt "El siguiente texto es el contexto de la pregunta del usuario.\n----------------\n"

En --snapshot podría apuntar a un archivo local bajo $HOME/gaianet en lugar de una URL pública. Eso te permite utilizar una instantánea de colección de vectores privada.

Dependiendo de la calidad y el tamaño de los vectores, es posible que también tenga que cambiar el qdrant- opciones para personalizar el comportamiento de recuperación.

  • qdrant-limit establece el número máximo de contextos relevantes que se añadirán a la pregunta. Si su base de conocimientos se compone de grandes secciones de texto (es decir, cada capítulo del libro es un vector), probablemente debería hacer esto 1 o 2 para limitar la longitud de la solicitud a un tamaño razonable.
  • qdrant-score-threshold es la "puntuación" mínima de coincidencia que debe alcanzar el contenido de conocimiento para ser considerado "relevante". Depende de la calidad del texto de conocimiento y del modelo de incrustación. En general, esta puntuación debe ser superior a 0,5 para reducir el contexto irrelevante en la pregunta.

El modelo de incrustación codifica y transforma el texto en vectores para que puedan almacenarse, buscarse y recuperarse. Para contexto, es posible que necesite un modelo de incrustación diferente para lograr un rendimiento óptimo. La tabla de clasificación de MTEB es un buen lugar para ver el rendimiento de los modelos de incrustación. Puedes encontrar muchos de ellos en la organización gaianet de Huggingface.

Personalizar los avisos

En config.jsonTambién puede personalizar las preguntas. A menudo, los avisos se adaptan al LLM o a la base de conocimientos para generar respuestas óptimas del nodo. para generar respuestas óptimas del nodo.

En --sistema-prompt establece un indicador del sistema. Proporciona el fondo y la "personalidad" del nodo. Cada solicitud de API puede establecer su propio aviso del sistema.

En --rag-prompt es el mensaje que se añade después del mensaje del sistema (o consulta del usuario). Introduce el contexto RAG recuperado de la base de datos de vectores, que le sigue.

En --rag-policy especifica el lugar en el que rag-prompt y el contexto deben ir. Por defecto, su valor es mensaje de sistema y pone el contexto en el prompt del sistema. Pero también puedes ponerlo en último-mensaje-usuarioque pone el rag-prompt y el contexto frente al último mensaje del usuario.

Próximos pasos

Recuerde reiniciar el nodo después de realizar cambios en la configuración.

# Si el nodo está funcionando
# gaianet stop

gaianet init
gaianet start

A continuación, puede

¡Que te diviertas!