Documentación
Referencias a recursos
Citar bibliotecas, archivos, conectores y otras habilidades dentro de las instrucciones de una habilidad o una regla.
Las instructions de una habilidad o de una regla pueden citar recursos con la misma sintaxis que usa el chat de NiuCore. Una habilidad que dice «buscá en {{workspace:31}} antes de responder» no solo nombra la biblioteca: cuando se adjunta a un turno, la lleva con ella.
{
"name": "Responder reclamos",
"instructions": "Antes de responder, buscá la política vigente en {{workspace:31}} y, si el cliente pide un reintegro, usá la plantilla de {{file:902}}. Seguí además {{skill:147}}.",
"level": "company",
"visibility": "public"
}Sintaxis
| Token | Qué cita | Habilidad | Regla |
|---|---|---|---|
{{workspace:ID}} | Una biblioteca. | Sí | Sí |
{{file:ID}} | Un archivo. | Sí | Sí |
{{mcp:ID}} | Un conector. | Sí | Sí |
{{tool:ID:nombre}} | Una herramienta concreta de un conector (ID es el del conector). | Sí | Sí |
{{skill:ID}} | Otra habilidad: su contenido se incluye. Una habilidad no puede citarse a sí misma ni cerrar un ciclo. | Sí | No |
{{user:ID}} / {{context:ID}} | Una persona o un contexto compartido. Se guardan, pero en un turno de la API se ignoran (ver abajo). | Sí | Sí |
- El separador puede ser
:o-; al guardar se reescribe siempre con:, así que elGETte devuelve la forma canónica ({{skill-3}}→{{skill:3}}). - Solo cuentan los tipos de la tabla, en minúsculas.
{{cliente}}o{{Skill:3}}quedan como texto literal: son tus propias variables. - Hasta 20 referencias distintas por tipo y 60 en total por texto.
Validación al guardar
POST y PATCH sobre /skills y /rules validan las referencias antes de escribir nada, contra los permisos del usuario dueño de la credencial. Si alguna no pasa, responden 422 prompt_refs_invalid y la habilidad o regla queda como estaba.
{
"status": "error",
"message": "Hay referencias no disponibles o inválidas en el texto.",
"message_code": "prompt_refs_invalid",
"data": [
{
"denied": [{ "type": "workspace", "id": 88 }],
"invalid": ["{{file:abc}}"],
"unsupported": ["{{agent:5}}"],
"over_limit": [],
"cycle": []
}
],
"meta": { "request_id": "9f1c0a3e-7b2d-4f18-9a55-2c6e0d1b4a77" }
}| Categoría | Qué significa |
|---|---|
denied | El recurso no existe o el usuario no puede usarlo. Los dos casos se informan igual, para no revelar recursos ajenos. |
invalid | Tipo conocido con un id mal formado. |
unsupported | Un tipo que este dueño no admite: una regla que cita una habilidad, o cualquier cita a un agente. |
over_limit | Referencias que superaron los topes por tipo o total. |
cycle | Habilidades que, citadas, cerrarían un ciclo con la que estás editando. |
- Un
PATCHque no cambiainstructionsno revalida nada: podés renombrar una habilidad aunque cite un recurso que después se revocó. - Si cambiás el texto, se revalidan todas las referencias, también las que ya estaban. Un token inválido o no admitido que ya estaba guardado se conserva, para no impedirte editar el resto.
instructionstiene un máximo de 12 000 caracteres en una habilidad y 4 000 en una regla; pasarse devuelve422 prompt_text_too_long.
En un turno de la API
Cuando adjuntás una habilidad con attachments.skill_ids, el turno recibe su contenido con las citas resueltas, y las bibliotecas, archivos, habilidades, conectores y herramientas que cita se suman al turno — pero solo los que están dentro del alcance de tu credencial. Una credencial limitada a la biblioteca 31 no alcanza la 88 porque una habilidad la nombre: esa cita se omite en silencio.
- Las citas a personas y contextos compartidos no llegan a un turno de la API: la credencial no tiene esos tipos de recurso.
- Adjuntar recursos sigue exigiendo su scope compañero (
libraries:read,skills:read,connectors:use). Lo que suma una habilidad nunca excede lo que la credencial ya podía adjuntar. - Los tokens
{{…}}escritos directamente encontentno son un canal soportado: usáattachments. Un token encontentque apunte fuera del alcance de la credencial hace fallar el turno.
Agentes
Nota
Los agentes de NiuCore —asistentes con instrucciones y recursos propios en los que el chat de la aplicación puede delegar— no forman parte de la API v1: no hay endpoints para listarlos, crearlos ni ejecutarlos, y un turno de la API no delega en ellos. Si una habilidad que adjuntás cita un agente, esa cita se ignora en el turno.