0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Semantic Kernel(Python版)でログを出力する

Posted at

環境

  • Python 3.10.12
  • semantic-kernel 0.3.1.dev0

Google Colabに!pip install semantic-kernelでインストールしています。

実装

Semantic Kernelでは、Kernelの初期化時のlog引数にPython標準ライブラリのLoggerインスタンスを渡すことで、ログを出力できます。

import logging
import semantic_kernel

OPENAI_API_KEY = "XXXXXXXXXXXXXXXX"
OPENAI_ORG = "XXXXXXXXXXXXXXXX"

logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG)

kernel = semantic_kernel.Kernel(log=logger)

kernel.add_chat_service("c35", OpenAIChatCompletion("gpt-3.5-turbo", OPENAI_API_KEY, OPENAI_ORG))

Semantic Functionを定義したり実行する時に、次のようなログが出力されるようになります。

kansai_function = kernel.create_semantic_function("「{{$input}}」を関西弁にすると、", max_tokens=200, temperature=0)
出力
DEBUG:root:Extracting blocks from template: 「{{$input}}」を関西弁にすると、

実行時には、テンプレートに変数が埋め込まれた状態のpromptを確認したりできます。

output = kansai_function("本当に使っていないのですか、いけません。")
出力
DEBUG:__main__:Rendering string template: 「{{$input}}」を関西弁にすると、
DEBUG:__main__:Extracting blocks from template: 「{{$input}}」を関西弁にすると、
DEBUG:__main__:Rendering list of 3 blocks
DEBUG:__main__:Rendered prompt: 「本当に使っていないのですか、いけません。」を関西弁にすると、

なお上記の実行結果は次のようになります。

print(output)
出力
「ホンマに使ってへんのか、アカンで。」

loggerを指定しなかった場合

loggerを明示的に指定しなかった場合デフォルトではNullLoggerという何もしないloggerがセットされるため、何も出力されません。

openaiライブラリの出力なども含めて確認する

openaiという名前のロガーのレベルを変更することで、実際にOpenAI等のAPIへ飛ばしているリクエストを合わせて確認できます。またrootロガーのレベルを変更することで、他のログ出力もまとめて変更できます。

import logging

# logging.getLogger().setLevel(logging.DEBUG)       # rootロガーの設定
logging.getLogger('openai').setLevel(logging.DEBUG) # openaiログ設定
output = kansai_function("本当に使っていないのですか、いけません。")
出力
DEBUG:openai:message='Request to OpenAI API' method=post path=https://api.openai.com/v1/chat/completions
DEBUG:openai:api_version=None data='{"model": "gpt-3.5-turbo", "messages": [{"role": "user", "content": "\\u300c\\u672c\\u5f53\\u306b\\u4f7f\\u3063\\u3066\\u3044\\u306a\\u3044\\u306e\\u3067\\u3059\\u304b\\u3001\\u3044\\u3051\\u307e\\u305b\\u3093\\u3002\\u300d\\u3092\\u95a2\\u897f\\u5f01\\u306b\\u3059\\u308b\\u3068\\u3001"}], "temperature": 0, "top_p": 1.0, "presence_penalty": 0.0, "frequency_penalty": 0.0, "max_tokens": 200, "n": 1, "stream": false}' message='Post details'
(省略)

厳密にはSemantic Kernelと関係は無い話ですが、必要に応じて上記を合わせて設定することで確認がしやすくなると思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?