AIシリーズ面接7:スキルを規範的に定義する方法
一、スキルの核心概念
スキルとは、エージェント(Agent) または AIシステム にカプセル化された一連の実行可能な能力ユニットです。通常、以下を含みます:
- トリガー条件:いつ呼び出されるか(ユーザー指示、システムイベントなど)。
- 入力パラメータ:受け取る必要のあるデータやコンテキスト。
- 実行ロジック:具体的な処理手順(API呼び出し、コード実行、知識ベースクエリなど)。
- 出力結果:呼び出し元に返す応答やアクション。
二、スキルを規範的に定義する手順
1. スキルの名前と説明を明確にする
- 名前:短く、一意で、意味のあるもの(例:
search_web、send_email)。 - 説明:一文でそのスキルの機能を説明し、エージェントが自動的にマッチングできるようにする。
2. 入力スキーマ(Input Schema)を定義する
JSON Schema または類似の形式を使用し、各パラメータの型、必須かどうか、デフォルト値、制約を明確にします。
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "検索キーワード",
"required": true
},
"max_results": {
"type": "integer",
"description": "最大返却結果数",
"default": 10
}
}
}
3. 実行ロジック(Execution Logic)を記述する
- 決定論的ロジック:関数、API、データベースを直接呼び出す。
- 非決定論的ロジック:LLMを使用して応答を生成する(プロンプトテンプレートを提供する必要あり)。
- エラーハンドリング:タイムアウト、リトライ、フォールバック戦略を定義する。
4. 出力形式(Output Schema)を定義する
同様にJSON Schemaを使用して、返されるデータ構造を記述します。
{
"type": "object",
"properties": {
"results": {
"type": "array",
"items": {
"type": "object",
"properties": {
"title": { "type": "string" },
"url": { "type": "string", "format": "uri" }
}
}
}
}
}
5. メタデータ(Metadata)を追加する
- バージョン番号:反復管理を容易にする。
- 作者/メンテナー:責任の所在。
- 依存関係:必要な外部サービスやライブラリ。
- 使用制限:レート制限、権限要件など。
三、例:完全なスキル定義
name: "weather_query"
description: "都市名に基づいて現在の天気を取得する"
version: "1.0.0"
author: "AI Team"
input:
type: object
properties:
city:
type: string
description: "都市名(例:'東京')"
required: true
unit:
type: string
enum: ["celsius", "fahrenheit"]
default: "celsius"
execute:
- step: "天気APIを呼び出す"
api: "https://api.weather.com/v1/current"
method: "GET"
params:
city: "{input.city}"
unit: "{input.unit}"
- step: "結果をフォーマットする"
format: "現在 {city} の気温は {temperature}°{unit} です"
output:
type: object
properties:
temperature:
type: number
condition:
type: string
humidity:
type: number
四、ベストプラクティス
- 単一責任:各スキルは一つのことだけを行い、過度な結合を避ける。
- 自己完結:可能な限り外部のグローバル状態に依存せず、入力がそのまま出力となる。
- テスト可能:モックデータやサンドボックス環境を提供し、単体テストを実施する。
- ドキュメント化:各スキルに使用説明と例を記述する。
上記の方法で定義されたスキルは、AIエージェントによる動的なスケジューリングが可能であると同時に、開発者が直接システムに統合することもでき、「一度書けばどこでも使える」再利用効果を実現します。
评论
暂无已展示的评论。
发表评论(匿名)