Skip to main content

スキルプラグイン開発

概要

SERVICEMEにおいて、スキルプラグインとはAgentが選択可能な能力を指します。システム標準のプラグイン以外にも、開発によってスキルプラグインを拡張し、Agentにさらなる能力を付与することができます。

Skill Plugin

システム内蔵スキルプラグイン

番号プラグインプラグインタイプ用途
SearchKnowledgebaseナレッジベース検索APIプラグインプライベートナレッジの検索機能を提供
ImageGeneration画像生成APIプラグインテキスト説明に基づき画像を生成
Browsingウェブ閲覧APIプラグインウェブ閲覧によるリアルタイム情報の検索を提供
ChartsチャートAPIプラグイン提供されたデータに基づき対応するチャートを生成。棒グラフ、折れ線グラフ、円グラフに対応
DocumentReaderドキュメントリーダーAPIプラグイン単一または選択したドキュメントの要約情報を提供
QuestionContact質問連絡先APIプラグイン質問の分野に応じて、該当分野の連絡先を返す

タイプ説明

タイプ説明
APIプラグインスキルプラグインはバックエンドAPIとして実装され、Agentがコンテキストに基づきAPIの入力パラメータを補完し、APIの返却値を解析します

APIスキルプラグイン

認証方式のサポート

現在は固定Header認証または認証不要のインターフェース呼び出しのみサポートしています。

タイプ説明
固定Headerリクエストヘッダーで固定キーを指定してインターフェース認証を行う。OpenAIのapi_key形式に類似

プラグイン開発

このプロセスを理解しやすくするため、タイムゾーンコードでタイムゾーンを検索するAPIプラグインを例に説明します。

ステップ1:タイムゾーンコードに基づきタイムゾーン情報を返すAPIを用意します。

API例

using Microsoft.AspNetCore.Mvc;
using System;

namespace WorldTimeApi.Controllers
{
[ApiController]
[Route("api/[controller]")]
public class TimeController : ControllerBase
{
[HttpGet("current/zone")]
public IActionResult GetTimeByZone([FromQuery] string timeZone)
{
if (string.IsNullOrEmpty(timeZone))
{
return BadRequest("Missing required parameter: timeZone");
}

try
{
// 查找时区信息
var timeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById(timeZone);

// 获取指定时区的当前时间
var currentTime = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, timeZoneInfo);

// 返回结果
return Ok(new
{
TimeZone = timeZone,
CurrentTime = currentTime.ToString("yyyy-MM-ddTHH:mm:ss")
});
}
catch (TimeZoneNotFoundException)
{
return NotFound("Time zone not found");
}
catch (InvalidTimeZoneException)
{
return BadRequest("Invalid time zone");
}
catch (Exception ex)
{
return StatusCode(500, $"Internal server error: {ex.Message}");
}
}
}
}

ステップ2:このプラグインをシステムに登録します

スキルプラグインを追加し、以下の情報を入力します

Register Plugin

フィールド説明

  • Code:プラグインのコード。システム内での一意識別子。意味のある記述を推奨します。
  • Name:プラグインの表示名。Agentが思考・実行時に使用するプラグイン名。多言語対応に注意してください。
  • Description:プラグインの説明。プラグインの役割を説明し、Agentのスキルプラグイン追加画面で表示されます。
  • Request Header:プラグイン呼び出しに必要なHeaderパラメータ(例:API_KEY)を入力します。
  • 【重要】OpenAPI / Swagger Schema ( JSON ):API本体の記述。ここでの情報が、Agentがこのスキルをどのような状況で呼び出すべきか、各パラメータをどのように補完すべきかの理解に直結します。

OpenAPI Schema (JSON) サンプル

Get time zone
{
"Openapi": "3.0.0",
"Info": {
"Title": "World Time",
"Description": "Getting world time",
"Version": "v1.0.0"
},
"Servers": [
{
"Url": "https://www.timeapi.io"
}
],
"Paths": {
"/api/Time/current/zone": {
"Get": {
"OperationId": "zone",
"Description": "Get world time by timezone name",
"Deprecated": false,
"Parameters": [
{
"Name": "timeZone",
"In": "query",
"Required": true,
"Description": "Full IANA time zone names.",
"Schema": {
"Type": "string"
}
}
]
}
}
}
}

注意

  • Info/Title:ここで記載するプラグインタイトルは、Agentがこのプラグインの役割を理解する助けになります。
  • Paths/[api path]/Get/OperationId:Agent Prompt内でバッククォート`%OperationId%`を使い、特定シナリオで呼び出すAPIを明示できます。詳細は下記ステップ4の例を参照してください。
  • Paths/[api path]/Get/Description:Agentの理解を助け、どのような状況で特定APIを呼び出すかに影響します。
  • Paths/[api path]/Get/Parameters:実際のAPIと一致していることを確認してください。ここがqueryの場合、APIもqueryからパラメータを取得する必要があります。他のタイプ(例:json body)の場合も同様です。パラメータ名の説明は補完成功率向上に役立ちます。
  • Servers/Url:APIのBaseURL。正しく記載しないと呼び出しに失敗します。
  • 【オプション】プラグイン設定完了後、DEBUG機能でデバッグが可能です。

ステップ3:Agentにスキルプラグインを追加します

Agent設定画面の[スキルプラグイン]タブからプラグインを追加します。

Add Skill

設定を保存後、エキスパートとの対話でテストします。

Use Skill

ステップ4:【オプション】AgentのPromptに必要な説明を追加し、Agentがこのスキルをより適切に実行できるようにします。

特定サイトでブラウザプラグインによる検索を誘導
### Skill 3: Web Searching
- You can access web site by `Browsering` toolkit and looking for HR infomation from following sites: (site:*.linkedin.com; site:*.zhipin.com)
- Using result to fulfill users request and list up reference link at end of your response.

注:多くの場合、AgentはOpenAPI Schemaの情報に基づき自動的に実行タイミングやパラメータ補完を判断します。