- Primeros pasos
- Seguridad y cumplimiento de los datos
- Organizaciones
- Autenticación y seguridad
- Licencia
- Acerca de la licencia
- Precios unificados: marco del plan de licencias
- Activar su licencia Enterprise
- Migrar de Test Suite a Test Cloud
- Migración de licencias
- Asignar licencias a tenants
- Asignación de licencias de usuario
- Anular la asignación de licencias de usuarios
- Monitoring license allocation
- Licencias con exceso de asignación
- Notificaciones de licencias
- Administración de licencias de usuario
- Tenants y servicios
- Cuentas y roles
- Ai Trust Layer
- Acerca de la capa de confianza de IA
- Comprobación del resumen de uso
- Visualización de los registros de auditoría
- Gestionar las políticas de la capa de confianza de IA
- Enmascaramiento PII
- Gestionar Autopilot for Everyone
- Configurar LLM
- Restringir las llamadas de LLM a tus propios modelos
- Configurar OpenTelemetry
- Controlar los datos contextuales para las características de GenAI
- Utilizar plantillas de conector
- Guía práctica: conectar Mistral a través de AI Trust Layer
- How-to guide: Connecting open-source models through AI Trust Layer
- Aplicaciones externas
- Notificaciones
- Registro
- Exportación de datos
- Pruebas en su organización
- Solución de problemas
- Migrar a Test Cloud
Connect a Mistral model in Azure AI Foundry to UiPath Agents via AI Trust Layer using a custom Integration Service connector.
This capability is currently generally available for enterprise customers upon request.
Esta guía explica cómo conectar un modelo Mistral implementado en Microsoft Azure AI Foundry a agentes de UiPath a través de la característica de configuraciones LLM de AI Trust Layer. Creas un conector de Integration Service personalizado basado en una plantilla de Azure OpenAI y adaptas su enlace de solicitud para los requisitos de la API de Mistral.
Requisitos previos
- Custom connectors for AI Trust Layer enabled for your organization (currently available upon request for enterprise customers).
- Un modelo Mistral implementado en Azure AI Foundry (por ejemplo,
mistral-small-2503) - La URL del punto final de Azure AI Foundry para tu recurso
- Una clave API para tu recurso de Azure AI Foundry
- Organization administrator access in Test Cloud
- Acceso a Integration Service y Connector Builder
Crear el conector personalizado
- Ve a Admin > AI Trust Layer > Configuraciones de LLM y selecciona Añadir configuración.
- Establece los valores de Tenant, Producto y Característica .
- En Configuración del modelo, introduce un alias personalizado en el campo Nombre de LLM y establece Tipo de API en OpenAI.
- En el campo Conector , selecciona Crear conector personalizado.
- Selecciona la plantilla de Azure OpenAI y luego selecciona Crear conector. El Creador de conectores se abre con la plantilla de Azure OpenAI rellenada previamente.
Editar el conector para la compatibilidad con Mistral
Los modelos Mistral en Azure AI Foundry utilizan una validación de esquema estricta y no aceptan todos los campos que la plantilla de Azure OpenAI envía de forma predeterminada. El enlace preRequest del conector debe resolver estas diferencias antes de que cada solicitud llegue al punto final de Mistral.
| Envíos de plantillas de Azure OpenAI | Mistral en Azure AI Foundry espera | Resolución aplicada por enlace |
|---|---|---|
tool_choice: "required" o formulario de objeto | "none", "auto" o "any" | Se traduce a "any" cuando las herramientas están presentes |
parallel_tool_calls Campo | Campo no admitido (extra_forbidden) | Eliminado del cuerpo de la solicitud |
max_completion_tokens | max_tokens | Se ha cambiado el nombre del campo |
-
En el Creador de conectores, abre la sección Enganches y selecciona el enganche de solicitud previa .
-
Reemplaza todo el cuerpo del gancho con el siguiente script:
// Normalize query params and payload for Mistral on Azure AI Foundry. // Removes unsupported fields and adapts tool semantics for Mistral's strict schema. const _reqPath = (typeof request_path !== 'undefined') ? request_path : ''; const _reqParams = (typeof request_parameters !== 'undefined') ? request_parameters : undefined; const _cfg = (typeof configuration !== 'undefined') ? configuration : undefined; if (['/query', '/v1/responses'].includes(_reqPath)) { return done(); } let apiVersion = (_cfg && _cfg['api-version']) ? _cfg['api-version'] : "2023-05-15"; if (_reqParams && _reqParams["api-version"]) { apiVersion = _reqParams["api-version"]; } if (['/listAllModels', '/auth_validation'].includes(_reqPath)) { apiVersion = (_cfg && _cfg['api-version']) ? _cfg['api-version'] : "2023-10-01-preview"; } // Resolve body across different runtime variable names let body = (typeof request_body !== 'undefined' && request_body) ? request_body : ((typeof request_vendor_body !== 'undefined' && request_vendor_body) ? request_vendor_body : ((typeof request !== 'undefined' && request && request.body) ? request.body : undefined)); if (body && typeof body === 'string') { try { body = JSON.parse(body); } catch (e) { /* leave as-is */ } } if (body && typeof body === 'object') { // Remove field rejected by Mistral's strict schema if (Object.prototype.hasOwnProperty.call(body, 'parallel_tool_calls')) { delete body.parallel_tool_calls; } // Normalize tool_choice: Mistral accepts only 'none', 'auto', or 'any' const _allowedToolChoice = new Set(['none', 'auto', 'any']); const _hasTools = Object.prototype.hasOwnProperty.call(body, 'tools') && Array.isArray(body.tools) && body.tools.length > 0; if (Object.prototype.hasOwnProperty.call(body, 'tool_choice')) { if (body.tool_choice === 'required') { body.tool_choice = 'any'; } else if (body.tool_choice && typeof body.tool_choice === 'object') { body.tool_choice = 'any'; } else if (typeof body.tool_choice === 'string' && !_allowedToolChoice.has(body.tool_choice)) { body.tool_choice = _hasTools ? 'any' : 'auto'; } } else if (_hasTools) { // Force tool usage: agent runtime expects tool calls when tools are configured body.tool_choice = 'any'; } // Rename max_completion_tokens to max_tokens if (Object.prototype.hasOwnProperty.call(body, 'max_completion_tokens')) { if (!Object.prototype.hasOwnProperty.call(body, 'max_tokens')) { body.max_tokens = body.max_completion_tokens; } delete body.max_completion_tokens; } } const out = { request_vendor_parameters: { "api-version": apiVersion } }; if (typeof request_body !== 'undefined') out.request_body = body; if (typeof request_vendor_body !== 'undefined') out.request_vendor_body = body; return done(out);// Normalize query params and payload for Mistral on Azure AI Foundry. // Removes unsupported fields and adapts tool semantics for Mistral's strict schema. const _reqPath = (typeof request_path !== 'undefined') ? request_path : ''; const _reqParams = (typeof request_parameters !== 'undefined') ? request_parameters : undefined; const _cfg = (typeof configuration !== 'undefined') ? configuration : undefined; if (['/query', '/v1/responses'].includes(_reqPath)) { return done(); } let apiVersion = (_cfg && _cfg['api-version']) ? _cfg['api-version'] : "2023-05-15"; if (_reqParams && _reqParams["api-version"]) { apiVersion = _reqParams["api-version"]; } if (['/listAllModels', '/auth_validation'].includes(_reqPath)) { apiVersion = (_cfg && _cfg['api-version']) ? _cfg['api-version'] : "2023-10-01-preview"; } // Resolve body across different runtime variable names let body = (typeof request_body !== 'undefined' && request_body) ? request_body : ((typeof request_vendor_body !== 'undefined' && request_vendor_body) ? request_vendor_body : ((typeof request !== 'undefined' && request && request.body) ? request.body : undefined)); if (body && typeof body === 'string') { try { body = JSON.parse(body); } catch (e) { /* leave as-is */ } } if (body && typeof body === 'object') { // Remove field rejected by Mistral's strict schema if (Object.prototype.hasOwnProperty.call(body, 'parallel_tool_calls')) { delete body.parallel_tool_calls; } // Normalize tool_choice: Mistral accepts only 'none', 'auto', or 'any' const _allowedToolChoice = new Set(['none', 'auto', 'any']); const _hasTools = Object.prototype.hasOwnProperty.call(body, 'tools') && Array.isArray(body.tools) && body.tools.length > 0; if (Object.prototype.hasOwnProperty.call(body, 'tool_choice')) { if (body.tool_choice === 'required') { body.tool_choice = 'any'; } else if (body.tool_choice && typeof body.tool_choice === 'object') { body.tool_choice = 'any'; } else if (typeof body.tool_choice === 'string' && !_allowedToolChoice.has(body.tool_choice)) { body.tool_choice = _hasTools ? 'any' : 'auto'; } } else if (_hasTools) { // Force tool usage: agent runtime expects tool calls when tools are configured body.tool_choice = 'any'; } // Rename max_completion_tokens to max_tokens if (Object.prototype.hasOwnProperty.call(body, 'max_completion_tokens')) { if (!Object.prototype.hasOwnProperty.call(body, 'max_tokens')) { body.max_tokens = body.max_completion_tokens; } delete body.max_completion_tokens; } } const out = { request_vendor_parameters: { "api-version": apiVersion } }; if (typeof request_body !== 'undefined') out.request_body = body; if (typeof request_vendor_body !== 'undefined') out.request_vendor_body = body; return done(out); -
En la configuración del conector, establece la URL base en tu punto final de Azure AI Foundry:
https://{your-resource-name}.openai.azure.com/openai. -
Establece el Tipo de autenticación para que coincida con tu configuración. Este ejemplo utiliza la clave API (
customApiKey), pero puedes utilizar cualquier tipo de autenticación compatible, incluido OAuth : actualiza la configuración del conector en consecuencia. -
Selecciona Guardar.
Crear una conexión en Integration Service
- En Integration Service, ve a Conexiones y selecciona Añadir conexión.
- Selecciona el conector personalizado que has publicado.
- En el campo Clave API , introduce tu clave API de Azure AI Foundry.
- En el campo Recurso de Azure OpenAI , introduce el nombre de tu recurso: la parte del subdominio de la URL de tu punto final, sin
https://ni.openai.azure.com. - Selecciona Conectar para aprovisionar la conexión.
Completar la configuración de LLM
- Vuelve a Admin > AI Trust Layer > Configuraciones de LLM y abre la configuración que iniciaste.
- En Configuración del modelo, establece Conector en tu conector publicado y Conexión en la conexión que creaste.
- En el campo Identificador de LLM , introduce el nombre de la implementación exactamente como aparece en Azure AI Foundry.
Nota:
Los espacios finales en el campo del identificador de LLM provocan un error
DeploymentNotFound. Verifique que no haya espacios iniciales o finales antes de guardar. - Selecciona Probar configuración para ejecutar la sonda AI Trust Layer.
- Si el sondeo es correcto, selecciona Guardar.
Resultado
La configuración se guarda y el modelo Mistral está disponible para los agentes de UiPath para el producto y la característica que has especificado. Las llamadas se enrutan a través de la AI Trust Layer y aparecen en el registro de auditoría en Origen: Conexión personalizada.
Si tienes problemas al crear un conector personalizado, ponte en contacto con el soporte de UiPath para obtener ayuda.