Important
この機能は ベータ版です。 アカウント管理者は、アカウント コンソール の [プレビュー ] ページからこの機能へのアクセスを管理できます。 アカウント レベルのプレビューの管理を参照してください。
これらの例を使ってスキル管理を自動化しましょう。 APIは各スキルをskills/{catalog}.{schema}.{skill}というSkillリソースとして表現します。 エージェントとスキルの作成・公開は、「 スキルの作成と共有」をご覧ください。 特権やガバナンスについては、 Governスキルを参照してください。 スキルにはTerraformやDeclarative Automation Bundlesのリソースはありません。
前提 条件
スキルのガバナントスキーマを設定しましょう。
作戦に必要な権限を持つこと。
使用する予定のクライアントをインストールして認証してください。 REST APIにはバージョン要件はありません。各ツールとSDKには最低バージョンがあります:
- Databricks CLI: v1.20.0 以降
-
Python SDK:
databricks-sdk0.142.0以上 -
Go SDK:
databricks-sdk-gov0.184.0以降 -
Go Modular SDK:
github.com/databricks/sdk-go/aigatewayv0.1.0以降 -
Java SDK:
databricks-sdk-java0.157.0以上 -
JavaScript SDK:
@databricks/sdk-aigateway0.23.0以上
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
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' });