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!
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 . Por ejemplo, el siguiente comando inicializa un nodo GaiaNet con un modelo Llama 3 8B:
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.).
Los cambios en el archivo del modelo, la plantilla de avisos y los parámetros de longitud del contexto del modelo le permitirán sustituir el LLM predeterminado de su nodo por un modelo alternativo ajustado. Los parámetros varían en función del modelo, pero pueden encontrarse en la página tarjetas modelo.
Por ejemplo, el siguiente comando cambia el LLM a un modelo Llama 3 8B:
El modelo llama 3 8B requiere al menos 16 GB de RAM.
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.
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 "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.
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.
Recuerde reiniciar el nodo después de realizar cambios en la configuración.
# Si el nodo está funcionando:
gaianet stop
gaianet init
gaianet start
Si ninguno de los modelos ajustados publicados es perfecto para su caso de uso, también puede ajustar su propio LLM siguiendo los siguientes pasos . Su nodo GaiaNet puede ejecutar sus propios modelos afinados.
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 de una colección de vectores. Puede utilizar bases de conocimiento ya creadas, pero le animamos a que . Deberá hacer lo siguiente:
El modelo de incrustación codifica y transforma el texto en vectores para poder almacenarlo, buscarlo y recuperarlo. Para un material de contexto diferente, puede ser necesario un modelo de incrustación distinto para lograr un rendimiento óptimo. El sitio es un buen lugar para ver las pruebas de rendimiento de los modelos de incrustación. Puede encontrar muchos de ellos en .