金子邦彦研究室人工知能Windows で動く人工知能関係 Pythonアプリケーション,オープンソースソフトウエア)ChatGPT の回答のファクトチェック(factool,Python を使用)(Windows 上)

ChatGPT の回答のファクトチェック(factool,Python を使用)(Windows 上)

ChatGPT の回答の中の「徳川家康は日本のほとんどを統制下に置いた」が 「徳川家康は日本の一部を統制下に置いた」に修正されている.

前準備

Git のインストール(Windows 上)

Gitは,バージョン管理システム.ソースコードの管理や複数人での共同に役立つ.

サイト内の関連ページ

Windows での Git のインストール: 別ページ »で説明している.

関連する外部ページ

Git の公式ページ: https://git-scm.com/

Python のインストール(Windows 上)

サイト内の関連ページ

関連する外部ページ

Python の公式ページ: https://www.python.org/

factool のインストールと設定(Windows 上)

factool のインストール(Windows 上)

  1. Windows で,コマンドプロンプト管理者として実行

    コマンドプロンプトを管理者として実行: 別ページ »で説明

  2. ソースコードのダウンロード

    cd %HOMEPATH%
    rmdir /s /q factool
    git clone https://github.com/GAIR-NLP/factool
    cd factool
    
  3. factool\knowledge_qa\pipeline.py の修正

    次のコマンドでメモ帳を実行

    notepad factool\knowledge_qa\pipeline.py
    

    次のように修正.3箇所に「, encoding='utf-8'」を追加して保存.

    [image]
  4. factool\math\pipeline.py の修正

    次のコマンドでメモ帳を実行

    notepad factool\math\pipeline.py
    

    次のように修正.2箇所に「, encoding='utf-8'」を追加して保存.

    [image]
  5. factool\scientific\pipeline.py の修正

    次のコマンドでメモ帳を実行

    notepad factool\scientific\pipeline.py
    

    次のように修正.2箇所に「, encoding='utf-8'」を追加して保存.

    [image]
  6. factool\med_doc_qa\pipeline.py の修正

    次のコマンドでメモ帳を実行

    notepad factool\med_doc_qa\pipeline.py
    

    次のように修正.3箇所に「, encoding='utf-8'」を追加して保存.

    [image]
  7. インストール

    python -m pip install -U --ignore-installed pip
    python -m pip install -U python-dotenv
    cd %HOMEPATH%
    cd factool
    pip install -e .
    

OpenAPI の API キーの取得

OpenAI の APIキーを準備する

関連する外部ページ

Serper の API キーの取得

  1. Serper のページにアクセス

    https://serper.dev/

  2. サインアップして,アカウントを取得する.
  3. API key を取得する

    「API key」をクリックする.画面が変わる.「Copy」をクリックすることにより,クリップボードに API key がコピーされる.

    [image]

    [image]

Scraper の API キーの取得

  1. Scraper のページにアクセス

    https://www.scraperapi.com/

  2. 「GET STARTED FOR FREE」をクリック.

    [image]
  3. Google アカウントでサインインできる.
  4. 画面が変わる.「API Key」のところに,API キーが表示されている.コピーして使用する.

OpenAPI の API キー,Serper の API キー,Scraper の API キーを .env ファイルに保存

  1. OpenAI の APIキーを準備する

    OpenAI の APIキーのページ

    https://platform.openai.com/account/api-keys

    料金の条件や利用履歴はこちらで確認.

    https://platform.openai.com/account/billing/limits

  2. Windows で,コマンドプロンプトを実行
  3. エディタを起動
    cd %HOMEPATH%
    mkdir factool
    cd factool
    type nul > .env
    notepad .env
    
  4. エディタで , OpenAPI の API キーを 「export OPENAI_API_KEY=sk-...」のように書く.
  5. エディタで, Serper の API キーを 「export SERPER_API_KEY=...」のように書く.
  6. エディタで, Scraper の API キー 「export SCRAPER_API_KEY=...」のように書く.

