スキルAPIとSDKの参考文献

Important

この機能は ベータ版です。 アカウント管理者は、アカウント コンソール の [プレビュー ] ページからこの機能へのアクセスを管理できます。 アカウント レベルのプレビューの管理を参照してください。

これらの例を使ってスキル管理を自動化しましょう。 APIは各スキルをskills/{catalog}.{schema}.{skill}というSkillリソースとして表現します。 エージェントとスキルの作成・公開は、「 スキルの作成と共有」をご覧ください。 特権やガバナンスについては、 Governスキルを参照してください。 スキルにはTerraformやDeclarative Automation Bundlesのリソースはありません。

前提 条件

  • スキルのガバナントスキーマを設定しましょう。

  • 作戦に必要な権限を持つこと。

  • 使用する予定のクライアントをインストールして認証してください。 REST APIにはバージョン要件はありません。各ツールとSDKには最低バージョンがあります:

    SDKスニペットは認証済みワークスペースクライアントを前提としています。 w;モジュール化されたSDKスニペットは、認証済みのUnity Gatewayクライアントを前提としており、Goでは c 、JavaScriptでは client です。

API 操作

Skills REST APIはこれらの操作を提供します。 また、親の方 USE CATALOG と USE SCHEMA も必要です。 各リンクはフィールド、権限、回答を参考にしてください。

Operation 利用シーン 必要なアクセス許可
Create スキルを作成し、そのバンドルストレージをプロビジョニングします。 スキーマの CREATE VOLUME
Upload SKILL.mdおよび関連するファイルをファイルAPIを通じてアップロードします。 WRITE VOLUMEそして技術についてREAD VOLUME
Finalize SKILL.mdを読んで検証し、その後スキルのバンドル名と説明を設定します。 READ VOLUME スキルについて
リスト スキーマの中でアクセスできるスキルを見つけてください。 READ VOLUME、READ METADATA、またはスキルMANAGE
Get スキルのメタデータと現在の etagを読みましょう。 READ VOLUME、READ METADATA、またはスキルMANAGE
Update スキルのコメントを変更してください。 MANAGE スキルについて
削除 スキルとそのバンドルを取り除く。 MANAGE スキルについて

スキルの所有者はこれらすべてをスキルに保持します。 「 スキルへのアクセス助成」を参照してください。

スキルを作成する

スキル作成には3つのステップがあります:スキル作成、バンドルのアップロード、そして最終決定です。 スキルを確定させるまでは、そのバンドル名や説明は空のままです。

ステップ1:スキルの作成

スキルをスキーマで作成しましょう。 comment 設定できる唯一のフィールドです。 Azure Databricksはname、bundle_name、descriptionを導出します。

main.default.my_skill と data-team を独自の値に置き換えます。

REST API

クエリパラメータとしてparentとskill_idを /api/2.1/unity-catalog/skills にPOST送信します。

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

親スキーマとスキル名を渡し、コメントに --jsonを付けてください。

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

Python SDK

Databricks SDKの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 (ソフトウェア開発キット)

Databricks SDK for 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

Go Modular SDKでスキルを作成・管理します。 オプションフィールドはポインタなので、例では1行のヘルパー 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

Databricks SDKの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

JavaScript SDKでスキルを作成・管理する:

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

ステップ2:バンドルのアップロード

ファイルAPIを通じて、 SKILL.mdおよびサポートファイルをスキルのストレージパスにアップロードします。 /Skills/<catalog>/<schema>/<skill>/。 SKILL.md まずは name と descriptionを設定するYAMLフロントマターから始めなければなりません。 この例を 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

ファイルAPIにPUTを送信します。 DATABRICKS_HOSTはワークスペースのURL(例えばhttps://my-workspace.cloud.databricks.com)に設定し、DATABRICKS_TOKENはトークンに設定します。 この例では、標準入力時にトークンを curl に渡すため、プロセスリストには表示されません:

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

スキルフォルダを作成し、そのフォルダにファイルをコピーします:

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 (ソフトウェア開発キット)

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にはFiles APIが含まれていません。 代わりに Files SDK でアップロードしてください:

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にはFiles APIが含まれていないため、この例ではRESTエンドポイントを直接呼び出します。 ワークスペースのURL(例えば https://my-workspace.cloud.databricks.com)と、 DATABRICKS_HOST および環境変数からトークンを読み込み DATABRICKS_TOKEN :

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

ステップ3:スキルの最終決定

最終解析と検証は、スキルの表出しから設定し、 SKILL.mdからスキルの bundle_name と description を設定します。 後でバンドルを変更した場合は、再度最終決定してください。

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 (ソフトウェア開発キット)

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

スキルを見つけましょう

アクセス可能なスキルをスキーマでリストアップし、そのスキルのメタデータをリソース名で取得します。

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"

リストレスポンスに next_page_tokenが含まれたら、次のリクエストで page_token として渡してください。 そのまま、 next_page_token がなくなるか空になるまで続けてください。

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

CLIとPythonイテレーターがページ設定を処理します。

アクセス権を付与する

これらの例はスキルのごとを得 READ VOLUME し、校長がスキルを読み、そのバンドルをダウンロードできるようにします。 その他のスキル特権については、「 スキルへのアクセス付与」を参照してください。

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

Databricks CLIで READ VOLUME を助成してください:

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

Python SDK

Databricks SDKによるPythonの助成READ VOLUME:

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 (ソフトウェア開発キット)

Databricks SDK for GoでREAD VOLUMEを付与する:

_, 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

を、READ VOLUME を使用して付与する:

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

スキルを更新する

これらの例はスキルのコメントを更新しており、変更できるフィールドは唯一です。 スキル名は変更できません。 スキルの内容を変更するには、新しいバンドルを アップロード してスキルを再度 最終化 してください。

条件付きアップデートの場合は、まず スキルを取得し 、アップデートで etag を渡します。 アップデートは、その読んだ時からスキルが変わっていなければ成功しません。 RESTクエリ文字列に追加する際に etag をURLエンコードしてください。

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 (ソフトウェア開発キット)

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

スキルを削除する

スキルを削除すると、そのスキルとバンドルが削除されます。 エージェントはもうロードできなくなった。

また、スキルの現在の etag をパスして削除を条件付けることもできます。前回の読み取り以降に変更されていないことが条件付きです。 RESTクエリ文字列でURLエンコード etag 。

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 (ソフトウェア開発キット)

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

その他のリソース