Skills API a reference SDK

Důležité

Tato funkce je v beta verzi. Správci účtu mohou spravovat přístup k této funkci na stránce Previews v konzoli účtu. Viz Správa náhledů na úrovni účtu.

Použijte tyto příklady k automatizaci správy dovedností. API reprezentuje každou dovednost jako zdroj nazvaný Skillskills/{catalog}.{schema}.{skill}. Chcete-li napsat a publikovat dovednost s agentem, viz Vytvořit a sdílet dovednosti. Pro privilegia a správu viz Dovednosti vlády. Dovednosti nemají zdroje z Terraform nebo Declarative Automation Bundles.

Požadavky

  • Nastavte si řízené schéma pro dovednosti.

  • Mějte potřebná povolení pro provoz.

  • Nainstalujte a ověřte klienta, kterého plánujete použít. REST API nemá požadavek na verzi; každý nástroj a SDK má minimální verzi:

    • Databricks CLI: v1.20.0 a výše
    • Python SDK:databricks-sdk 0.142.0 a výše
    • Go SDK: databricks-sdk-go v0.184.0 a výše
    • Go Modular SDK:github.com/databricks/sdk-go/aigateway v0.1.0 a výše
    • Java SDK:databricks-sdk-java 0.157.0 a výše
    • JavaScript SDK: @databricks/sdk-aigateway 0.23.0 a výše

    Útržky SDK předpokládají autentizovaného klienta pracovního prostoru, w; Modulární útržky SDK předpokládají autentizovaného klienta Unity Gateway, c a to v Go i client v JavaScriptu.

Operace rozhraní API

Skills REST API poskytuje tyto operace. Každý také vyžaduje USE CATALOG a je USE SCHEMA na rodiči. Sledujte každý odkaz pro jeho pole, oprávnění a odpovědi.

Operation Případ použití Požadována oprávnění
Vytvářet Vytvořte dovednost a zpřístupněte její úložiště v balíčku. CREATE VOLUME ve schématu
Nahrát Nahrávejte a všechny podpůrné soubory přes SKILL.md Files API. WRITE VOLUME a READ VOLUME na dovednosti
Dokončit Přečti a ověř SKILL.md, pak nastav název balíčku a popis dovednosti. READ VOLUME na dovednosti
Seznam Najděte dovednosti, ke kterým se můžete dostat ve schématu. READ VOLUME, READ METADATA, nebo MANAGE na dovednosti
Získejte Přečti si metadata dovednosti a její aktuální etag. READ VOLUME, READ METADATA, nebo MANAGE na dovednosti
Aktualizace Změňte komentář ke schopnosti. MANAGE na dovednosti
Odstranit Odeberte dovednost a její svazek. MANAGE na dovednosti

Majitel dovednosti drží všechny tyto vlastnosti na dovednosti. Viz Grant access to skills.

Vytvoření dovednosti

Vytvoření dovednosti zahrnuje tři kroky: vytvořit dovednost, nahrát její balíček a pak ji dokončit. Dokud nedokončíte dovednost, její název balíčku a popis jsou prázdné.

Krok 1: Vytvořte dovednost

Vytvořte dovednost ve schématu. comment je jediné pole, které můžete nastavit. Azure Databricks derives name, bundle_name, a description.

Nahraďte main.default.my_skill a data-team nahraďte vlastními hodnotami.

REST API

Pošlete a POST na /api/2.1/unity-catalog/skills, předejte parent a skill_id jako parametry dotazu:

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ředejte rodičovské schéma a název dovednosti a do komentáře --jsondodajte:

databricks ai-gateway create-skill schemas/main.default my_skill \
  --json '{"comment": "Team-shared math helper skill"}'

Python SDK

Vytvořte a spravujte dovednost pomocí Databricks SDK pro 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"),
)

Go SDK (vývojová sada pro Go)

Vytvořte a spravujte dovednost pomocí Databricks SDK pro 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

Vytvořte a spravujte dovednost pomocí Go Modular SDK. Volitelné pole jsou ukazatele, takže příklad používá jednořádkový pomocník, 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")},
})

Java SDK

Vytvořte a spravujte dovednost pomocí Databricks SDK pro 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

Vytvořte a spravujte dovednost pomocí JavaScript SDK:

const created = await client.createSkill({
  parent: 'schemas/main.default',
  skillId: 'my_skill',
  skill: { comment: 'Team-shared math helper skill' },
});

Krok 2: Nahrajte balíček

Nahrajte SKILL.md, a všechny podpůrné soubory na cestu úložiště dovednosti, /Skills/<catalog>/<schema>/<skill>/, přes Files API. SKILL.md musí začít s YAML frontmatter, který nastavuje name a description. Uložte tento příklad jako 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.

