Teams AI ライブラリ
Teams AI ライブラリは、GPT ベースの共通言語モデルとユーザー意図エンジンに対する Teams 中心のインターフェイスです。これにより、大規模言語モデル (LLM) と統合するために会話ボット ロジックを記述して維持する複雑で高価なタスクを実行する必要性が緩和されます。
AI ライブラリは、シンプルな機能駆動型アプローチを提供し、事前構築済みの再利用可能なコード スニペットを使用してインテリジェント アプリを迅速かつ簡単に作成するのに役立ちます。これにより、Teams の会話型アプリケーションのセマンティクスを学習するのではなく、ビジネス ロジックの構築に集中できます。
Teams AI ライブラリを使用する理由
AI ライブラリは、大きな言語モデルへの Teams 中心のインターフェイスです。 アプリは、LLM を使用して、ユーザーとのより自然な会話操作を容易にし、その会話をアプリのスキルに導くことができます。
ビジネス ロジックの記述に集中し、Teams が会話ボットの複雑さを処理できるようにすることで、アプリ内でユーザーの意図を簡単に抽出して利用できます。
AI ライブラリは、大きな言語モデルへの Teams 中心のインターフェイスです。 事前構築済みのテンプレートを使用して、Teams アプリの機能を追加します。
プロンプト エンジニアリングなどの手法を使用して、会話エクスペリエンスなどのChatGPTをボットに追加し、モデレーションなどの組み込みの安全機能を使用して、ボットが常に適切な方法で応答できるようにします。
ライブラリには、モデルがユーザーの意図を識別し、その意図を実装するアクションにマップできる計画エンジンが含まれています。
ボット ロジックを変更することなく、任意の LLM のサポートを簡単に追加できます。
Teams AI ライブラリは JavaScript および C# 言語で利用できます。これにより、AI の機能を活用し、最も使いやすいプログラミング言語を使用して、Microsoft Teams用のインテリジェントで使いやすいアプリケーションを作成できます。 Microsoft は、Teams で顧客に最適なエクスペリエンスを提供するために、必要なツールと言語を使用して AI 製品を構築する考え方に取り組んでいます。
Teams AI ライブラリで使用できるメイン機能の一部を次に示します。
単純な Teams 中心のコンポーネント スキャフォールディング
Teams AI ライブラリを使用すると、必要な拡張機能と必要なプロトコルに焦点を当てる Teams アプリ モデルが簡素化されます。 事前構築済みのテンプレートを使用し、ビジネス ロジックをこのスキャフォールディングに追加して、ボット、メッセージ拡張機能、アダプティブ カード、リンク展開などのモジュールを追加できます。
自然言語モデリング
Teams AI ライブラリは GPT 搭載の言語モデルを使用して構築されているため、会話ロジックを記述し、ユーザーの意図を特定するのに時間を費やす必要はありません。 AI を利用した Teams アプリの構築は、これまで以上に簡単で、より準拠しており、一貫して使用できます。
ボットはコンテキスト内で実行し、ボットがいずれかのボット アクションにマップするユーザー意図を認識するときに役立ちます。 これにより、ユーザーが登録された少数のアクションセットを使用してボットと明示的に対話する必要なく、会話が促進されます。
プロンプト エンジニアリング
プロンプト エンジニアリングは、ユーザーの意図、会話のコンテキスト、ボットのパーソナリティを考慮してプロンプトを設計するのに役立ちます。 ボットは、ユーザーのニーズに合わせてカスタマイズおよびカスタマイズできます。
会話セッションの履歴
Teams AI ライブラリは、メッセージ間のコンテキストを記憶し、ユーザーの動作のパターンを分析することでボットのパフォーマンスを向上させるのに役立ちます。
ローカリゼーション
Teams AI ライブラリは OpenAI の GPT モデルを使用するため、ローカライズを利用できます。 ユーザーが任意の言語で入力すると、入力は一貫して、ローカライズ レコードを作成および管理することなく、アプリで認識される意図、エンティティ、および結果のアクションに変換されます。
LLM モジュール性
大規模言語モデル (LLM) は、潜在的な変数を利用して、一貫した多様な自然言語のテキストとスタイルを生成する高度な言語モデルです。
Teams AI ライブラリは Open AI の GPT モデルを使用するように構築されていますが、ボット ロジックを変更することなく、任意の LLM と柔軟に交換できます。 つまり、アプリのコンテンツをパブリック ドメインの外部に保持し、お好みの LLM モデルに限定することができます。
責任ある AI
Teams AI ライブラリを使用すると、次の方法で倫理的で責任ある会話アプリを作成できます。
- モデレーション フック: 任意のモデレーション API に対してボットの応答を調整します。
- 会話スイープ: 会話を監視し、会話がプロアクティブな検出と修復によって迷ったときに介入します。
- フィードバック ループ: ボットのパフォーマンスを評価して高品質の会話を行い、ユーザー エクスペリエンスを向上させます。
Teams AI ライブラリでは、低コードから複雑なシナリオまでサポートが提供されます。 このライブラリは、AI コンストラクトを使用して機能を拡張して、自然言語モデリング、シナリオ固有のユーザー意図、パーソナル化、コンテキスト対応の自動会話を構築します。
意図をアクションにマッピングするための予測エンジン
アクションと予測のためのシンプルなインターフェイスを使用すると、ボットがアクションを実行する自信があるときにボットが反応できます。 アンビエント プレゼンスを使用すると、ボットは意図を学習し、ビジネス ロジックに基づいてプロンプトを使用し、応答を生成できます。 たとえば、ユーザーが不在で、スレッドをすばやく要約する必要がある場合、ライブラリは次のようになります。
- 意図を要約として理解します。
- ユーザーのマネージャーに焦点を当てた一定期間にわたって、概要を作成するためのプロンプトを許可します。
- ユーザーが使用するチャット コンテンツを要約するアクションを提供します。
アクション Planner
アクション Plannerは、大規模言語モデル (LLM) を呼び出すメイン コンポーネントであり、モデルを強化およびカスタマイズするためのいくつかの機能が含まれています。 モデル プラグインを使用すると、選択した LLM をプランナーに簡単に構成でき、OpenAI と Azure OpenAI LLM の両方をサポートする OpenAIModel が付属します。 Llama-2 などの他のモデル用の追加プラグインを簡単に追加できるため、ユース ケースに最適なモデルを柔軟に選択できます。 内部フィードバック ループは、LLM からのサブパー応答を修正することで信頼性を高めます。
Assistants API
注:
Teams AI ライブラリでは、インテリジェント アシスタントの構築を開始するために、 パブリック開発者プレビュー で OpenAI と Azure OpenAI Assistants API の両方がサポートされています。
Assistants API を使用すると、従来のメソッドを使用してコーディングするのが困難なさまざまなタスクを実行できる強力な AI アシスタントを作成できます。 チャットから画像処理、オーディオ処理、カスタム アシスタントの構築までのタスクに対して、OpenAI の GPT システムへのプログラムによるアクセスを提供します。 この API では、自然言語の対話がサポートされており、会話形式で理解して応答できるアシスタントの開発が可能になります。
クイック スタート ガイドに従って、数学に特化したアシスタントを作成します。
プロンプト管理
動的プロンプト管理は、使用可能なトークンの予算とデータ ソースまたは拡張に基づいて、言語モデルに送信されるプロンプトのサイズと内容を調整できる AI システムの機能です。 プロンプトがコンテキスト ウィンドウを超えたり、無関係な情報を含めたりしないようにすることで、モデルの効率と精度を向上させることができます。
増強
拡張を使用して AI モデルの応答を効率的に強化し、指示します。 さまざまな拡張モードを使用して、モデルをニーズに合わせて調整し、その精度と望ましい結果を高めることができます。
取得拡張生成 (RAG): リアルタイム、動的、および指定された外部データ ソースをモデルの応答に自動的に組み込み、モデルの微調整や再トレーニングを行うことなく、最新かつコンテキストに応じて正確な結果を実現します。 今日の売上番号に関する質問に回答するか、特定のユーザーのデータにカスタマイズします。RAG を使用すると、モデルは過去にスタックしなくなりました。
モノローグ: 完全なスキーマ検証と自動修復を含む、複数ステップアクションを独立して実行できる AutoGPT スタイルのエージェントを作成します。
シーケンス: AI アシスタントを有効にして、スキーマ検証の信頼性を高め、実行するための一連のアクションを返します。
関数: ユーザー定義関数を使用して、モデルから構造化された応答を生成します。 これらの関数は、JSON スキーマを使用してカスタマイズ可能で、パラメーターとその形式を定義します。 ActionPlanner は、スキーマに対するモデルの応答を評価し、必要に応じて修復を行い、応答の信頼性と一貫性を高めます。
ベクター データ ソース
ベクター データベースは、ベクターを格納し、効率的な検索を可能にするように設計された新しい種類のデータベースです。 ユーザーのクエリに最も関連する結果が返されます。 ベクター データベースのベクター検索機能を使用すると、取得拡張生成で LLM とカスタム データまたはドメイン固有の情報を使用できます。 これには、カスタム データ ソースから関連情報を抽出し、プロンプト エンジニアリングを通じてモデル要求に統合する必要があります。 LLM に要求を送信する前に、ユーザー入力、クエリ、または要求が埋め込み型に変換され、ベクター検索手法を使用してデータベース内の最も類似した埋め込みを検索します。
強化された推論
Teams AI ライブラリには、ボットの幻覚に取り組むための統合されたファクト チェック システムが用意されています。 ユーザーが AI アシスタントと対話すると、システムはボットに対して、送信前にその潜在的な応答を批判的に評価するプロセスに従事するよう求めます。 イントロスペクションを使用すると、ボットは不正確さを特定し、その回答を修正できるため、精度、品質、コンテキストの関連性が向上します。 高度な推論により、AI アシスタントが信頼できる情報と判断のソースになり、製品に対する信頼を築き、ユーザーを毎日引き戻します。
フィードバック ループ
フィードバック ループを使用すると、ボットは言語モデルの出力を検証して修正できます。 モデルが返すプランまたはモノローグの構造とパラメーターを確認し、エラーや不足している情報に関するフィードバックを提供します。 その後、モデルは間違いを修正し、有効な出力を返します。 フィードバック ループを使用すると、AI システムの信頼性と精度を向上させ、幻覚や無効なアクションの可能性を減らすことができます。
次の表に、Teams AI ライブラリの更新プログラムを示します。
型 | 説明 | .NET | JavaScript | Python |
---|---|---|---|---|
OpenAIModel | OpenAIModel クラスを使用すると、1 つのコンポーネントで OAI と Azure OAI の両方を呼び出すことができます。 新しいモデルは、LLaMA2 などの他のモデルの種類に対して定義できます。 | ✔️ | ✔️ | ✔️ |
埋め込み | OpenAIEmbeddings クラスを使用すると、OAI または Azure OAI を使用して埋め込みを生成できます。 OSS Embeddings などの新しい埋め込みを定義できます。 | ❌ | ✔️ | ✔️ |
プロンプト | 新しいオブジェクト ベースのプロンプト システムにより、トークン管理が向上し、モデルのコンテキスト ウィンドウがオーバーフローする可能性が軽減されます。 | ✔️ | ✔️ | ✔️ |
増強 | 拡張は、開発者がプロンプトに名前付き拡張を追加できるようにすることで、プロンプト エンジニアリング タスクを簡略化します。
functions 、sequence 、およびmonologue スタイル拡張のみがサポートされます。 |
✔️ | ✔️ | ✔️ |
データ ソース | 新しい DataSource プラグインを使用すると、プロンプトに RAG を簡単に追加できます。 名前付きデータ ソースを planner に登録し、プロンプトを拡張するデータ ソースの名前を指定できます。 | ❌ | ✔️ | ✔️ |
AI SDK を使用した関数呼び出し
AI SDK 内に実装された関数呼び出しは、多数の機能のロックを解除し、AI モデルが正確な応答をシームレスに生成できるようにします。 これにより、外部ツールとの直接接続が可能になり、AI がさらに強力になります。 これらの機能には、複雑な計算の実行、重要なデータの取得、よりスムーズなワークフローの作成、ユーザーとの動的な対話の有効化などがあります。
注:
構造化された出力はサポートされていません。
Chat Completions API で関数呼び出しを使用するには:
既定のプロンプトでツール拡張が使用されるプランナーを設定します。 ボット アプリの次のいずれかのファイルを更新します。
- JavaScript アプリの場合:
index.ts
を更新します。 - C# ボット アプリの場合:
Program.cs
を更新します。 - Python アプリの場合:
bot.py
を更新します。
次のコード スニペットは、
ToolsAugmentation
クラスを設定する方法を示しています。const planner = new ActionPlanner({ model, prompts, defaultPrompt: 'tools' });
- JavaScript アプリの場合:
config.json
ファイルでツール拡張を指定します。{ "schema": 1.1, "description": "", "type": "", "completion": { + "tool_choice": "auto", + "parallel_tool_calls": true, }, + "augmentation": { + "augmentation_type": "tools" + } }
actions.json
ファイル (prompts
フォルダー内) にすべてのfunction definitions
を指定します。 LLM によってアクションが呼び出されたときにエラーが発生しないように、スキーマに従っていることを確認します。[{ "name": "CreateList", "description": "Creates a list" }]
application
クラスにhandlers
を登録します。- 各ハンドラーは、特定のイベントが発生したときに実行されるコールバック関数です。 関数呼び出しハンドラーは、イベントに応答してコードを実行します。
- 関数呼び出しは、関数呼び出しの出力として文字列を返す必要があります。
- モデルが関数の呼び出しを要求すると、これらは
Plan
内のDO
コマンドにマップされ、AI クラスrun
関数で呼び出されます。 その後、ツール呼び出し ID を使用して出力がモデルに返され、ツールが使用されたことを示します。
次のコード スニペットは、
handlers
を登録する方法を示しています。app.ai.action("createList", async (context: TurnContext, state: ApplicationTurnState, parameters: ListAndItems) => { // Ex. create a list with name "Grocery Shopping". ensureListExists(state, parameters.list); return `list created and items added. think about your next action`; });
ツール オプションを有効にする
次のツール オプションを有効にすることができます。
[ツールの選択を有効にする]: ツールの選択を有効にして、モデルが呼び出す必要がある関数を選択できるようにします。
config.json
ファイルで、次の手順を実行します。-
tool_choice
をrequired
に設定して、常に少なくとも 1 つの関数を呼び出すようにモデルに要求します。 - その関数を使用するための定義を使用して、
tool_choice
を特定の関数に設定します。 - ツールを無効にするには、
tool_choice
をnone
として設定します。
tool_choice
の既定値はauto
です。 これにより、モデルで呼び出す必要がある関数を選択できます。-
[並列ツール呼び出しの切り替え]: ツールを並列で実行する方が高速で、API への前後の呼び出しの数が減ります。
config.json
ファイルでは、parallel_tool_calls
をtrue
またはfalse
に設定できます。 既定では、parallel_tool_calls
パラメーターはtrue
に設定されます。
次のコード スニペットは、ツールの選択を有効にし、並列ツール呼び出しを切り替える方法を示しています。
{
"schema": 1.1,
"description": "",
"type": "",
"completion": {
+ "tool_choice": "auto",
+ "parallel_tool_calls": true,
},
+ "augmentation": {
+ "augmentation_type": "tools"
+ }
}
コード サンプル
サンプルの名前 | 説明 | .NET | Node.js | Python |
---|---|---|---|---|
エコー ボット | このサンプルでは、Bot Framework と Teams AI ライブラリを使用して、基本的な会話フローをMicrosoft Teams アプリケーションに組み込む方法を示します。 | 表示 | 表示 | 表示 |
検索コマンド メッセージ拡張機能 | このサンプルでは、Bot Framework と Teams AI ライブラリを使用して、基本的な Message Extension アプリをMicrosoft Teams アプリケーションに組み込む方法を示します。 | 表示 | 表示 | 表示 |
Typeahead ボット | このサンプルでは、Bot Framework と Teams AI ライブラリを使用して、アダプティブ カードのタイプアヘッド検索機能をMicrosoft Teams アプリケーションに組み込む方法を示します。 | 表示 | 表示 | 表示 |
AI を使用した会話ボット: Teams のシェフ | このサンプルでは、基本的な会話ボットの動作をMicrosoft Teamsに組み込む方法を示します。 ボットは、GPT がその代わりに会話を容易にできるように構築されており、それをガイドする自然言語プロンプト ファイルのみを使用します。 | 表示 | 表示 | |
メッセージ拡張機能: GPT-ME | このサンプルは、ユーザーが投稿を生成および更新するのに役立つ text-davinci-003 モデルを使用するMicrosoft Teamsのメッセージ拡張機能 (ME) です。 | 表示 | 表示 | 表示 |
ライト ボット | このサンプルでは、Microsoft Teamsでのより複雑な会話ボットの動作を示します。 ボットは、GPT が代わりに会話を容易にし、手動で定義された応答を可能にするように構築され、ユーザーの意図をユーザー定義のアクションにマップします。 | 表示 | 表示 | 表示 |
ボットの一覧表示 | このサンプルでは、基本的な会話ボットの動作をMicrosoft Teamsに組み込む方法を示します。 ボットは AI の力を活用してワークフローを簡素化し、毎日のタスクに順序を付け、アクション チェーン機能を紹介します。 | 表示 | 表示 | 表示 |
DevOps ボット | このサンプルでは、基本的な会話ボットの動作をMicrosoft Teamsに組み込む方法を示します。 ボットは gpt-3.5-turbo モデルを使用して Teams ユーザーとチャットし、作業項目の作成、更新、トリアージ、集計などの DevOps アクションを実行します。 | 表示 | 表示 | 表示 |
20 個の質問 | このサンプルでは、言語モデルのすばらしい機能とユーザー意図の概念を示します。 人間のプレイヤーとしてのスキルに挑戦し、20 個の質問内でシークレットを推測しようとしますが、AI を利用するボットはシークレットに関するクエリに回答します。 | 表示 | 表示 | 表示 |
数学講師アシスタント | この例では、OpenAI の Assistants API を使用して基本的な会話エクスペリエンスを作成する方法を示します。 OpenAI のコード インタープリター ツールを使用して、数学の専門家であるアシスタントを作成します。 | 表示 | 表示 | 表示 |
食品の注文アシスタント | この例では、ツールを使用してボット コードでアクションを呼び出す会話型アシスタントを作成する方法を示します。 これは、パブと呼ばれる架空のレストランのための食品注文アシスタントであり、それは彼らの注文を取るように、ユーザーとの複雑な相互作用が可能です。 | 表示 | 表示 | 表示 |
次の手順
Platform Docs