factool の動作確認(Windows 上)

Python プログラムを実行.

  1. Windows で,コマンドプロンプトを実行
  2. エディタを起動
    cd %HOMEPATH%\factool
    notepad factool.py
    
  3. エディタで,次のプログラムを保存

    このプログラムは, 公式の GitHub のページ: https://github.com/GAIR-NLP/factoolで公開されていたものを変更して使用している.

    from factool import Factool
    import dotenv
    dotenv.load_dotenv()
    
    # Initialize a Factool instance with the specified keys. foundation_model could be either "gpt-3.5-turbo" or "gpt-4"
    factool_instance = Factool("gpt-3.5-turbo")
    
    inputs = [
                {
                    "prompt": "Introduce Graham Neubig",
                    "response": "Graham Neubig is a professor at MIT",
                    "category": "kbqa"
                },
    ]
    response_list = factool_instance.run(inputs)
    
    print(response_list)
    

    [image]
  4. Python プログラムの実行

    Python プログラムの実行

    Python 開発環境(Jupyter Qt Console, Jupyter ノートブック (Jupyter Notebook), Jupyter Lab, Nteract, Spyder, PyCharm, PyScripterなど)も便利である.

    Python のまとめ: 別ページ »にまとめ

    プログラムを factool.pyのようなファイル名で保存したので, 「python factool.py」のようなコマンドで行う.

    python factool.py
    

    [image]
  5. 結果の確認

    [image]
  6. 再び,エディタを起動
    cd %HOMEPATH%\factool
    notepad factool.py
    
  7. エディタで,次のようにプログラムを書き換える

    このプログラムは, 公式の GitHub のページ: https://github.com/GAIR-NLP/factoolで公開されていたものを変更して使用している.

    from factool import Factool
    
    # Initialize a Factool instance with the specified keys. foundation_model could be either "gpt-3.5-turbo" or "gpt-4"
    factool_instance = Factool("gpt-3.5-turbo")
    
    inputs = [
                {
                    "prompt": "徳川家康について600文字以内で説明してください",
                    "response": "徳川家康(1543-1616)は、日本の戦国時代から江戸時代初期にかけての武将であり、江戸幕府の初代将軍として知られる。彼の統治のもとで始まった徳川幕府は約260年にわたり日本を統治し、平和な時代である江戸時代をもたらした。家康は三河国の小領主の出身で、幼少時代は多くの困難に直面したが、巧みな外交術と戦略で次第に勢力を拡大していった。戦国時代の終盤、関ヶ原の戦いにおいて西軍を破り、全国の制覇を果たした。この戦いにより、家康は日本のほとんどを統制下に置くこととなった。1603年、家康は征夷大将軍として認められ、これにより正式に江戸幕府が開かれた。その後、家康は江戸を新しい首都と定め、全国の大名を交互に江戸と自領に滞在させる参勤交代制度を設けることで、大名の動向を監視し、反乱を防ぐ体制を築いた。家康は、外国との交流を制限し、キリスト教の禁止などを行いながら、国内の安定と統治を固めた。また、文化や芸術の保護も行い、平和な時代の基盤を築いた。彼の死後も、徳川家は15代にわたり日本を統治した。家康の政策と統治の手法は、日本に長い平和な時代をもたらし、国内の経済や文化が発展する土壌を作った。徳川家康は、日本の歴史において非常に影響力のある人物として位置づけられている。",
                    "category": "kbqa"
                },
    ]
    response_list = factool_instance.run(inputs)
    
    print(response_list)
    

    [image]
  8. Python プログラムの実行
    python factool.py
    

    [image]
  9. 結果の確認

    下図のように,「徳川家康は日本のほとんどを統制下に置いた」が 「徳川家康は日本の一部を統制下に置いた」に修正されている.

    その他,いくつかの修正が行われている.

    [image]