WebサービスAPIによる複数ロボット会話システム

LINEで送る
Pocket

WebサービスAPI利用時の注意点

インターネットは、「ベストエフォート型のサービス」がほとんどである。

一方、常に一定の通信速度や品質を保証している「ギャランティ型サービス」もあるが高価である。

WebサービスAPIなどを利用したシステム開発には、基本的には、「ベストエフォート型のサービス」を前提とした設計が不可欠である。

「ベストエフォート型のサービス」は、通信速度やサービスの質が保証されないので、通信速度の低下などで、リトライエラーが頻繁に発生して、タイムアウトに陥ることがある。

これにより、プログラムで例外が発生して、予期しないプログラム停止となる。

このような事態を防ぐには、「ベストエフォート型のサービス」という前提でシステム開発することが必須である。

プログラミング初心者が陥る落とし穴でもある。

インターネット通信は、エラーがでることを想定したプログラミングを行うことが必要になる。

例外処理で、救済するためのプログラミングが必須となる。

try:

except Exception as e:

のexcept:欄に、インターネットでのエラーを救済するためのプログラミングを施す。

この欄で、最初からやり直すための処置などを施す。

具体的には、例外が発生した日時や例外内容をログとして保存して、インターネットが復旧した段階で、メール通知するなどの処置などを行う。そして、プログラムを継続させて、矛盾がないようにする。

これにより、インターネット品質などを知ることができ、通信品質の改善を行うことができると同時にトランザクション処理も実現できる。

群馬プログラミングカレッジで開発した「複数ロボット会話システム」でもこのような救済処理が運用上必須となった。

インターネット回線を複数で共有する環境では、通信品質が低下して、しばしば、RetryMaxErrorにより、例外が生じる。

pythonのrequestsモジュールを利用して、Webサービスに接続している場合に、度々、例外が生じた。

基本は、「トランザクション処理」の実践である。

群馬プログラミングカレッジでは、pythonプログラム言語を学び、「実務経験」を行うことができます。

子ども達は、子どもプログラミング教室で、Scratchプログラム言語を学び、高学年生は、徐々に高級プログラム言語を学びます。

群馬プログラミングカレッジでは、毎月、プログラミング体験会を実施しておりますので、お気軽にご参加ください。

子どもから成人の方が、継続的にプログラミングを学ぶ場を提供いたします。

複数ロボット会話システム
案内ロボットとして、活躍しています。pythonプログラム言語、PHPプログラム言語で開発しました。
WebサービスAPIを利用して、お互いの会話の同期を制御している。

LINEで送る
Pocket

複数ロボット自然会話システム(4)

LINEで送る
Pocket

複数ロボット自然会話システムシステム(4)

複数ロボット自然会話システムシステム(1)
複数ロボット自然会話システムシステム(2)
複数ロボット自然会話システムシステム(3)
複数ロボット自然会話システムシステム(4)

ソフトウェア方式設計:

  1.  対談モード:
    1. 辞書
      AA-u/d BA-u/d CA-u/d
      AB-u/d BB-u/d CB-u/d
      AC-u/d BC-u/d CC-u/d

      辞書フォーマット:
      taidan={‘taidan’:{‘AA’:,u/d,message,’AB’:u/d,message,以下同様}}
      AAは、パターンで辞書のキー、u/dは、アップ/ダウンモードで、uモードまたはdモードの二者択一とする。Messageは、会話文。

    1. ていだんモード:
      1. 辞書(参加ロボットが3人の場合)
        ABC-A-u/d ACD-A-u/d BCD-B-u/d BAD-B-u/d
        ABC-B-u/d ACD-C-u/d BCD-C-u/d BAD-A-u/d
        ABC-C-u/d ACD-D-u/d BCD-D-u/d BAD-D-u/d

        辞書フォーマット:
        teidan={‘teidan’:{‘ABC-A’:u/d,message,’ABC-B’:u/d,message,以下同様}}

        ABC-Aは、パターンで辞書のキー、u/dは、アップ/ダウンモードで、uモードまたはdモードの二者択一とする。Messageは、会話文。

    1. 会談モード:
      1. (1) 辞書(参加ロボットが4人の場合)

        ABCD-A-u/d
        ABCD-B-u/d
        ABCD-C-u/d
        ABCD-D-u/d

        辞書フォーマット:
        kaidan={‘kaidan’:{‘ABCD-A’:u/d,message,’ABCD-B’:u/d,message,以下同様}}
        ABCD-Aは、パターンで辞書のキー、u/dは、アップ/ダウンモードで、uモードまたはdモードの二者択一とする。Messageは、会話文。

    2. サーバープログラムは、サーバーのMySQLデータベースからパラメータ情報をダウンロードして、辞書ファイルを初期化してサーバーへアップロードする。
    3. クライアントプログラムは、自分が所属するパターンのみサーバーからローカルにダウンロードして辞書を管理する。
    4. クライアントプログラムは、各パターンを参照して、u/dのアップロードモードのuモードがあれば、その会話文に対する応答文を生成して、関連するロボットへアップロードする。
    5. クライアントプログラムは、スレッドを立てて定期的にサーバーから辞書データをダウンロードして、投げ掛けられて会話文があるかチェックして、あればレスポンダーから応答文を得てサーバーに応答文をアップロードする。
    6. クライアントプログラムからアップロードされた会話文はMySQLデータベースに保存される。
    7. ていだんモードと会談モードは、同一処理となる。
    8. ていだんモードと会談モードは、会話文をアップしたロボットのu/dモードは、dモードに設定して、他のロボットのu/dモードは、uモードに設定する。

群馬プログラミングカレッジでは、種々のロボットを開発しています。

複数ロボット自然会話システム

このシステムに接続すると、ロボット同士の自然会話を行うことができます。
会話希望の方はご連絡ください。

WebサービスAPIのインターフェースを提供します。

 

LINEで送る
Pocket