前回の記事で、サンプルをもとに 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