Añadir {username} como parámetro de plantilla en los prompts del sistema de personas de IA

Esta es mi primera vez contribuyendo. Pido disculpas si cometí algún error, y estoy profundamente agradecido por la paciencia y cualquier consejo si hay una mejor manera de hacer esto.

Por lo poco que vale, soy un cliente Pro.

Necesitaba una forma robusta de saber qué usuario está interactuando con el agente de IA. Esto es lo que se me ocurrió. Muchas gracias por tomarse el tiempo para considerarlo y por cualquier consejo.

Añadir {username} como parámetro de plantilla en los prompts del sistema de personalidad de IA

Presenté PR #41446 ( FEATURE: Add {username} template param to BotContext - Pull Request #41446 - discourse/discourse - GitHub ) añadiendo {username} a BotContext::TEMPLATE_PARAMS.

El caso de uso: una personalidad que actúa como puente a un servicio externo necesita que la identidad del usuario actual se resuelva en el lado del servidor, no que la infiera el LLM a partir del texto de la publicación. Ahora mismo no hay una forma limpia de hacer eso. {participants} solo se pobla para mensajes privados, y pedirle al LLM que analice el nombre de usuario de los metadatos del tema es frágil y tiene una superficie de inyección.

El cambio es pequeño (un nuevo método, una cadena añadida a la lista blanca) y aditivo. Los prompts existentes no se ven afectados a menos que ya contuvieran el literal {username}.

¡Gracias de nuevo!

6 Me gusta

Vaya, también he completado el CLA. Creo que he cubierto todos los aspectos. Gracias otra vez.

2 Me gusta

Solo pasaba por aquí. Si hay algo en lo que pueda ayudarte, por favor, házmelo saber. Gracias :purple_heart:

1 me gusta

¡Gracias por la PR!

Ya la he fusionado.

6 Me gusta

¡Increíble! Muchas gracias :purple_heart:

3 Me gusta

También he discutido esto con @falco, pero me gustaría advertir que se trata de una herramienta muy delicada.

En particular, ya incluimos el nombre de usuario en el mensaje «Usuario»:

Esto es visible en los registros de la API de IA.

El riesgo de insertar el nombre en el prompt del sistema es que, en casos donde haya una interacción multiusuario en una cadena, puedes provocar una inestabilidad en el prompt del sistema (system prompt thrashing), lo que causa la expiración de la caché. Esto no es ideal y puede derivar en un rendimiento deficiente.

Ahora bien… una cosa que he observado en nuestras plantillas de vllm es que estamos descartando el nombre, lo cual explica por qué los modelos alojados por CDCK carecen de esta función. Estoy trabajando en un parche ahora mismo para solucionarlo.

3 Me gusta