REST API

Pošlete a PUT do API Files. Nastavte DATABRICKS_HOST URL vašeho pracovního prostoru, například https://my-workspace.cloud.databricks.com, a DATABRICKS_TOKEN token. Tento příklad předává token na curl standardní vstup, aby se neobjevil v seznamu procesů:

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

Vytvořte složku dovednosti a pak soubor do ní zkopírujte:

databricks fs mkdir dbfs:/Skills/main/default/my_skill
databricks fs cp SKILL.md dbfs:/Skills/main/default/my_skill/SKILL.md --overwrite

Python SDK

with open("SKILL.md", "rb") as f:
    w.files.upload("/Skills/main/default/my_skill/SKILL.md", f, overwrite=True)

Go SDK (vývojová sada pro 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

Go Modular SDK neobsahuje API Files. Nahrajte místo toho pomocí Files SDK pro Go :

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))

Java SDK

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

JavaScript Modular SDK neobsahuje Files API, takže tento příklad volá REST endpoint přímo. Čte URL pracovního prostoru, například https://my-workspace.cloud.databricks.com, a token z DATABRICKS_HOSTDATABRICKS_TOKEN proměnných a prostředí:

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}`);
}

Krok 3: Dokončit dovednost

Finalizace čte a validuje SKILL.md, poté nastavuje dovednosti bundle_name a description z úvodní části. Pokud později balíček změníte, znovu to dokončite.

REST API

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

Python SDK

finalized = w.ai_gateway.finalize_skill(name="skills/main.default.my_skill")
print(finalized.bundle_name, finalized.description)

Go SDK (vývojová sada pro 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"),
})

Java SDK

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' });

Najděte si dovednost

Uveďte dovednosti, ke kterým máte přístup, ve schématu, a pak získejte metadata dovednosti podle názvu zdroje.

REST API

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"

Když seznam obsahuje odpověď , next_page_tokenpředáme ji jako page_token v dalším požadavku. Pokračujte, dokud next_page_token nebude chybět nebo nebude prázdná.

CLI

databricks ai-gateway list-skills schemas/main.default

databricks ai-gateway get-skill skills/main.default.my_skill

Python SDK

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")

Stránkování za vás zvládnou CLI a Python iterátor.

Udělení přístupu

Tyto příklady poskytují READ VOLUME dovednost, která umožňuje principálovi dovednost přečíst a stáhnout její balíček. Pro ostatní výhody dovedností viz Udělit přístup ke schopnostem.

REST API

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 s Databricks CLI:

databricks grants update skill main.default.my_skill \
  --json '{"changes": [{"principal": "data-team", "add": ["READ_VOLUME"]}]}'

Python SDK

Grant READ VOLUME pomocí Databricks SDK pro jazyk 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])],
)

Go SDK (vývojová sada pro Go)

Udělení READ VOLUME pomocí sady Databricks SDK pro 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},
	}},
})

Java SDK

Udělení READ VOLUME pomocí Databricks SDK pro Javu:

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)))));

Aktualizuj dovednost

Tyto příklady aktualizují komentář ke schopnosti, což je jediné pole, které můžete změnit. Název dovednosti nelze změnit. Chcete-li změnit obsah dovednosti, nahrajte nový balíček a znovu ji dokončit .

Pro podmíněnou aktualizaci nejdřív získejte dovednost a projděte etag s ní s aktualizací. Aktualizace uspěje jen tehdy, pokud se dovednost od té doby nezměnila. URL enkódování při etag přidávání do dotazovacího řetězce REST.

REST API

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"}'

Python SDK

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"),
)

Go SDK (vývojová sada pro 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,
})

Java SDK

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'),
});

Odstranění dovednosti

Smazání dovednosti ji i její balíček odstraní. Agenti už ho nemohou načítat.

Můžete také předat aktuální etag dovednost a nechat smazání podmíněné tím, že se od posledního čtení nezměnila. URL-enkódují etag dotazovací řetězce v RESTu.

REST API

databricks api delete "/api/2.1/unity-catalog/skills/main.default.my_skill"

CLI

databricks ai-gateway delete-skill skills/main.default.my_skill

Python SDK

w.ai_gateway.delete_skill(name="skills/main.default.my_skill")

Go SDK (vývojová sada pro 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"),
})

Java SDK

w.aiGateway().deleteSkill(new DeleteSkillRequest().setName("skills/main.default.my_skill"));

JS Modular SDK

await client.deleteSkill({ name: 'skills/main.default.my_skill' });

Dodatečné zdroje