🐡

Semantic Kernel 関数メモ

2023/09/20に公開

関数一覧

sk.openai_settings_from_dot_env()

.envファイルからOpenAIの設定を読み込む。OPENAI_API_KEYだけあればとりあえずいいようだ

import semantic_kernel as sk
api_key, org_id = sk.openai_settings_from_dot_env()

sk.azure_openai_settings_from_dot_env()

.envファイルからAzure OpenAIの設定を読み込む。

deployment, api_key, endpoint = sk.azure_openai_settings_from_dot_env()

kernel.add_text_completion_service()

カーネルにテキストコンプリーションサービスを追加。テキストコンプリーションはチャットコンプリーションと似ているが、単発のやり取りに特化したものでロールの概念が無い。モデルはtext-davinci-003 を使う

kernel.add_text_completion_service("dv", OpenAITextCompletion("text-davinci-003", api_key, org_id))

kernel.add_text_embedding_generation_service()

カーネルにテキストエンベッディングサービスを追加。テキストエンベッディングサービスは文字列をベクトル化するのに使う。モデルは text-embedding-ada-002 を使うが、どんな文字列であっても1536次元に変換されているように見える

kernel.add_text_embedding_generation_service("ada", OpenAITextEmbedding("text-embedding-ada-002", api_key, org_id))

kernel.create_semantic_function()

セマンティック関数の作成。任意のプロンプトを与えることができる

パターン1

summarize = kernel.create_semantic_function(prompt, max_tokens=2000, temperature=0.2, top_p=0.5)	

パターン2

kernel.create_semantic_function(prompt, "ChatBot", max_tokens=2000, temperature=0.7, top_p=0.5)

パターン2の方は引数で"ChatBot"というのが入っているが、これが何かが不明。セマンティック関数のタイプを指定しているのかも。というのもパターン2で作成したセマンティック関数を invoke する際に context を渡していたものがあるため

chat_function = kernel.create_semantic_function(prompt, "ChatBot", max_tokens=2000, temperature=0.7, top_p=0.5)
bot_answer = await chat_function.invoke_async(context=context)

kernel.import_skill()

スキルをインポート

kernel.import_skill(sk.core_skills.TextMemorySkill())

kernel.import_semantic_skill_from_directory()

ローカルディレクトリからセマンティックスキルをインポート

skill = kernel.import_semantic_skill_from_directory("skills", "WriterSkill")
function = skill["ShortPoem"]
print(function("睡眠"))

kernel.create_new_context()

新しいコンテキストの作成。チャットのやり取りで使う

context = kernel.create_new_context()
context["history"] = ""

kernel.register_memory_store()

メモリストレージの登録。外部ストレージ無しでもメモリをストレージとして使用できる

kernel.register_memory_store(memory_store=sk.memory.VolatileMemoryStore())

await kernel.memory.save_information_async()

メモリストレージに情報を保存(非同期)

await kernel.memory.save_information_async(
    "aboutMe", id="info1", text="My name is Hogetaro"
)

await kernel.memory.search_async()

メモリストレージを検索(非同期)

answer = await kernel.memory.search_async("aboutMe", "What is your name?")
print(answer[0].text)

memories = await kernel.memory.search_async(memory_collection_name, ask, limit=5, min_relevance_score=0.77)

await kernel.run_async()

await kernel.memory.save_reference_async()

メモリストレージへのリファレンスの保存(非同期)

BasicPlanner()

ベーシックプランナーの作成。

from semantic_kernel.planning.basic_planner import BasicPlanner
planner = BasicPlanner()

Discussion