Personalización del nodo

Queremos permitirle crear y ejecutar su propio nodo de servicio de agente. Probablemente no utilizará la base de conocimientos predeterminada de Phi-3 LLM y la guía de París. ¡Así que vamos a mostrarte cómo personalizar tu nodo!

Configuraciones preestablecidas

En gaianet/config.json contiene todas las opciones de configuración del nodo, como los ajustes de LLM, la colección de vectores para la base de conocimientos y los avisos. Puede editar este archivo directamente para utilizar sus modelos y colecciones de vectores, o puede seleccionar un archivo de configuración diferente. config.json al inicializar el nodo.

Basta con pasar una URL a la función config.json en su gaianet init la URL de la página config.json debe apuntar al archivo de texto real.

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

El subcomando config

Incluso después de inicializar el nodo, puede realizar cambios en su configuración editando el archivo config.json archivo. Sin embargo, es una buena práctica utilizar el archivo gaianet CLI para realizar los cambios ya que es más seguro y sencillo.

Después de realizar cualquier cambio en la configuración del nodo, la funcióngaianet init DEBE ejecutarse.

gaianet config list muestra el config.json campos que se pueden modificar.

Selección de un LLM

Huggingface cuenta con más de 10.000 LLM de código abierto para elegir. 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, algunos pueden soportar una gran longitud de contexto, no tienen censura, o sobresalen en matemáticas), experiencia en el dominio (como la codificación o la medicina), y/o estilos (algunos responden en código, pueden hablar como un pirata, etc.).

Realizar cambios en el archivo del modelo, la plantilla de avisos y los parámetros de longitud del contexto del modelo te permitirá sustituir el LLM predeterminado de tu nodo por un modelo alternativo ajustado. Los parámetros varían en función del modelo, pero se pueden encontrar en las fichas de modelo de la organización gaianet Huggingface.

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 ajustados publicados es perfecto para su caso de uso, también puede ajustar 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. Eso te permite utilizar un archivo de modelo LLM entrenado o afinado de forma privada.

Selección de 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 conocimientos es un archivo de instantáneas para una colección de vectores. Puede utilizar bases de conocimiento ya hechas, pero le animamos a crear su propia base de conocimiento. Deberá hacer lo siguiente

  1. 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.

  2. utilizar el mismo modelo de incrustación que generó esta colección de vectores.

  3. modificar el system_prompt para dotar al modelo de conocimientos previos.

  4. 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 "Eres 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- 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 poder almacenarlo, buscarlo y recuperarlo. Para un material en un contexto diferente, es posible que necesites un modelo de incrustación distinto para conseguir un rendimiento óptimo. La tabla de clasificación MTEB es un buen lugar para ver las referencias de rendimiento de los modelos de incrustación. Puedes encontrar muchos de ellos en la organización gaianet de Huggingface.

Personalización de los avisos

En config.jsonTambién puedes personalizar los avisos. A menudo, las preguntas se adaptan al LLM ajustado o a la base de conocimientos 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

Última actualización