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, elraw.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
osnapshot.tar.gz
archivo) en elinstantá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.json
Tambié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-usuario
que
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
- Cree una base de conocimientos a partir de sus propios conocimientos o habilidades.
- Ponga a punto su propio LLM.
¡Que te diviertas!