Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Importante
Esta característica se encuentra en su versión beta. Los administradores de cuentas pueden administrar el acceso a esta característica desde la página Vista previa de la consola de la cuenta. Consulte Gestionar previsualizaciones a nivel de cuenta.
Utiliza estos ejemplos para automatizar la gestión de habilidades. La API representa cada habilidad como un Skill recurso llamado skills/{catalog}.{schema}.{skill}. Para crear y publicar una habilidad con un agente, consulta Crear y compartir habilidades. Para privilegios y gobernanza, véase Habilidades de Gobernar. Las habilidades no tienen recursos de Terraform ni de Paquetes de Automatización Declarativa.
Prerrequisitos
Establece un esquema gobernado para las habilidades.
Instala y autentica el cliente que planeas usar. La API REST no requiere versión; cada herramienta y SDK tiene una versión mínima:
- Databricks CLI: v1.20.0 y superiores
-
Python SDK:
databricks-sdk0.142.0 y superiores -
Go SDK:
databricks-sdk-gov0.184.0 y superiores -
Go Modular SDK:
github.com/databricks/sdk-go/aigatewayv0.1.0 y superiores -
Java SDK:
databricks-sdk-java0.157.0 y superiores -
JavaScript SDK:
@databricks/sdk-aigateway0.23.0 y superiores
Los fragmentos del SDK asumen un cliente de espacio de trabajo autenticado,
w; Los fragmentos modulares del SDK asumen un cliente Unity Gateway autenticado,ctanto en Go comoclienten JavaScript.
Operaciones de la API REST
La API REST de Skills proporciona estas operaciones. Cada una también requiere USE CATALOG y USE SCHEMA recae sobre el padre. Sigue cada enlace para sus campos, permisos y respuestas.
| Operation | Caso de uso | Permisos necesarios |
|---|---|---|
| Crear | Crea una habilidad y provisiona su almacenamiento en paquete. |
CREATE VOLUME en el esquema |
| Upload | Sube SKILL.md y cualquier archivo de soporte a través de la API de archivos. |
WRITE VOLUME y READ VOLUME en la habilidad |
| Finalizar | Lee y valida SKILL.md, luego establece el nombre y la descripción del paquete de la habilidad. |
READ VOLUME Sobre la habilidad |
| Lista | Encuentra habilidades a las que puedas acceder en un esquema. |
READ VOLUME, READ METADATA, o MANAGE sobre la habilidad |
| Get | Lee los metadatos y los datos actuales etagde una habilidad |
READ VOLUME, READ METADATA, o MANAGE sobre la habilidad |
| Update | Cambia el comentario de la habilidad. |
MANAGE Sobre la habilidad |
| Eliminar | Elimina una habilidad y su paquete. |
MANAGE Sobre la habilidad |
El dueño de la habilidad tiene todas estas en la habilidad. Consulta Conceder acceso a habilidades.
Creación de una aptitud
Crear una habilidad requiere tres pasos: crear la habilidad, subir su paquete y luego finalizarla. Hasta que finalizes una habilidad, su nombre y descripción del paquete están vacíos.
Paso 1: Crear la habilidad
Crea la habilidad en un esquema.
comment es el único campo que puedes establecer. Azure Databricks deriva name, bundle_name, e description.
Reemplace main.default.my_skill y data-team con sus propios valores.
API DE REST
Envía a POST/api/2.1/unity-catalog/skills, pasando parent y skill_id como parámetros de consulta:
databricks api post \
"/api/2.1/unity-catalog/skills?parent=schemas/main.default&skill_id=my_skill" \
--json '{"comment": "Team-shared math helper skill"}'
CLI
Pásame el esquema padre y el nombre de la habilidad, y proporciona el comentario con --json:
databricks ai-gateway create-skill schemas/main.default my_skill \
--json '{"comment": "Team-shared math helper skill"}'
SDK de Python
Crea y gestiona una habilidad con el SDK Databricks para Python:
from databricks.sdk import WorkspaceClient
from databricks.sdk.service import catalog as c
w = WorkspaceClient()
skill = w.ai_gateway.create_skill(
parent="schemas/main.default",
skill_id="my_skill",
skill=c.Skill(comment="Team-shared math helper skill"),
)
Kit de Desarrollo de Software Go
Crea y gestiona una habilidad con el SDK Databricks para Go:
skill, err := w.AiGateway.CreateSkill(ctx, catalog.CreateSkillRequest{
Parent: "schemas/main.default",
SkillId: "my_skill",
Skill: catalog.Skill{Comment: "Team-shared math helper skill"},
})
Go Modular SDK
Crea y gestiona una habilidad con el SDK Modular de Go. Los campos opcionales son punteros, por lo que el ejemplo utiliza un asistente de una línea, func ptr[T any](v T) *T { return &v }.
skill, err := c.CreateSkill(ctx, aigateway.CreateSkillRequest{
Parent: ptr("schemas/main.default"),
SkillId: ptr("my_skill"),
Skill: &aigateway.Skill{Comment: ptr("Team-shared math helper skill")},
})
SDK de Java
Crea y gestiona una habilidad con el SDK Databricks para Java:
Skill skill =
w.aiGateway()
.createSkill(
new CreateSkillRequest()
.setParent("schemas/main.default")
.setSkillId("my_skill")
.setSkill(new Skill().setComment("Team-shared math helper skill")));
JS Modular SDK
Crea y gestiona una habilidad con el SDK de JavaScript:
const created = await client.createSkill({
parent: 'schemas/main.default',
skillId: 'my_skill',
skill: { comment: 'Team-shared math helper skill' },
});
Paso 2: Sube el paquete
Sube SKILL.md, y cualquier archivo de apoyo, a la ruta de almacenamiento de la habilidad, /Skills/<catalog>/<schema>/<skill>/, a través de la API de Archivos.
SKILL.md debe comenzar con frontmatter YAML que establezca name y description. Guarda este ejemplo como SKILL.md:
---
name: my-skill
description: A team-shared skill that helps with basic math.
---
# My Skill
Step-by-step guidance the agent follows when this skill is loaded.
API DE REST
Envía a PUT la API de archivos. Establece DATABRICKS_HOST la URL de tu espacio de trabajo, como https://my-workspace.cloud.databricks.com, y DATABRICKS_TOKEN un token. Este ejemplo pasa el token a curl una entrada estándar para que no aparezca en la lista de procesos:
curl --request PUT --config - --data-binary @SKILL.md \
--header "Content-Type: application/octet-stream" \
"${DATABRICKS_HOST}/api/2.0/fs/files/Skills/main/default/my_skill/SKILL.md?overwrite=true" \
<<< "header = \"Authorization: Bearer ${DATABRICKS_TOKEN}\""
CLI
Crea la carpeta de la habilidad y luego copia el archivo dentro:
databricks fs mkdir dbfs:/Skills/main/default/my_skill
databricks fs cp SKILL.md dbfs:/Skills/main/default/my_skill/SKILL.md --overwrite
SDK de Python
with open("SKILL.md", "rb") as f:
w.files.upload("/Skills/main/default/my_skill/SKILL.md", f, overwrite=True)
Kit de Desarrollo de Software Go
f, err := os.Open("SKILL.md")
if err != nil {
return err
}
defer f.Close()
err = w.Files.Upload(ctx, files.UploadRequest{
FilePath: "/Skills/main/default/my_skill/SKILL.md",
Contents: f,
Overwrite: true,
})
Go Modular SDK
El SDK Modular de Go no incluye la API de Archivos. Sube con el SDK de archivos para Go en su lugar:
fc, err := files.NewClient(ctx)
if err != nil {
return err
}
f, err := os.Open("SKILL.md")
if err != nil {
return err
}
defer f.Close()
_, err = fc.Upload(ctx, "/Skills/main/default/my_skill/SKILL.md", f, files.WithOverwrite(true))
SDK de Java
try (InputStream contents = Files.newInputStream(Paths.get("SKILL.md"))) {
w.files()
.upload(
new UploadRequest()
.setFilePath("/Skills/main/default/my_skill/SKILL.md")
.setOverwrite(true)
.setContents(contents));
}
JS Modular SDK
El SDK Modular de JavaScript no incluye la API de Archivos, así que este ejemplo llama directamente al endpoint REST. Lee la URL del espacio de trabajo, como https://my-workspace.cloud.databricks.com, y un token de las DATABRICKS_HOST variables de entorno y DATABRICKS_TOKEN de entorno:
import { readFile } from 'node:fs/promises';
const response = await fetch(
`${process.env.DATABRICKS_HOST}/api/2.0/fs/files/Skills/main/default/my_skill/SKILL.md?overwrite=true`,
{
method: 'PUT',
headers: {
'Content-Type': 'application/octet-stream',
Authorization: `Bearer ${process.env.DATABRICKS_TOKEN}`,
},
body: await readFile('SKILL.md'),
},
);
if (!response.ok) {
throw new Error(`Upload failed: ${response.status} ${response.statusText}`);
}
Paso 3: Finaliza la habilidad
Finalizar lee y valida SKILL.md, luego establece la habilidad bundle_name y description desde su material inicial. Si cambias el paquete más adelante, finaliza de nuevo.
API DE REST
databricks api post "/api/2.1/unity-catalog/skills/main.default.my_skill/finalize" --json '{}'
CLI
databricks ai-gateway finalize-skill skills/main.default.my_skill
SDK de Python
finalized = w.ai_gateway.finalize_skill(name="skills/main.default.my_skill")
print(finalized.bundle_name, finalized.description)
Kit de Desarrollo de Software Go
finalized, err := w.AiGateway.FinalizeSkill(ctx, catalog.FinalizeSkillRequest{
Name: "skills/main.default.my_skill",
})
Go Modular SDK
finalized, err := c.FinalizeSkill(ctx, aigateway.FinalizeSkillRequest{
Name: ptr("skills/main.default.my_skill"),
})
SDK de Java
Skill finalized =
w.aiGateway().finalizeSkill(new FinalizeSkillRequest().setName("skills/main.default.my_skill"));
JS Modular SDK
const finalized = await client.finalizeSkill({ name: 'skills/main.default.my_skill' });
Encuentra una habilidad
Haz una lista de las habilidades a las que puedes acceder en un esquema y luego obtén los metadatos de una habilidad por el nombre de su recurso.
API DE REST
databricks api get "/api/2.1/unity-catalog/skills?parent=schemas/main.default"
databricks api get "/api/2.1/unity-catalog/skills/main.default.my_skill"
Cuando la respuesta de la lista incluya next_page_token, pásala como page_token en la siguiente petición. Continúa hasta que next_page_token falte o se vacíe.
CLI
databricks ai-gateway list-skills schemas/main.default
databricks ai-gateway get-skill skills/main.default.my_skill
SDK de Python
for skill in w.ai_gateway.list_skills(parent="schemas/main.default"):
print(skill.name)
skill = w.ai_gateway.get_skill(name="skills/main.default.my_skill")
La CLI y el iterador de Python se encargan de la paginación por ti.
Conceder acceso
Estos ejemplos otorgan READ VOLUME a la habilidad, que permite al director leer la habilidad y descargar su paquete. Para los otros privilegios de habilidad, véase Conceder acceso a habilidades.
API DE REST
databricks api patch \
"/api/2.1/unity-catalog/permissions/skill/main.default.my_skill" \
--json '{
"changes": [
{ "principal": "data-team", "add": ["READ_VOLUME"] }
]
}'
CLI
Grant READ VOLUME con la CLI de Databricks:
databricks grants update skill main.default.my_skill \
--json '{"changes": [{"principal": "data-team", "add": ["READ_VOLUME"]}]}'
SDK de Python
Concede READ VOLUME con el SDK de Databricks para Python:
from databricks.sdk.service import catalog as c
w.grants.update(
securable_type="skill",
full_name="main.default.my_skill",
changes=[c.PermissionsChange(principal="data-team", add=[c.Privilege.READ_VOLUME])],
)
Kit de Desarrollo de Software Go
Conceder READ VOLUME con el SDK de Databricks para Go:
_, err := w.Grants.Update(ctx, catalog.UpdatePermissions{
SecurableType: "skill",
FullName: "main.default.my_skill",
Changes: []catalog.PermissionsChange{{
Principal: "data-team",
Add: []catalog.Privilege{catalog.PrivilegeReadVolume},
}},
})
SDK de Java
Conceder READ VOLUME con el SDK de Databricks para Java:
w.grants()
.update(
new UpdatePermissions()
.setSecurableType("skill")
.setFullName("main.default.my_skill")
.setChanges(
Arrays.asList(
new PermissionsChange()
.setPrincipal("data-team")
.setAdd(Arrays.asList(Privilege.READ_VOLUME)))));
Actualización de una aptitud
Estos ejemplos actualizan el comentario de la habilidad, el único campo que puedes cambiar. El nombre de la habilidad no puede cambiarse. Para cambiar el contenido de una habilidad, sube el nuevo paquete y finaliza la habilidad de nuevo.
Para una actualización condicional, primero consigue la habilidad y la etag aprueba con la actualización. La actualización solo tiene éxito si la habilidad no ha cambiado desde esa lectura. Codifica URL al etag añadirlo a una cadena de consulta REST.
API DE REST
databricks api patch \
"/api/2.1/unity-catalog/skills/main.default.my_skill?update_mask=comment" \
--json '{"comment": "Updated: team-shared math helper"}'
CLI
databricks ai-gateway update-skill skills/main.default.my_skill comment \
--json '{"comment": "Updated: team-shared math helper"}'
SDK de Python
from databricks.sdk.service import catalog as c
from databricks.sdk.common.types.fieldmask import FieldMask
updated = w.ai_gateway.update_skill(
name="skills/main.default.my_skill",
update_mask=FieldMask(["comment"]),
skill=c.Skill(comment="Updated: team-shared math helper"),
)
Kit de Desarrollo de Software Go
updated, err := w.AiGateway.UpdateSkill(ctx, catalog.UpdateSkillRequest{
Name: "skills/main.default.my_skill",
UpdateMask: *fieldmask.New([]string{"comment"}),
Skill: catalog.Skill{Comment: "Updated: team-shared math helper"},
})
Go Modular SDK
mask, err := types.NewFieldMask[aigateway.Skill]("comment")
updated, err := c.UpdateSkill(ctx, aigateway.UpdateSkillRequest{
Skill: &aigateway.Skill{
Name: ptr("skills/main.default.my_skill"),
Comment: ptr("Updated: team-shared math helper"),
},
UpdateMask: mask,
})
SDK de Java
Skill updated =
w.aiGateway()
.updateSkill(
new UpdateSkillRequest()
.setName("skills/main.default.my_skill")
.setUpdateMask(FieldMask.newBuilder().addPaths("comment").build())
.setSkill(new Skill().setComment("Updated: team-shared math helper")));
JS Modular SDK
import { skillFieldMask } from '@databricks/sdk-aigateway/v1';
const updated = await client.updateSkill({
skill: {
name: 'skills/main.default.my_skill',
comment: 'Updated: team-shared math helper',
},
updateMask: skillFieldMask('comment'),
});
Eliminar una habilidad
Eliminar una habilidad la elimina junto con su paquete. Los agentes ya no pueden cargarlo.
También puedes pasar la corriente etag de la habilidad para condicionar la eliminación a que no haya cambiado desde la última lectura. Codifica URL las etag cadenas de consulta in REST.
API DE REST
databricks api delete "/api/2.1/unity-catalog/skills/main.default.my_skill"
CLI
databricks ai-gateway delete-skill skills/main.default.my_skill
SDK de Python
w.ai_gateway.delete_skill(name="skills/main.default.my_skill")
Kit de Desarrollo de Software Go
err := w.AiGateway.DeleteSkill(ctx, catalog.DeleteSkillRequest{
Name: "skills/main.default.my_skill",
})
Go Modular SDK
err := c.DeleteSkill(ctx, aigateway.DeleteSkillRequest{
Name: ptr("skills/main.default.my_skill"),
})
SDK de Java
w.aiGateway().deleteSkill(new DeleteSkillRequest().setName("skills/main.default.my_skill"));
JS Modular SDK
await client.deleteSkill({ name: 'skills/main.default.my_skill' });