(57)【特許請求の範囲】
【請求項１】
コンピュータ上のエージェント・プログラム間の対話における一連のメッセージの順番が定義されている、エージェント・プログラム間で行われるメッセージ交換を規定する対話規則を記憶した対話規則データベースに接続された対話管理手段を有するコンピュータにおいて、エージェント・プログラムの対話を管理する方法であって、前記コンピュータは、エージェント管理機構、前記対話規則データベース並びに主メモリ及び二次記憶装置をさらに含み、前記対話規則データベースには、対話の種類毎にメッセージの順番と内容が規定され、
前記方法は、
前記対話規則データベースの対話規則を参照して、メッセージを検査し、
前記検査において、前記対話規則データベースに基づいて、（１）前記メッセージが前記対話を開始させるための最初のメッセージであると判断された場合には、対話の状態遷移を保存するための対話管理ブロックを作成し、前記対話管理手段が前記エージェント管理機構に対して、前記開始メッセージの宛先エージェント・プログラムの活動化を要求し、（２）前記メッセージが最初及び最後のメッセージでないと判断された場合には、前記対話管理ブロックにおいて、対話の開始されたエージェント・プログラム間の対話の状態遷移を管理し、及び検査の対象としているメッセージの送信元、宛先及び対話の種類に基づいて対話管理ブロックを特定し、該対話管理ブロックに保存された状態遷移と前記対話規則データベースとに基づいて次に送信すべきメッセージを判断し、該メッセージに、検査の対象としているメッセージが適合しているか否かに基づいて、検査の対象としているメッセージが対話の流れに反する不正なものであるか否かを検査し、不正なメッセージである場合は、前記対話管理手段が前記エージェント管理機構に対して、送信元及び宛先エージェント・プログラムの非活動化を要求し、不正なメッセージでない場合は、検査の対象としているメッセージを宛先エージェント・プログラムに送信する処理を行うと共に、対話管理ブロックの状態遷移を更新し、（３）前記メッセージがその対話にかかわるエージェント・プログラムが係わる対話の最後のメッセージであると判断された場合には、前記対話管理手段が前記エージェント管理機構に対して、送信元及び宛先エージェント・プログラムの非活動化を要求するステップであって、前記活動化とはエージェント・プログラムを二次記憶装置から主メモリにロードすることをいい、前記非活動化とはエージェント・プログラムを主メモリから廃棄することをいう、前記要求するステップと、
を含むエージェント・プログラム対話管理方法。
【請求項２】
前記活動化要求に応答して、前記宛先エージェント・プログラムが非活動化状態であるかどうかを判断し、非活動化状態である場合には、前記エージェント管理機構が前記宛先エージェント・プログラムを活動化するステップを含む請求項１に記載のエージェント・プログラム対話管理方法。
【請求項３】
前記非活動化要求に応答して、対話管理ブロックがまだ他に存在しているかどうかを判断し、対話管理ブロックがまだ他に存在していない場合に、前記エージェント管理機構が前記送信元及び宛先エージェント・プログラムを非活動化するステップを含む請求項１に記載のエージェント・プログラム対話管理方法。
【請求項４】
コンピュータ上のエージェント・プログラム間の対話における一連のメッセージの順番が定義されている、エージェント・プログラム間で行われるメッセージ交換を規定する対話規則を記憶した対話規則データベースに接続された対話管理手段を有するコンピュータにおいて、エージェント・プログラムの対話を管理する方法であって、前記コンピュータは、エージェント管理機構、前記対話規則データベース並びに主メモリ及び二次記憶装置をさらに含み、前記対話規則データベースには、対話の種類毎にメッセージの順番と内容が規定され、
前記方法は、
前記対話規則データベースの対話規則を参照して、メッセージを検査し、
前記検査において、前記対話規則データベースに基づいて、（１）前記メッセージがその宛先エージェント・プログラムが係わる対話の最初及び最後のメッセージでないと判断された場合には、前記対話管理ブロックにおいて、対話の開始されたエージェント・プログラム間の対話の状態遷移を管理し、及び検査の対象としているメッセージの送信元、宛先及び対話の種類に基づいて対話管理ブロックを特定し、該対話管理ブロックに保存された状態遷移と前記対話規則データベースとに基づいて次に送信すべきメッセージを判断し、該メッセージに、検査の対象としているメッセージが適合しているか否かに基づいて、検査の対象としているメッセージが対話の流れに反する不正なものであるか否かを検査し、不正なメッセージである場合は、前記対話管理手段が前記エージェント管理機構に対して、送信元及び宛先エージェント・プログラムの非活動化を要求し、不正なメッセージでない場合は、検査の対象としているメッセージを宛先エージェント・プログラムに送信する処理を行うと共に、対話管理ブロックの状態遷移を更新し、（２）前記メッセージがその対話にかかわるエージェント・プログラムが係わる対話の最後のメッセージであると判断された場合には、前記対話管理手段が前記エージェント管理機構に対して、送信元及び宛先エージェント・プログラムの非活動化を要求するステップステップであって、前記非活動化とはエージェント・プログラムを主メモリから廃棄することをいう、前記要求するステップと、
前記非活動化要求に応答して、当該エージェント・プログラムが他のメッセージの処理を実施しているかを判断するステップと、
前記送信元又は宛先エージェント・プログラムが他のメッセージの処理を実施していないと判断した場合に、前記エージェント管理機構が前記送信元又は宛先エージェント・プログラムを非活動化するステップと、
を含むエージェント・プログラム対話管理方法。
【請求項５】
コンピュータ上のエージェント・プログラム間の対話における一連のメッセージの順番が定義されている、エージェント・プログラム間で行われるメッセージ交換を規定する対話規則を記憶した対話規則データベースに接続された対話管理手段を有するコンピュータにおいて、前記コンピュータは、エージェント管理機構、前記対話規則データベース並びに主メモリ及び二次記憶装置をさらに含み、前記対話規則データベースには、対話の種類毎にメッセージの順番と内容が規定され、前記対話管理手段は、
前記対話規則データベースの対話規則を参照して、メッセージを検査する検査手段と、
前記検査手段おいて、前記対話規則データベースに基づいて、（１）前記メッセージが前記対話を開始させるための最初のメッセージであると判断された場合には、対話の状態遷移を保存するための対話管理ブロックを作成し、前記対話管理手段がエージェント管理機構に対して、前記開始メッセージの宛先エージェント・プログラムの活動化を要求し、（２）前記メッセージが最初及び最後のメッセージでないと判断された場合には、前記対話管理ブロックにおいて、対話の開始されたエージェント・プログラム間の対話の状態遷移を管理し、及び検査の対象としているメッセージの送信元、宛先及び対話の種類に基づいて対話管理ブロックを特定し、該対話管理ブロックに保存された状態遷移と前記対話規則データベースとに基づいて次に送信すべきメッセージを判断し、該メッセージに、検査の対象としているメッセージが適合しているか否かに基づいて、検査の対象としているメッセージが対話の流れに反する不正なものであるか否かを検査し、不正なメッセージである場合は、前記対話管理手段が前記エージェント管理機構に対して、送信元及び宛先エージェント・プログラムの非活動化を要求し、不正なメッセージでない場合は、検査の対象としているメッセージを宛先エージェント・プログラムに送信する処理を行うと共に、対話管理ブロックの状態遷移を更新し、（３）前記メッセージがその対話にかかわるエージェント・プログラムが係わる対話の最後のメッセージであると判断された場合には、前記対話管理手段が前記エージェント管理機構に対して、送信元及び宛先エージェント・プログラムの非活動化を要求する手段であって、前記活動化とはエージェント・プログラムを二次記憶装置から主メモリにロードすることをいい、前記非活動化とはエージェント・プログラムを主メモリから廃棄することをいう、前記要求する手段と、
を有するコンピュータ。
【請求項６】
前記活動化要求に応答して、前記宛先エージェント・プログラムが非活動化状態であるかどうかを判断し、非活動化状態である場合には、前記エージェント管理機構が前記宛先エージェント・プログラムを活動化する手段をさらに含む請求項５に記載のコンピュータ。
【請求項７】
前記非活動化要求に応答して、対話管理ブロックがまだ他に存在しているかどうかを判断し、対話管理ブロックがまだ他に存在していない場合に、前記エージェント管理機構が前記送信元及び宛先エージェント・プログラムを非活動化する手段をさらに含む請求項５に記載のコンピュータ。
【請求項８】
コンピュータ上のエージェント・プログラム間の対話における一連のメッセージの順番が定義されている、エージェント・プログラム間で行われるメッセージ交換を規定する対話規則を記憶した対話規則データベースに接続された対話管理手段を有するコンピュータにおいて、前記コンピュータは、エージェント管理機構、前記対話規則データベース並びに主メモリ及び二次記憶装置をさらに含み、前記対話規則データベースには、対話の種類毎にメッセージの順番と内容が規定され、前記対話管理手段は、
前記対話規則データベースの対話規則を参照して、メッセージを検査する手段と、
前記検査手段において、前記対話規則データベースに基づいて、（１）前記メッセージがその宛先エージェント・プログラムが係わる対話の最初及び最後のメッセージでないと判断された場合には、前記対話管理ブロックにおいて、対話の開始されたエージェント・プログラム間の対話の状態遷移を管理し、及び検査の対象としているメッセージの送信元、宛先及び対話の種類に基づいて対話管理ブロックを特定し、該対話管理ブロックに保存された状態遷移と前記対話規則データベースとに基づいて次に送信すべきメッセージを判断し、該メッセージに、検査の対象としているメッセージが適合しているか否かに基づいて、検査の対象としているメッセージが対話の流れに反する不正なものであるか否かを検査し、不正なメッセージである場合は、前記対話管理手段が前記エージェント管理機構に対して、送信元及び宛先エージェント・プログラムの非活動化を要求し、不正なメッセージでない場合は、検査の対象としているメッセージを宛先エージェント・プログラムに送信する処理を行うと共に、対話管理ブロックの状態遷移を更新し、（２）前記メッセージがその対話にかかわるエージェント・プログラムが係わる対話の最後のメッセージであると判断された場合には、前記対話管理手段が前記エージェント管理機構に対して、送信元及び宛先エージェント・プログラムの非活動化を要求する手段であって、前記非活動化とはエージェント・プログラムを主メモリから廃棄することをいう、前記要求する手段と、
前記非活動化要求に応答して、当該エージェント・プログラムが他のメッセージの処理を実施しているかを判断する手段と、
前記送信元及び宛先エージェント・プログラムが他のメッセージの処理を実施していないと判断した場合に、前記エージェント管理機構が前記送信元又は宛先エージェント・プログラムを非活動化する手段と、
を含むコンピュータ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、エージェント技術に関し、より詳しくは、エージェント・サーバにおけるエージェントの活動を制御する方法及び機構に関する。
【０００２】
【従来の技術】
ＷＷＷ（World Wide Web）上でのオンライン・ショッピングは、旅行、書籍、ＣＤ（Compact Dick）及び求人情報等幾つかの分野において成功例が報告されており、今後益々発展すると考えられている。このオンライン・ショッピングの形態も、従来までのＨＴＭＬ（Hyper Text Markup Language）ファイル、又はＤＢ（DataBase）とＣＧＩ（Common Gateway Interface）のように単に商品を陳列するだけの形態から、複数のサイトを一括検索する形態又は利用者の嗜好を学習して適切な商品を捜し出す形態等に移行しつつある。
【０００３】
このような新たな形態に適しているのがエージェント技術である。例えば、利用者ごとに情報検索エージェントを、出店する会社ごとに情報提供エージェントを生成し、これらのエージェントが対話を行うことにより、情報検索及び商品売買を行うことができる。これらのエージェントは移動エージェントであってもよいが、少なくとも一時的には１つのサイト（エージェント・サーバ）上で一緒に活動する。このサーバ上では利用者の数だけ情報検索エージェントが生成され、それぞれ必要な情報検索を実施するため、エージェント数が大きくなるとサーバにおける負荷は大きくなる。エージェントにより使用されるサーバ資源は主記憶装置とスレッドであるが、情報検索エージェントの場合、情報検索結果を保持すると主記憶装置の占有量が増加する。さらに、エージェント・サーバの利用が増加すると会社の出店も増加して情報提供エージェントも増加するため、さらにサーバの負荷は大きくなる。情報提供エージェントは、通常商品情報をデータベースに保持しており、このデータベース検索は大きな負荷となる。
【０００４】
このようにサーバの負荷制御は大きな問題である。このため従来から、処理を実施していないエージェントをサーバ内のＨＤＤ（Hard Disk Drive）などの二次記憶装置に格納することでエージェントの数を減らし、それにより負荷を減少させていた。しかし、エージェント間のメッセージのやり取りを判断して二次記憶装置への格納を実施しているわけではない。また、米国特許第５７０６５１６号には、管理者が有効なトークン数を規定し、トークンを取得したエージェントのみが処理を実施することができるような負荷制御について記載がある。しかし、この特許はエージェント間のメッセージのやり取りを判断して負荷制御を行っているわけではない。
【０００５】
ところで、エージェント間でメッセージのやり取りを行い、エージェント間の対話を成立させるためには、当該エージェント間で対話規則が合っていないといけない。そこで、エージェント間の対話規則を規定したタイプ・データベースをエージェント・サーバに設け（例えば、ＩＢＭ  ＴＤＢ Vol.40 No.12,pp29 Dec. 1997 参照のこと）、当該対話規則に従ってメッセージを出力するエージェントを生成すれば、そのエージェント・サーバにおいては、同じくその対話規則に従う他のエージェントとの対話を行うことができる。しかし、プログラムの誤りや故意により、対話規則に従わないメッセージを出力するエージェントや、システムに悪影響を及ぼすように多数のメッセージを出力するようなエージェントがエージェント・サーバにやってくることも考えられる。このような不正なエージェントに対して、従来では対策がなされていなかった。
【０００６】
【発明が解決しようとする課題】
よって本願発明の目的は、エージェント・サーバの負荷を制御することである。
【０００７】
より詳しくは、メッセージを検査することにより、エージェントの活動／非活動を制御する方法を提供することである。
【０００８】
他の目的は、不正なエージェントを検出し、対応処理を実施することである。
【０００９】
より詳しくは、メッセージを検査することにより、不正なメッセージを出力するエージェントを検出し、不正なエージェントを非活動化する方法を提供することである。
【００１０】
なお、エージェントの活動化とはエージェントが処理を実施できる状態にすることをいい、エージェントの非活動化とは再活動化可能な状態で二次記憶装置に格納すること及び場合によっては破棄することである。
【００１１】
【課題を解決するための手段】
エージェント・サーバの負荷を制御するには、（１）活動していないエージェントを二次記憶装置に格納し、そのエージェントが占有していたメモリとスレッドを解放し、（２）同時に、活動するエージェントの数を制御する必要がある。エージェント・サーバは、エージェントの処理が開始する時に二次記憶装置からエージェントを読み込み、エージェントの処理が終了した時に当該エージェントを二次記憶装置に書き出す。これにより、処理を行わないエージェントにより占有されたメモリとスレッドを解放する。また、あるエージェントの処理が終了した後に、別のエージェントの処理を開始することで、同時に活動するエージェントの数を制限する。本発明では、この処理の開始及び処理の終了を、エージェントの対話の開始及び終了で判断する。先に述べたように、メッセージは予め規定された対話規則に従う。よって、この対話規則において、メッセージの種類から一連の処理の中で交換されるメッセージの流れまで規定しておけば、メッセージ及び当該対話規則を参照することにより、対話の開始及び終了を検出できる。これにより、処理の開始及び終了を検出できる。
【００１２】
不正なエージェントであるかどうかは、エージェントが送信するメッセージの内容と送信頻度を見ることにより判断できる。メッセージの内容は対話規則に定義されているものでなければならないので、対話規則に規定されていないメッセージ及び対話の流れにあっていないメッセージを発送した場合には不正なエージェントである。また、ある期間内にシステムで許される数以上のメッセージを送信したかということも、メッセージを検査することにより検出できる。これによりメッセージの送信元が不正なエージェントであると判断された場合には、エージェントを非活動化する。例えば、エージェントを消滅させることも可能である。
【００１３】
以上をまとめると以下のようになる。すなわち、使用可能なメッセージを規定する対話規則を参照して、メッセージを検査し、当該検査結果に従って、メッセージの宛先エージェントを活動化候補エージェントとして指定する。例えば、検査結果が宛先エージェントを活動化すべきであるというものである場合に活動化候補エージェントとして指定される。このように対話規則を参照することによりエージェント・サーバにおける負荷を制御することができる。なお、メッセージが正常なものでエージェントの活動化が必要な時でも直ぐには活動化させない場合がある。これは、既に多数のエージェントが活動状態にある場合等のためである。すなわち、活動中のエージェントの状況を参照して、活動化候補エージェントを活動化する。
【００１４】
メッセージ検査の際には、使用可能なメッセージ及びエージェント間の対話を開始させるメッセージを定義する対話規則を参照して、メッセージが対話を開始させるためのものであるか検査する場合もある。メッセージがエージェント間の対話で使用可能なメッセージであっても、対話の流れの中で、対話を開始するためのメッセージでなければ、新たにエージェントを活動化させる必要はないからである。
【００１５】
また、活動化候補エージェントを指定する処理において、検査結果によりメッセージの宛先エージェントは活動化させるべきであると判断された場合には、活動化候補エージェントとして宛先エージェントの活動化を要求するステップと、活動化候補エージェントの活動化の可否を判断するステップとを含むようにすることも考えられる。
【００１６】
また、検査結果によりメッセージが不正なものであると判断された場合には、当該メッセージの送信元エージェントを非活動化することも考えられる。対話規則に従わないメッセージの送信元エージェントは不正なエージェントだからである。
【００１７】
また、第２エージェントから送信された複数のメッセージを検査し、当該複数のメッセージが所定の条件を満たしていない場合には、第２エージェントを非活動化することも可能である。第２エージェントが、所定以上の数のメッセージを送信した場合等に対応できる。
【００１８】
検査結果によりメッセージの送信元エージェントを非活動化させるべきであると判断された場合には、送信元エージェントを非活動化候補エージェントに指定する処理をさらに含むようにすることも考えられる。これは、不正なエージェントだけでなく、対話規則から処理が終了の終了を示すメッセージを送信したエージェントを非活動化することにより、エージェント・サーバの負荷を減らすためである。
【００１９】
また、エージェントの可能な活動を規定したエージェント活動ポリシーをさらに記憶し、当該エージェント活動ポリシーを参照して、エージェントの活動化及び非活動化を実施することも考えられる。例えば、指定されたエージェントがメモリ及びスレッドを所定期間以上占有することができないようにエージェント活動ポリシーを設定し、その指定エージェントが所定期間以上に活動しているか否か判断することも可能である。さらに、あるエージェントを常に活動中にさせるようエージェント活動ポリシーを設定することも可能である。
【００２０】
さらに、他のコンピュータからのハイパーテキスト・トランスポート・プロトコル（ＨＴＴＰ）メッセージをエージェント用のメッセージに変換するＨＴＴＰゲートウェーを設け、当該ＨＴＴＰメッセージを変換することにより生成されたメッセージを検査して、他のコンピュータに対応するエージェントのエージェント使用要求を出力するようにすることも可能である。エージェントとユーザがブラウザ（Browser）を用いて対話する場合に対応するためである。
【００２１】
以上本発明の処理のフローを説明したが、本発明はこれらの処理を実施する装置や、コンピュータにこれらの処理を実施させるプログラムの形態によっても実施可能である。このプログラムを、フロッピー・ディスクやＣＤ−ＲＯＭ等の記憶媒体又は他の形態の記憶装置に格納することができる。
【００２２】
【発明の実施の形態】
本実施例では、以下のような旅行情報を提供するシステムを例（図１）にして説明する。エージェント・サーバ１には、パッケージ・ツアー情報を提供する旅行代理店の店舗エージェント９ａ及び９ｂが活動している。利用者は、クライアント・コンピュータ５のＷｅｂブラウザ１１を利用して、このエージェント・サーバ１にアクセスする。利用者が初めてアクセスするとその利用者用の顧客エージェント７ａがエージェント・サーバ１に生成される。図１では、３つの顧客エージェント７ａ，７ｂ及び７ｃが存在している。クライアント・コンピュータ５の利用者は、顧客エージェント７ａをエージェント・サーバ１内に生成すると、この顧客エージェント７ａに「１０万円以内の航空会社ＸＹＺで行くホノルル４日間、２月１４日出発のツアー」という検索条件を入力し、検索を開始させる。図１のＷｅｂブラウザ１１には、上記の検索条件を入力した状態を示している。この検索条件はネットワーク３を介してエージェント・サーバ１の顧客エージェント７ａに入力される。顧客エージェント７ａは入力された検索条件をメッセージで各店舗エージェント９ａ及び９ｂに通知する。
【００２３】
このメッセージに応答して、店舗エージェント９ａは、「航空会社ＸＹＺで行くホノルルのＡＢＣホテル滞在４日間、２月１４日出発、９．９万円」をメッセージで顧客エージェント７ａに返す。また、店舗エージェント９ｂは、「航空会社ＸＹＺで行くホノルル４日間ツアー、２月１４日出発、８万円」をメッセージで送信元エージェント７ａに返す。さらに、店舗エージェント９ｂは、「本日限り、航空会社ＢＣＤで行くホノルル４日間、２月１４日出発、５万円」というお勧め商品情報も顧客エージェント７ａにメッセージで送信する。
【００２４】
顧客エージェント７ａは、これらの情報をまとめて、検索結果としてＷｅｂブラウザ１１に、検索結果メッセージが送信される。Ｗｅｂブラウザ１１は、検索結果メッセージの内容を利用者に提示する。利用者は、所望のツアーが見つかった場合には、申込みをすることもできるし、新たな条件をＷｅｂブラウザ１１に入力して、再度検索することを命じてもよい。顧客エージェント７ａを、利用者がエージェント・サーバ１にアクセスするごとに生成し、接続がなくなった時に消滅させることもできる。また、所定期間顧客エージェント７ａを保存しておき、再度利用者がアクセスした時に、この顧客エージェント７ａを再活動化させるようにすることも可能である。保存しておく際には、過去の検索結果も合わせて記憶しておき、再活動化させた時にＷｅｂブラウザ１１に過去の検索結果を送信することも可能である。
【００２５】
クライアント・コンピュータ５はこれまでに存在している通常のコンピュータであり、本発明は主にエージェント・サーバ１の構成である。図２にエージェント・サーバ１の構成例を示す。エージェント・サーバ１は、ＨＴＴＰゲートウエー２１、対話管理機構２３、対話管理機構２３により参照される対話規則データベース（ＤＢ）２５、エージェント管理機構２７、エージェント管理機構２７に参照されるエージェント活動ポリシー・データベース（ＤＢ）２９、二次記憶装置であるエージェント格納域３１を含む。
【００２６】
ＨＴＴＰゲートウエー２１は、クライアント・コンピュータ５のＷｅｂブラウザ１１とＨＴＴＰメッセージのやり取りを行う。図３にＨＴＴＰゲートウエー２１の動作を説明するための模式図を示す。Ｗｅｂブラウザ１１の入力欄に図３のように入力して送信を命ずると、ＨＴＴＰメッセージが生成されて出力される。例えば、http://www.tabican.ne.jp:987/search/AID=1234/search.html?mnopqrといったメッセージになる。ここでは、www.tabican.ne.jp部分は、エージェント・サーバ１のＩＰ（Internet Protocol）アドレスであり、987部分は、その通信ポート番号を表す。また、AID=1234は、エージェント・サーバ１における対応顧客エージェント番号であり、当該顧客エージェントにはメッセージ名search.htmlで、mnopqrは入力データを表す。このようなＨＴＴＰメッセージは、ＨＴＴＰゲートウエー２１でエージェント用のメッセージに変換される。図３ではエージェントに直接渡されるようにされているが、これはＨＴＴＰゲートウエー２１の説明のためであって、図２に示したように、メッセージは対話管理機構２３に渡される。一方、エージェントからのメッセージも利用者に出力する必要がある場合には、ＨＴＴＰゲートウエー２１によって、ＨＴＭＬデータを含むＨＴＴＰメッセージに変換される。そして、Ｗｅｂブラウザ１１にて利用者に提示される。なお、本実施例では、内容を利用者に出力する必要のあるメッセージは、エージェント自体がＨＴＭＬデータを出力する。Ｗｅｂブラウザ１１を用いてエージェントと対話する技術については、ＩＢＭ  ＴＤＢ  Vol.40 No.08 pp127-129, 1997年8月に記載されているように周知の技術である。
【００２７】
対話規則ＤＢ２５は、エージェント間で行われる対話規則の情報を保存するデータベースである。対話とは一連のメッセージ交換にて実現され、対話規則には使用されるメッセージのタイプ、引数、引数のタイプが定義され、一連のメッセージの順番も定義されている。例えば、図４の上側に定義の記述と、下側にそれらの意味を示す。図４の例では、各セッション（Session）ごとに、最も上がセッション開始のメッセージ、最も下がセッション終了のメッセージを示す。セッションとは、エージェント間で張られる対話のためにやり取りされる一連のメッセージ群である。ＨＴＴＰゲートウエー２１も特殊なエージェントとして取り扱われるので、図４の左の一番上のセッションでは、ＡｇｅｎｔＡがＨＴＴＰゲートウエー２１であり、ＡｇｅｎｔＢがその他のエージェントである。
【００２８】
対話管理機構２３は、対話規則ＤＢ２５を参照して、エージェント間の対話が正常なものであるかを判断する。すなわち、対話規則ＤＢ２５に定義されているメッセージのタイプ、引数、引数のタイプ、及びメッセージの順番である。この時、対話管理ブロックを用いて対話の状態遷移を保存しておく。これにより、現在何番目のメッセージまで送信済で次はどのメッセージがどのエージェントからどのエージェントへ送信されるかを判断する。そして、セッションの最初に定義された適正なメッセージを受信した場合には、宛先エージェントの使用要求を、エージェント管理機構２７に出力する。そして、エージェント管理機構２７からエージェント使用許可を受信した場合には、メッセージの宛先エージェントにメッセージを送信する。エージェントが活動中で、適正なメッセージが送信されている場合には、エージェントへメッセージを送信する。一方、受信したメッセージがセッションの最後に定義された適正なメッセージを受信した場合には、送信元エージェントの使用終了通知をエージェント管理機構２７に出力する。
【００２９】
図５及び図６並びに図９に、対話管理機構２３の処理を詳細に示す。図５は、あるエージェントへのメッセージの送信依頼処理を表す。送信依頼とあるのは、どのメッセージも対話管理機構２３を介してメッセージを送信するので、対話管理機構２３ではメッセージの受信をメッセージ送信の依頼と解釈されるためである。最初に、対話規則における最初のメッセージであるかどうか判断する（ステップ１０３）。もし、対話規則における最初のメッセージである場合には、上述の対話管理ブロックを作成する（ステップ１０５）。そして、エージェント活動要求をメッセージ送信依頼に付加する（ステップ１０７）。エージェント活動要求は、メッセージの宛先エージェントに対する活動要求であり、この宛先エージェントは活動化候補エージェントとなる。そして、このメッセージ送信依頼を待ち行列に入れる（ステップ１０９）。一方、対話規則における最初のメッセージでない場合には、既にエージェントは活動化されており且つ対話管理ブロックは作成されているので、ステップ１０５及び１０７をスキップして、ステップ１０９に飛ぶ。そして、エージェント管理機構２７にメッセージ送信依頼処理（後述）を実施させる（ステップ１１１）。
【００３０】
図６はエージェント管理機構２７のメッセージ送信依頼処理においてメッセージを送信させる段階になったところで実施される、メッセージ送信処理を表す。メッセージ送信の最初の処理は、対話の流れ定義どおりのメッセージであるかどうかの判断である（ステップ１２３）。もし、対話の定義どおりのメッセージでない場合には、エラーとして処理される。例えば、メッセージの送信元／宛先エージェントを非活動化させる等の処置をとる。一方、メッセージが定義どおりであれば、実際にメッセージを送信し（ステップ１２７）、処理を終了する。
【００３１】
ここでは、メッセージが対話の流れ定義どおりであるかをステップ１２３にて判断しているが、図５におけるステップ１０３で合わせて判断することも可能である。
【００３２】
エージェント活動ポリシーＤＢ２９は、エージェントのグループごとに、常に活動状態にする、対話中のみ活動状態にする等のスケジュール・ポリシーを格納するものである。図１０に例を示す。上側が定義の記述であり、下側がその定義の意味を表したものである。ここでは、Consumerエージェントは最大５つ同時に活動でき、Shopエージェントは２つである。ＳｈｏｐＡエージェントは、常に活動し、それ以外は非活動化されることもある。また、ＳｈｏｐＢエージェントは１回１５秒しか活動できず、Consumerエージェントは３０秒である。このエージェント活動ポリシーＤＢ２９は、エージェント管理機構２７により参照される。
【００３３】
エージェント管理機構２７は、エージェント活動ポリシーＤＢ２９を参照して、エージェントの活動化・非活動化のスケジュールと処理を実施する。すなわち、対話管理機構２３からのエージェント使用要求（図５におけるエージェント活動要求を含むメッセージ送信依頼）及びエージェント使用終了通知（後述：対話管理ブロックなしの判断）を受け取り、エージェント活動ポリシーＤＢ２９を参照して、適切なタイミングで活動化及び非活動化を実施する。特に、ポリシーＤＢ２９に活動するエージェントの数のみ記述されている場合には、規定の数以上のエージェントが活動化されないようにする。
【００３４】
対話管理機構２３の処理を表した図５のステップ１１１の処理、すなわちエージェント管理機構２７のメッセージ送信依頼の処理を図７に示す。まず、現在処理を行っているエージェントの数が制限値より小さいかどうか判断する（ステップ１４３）。この「処理を行っているエージェント」とは、実際にメッセージを受信して、そのメッセージに対する処理を実施しているエージェントである。対話管理機構２３又はエージェント管理機構２７は、処理を行っているエージェントの数を把握するために、エージェントごとに処理をしているメッセージの数をカウントするためのカウンタを管理している。例えば、エージェントが３つのメッセージの処理を実施している場合には、そのエージェントのカウンタは３となっている。このステップ１４３では、全てのエージェントのカウンタの値を加算した値を用いる。場合によっては、カウンタの値が１以上であるエージェントの数が用いられる。もし、ステップ１４３で制限値より小さい場合には、メッセージ送信依頼の待ち行列の先頭の依頼をチェックする（ステップ１４５）。そして、その先頭の依頼にエージェント活動要求が付加されているか判断する（ステップ１４７）。もし、エージェント活動要求が付加されている場合には、エージェントを活動化処理を実施する（ステップ１４９）。この活動化処理の詳細は図８を用いて説明する。なお、この図８を見れば直ぐに分かるが、エージェント活動化処理では、実際はエージェントが活動化されない場合がある。よって、このメッセージ送信依頼処理の中では、送信先エージェントは現在活動中であるかどうかを確認する（ステップ１５３）。活動化されていない場合には、メッセージの送信処理（図６）を実施できないので、エージェント管理機構２７におけるメッセージ送信依頼処理を終了する（ステップ１５９）。
【００３５】
ステップ１４７においてエージェント活動要求が先頭の依頼に付加されていなかった場合及びステップ１５３においてメッセージの送信先エージェントが現在活動中であると確認された場合には、メッセージ送信依頼待ち行列の先頭の依頼を取り出す（ステップ１５１）。そして、先ほど述べた、エージェントが処理しているメッセージの数（１以上であればエージェントが処理中であることを表している）を１インクメントする（ステップ１５５）。そして、図６に示されたメッセージ送信処理を実施する（ステップ１５７）。そして、エージェント管理機構２７のメッセージ送信依頼処理を終了する。
【００３６】
なお、ステップ１４３において、処理中のエージェントの数が制限値と同じ又はそれより大きい場合には、処理を終了する。この図７の処理は、後に述べる図９の処理から再度開始され、メッセージ送信依頼の待ち行列の先頭の依頼を次々に処理していく。
【００３７】
図８に図７のステップ１４９に出てきたエージェント活動化処理を示す。図７のステップ１４９に処理が移行すると、まず送信先エージェントは現在活動中か判断する（ステップ１６３）。もし、現在活動中であるならば、再度活動化する必要はないので、本処理を終了する（ステップ１６９）。一方、活動中でない場合、現在活動化されているエージェントの数が、制限値より小さいか判断する（ステップ１６５）。この活動化されているエージェントと処理中のエージェントの数は異なる。例えば、活動化されていても、メッセージの処理を現在行っていないエージェントも存在するからである。もし、制限値と同じ又はそれより大きい場合には、エージェントを活動化することなく処理を終了する（ステップ１６９）。一方、制限値より小さい場合に、エージェントを活動化して（ステップ１６７）、処理を終了する。
【００３８】
このように本発明では処理中のエージェントの数をも管理する。これは、システムにおける処理負荷は、エージェントの活動化だけではなく、実際にエージェントがメッセージの処理をしていることに起因するものも大きいからである。例えば、店舗エージェントは商品ＤＢの検索を実行するため、二次記憶装置へアクセスする。この処理は他の店舗エージェントの処理と重なることも多い。よって、活動化エージェントの数のみならず、処理中のエージェントの数の管理も非常に重要である。
【００３９】
次に、メッセージ処理終了のための処理について図９を用いて説明する。この図９の一部は対話管理機構２３が実施し、残りはエージェント管理機構２７が実施するようになっている。なお、この処理の開始は、エージェントが１つのメッセージについての処理を終了して、その処理終了に対するメッセージを送信することによりスタートする。そして、この処理終了に対するメッセージが対話定義の最後のメッセージかを判断する（ステップ１８３）。もし、対話定義の最後のメッセージである場合には、このメッセージに関する対話管理ブロックを削除する（ステップ１８５）。そして、対話にかかわるエージェントの対話管理ブロックがまだ存在しているか判断する（ステップ１８７）。もし、対話にかかわるエージェントが他のメッセージの処理を実施している場合には、他のメッセージに関する対話管理ブロックが残っているので、ステップ１９１に移行する。一方、もう対話管理ブロックが存在しない場合には、エージェント管理機構２７に通知して、エージェント管理機構２７がエージェントの非活動化を実施する（ステップ１８９）。
【００４０】
なお、ステップ１８３において対話定義の最後のメッセージでないと判断された場合及びステップ１８７において対話管理ブロックがまだ存在すると判断された場合には、当該エージェントの処理中を表すカウンタを１デクリメントする（ステップ１９１）。これにより、システムにとっての負荷が軽くなったので、メッセージ送信依頼の待ち行列に未処理の依頼が存在するか判断する（ステップ１９３）。もし、存在しないならば、処理を終了する（ステップ１９７）。また、存在する場合には、待ち行列から１つ依頼を取り出し、図７のメッセージ送信依頼を実行する。
【００４１】
非活動化は、エージェント管理機構２７がエージェント活動ポリシーＤＢ２９を参照して、独自に処理を開始する場合もある。同時に多数の対話開始を表すメッセージを受信した場合、エージェント管理機構２７は、現在活動状態にあるエージェントを一時的に非活動化することにより、順次エージェントを活動状態にし、メッセージを送信することもある。これは、例えば全体で５つのエージェントが活動できる環境において、既に５つのエージェントが活動している場合に、あるエージェントが活動していないエージェントに対してメッセージを送信すると、もう新たにエージェントを活動化できない。よって、この場合には１つのエージェントを臨時に非活動化することにより処理を進める場合もある。また、例えば、図１０のように１回１５秒しか活動できない場合には、活動化の時にタイマをスタートさせ、１５秒たったところで、非活動化処理を実施する。また、対話管理機構２３が不正なメッセージを検出した場合には、当該メッセージの送信元／宛先エージェントを非活動化するように要求する。よって、これに応答して、送信元／宛先エージェントを非活動化してもよい。
【００４２】
実際にエージェントを活動化及び非活動化する処理は、オブジェクトのシリアライゼイション及びその逆を使用することができ、例えば「Ｐｉｃｋｌｉｎｇ  Ｓｔａｔｅ  ｉｎ  ｔｈｅ  Ｊａｖａ  Ｓｙｓｔｅｍｓ」（Ｔｈｅ  ２ｎｄ  ＵＳＥＮＩＸ  Ｃｏｎｆｅｒｅｎｃｅ  ｏｎ  Ｏｂｊｅｃｔ−Ｏｒｉｅｎｔｅｄ  Ｔｅｃｈｎｏｌｏｇｉｅｓ，  １９９６）に実装方法の一例が述べられている。
【００４３】
なお、図５乃至図９に示した処理例は、それぞれ対話管理機構２３又はエージェント管理機構２７で処理の分担を示したが、両者が一体となって図５乃至図９の処理を実施するように変形可能である。また、対話管理機構２３及びエージェント管理機構２７を一体で実現することも可能であり、それにより図５乃至図９の処理を一体で実施することも可能である。
【００４４】
では図１で使用した例を図１１及び１２用いて、全体の処理の流れを説明する。
利用者は「１０万円以内で、航空会社ＸＹＺでホノルル４日間、２月１４日出発のツアー」を検索するようにＨＴＴＰメッセージ２０１をクライアント・コンピュータ５から出力する。このＨＴＴＰメッセージ２０１は、ＨＴＴＰゲートウエー２１がHTTPRequestメッセージ２０３に変換し、対話管理機構２３に出力する。対話管理機構２３は、対話規則ＤＢ２５を参照して、本メッセージがセッションの開始であると判断する。そうすると、対話管理機構２３はエージェント使用要求（エージェント活動要求）２０５をエージェント管理機構２７に出力する。エージェント管理機構２７は、活動化が可能なタイミングでＡｇｅｎｔＡを活動化（２０７）させ、対話管理機構２３に使用許可（メッセージ送信処理への移行：図７のステップ１５７）２０９を出力する。使用許可がでると対話管理機構２３は、ＨＴＴＰRequest２１１をＡｇｅｎｔＢに出力する。
【００４５】
この後は図１２を用いて説明する。ＡｇｅｎｔＡでは、HTTPRequest２１１内の検索条件を引数とするRequestTravelGoodsメッセージ２２３を対話管理機構２３に出力する。対話管理機構２３は、対話規則ＤＢ２５を参照してこのメッセージ２２３がＡｇｅｎｔＢとの対話の開始であることを判断し、ＡｇｅｎｔＢの使用要求をエージェント管理機構２７に出力する。そして、エージェント管理機構２７は、ＡｇｎｅｔＢを適切なタイミングで活動化させ、対話管理機構２３に使用許可通知２２９を出力する。そうすると、対話管理機構２３は、RequestTravelGoodsメッセージ２３１をＡｇｅｎｔＢに出力する。ＡｇｅｎｔＢは、このメッセージ２３１に対する処理を行い、その返事として「航空会社ＸＹＺで行くホノルル４日間、２月１４日出発を８万円」という内容のProvideExactGoodsメッセージ２３３を、対話管理機構２３に出力する。対話管理機構２３は、対話規則ＤＢ２５を参照して、このメッセージ２３３が順番、引数等を含めて適正であるかを判断して、もし適正であればＡｇｅｎｔＡへProvideExactGoodsメッセージ２３５として出力する。さらに、ＡｇｅｎｔＢは、「本日限り、航空会社ＢＣＤで行くホノルル４日間、２月１４日出発、５万円」というお勧め商品情報に関するRecommendGoodsメッセージ２３６を対話管理機構２３に出力する。対話管理機構２３は、対話規則ＤＢ２５を参照すると、当該メッセージ２３６がセッションの終了を表すメッセージと判断する。そして、対話規則通りであればRecommendGoodsメッセージ２３７をＡｇｅｎｔＡに出力し、エージェントＢの使用終了（対話管理ブロックなし：図９ステップ１８７から１８９）２３９をエージェント管理機構２７に通知する。エージェント管理機構２７は、活動ポリシーＤＢ２９を参照して、ＡｇｅｎｔＢが非活動化するエージェントであれば、ＡｇｅｎｔＢを非活動化させる（２４１）。
【００４６】
もう一度図１１に戻って、ＡｇｅｎｔＡは必要な情報を得たので、利用者に検索結果を出力するための処理を実施する。そこで、HTTPResponseメッセージ２１３を対話管理機構２３に出力する。対話管理機構２３は、対話規則ＤＢ２５を参照して、このメッセージ２１３がＡｇｅｎｔＡとＨＴＴＰゲートウエー２１とのセッションの最後のメッセージであると判断する。そうすると、対話管理機構２３はエージェント管理機構２７にＡｇｅｎｔＡの使用終了を通知する（２１７）。また、HTTPResponseメッセージ２１５をＨＴＴＰゲートウエー２１に出力する。エージェント管理機構２７は、活動ポリシーＤＢ２９を参照して、ＡｇｅｎｔＡを非活動化できる場合には、ＡｇｅｎｔＡを非活動化する（２１９）。ＨＴＴＰゲートウエー２１は、対話管理機構２３からのHTTPResponseメッセージ２１５をＨＴＴＰメッセージ２２１に変換し、出力する。
【００４７】
これにより、クライアント・コンピュータ５には利用者が命じた検索結果がＷｅｂブラウザ１１に表示されるようになる。
【００４８】
以上実施例を説明したが、本発明の様々な変形が可能である。例えば、対話管理機構２３が対話規則を自ら含むようにしたり、同じくエージェント管理機構２７がエージェント活動ポリシーの規定を自ら含むようにすることもできる。先にも述べたように、対話管理機構２３とエージェント管理機構２７を一体のものとすることも可能である。さらに、ＨＨＴＰゲートウエー２１は、ＨＴＴＰが用いられていることを前提にしているが、他のプロトコルを用いる場合には、他のプロトコルとのゲートウエーとすること可能である。また、ＨＴＴＰゲートウエー２１を特別なエージェントとしていたが、対話規則ＤＢ２５においてエージェントでないように規定することも可能である。ＨＴＴＰゲートウエー２１を複数設けることも可能である。さらに、エージェント記憶域３１は、二次記憶装置でハードディスクを念頭にしているが、他の記憶装置であってもよい。但し、主記憶装置は、活動状態のエージェントのために使用しない方がよい。メッセージ送信依頼の待ち行列を用いるように説明したが、エージェント管理機構２７において活動化待ちのエージェントの待ち行列を設けるようにすることも可能である。
【００４９】
不正なエージェントを検出した場合には、非活動化するのが好ましい。非活動化として、消滅させることも可能であるし、不正なエージェントであることを表すタグを付けて正常なエージェントのようにエージェント格納域３１に格納して、後に解析することも可能である。メッセージを複数検査したのちに、例えばメッセージ送信頻度が異常に高い等ということを判断して、不正なエージェントを判定することもできる。また、複数不正のメッセージがあった場合に不正なエージェントと判定するように、条件を緩和することもできる。また、対話規則は図３は一例であって、他の規則を定義することは自由である。対話を簡単にする場合には、RecommendGoodsメッセージを定義しないようにすることは当然可能である。
【００５０】
【効果】
エージェント・サーバの負荷を制御することができるようになった。
【００５１】
メッセージを検査することにより、エージェントの活動／非活動を制御する方法を提供することができた。
【００５２】
不正なエージェントを検出し、対応処理を実施することができた。
【００５３】
メッセージを検査することにより、不正なメッセージを出力するエージェントを検出し、不正なエージェントを非活動化する方法を提供することができた。
【図面の簡単な説明】
【図１】本発明の概念図である。
【図２】本実施例におけるエージェント・サーバの構成例を示す図である。
【図３】ＨＴＴＰゲートウエーの処理を表す図である。
【図４】対話規則の例を示す図である。
【図５】対話管理機構によるメッセージ送信依頼の処理フローである。
【図６】メッセージ送信の処理フローである。
【図７】エージェント管理機構による、メッセージ送信依頼の処理フローである。
【図８】エージェント活動化の処理フローである。
【図９】メッセージ処理終了の処理フローである。
【図１０】エージェント活動ポリシーＤＢの記述例である。
【図１１】システム全体の処理の一例を表す図である。
【図１２】システム全体の処理の一例を表す図である。
【符号の説明】
１  エージェント・サーバ
３  ネットワーク
５  クライアント・コンピュータ
７  顧客エージェント
９  店舗エージェント
１１  Ｗｅｂブラウザ
２１  ＨＴＴＰゲートウエー
２３  対話管理機構
２５  対話規則ＤＢ
２７  エージェント管理機構
２９  エージェント活動ポリシーＤＢ
３１  エージェント格納域
【図１】
0003734206.tif 000002
【図２】
0003734206.tif 000003
【図３】
0003734206.tif 000004
【図４】
0003734206.tif 000005
【図５】
0003734206.tif 000006
【図６】
0003734206.tif 000007
【図７】
0003734206.tif 000008
【図８】
0003734206.tif 000009
【図９】
0003734206.tif 000010
【図１０】
0003734206.tif 000011
【図１１】
0003734206.tif 000012
【図１２】
0003734206.tif 000013