このリポジトリには、ビジネス向けに構築された IBM の AI およびデータ プラットフォームである IBM watsonx のデモンストレーションが含まれています。
このリポジトリのサンプル AI アプリケーションは、次の主要コンポーネントを利用しています。
シナリオ例として、電気通信会社のカスタマーケアが使用されます。人間のエージェントは顧客と対話して問題を解決します。人間のエージェントはデジタル エージェントによってサポートされ、必要な修正を可能な限り自動化します。
Wi-Fi ルーターに問題があるお客様との会話の記録は次のとおりです。
John (Teltop Customer Care Agent): Hello, this is John from Teltop customer care. How
can I assist you today?
Mary (Disappointed Subscriber): Hi John, it's Mary again. I've been having a nightmare
with your service. My home Wi-Fi is acting up, and the TV service over fiber is
terrible.
John: I'm sorry to hear about the troubles you're facing at home, Mary. Let's address
these issues. Can you please provide me with your account number or the phone number
associated with your account?
Mary: Sure, it's 123-555-1234.
[...]
John: Mary, it appears there are some issues with your router. We need to update the
router software.
この例では、ルーターのソフトウェアをリモートで自動的に更新できます。これが成功すると、顧客にメールが送信されます。
電話の文字起こしは、Speech to Text サービスを通じて行うことができます。このアセットは、順番に実行される次の 3 つのステップをカバーします。ルーターを更新してメールを送信するには、ツールが呼び出されます。
ステップ(2)をさらに詳しく見てみましょう。トランスクリプトの概要に修正措置として「ルーターの更新」が含まれている場合、エージェントは顧客の電話番号を入力としてツールを呼び出す必要があることを理解します。
Agent UpdateRouterIfNecessary LLM Output:
{
generated_text: 'Question: Update the router for Mary (123-555-1234) based on the
transcript summary.n' +
'Thought: I need to update the router for Mary (123-555-1234) based on the
transcript summary, so I will use the RouterUpdate tool.n' +
'Tool Name: RouterUpdaten' +
'Tool Caption: Updating router software for Mary (123-555-1234)n' +
'Tool Input: {"phoneNumber":"123-555-1234"}n' +
'Tool Output: ',
generated_token_count: 4465,
input_token_count: 1271,
stop_reason: 'not_finished'
}
エージェントは、TypeScript の Bee Agent Framework を使用して実装されています。このフレームワークは IBM Research によって構築され、オープンソースとして利用できます。次のスニペットは、大規模言語モデルを呼び出すときにプロンプトに入力されるルーター ツールの定義を示しています。
export class RouterUpdateTool extends Tool <
RouterUpdateToolOutput , RouterUpdateToolOptions , RouterUpdateToolRunOptions > {
name = "RouterUpdate" ;
description = "Updates the software of routers remotely for a subscriber " +
"with a certain phone number." ;
inputSchema ( ) {
return z . object ( {
phoneNumber : z
. string ( { description : `Phone number of a subscriber, for example '123-456-7890'` } )
. min ( 1 )
. max ( 40 ) ,
} ) ;
}
エージェントはツール出力を幻覚させるのではなく、「ツール出力: 」の後で LLM からのストリームを停止し、代わりにツールを実行します。
Agent UpdateRouterIfNecessary (tool_input) ? : {"phoneNumber":"123-555-1234"}
Input to Router Update tool - phoneNumber: 123-555-1234
Agent UpdateRouterIfNecessary (tool_output) ? : {"success":"true",
"text":"Router has been updated"}
同じシナリオを実装する 3 つの異なるフローがあります。
エージェント アプリケーションは、開発目的などでローカルでスタンドアロン TypeScript アプリケーションとして実行できます。さらに、watsonx Orchestrate を利用して 3 つのステップを呼び出し、ステップ間でコンテキストを渡すことができます。
[このフォームをユーザーに対して非表示にする] が選択されている場合、完全なフローが、たとえば Orchestrate チャット クライアントまたは API 経由で実行されます。
トランスクリプトを要約するには、watsonx.ai 上で実行されるより大きなモデル LLama 3.1 70b を使用できます。応答時間を短縮し、モデルの実行コストを節約するために、より小さなモデルを微調整できます。
InstructLab は、Red Hat と IBM Research が主導するオープンソース イニシアチブです。生成 AI モデルを微調整する機能に加えて、合成データの世代もサポートしているため、必要な実際のデータが少なくなります。
たとえば、InstructLab は、yaml ファイルで定義されているいくつかの実際のサンプルに基づいて、より多くのサンプル トランスクリプション (コンテキスト) を生成できます。
version : 3
task_description : >-
Summarization of phone call transcripts between human agents
and clients of a telecommunication service provider about
technical issues.
created_by : nheidloff
seed_examples :
- context : >-
John (Teltop Customer Care Agent): Hello, this is John from Teltop customer
care. How can I assist you today?nnMary (Disappointed Subscriber): Hi
John, it'''s Mary. I'''ve been having a nightmare with your service.
My home Wi-Fi is acting up, and the TV service over fiber is terrible.
nnJohn: I'm sorry to hear about the troubles you're facing at home, Mary.
Let's address these issues. Can you please provide me with your account number
or the phone number associated with your account??nnMary: Sure, it'''s
123-555-1234. [...]
nnJohn: Mary, it appears there are some issues with your router. We need
to update the router software. [...]
question: >-
Summarize the transcript of the call. Identify the agent and the
subscriber. Add any specific issues mentioned by the subscriber. Add any
corrective actions taken as directed by the agent. Please mention if the
issue is resolved. Mention any follow-up actions and timelines. List the
phone number of the subscriber at the end.
answer: >-
**Agent:** Miken**Subscriber:** Saran [...]
**Corrective Actions:** Router software update [...]
**Subscriber's Phone Number:** 123-555-1234
次のスニペットは、出力例を示しています。同様に、InstructLab は要約 (回答) を生成して評価できます。
[Start of Context]
Raj (Customer Care Agent): Hello, this is Raj from customer care. How can I assist
you today?
Samantha (Customer): Hi Raj, I'm having trouble with my internet connection. It's
been really slow lately [cut ... cut]
[End of Context]
カスタム基盤モデルと HuggingFace のモデルを watsonx.ai にインポートしてデプロイできます。
基盤モデルを評価するために、watsonx.governance は、カスタム メトリックだけでなく、すぐに使用できるさまざまなメトリックを使用してモデルを監視するメカニズムを提供します。
git clone https://github.com/IBM/watsonx-ai-platform-demos
cd watsonx-demos/applications/application
cp .env.template .env
# define WATSONX_API_KEY and WATSONX_PROJECT_ID
yarn install
yarn start:appOneLLMTwoAgents
詳細については、アプリケーションのドキュメントを参照してください。
このリポジトリのデモンストレーションは、Tech Sales と協力して IBM DACH CSM チームによって実装されました。