🐥

Semantic Kernel のスキル概要

2023/05/03に公開

前回の記事で、サンプルをもとに Semantic Kernel でどのようなことができるのかを見てみました。

今回はスキルにフォーカスし、あらかじめ用意されているコアスキル、セマンティックスキルについて調べてみたので各スキルの概要を記載しておきます。

スキルの詳細については以下を参照ください。
参考:What are Skills?

コアスキル

コアスキルは dotnet/src/SemanticKernel/CoreSkills 配下に格納されています。コアスキルは例えばセマンティックスキルの ChatSkill/ChatGPT で利用されていたりします。

スキル名 概要
ConversationSummarySkill 会話の要約を可能にするスキル
(要約、アクションアイテム抽出、トピック抽出の3つある)
FileIOSkill ファイルの読み書きを行うスキル
HttpSkill HTTP 機能を提供するスキル
MathSkill 数学計算を行うための一連の関数を提供するスキル
(現状は、加算・減算しかありません)
TextMemorySkill 長期記憶または短期記憶から情報を保存または呼び出すスキル
TextSkill 文字列を操作するための一連の関数を提供するスキル
TimeSkill 現在の時刻と日付を取得するための一連の関数を提供するスキル
WaitSkill 残りの操作を行う前に待機する関数のセットを提供するスキル

セマンティックスキル

あらかじめ用意されているセマンティックスキルのサンプルは samples/skills 配下に格納されています。中身はすべてテキストでかかれたプロンプトです。英語ではありますがプロンプトエンジニアリングの参考になると思います。

CalendarSkill

ファンクション名 概要
AssistantShowCalendarEvents 質問に対してカレンダーイベントを教えてくれる

ChatSkill

ファンクション名 概要
Chat AI とチャットをする
ChatFilter 与えられたチャットメッセージをブロックするかどうかを決定する
ChatGPT ChatGPT のように AI とチャットをする
ChatPersonality 性格を与えた AI とチャットをする
ChatUser 入力者がどのような人であるか情報を与えて AI とチャットをする
ChatV2 あらかじめ与えたルールに沿って AI とチャットをする

ChildrensBookSkill

ファンクション名 概要
BookIdeas 子供向けの本のアイディアを出す
CreateBook 子供向けの本を作成する

ClassificationSkill

ファンクション名 概要
Importance メッセージの重要度を判断する
Question 文章が question か statement を判断する(質問かどうかを判断する)

CodingSkill

ファンクション名 概要
Code 説明した内容に対してプログラミング言語のコードを生成する
CodePython 与えられた問題を解決するための Python コードを生成する
CommandLinePython Python のコマンドラインスクリプトを生成する
DOSScript DOS スクリプトを生成する
EmailSearch Email の検索を行う
Entity 与えられたテキストに xml タグをインラインで注入する

FunSkill

ファンクション名 概要
Excuses 特定の出来事について創造的な理由または言い訳を生成する
Joke トピックに関するジョークまたはユーモラスなストーリーを 1 つ生成する
Limerick 面白いリメリック(5行の詩)を生成する

IntentDetectionSkill

ファンクション名 概要
AssistantIntent 入力文がどのような意図であるかを出力する

MiscSkill

ファンクション名 概要
Continue {{$INPUT}} とだけ書かれたプロンプト
ElementAtIndex 要素のリストを与え、要求したインデックスにある要素を見つける

QASkill

ファンクション名 概要
AssistantResults API コールの結果に対して質問をすると回答してくれる
ContextQuery 質問に対して指定された xml タグをつけて回答する
Form Web サーバーのように動作し、応答を xml で提供する
GitHubMemoryQuery GitHub のリポジトリから読み込んだ情報をもとに質問に答える
(TextMemorySkill であらかじめ情報を記憶しておく必要あり)
QNA 入力文もとに、質疑応答リストの json を生成する。
Question 明確な答えがない質問をした場合「Unknown」と答えるボット

SummarizeSkill

ファンクション名 概要
MakeAbstractReadable わかりやすくシンプルに要約する(英文向けの内容)
Notegen 文書から記憶用のキーポイントを抽出する
Summarize ルールをもとに要約する
Topics 文書から重要なトピックを抽出する

WriterSkill

ファンクション名 概要
Acronym コンセプトに対して適切な頭字語のペアを生成する(英文向けの内容)
AcronymGenerator 頭字語を生成する(英文向けの内容)
AcronymReverse 入力文の頭文字を逆にして、面白い文章を生成する(英文向けの内容)
Brainstorm ブレインストーミングでアイデアを出し、リストを作成する
EmailGen 箇条書きの文章を完全な文章に書き換える
EmailTo 箇条書きを完全な文章を特徴とする電子メールに書き換える
NovelChapter 物語のテーマと前章の内容をコンテキストとして与え、あらすじを入力することで新たな章を書く
NovelChapterWithNotes 上記のファンクションに、これまでのストーリーのメモをコンテキストとして追加したもの
NovelOutline 小説のあらすじを考えてくれる
Rewrite 与えられたテキストを指定のスタイルに書き換える
ShortPoem 与えられた出来事を説明するために、短い面白い詩やリメリック(5行の詩)を作成する
StoryGen list, synopsis タグを利用した xml として出力する
TellMeMore フォーカスエリアに焦点を当て、指定したタイプで概要を冗長かつ詳細に書く
Translate 指定した言語に翻訳する
TranslateV2 英語の翻訳者、スペル修正者、改善者として答えてくれる
TwoSentenceSummary 入力文章を 2 文以内で要約する

Discussion