Registre des compétences Vertex AI
Le registre des compĂ©tences est le service du pilier Build de Gemini Enterprise Agent Platform qui stocke les packages SKILL.md versionnĂ©s sous forme dâarchives zip sur
aiplatform.googleapis.com. ADK-Rust sây intĂšgre en mode consommation uniquement :
les agents découvrent, téléchargent et chargent des compétences gouvernées de maniÚre centralisée, tandis que le provisionnement (création, mise à jour, suppression, publication) reste assuré par les outils de la plateforme.
Remarque : le API du registre des compétences est en v1beta1 (Preview), fourni uniquement depuis des points de terminaison
https://{location}-aiplatform.googleapis.comrégionaux dansus-central1,europe-west4etus-east5. Il est distinct du registre des agents, un service séparé du pilier Govern destiné à cataloguer les agents.
Configuration
Activez la fonctionnalité sur adk-skill (et sur adk-cli pour les commandes) :
[dependencies]
adk-skill = { version = "2.1.0", features = ["vertex-skill-registry"] }
Lâauthentification utilise les identifiants par dĂ©faut de lâapplication
(gcloud auth application-default login). La configuration provient de
GOOGLE_CLOUD_PROJECT et GOOGLE_CLOUD_LOCATION, ou de valeurs explicites.
Ce que fait le client â et ce quâil ne fait pas
| Opération | Surface |
|---|---|
| Obtenir une compétence (avec charge utile) | SkillRegistryClient::get_skill |
| Répertorier les compétences | SkillRegistryClient::list_skills |
| Recherche sémantique | SkillRegistryClient::search_skills |
| Répertorier / récupérer les révisions | list_skill_revisions, get_skill_revision |
| Télécharger, vérifier, extraire | fetch_skill_content, fetch_skill_revision_content |
| CrĂ©er / mettre Ă jour / supprimer | Non implĂ©mentĂ© â les outils de la plateforme gĂšrent le cycle de vie |
Chaque charge utile tĂ©lĂ©chargĂ©e est vĂ©rifiĂ©e par SHA-256 par rapport Ă lâempreinte du registre, puis extraite avec une validation zip en profondeur (nombre dâentrĂ©es, traversĂ©e de chemins, liens symboliques, noms en double, taille, ratio de compression et limites de profondeur) avant que le moindre octet ne soit utilisĂ©.
Charger les compétences du registre dans un agent
load_skill_index_from_registry produit un SkillIndex standard, de sorte que
lâinjection, la sĂ©lection et la coordination fonctionnent exactement comme
avec les compétences du systÚme de fichiers :
use adk_skill::registry::{
RegistrySkillFilter, SkillRegistryClient, SkillRegistryConfig,
load_skill_index_from_registry, merge_skill_indexes,
};
use adk_skill::load_skill_index;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let client = SkillRegistryClient::new_with_adc(SkillRegistryConfig::from_env()?)?;
// Select by semantic searchâŠ
let remote = load_skill_index_from_registry(
&client,
RegistrySkillFilter::by_query("quarterly reporting").with_top_k(5),
)
.await?;
// âŠor by explicit names, optionally pinned to a revision.
let pinned = load_skill_index_from_registry(
&client,
RegistrySkillFilter::by_names(["report-writer"]).with_revision("3"),
)
.await?;
// Merge with project-local skills â local wins on name collision,
// matching the project-local-over-global precedence of
// load_skill_index_with_extras.
let local = load_skill_index(".")?;
let merged = merge_skill_indexes(local, remote);
println!("{} skill(s) available ({} pinned)", merged.len(), pinned.len());
Ok(())
}
Les SkillDocuments adossĂ©es au registre sont créées par le mĂȘme analyseur et
le mĂȘme mĂ©canisme de hachage que les compĂ©tences du systĂšme de fichiers ; elles
contiennent un path virtuel de
{resource name}/SKILL.md et aucun horodatage last_modified.
Lâoutil dâagent search_skills
SkillSearchTool expose la recherche dans le registre aux agents
LLM. Il est en lecture seule et sûr en contexte concurrent, ce qui lui
permet de participer Ă la distribution parallĂšle des outils :
use adk_skill::registry::{SkillRegistryClient, SkillRegistryConfig, SkillSearchTool};
use std::sync::Arc;
fn build_tool() -> adk_core::Result<SkillSearchTool> {
let client = SkillRegistryClient::new_with_adc(SkillRegistryConfig::from_env()?)?;
Ok(SkillSearchTool::new(Arc::new(client)))
}
LâentrĂ©e est un {"query": string, "top_k"?: integer} ; la sortie est un tableau de
JSON composĂ© dâobjets {name, skillName, description}, avec le meilleur rĂ©sultat en premier (le
API ne renvoie aucun score).
CLI
Le binaire adk-rust acquiert deux sous-commandes en lecture seule derriĂšre la
fonctionnalité vertex-skill-registry :
[dependencies]
adk-cli = { version = "2.1.0", features = ["vertex-skill-registry"] }
# Semantic search (best match first)
adk-rust skills search "quarterly reporting" --top-k 5
# Materialize a skill package under .skills/<skill-id>/
adk-rust skills pull report-writer
# Pin a revision and choose the target directory
adk-rust skills pull report-writer --revision 3 --dir vendored-skills
Les deux commandes lisent les options --project/--location, en utilisant
GOOGLE_CLOUD_PROJECT/GOOGLE_CLOUD_LOCATION comme solution de repli. Les compétences récupérées sont
placées dans la structure standard des compétences (SKILL.md ainsi que son
references/), de sorte que skills list,
skills match et la dĂ©couverte des compĂ©tences par lâagent les prennent
immĂ©diatement en compte. Il nâexiste aucune commande push â la
publication passe par les outils de la plateforme.