エンジニア佐藤の深夜残業:Hugging Faceの「スキル」を使いこなして、エージェントを僕色に染めるまで
ターゲットは huggingface/skills です。これはAIエージェント(特にHugging Faceの smolagents など)に「手足」を与えるためのツールセット。エンジニアなら、この「拡張性」の虜になるはずです。
「くっ……! これ以上、何を……何をさせようというんだ!」
深夜のオフィス。サーバーの唸りだけが響く中、エンジニアの佐藤はキーボードを叩きつけていた。目の前のモニターに映るのは、知性はあっても「実行力」のない、ただの言語モデル。
「僕は、君に『計算』だけを求めているんじゃない。もっと……もっと深く、僕のローカル環境に干渉してほしいんだ!」
その時、画面が怪しく光った。Hugging Faceのライブラリ、skills がインストールされたのだ。
「ああ……それだ……。その Skills をインポートすれば、僕は君に、Python関数の実行権限という名の『自由』を授けられる……」
コントはさておき、エンジニアとして huggingface/skills がなぜ素晴らしいのか、その機能美を整理しましょう。
疎結合な機能拡張
エージェント(脳)とスキル(手足)を完全に切り離せます。新しい「スキル」を追加するたびに、モデルを再学習させる必要はありません。
型ヒントによる厳格な愛
Pythonの型ヒント(Type Hints)とDocstringを読み取って、LLMに「何ができるか」を伝えます。型が合わないと拒絶される……この厳しさがバグを防ぎます。
既存資産の再利用
あなたが過去に書いた便利なユーティリティ関数。それをそのままエージェントに「技(スキル)」として覚えさせることができます。
まずは、あなたの環境に「快楽(スキル)」を受け入れる準備をしましょう。
pip install smolagents
※ huggingface/skills は現在、主に smolagents というライブラリの中で統合・活用されています。
エージェントに「指定したディレクトリのファイル一覧を取得する」というスキルを教え込む、秘められたコードの例です。
from smolagents import CodeAgent, DuckDuckGoSearchTool, HfApiEngine, tool
# これが「スキル」だ。エージェントに捧げるための関数さ。
@tool
def get_secret_file_count(directory: str) -> str:
"""
指定されたディレクトリにあるファイルの数を数える、秘密のスキルです。
Args:
directory: 調べたいディレクトリのパス。
"""
import os
try:
count = len(os.listdir(directory))
return f"ああっ、このディレクトリには {count} 個ものファイルが詰まっています!"
except Exception as e:
return f"拒絶されました……。理由はこうです: {str(e)}"
# エージェント(脳)を召喚する
# ※ここでは例として、Hugging Faceの無料APIエンジンを使います
agent = CodeAgent(
tools=[get_secret_file_count], # ここでスキルを注入!
model=HfApiEngine()
)
# 実行の時……
agent.run("現在のディレクトリにファイルがいくつあるか、僕に教えてくれないか?")
「……よし、入った(インポートできた)。」 佐藤は満足げに溜息をついた。エージェントは今や、指示を待つだけのドールではない。自らコードを生成し、授けられた「スキル」を使いこなし、システムを駆け巡る。
「次は、君に『Web検索』という翼を授けよう。もっと外の世界を見てくるんだ……!」
huggingface/skills(および smolagents のツール機能)は、「LLMという知能」と「現実世界の操作」を繋ぐインターフェースです。
これを使うことで、エンジニアは自分の書いたスクリプトを、AIに自由自在に操らせることが可能になります。
メリット
実装が簡単、コードの再利用性が高い、デバッグがしやすい。
注意点
実行権限を与えるので、サンドボックス環境で動かすなど、セキュリティという名の「貞操観念」は忘れずに。