Cookbook
Agents & skills · for AI agents

Crear un agente de soporte fundamentado

Crea un agente con alma, una tarea con límites, herramientas y una base de conocimientos — sobre MCP.

MCP tools:list_toolslist_knowledge_basescreate_agentget_agentcreate_share

Antes de construir — descubre, no ejecutes esto en frío. Entrevista al inquilino sobre su trabajo, su material, los procedimientos que ejecuta y los sistemas con los que debe interactuar; planifica toda la configuración (agente + base de conocimientos + habilidades + MCP según sea necesario) y simula el flujo antes de crear nada. Los pasos a continuación son lo que ejecutas después de eso; consulta Descubre antes de construir.

Principio — un agente, un trabajo. Asigna a este agente una única tarea claramente delimitada. Si el negocio tiene tres trabajos (soporte y ventas y programación), crea tres agentes — un agente que "hace todo" responde peor a cada cosa. Más información en Principios de diseño.

Un agente es alma + tarea + herramientas + habilidades + bases_de_conocimiento. soul (alma) es la identidad y la voz; task (tarea) es el trabajo y sus límites — ambos se incluyen en el prefijo fijo del prompt del sistema.

1. Ve qué puedes conectar

list_tools()             # tools available to this tenant (including connected MCP tools)
list_knowledge_bases()   # knowledge bases you can mount

2. Créalo

Activado por defecto, para que no tengas que pedirlo. Un nuevo agente ya puede responder con un formulario (ask_forms) seleccionable de opción única/múltiple cuando necesita dos o tres datos antes de poder responder, y ya puede dibujar un gráfico (compute_chart está en la lista de herramientas por defecto). Ambos estaban desactivados por defecto hasta el 2026-08-03, y la llamada de creación no tenía parámetro para el primero — por lo tanto, los agentes creados antes de esa fecha no tienen ninguno, y update_agent(ask_forms=True, add_tools=["compute_chart"]) es cómo actualizas uno a la versión más reciente.

Pasar tools=[...] reemplaza la lista por defecto en lugar de añadir a ella, así que incluye compute_chart tú mismo siempre que pases herramientas.

Los nombres son en minúsculas. El nombre no es solo lo que ves — once tablas hacen referencia a un agente por su nombre (shares, sesiones, storylines, bindings de canal, uso), por lo que Pip y pip son dos agentes diferentes para todas ellas y el mismo para ti. Los nuevos nombres se convierten a minúsculas al guardar; escríbelos así y no habrá nada que reconciliar. Tampoco es la URL pública — esa es alias.

create_agent(
  name="support",                  # lower-case; the platform lower-cases it anyway
  alias="support",                 # public human-readable URL slug — set one (url-safe, lowercase)
  soul="You are the support assistant for Acme Loans. Professional and warm.",
  task="Answer questions about mortgage products and the application process. "
       "Never promise a disbursement date; never give legal or tax advice; "
       "for any specific quote, call a tool — do not answer from memory.",
  tools=["web_search"],
  knowledge_bases=["company-policy"],   # use the KB's returned slug name (see below)
  published=True,
)
  • alias es el segmento de dirección legible por humanos público del agente ({public_base}/t/<tenant>/<alias>) — establécelo para poder entregar a las personas un enlace memorable. Se normaliza a un slug url-safe; si hay conflicto, se devuelve en alias_result.
  • Las herramientas del sistema están activadas por defecto. Los nuevos agentes obtienen automáticamente current_time, ip_geo y weather (el MCP system integrado) — no los listan; tools es para las extra.
  • Los nombres en las URLs son slugged. El nombre de una base de conocimiento se convierte en un slug url-safe al crearlo ("Company Policy"company-policy); conéctalo por el nombre devuelto, no por lo que escribiste.

3. Confirma qué se guardó

get_agent(name="Support")   # writing it doesn't mean it looks the way you intended

published=True significa visible, no alcanzable. Los usuarios finales no pueden acceder al agente hasta que crees un share (paso 4). No te detengas en "publicado".

Los límites pertenecen en task — las restricciones negativas ("nunca prometas…") detienen la deriva mejor que la descripción positiva. No pongas reglas de seguridad en soul; la plataforma añade la moderación global automáticamente. Para cambiar un campo más tarde, usa update_agent(name, field=…) — se fusiona, por lo que no dejará en blanco el resto.

4. Publícalo — pregunta cómo, luego hazlo alcanzable

Antes de decir "listo", pregunta al inquilino cómo deberían sus clientes acceder a él, luego conecta ese canal con create_share (devuelve un enlace real y abierto — entrega ese enlace, no "está publicado"):

create_share(agent_name="Support", label="Website widget")
# → { token, chat_url, qr_url, embed_snippet, pretty_url, … }

Si la respuesta lleva pretty_url (…/t/<tenant-alias>/<agent-alias>), ese es el enlace para humanos — legible y estable entre rotaciones de token. Si es null, establece el alias faltante (create_agent(alias=…) / PUT /agents/{name}/alias; alias del inquilino en la consola → Configuración) en lugar de enviar el enlace del token. chat_url sigue siendo correcto para incrustaciones y códigos QR.

  • Sin sitio web — solo un enlace o un QR (un freelancer, una tienda, un folleto, una tarjeta de visita): entrega chat_url (una página de chat alojada a pantalla completa — no se necesita sitio) y qr_url (un QR que pueden imprimir). Es anónimo: no requiere inicio de sesión, y cada visitante es recordado por su navegador, por lo que los clientes habituales son reconocidos.
  • Su propio sitio web: dales embed_snippet (una línea antes de </body> para un widget flotante), o chat_url para enlazar / iframe.
  • Telegram / WhatsApp: configura por canal en la consola (Agente → Integración → Telegram / WhatsApp); señalales allí.

Informa de vuelta. Entrega el enlace real que pueden abrir y probar ahora mismo (chat_url, y qr_url si no tienen sitio), además de la página de la consola del agente para revisarlo — https://console.agent4.io/#/agents/Support. No "está publicado" — el enlace.