🐡
Semantic Kernel 関数メモ
関数一覧
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