paint-brush
100 日間の AI、8 日目: GPT-4 を使用した Microsoft のセマンティック カーネルの実験@sindamnataraj
880 測定値
880 測定値

100 日間の AI、8 日目: GPT-4 を使用した Microsoft のセマンティック カーネルの実験

Nataraj6m2024/01/31
Read on Terminal Reader

長すぎる; 読むには

Semantic Kernel は Microsoft のオープンソース SDK で、開発者がチャットボット、RAG、コパイロット、エージェントなどの AI アプリケーションを作成するのに役立ちます。
featured image - 100 日間の AI、8 日目: GPT-4 を使用した Microsoft のセマンティック カーネルの実験
Nataraj HackerNoon profile picture
0-item
1-item


こんにちは、みなさん! 私はナタラジですあなたと同じように、最近の人工知能の進歩に魅了されています。起こっているすべての発展を常に把握しておく必要があることに気づき、私は個人的な学習の旅に乗り出すことに決め、こうして100 日間の AIが誕生しました。このシリーズでは、LLM について学び、ブログ投稿を通じてアイデア、実験、意見、傾向、学習内容を共有します。 HackerNoonのここからまたは私の個人的な Web サイトからこの旅をたどることができます。今日の記事では、GPT-4 を利用してセマンティック カーネルを構築してみます。


Semantic Kernel は Microsoft のオープンソース SDK で、開発者がチャットボット、RAG、コパイロット、エージェントなどの AI アプリケーションを作成するのに役立ちます。これは langchain が行うことと似ています。おそらくこれは、langchain に対する Microsoft の答えと言えるでしょう。


既存のソフトウェアを拡張可能にし、AI 機能を簡単に利用できるように設計されています。また、アプリケーションが時間の経過とともに AI モデルを最新かつ最高のバージョンに更新することを期待して設計されています。

セマンティックカーネル


この分野は非常に急速に進化していますが、セマンティック カーネルを探求する際に留意すべきいくつかの定義をここに示します。

  • チャットボット:ユーザーとの簡単なチャット。
  • RAG:シンプルなチャット ボットですが、リアルタイムおよびプライベート データに基づいています。
  • 副操縦士:推奨や提案を行うことで、私たちがタスクを遂行できるよう一緒に支援することを目的としています。
  • エージェント:人間の介入を制限して刺激に反応します。エージェントは、ユーザーに代わって電子メールの送信、チケットの予約などのタスクを実行します。

セマンティック カーネルはどのように機能しますか?

セマンティック カーネルがどのように機能するかを説明するために、テキストの一部を取得して 140 文字のツイートに変換する例を見てみましょう。ただし、これはセマンティック カーネルを使用して行います。以前の投稿でも同様の要約をここで行いました


ここではセマンティック カーネルの Python ライブラリを使用しますが、セマンティック カーネルは Microsoft によって作成されているため、C# でも同様に実行できます。これを行う方法については、Microsoft の公開ドキュメントを確認してください。

ステップ 1: セマンティック カーネルを開始する

以下では、セマンティック カーネルを開始し、テキスト補完に使用する LLM として OpenAI の gpt-4 モデルを使用するように指示することで、テキスト補完サービスを設定しています。

 import semantic_kernel as sk from semantic_kernel.connectors.ai.open_ai import AzureChatCompletion, OpenAIChatCompletion import os from IPython.display import display, Markdown import asyncio from dotenv import load_dotenv, find_dotenv _ = load_dotenv(find_dotenv()) # read local .env file api_key = os.environ['OPENAI_API_KEY'] kernel = sk.Kernel() kernel.add_text_completion_service("openai", OpenAIChatCompletion("gpt-4",api_key)) print("Kernel Initiated")

ステップ 2: セマンティック関数を理解する:

セマンティック カーネルの世界では、ネイティブ関数とは異なるセマンティック関数という概念があります。ネイティブ関数は、任意のプログラミング言語で作成する通常の関数です。セマンティック関数は、カーネルによって調整できる反復可能な LLM プロンプトをカプセル化したものです。セマンティック関数を作成する次のステップで、セマンティック関数が何であるかについてよりよく理解できるようになります。


ネイティブ関数とセマンティック関数


ステップ 3: セマンティック関数を作成する

ここでは、接続を 140 文字未満で要約するプロンプトsk_promptを作成します (これがこの演習の目標です)。次に、プロンプトを入力として渡して、カーネルでセマンティック関数を作成し、作成したセマンティック関数を表すオブジェクトsummary_functionを返し、カーネル経由で繰り返しアクセスできるように保存します。セマンティック関数を作成するときに、カスタマー プロンプトを使用し、max_tokens、温度などの LLM 構成情報も提供していることに注意してください。ここで、ネイティブ関数とセマンティック関数の以前のイメージに戻ると、よりわかりやすくなります。


 sk_prompt = """ {{$input}} Summarize the content above in less than 140 characters. """ summary_function = kernel.create_semantic_function(prompt_template = sk_prompt, description="Summarizes the input to length of an old tweet.", max_tokens=200, temperature=0.1, top_p=0.5) print("A semantic function for summarization has been registered.")

ステップ 4: セマンティック関数を使用してテキストを 140 文字のツイートに要約します。

次に、変数sk_input を使用して要約するテキストを作成し、カーネル経由でセマティック関数を呼び出し、結果を表示します。

 sk_input = """ Let me illustrate an example. Many weekends, I drive a few minutes from my house to a local pizza store to buy a slice of Hawaiian pizza from the gentleman that owns this pizza store. And his pizza is great, but he always has a lot of cold pizzas sitting around, and every weekend some different flavor of pizza is out of stock. But when I watch him operate his store, I get excited, because by selling pizza, he is generating data. And this is data that he can take advantage of if he had access to AI. AI systems are good at spotting patterns when given access to the right data, and perhaps an AI system could spot if Mediterranean pizzas sell really well on a Friday night, maybe it could suggest to him to make more of it on a Friday afternoon. Now you might say to me, "Hey, Andrew, this is a small pizza store. What's the big deal?" And I say, to the gentleman that owns this pizza store, something that could help him improve his revenues by a few thousand dollars a year, that will be a huge deal to him. """ # using async to run the semantic function async def run_summary_async(): summary_result = await kernel.run_async(summary_function, input_str=sk_input) display(summary_result) asyncio.run(run_summary_async())


私が得た出力は次のとおりです。


AI は販売データを分析して、小規模なピザ店のオーナーが在庫を最適化し、年間収益を増やすことができるようになります。


セマンティック カーネルは、セマンティック関数とネイティブ関数を一緒に使用するなど、より多くの機能を備えており、強力な AI アプリケーションを作成するように設計されています。それらについては今後の投稿で詳しく書きます。


AI の 100 日間の 8 日目はここまでです。


私は「Above Average」というニュースレターを執筆しており、大手テクノロジー業界で起こっているすべての背後にある二次的な洞察について話しています。テクノロジー業界にいて、平均的な人間になりたくない場合は、購読してください


AI の 100 日間に関する最新情報については、 TwitterLinkedIn 、または ** HackerNoon ** でフォローしてください。テクノロジーに携わっている場合は、ここにあるテクノロジー専門家のコミュニティに参加することに興味があるかもしれません。


前の日 7: Langchain を使用してデータの Chat-GPT を構築する方法?