Si tu empresa vive en SAP BTP, la vía oficial para usar Claude sin salir del gobierno de SAP es el Generative AI Hub de SAP AI Core. En esta guía montas el camino completo: qué contratar, cómo tener un modelo de Anthropic disponible, una llamada desde Python con el SDK oficial de SAP y las piezas de gobierno (plantillas, filtrado y enmascarado) que hacen que Seguridad firme. Calcula unos 20 minutos si ya tienes acceso al cockpit.
Es además el camino que encaja con la política de APIs de SAP: nada de conectores caseros contra el ERP. Tienes el contexto completo en Claude y SAP y en Conexiones, y la teoría en la lección Claude dentro de SAP BTP.
Antes de empezar
- Una cuenta global de SAP BTP y una subcuenta donde puedas asignar entitlements.
- SAP AI Core con el plan Extended: el Generative AI Hub no está disponible en los planes Free ni Standard.
- SAP AI Launchpad (opcional, pero SAP lo recomienda como interfaz).
- Python 3 y permisos para crear una service key.
1. Pon en marcha SAP AI Core
En el BTP cockpit, Entitlements → Configure Entitlements → Add Service Plans: añade SAP AI Core con el plan extended.
Dos formas de consumir el modelo:
- Por orchestration (la recomendable para empezar): SAP gestiona la deployment virtual del modelo. Solo cambias el nombre del modelo en la configuración, sin desplegar nada más.
- Acceso directo: creas tú una deployment por modelo en el escenario de modelos fundacionales (
foundation-models) y la llamas con el SDK nativo que envuelve el de SAP. Da más control, pero pierdes los módulos de gobierno de orchestration.
Qué modelos de Anthropic hay en cada región y cuándo se retiran lo publica SAP en su documentación y notas del Generative AI Hub. Consúltalo allí antes de elegir: cambia más a menudo que esta guía.
2. Instala el SDK y configura credenciales
El SDK oficial se llama SAP Cloud SDK for AI (Python), antes «generative AI hub SDK». Lee las credenciales de variables de entorno o de ~/.aicore/config.json:
$ pip install 'sap-ai-sdk-gen[all]'# Valores sacados de tu service key$ export AICORE_CLIENT_ID=…$ export AICORE_CLIENT_SECRET=…$ export AICORE_AUTH_URL=https://….authentication.sap.hana.ondemand.com/oauth/token$ export AICORE_BASE_URL=https://api.ai.….cfapps.sap.hana.ondemand.com/v2$ export AICORE_RESOURCE_GROUP=default
`[all]` instala el soporte de todos los proveedores. `AICORE_BASE_URL` termina en `/v2`. En lugar de variables puedes usar `~/.aicore/config.json` con las mismas claves.
3. La llamada por orchestration
Un ejemplo con sabor SAP: resumir el texto largo de una incidencia de MM para el equipo de soporte. La plantilla usa marcadores {{?nombre}} que se rellenan en cada llamada:
from gen_ai_hub.orchestration_v2.models.message import SystemMessage, UserMessage
from gen_ai_hub.orchestration_v2.models.template import Template, PromptTemplatingModuleConfig
from gen_ai_hub.orchestration_v2.models.llm_model_details import LLMModelDetails
from gen_ai_hub.orchestration_v2.models.config import ModuleConfig, OrchestrationConfig
from gen_ai_hub.orchestration_v2.service import OrchestrationService
template = Template(template=[
SystemMessage(content="Eres consultor SAP MM. Responde en español, en 5 viñetas."),
UserMessage(content="Resume esta incidencia y propone la causa más probable: {{?incidencia}}"),
])
llm = LLMModelDetails(name="NOMBRE_EXACTO_DEL_MODELO") # el que copiaste del Generative AI Hub
config = OrchestrationConfig(modules=ModuleConfig(
prompt_templating=PromptTemplatingModuleConfig(prompt=template, model=llm)
))
service = OrchestrationService(config=config)
result = service.run(placeholder_values={"incidencia": texto_incidencia})
print(result.final_result.choices[0].message.content)
OrchestrationService busca sola una deployment de orchestration en estado RUNNING; si tienes varias, puedes indicarle deployment_id o api_url. Cambiar de Claude a otro modelo es cambiar el name: la API de orchestration es la misma para todos los proveedores.
4. Gobierno: lo que Seguridad te va a pedir
Orchestration encadena módulos alrededor de la llamada al modelo. Estos son los que importan para datos de empresa:
TPL · Plantillas
Prompts con marcadores y valores por defecto. Con el Prompt Registry se guardan versionados y se referencian por ID o por escenario, nombre y versión.
Pulsa cada uno. Solo la plantilla y el modelo son obligatorios.
Añadir el enmascarado al ejemplo anterior son pocas líneas:
from gen_ai_hub.orchestration_v2.models.data_masking import (
MaskingModuleConfig, MaskingProviderConfig, MaskingMethod, DPIStandardEntity, ProfileEntity)
masking = MaskingModuleConfig(providers=[MaskingProviderConfig(
method=MaskingMethod.ANONYMIZATION,
entities=[DPIStandardEntity(type=ProfileEntity.PERSON),
DPIStandardEntity(type=ProfileEntity.EMAIL),
DPIStandardEntity(type=ProfileEntity.PHONE)],
)])
config = OrchestrationConfig(modules=ModuleConfig(
prompt_templating=PromptTemplatingModuleConfig(prompt=template, model=llm),
masking=masking,
))
Con anonimización los datos se sustituyen por marcadores y no se pueden recuperar; con seudonimización, los marcadores son únicos y permiten restaurar el dato original si lo necesitas. Con allowlist evitas que se enmascaren términos que sí quieres enviar, como el nombre de tu empresa.
Si algo falla
- No ves el Generative AI Hub ni los modelos: tu instancia no tiene el plan Extended. Revisa el entitlement.
- El SDK no encuentra la deployment: estás en un resource group sin orchestration. Usa
defaulto crea allí la deployment de orchestration. - Error de autenticación:
AICORE_AUTH_URLoAICORE_BASE_URLmal copiadas (la segunda debe acabar en/v2), o la service key es de otra instancia. - El modelo no existe: el nombre no coincide letra a letra con el del Generative AI Hub, o ese modelo no está en tu región.
Para recordar
0 de 5 clarosMarca lo que ya tienes claro.
Fuentes oficiales
- Prompt LLMs in the generative AI hub in SAP AI Core & Launchpad ↗
- Consumption of GenAI models Using Orchestration ↗
- SAP Cloud SDK for AI (Python) — generative ↗
- Orchestration Service V2 API (SDK) ↗
Si algo de esta guía ha cambiado, cuéntamelo y la reviso.