LoginSignup
1
0

ChatPDF API 用 Python wrapper を作成してみた

Posted at

TL;DR

  • この記事は ChatPDF ユーザー向けです。
  • ChatPDF 用の簡単な Python wrapper module である chatpdf-api-python を作成しました。
    • この module は 非公式 です。
  • chatpdf-api-python は ChatPDF API token を使用します。この module を利用するにあたり、利用者自身が API token を適切に管理してください。
  • このモジュールの利用する・しないに関わらず、ChatPDF Backend API の利用回数に制限があることに注意してください。

背景

ChatPDF というサービスがあります。Web ブラウザ上で PDF をアップロードすると、そのファイルの内容を要約してくれたり、チャット形式で質疑応答ができるサービスです。

このサービスが 2023/6/26 にバックエンド API を公開しました。非常にシンプルな API です。主な機能は次の通りです:

  • PDF をアップロードする
  • URL を介して PDF をアップロードする
  • PDF とチャットする
    • OpenAI GPT API と同じく、チャット履歴は記憶しません。
  • アップロードした PDF を削除する

これらの API を利用するためのサンプルコードも API ドキュメントページに公開されています。Python の場合、requests モジュールを利用するサンプルコードが示されています。

頻繁に使うのであれば、都度 requests モジュールをインポートしてコードを書くというのは手間です。この手間を省く目的で、Python wrapper モジュールを作成しました。その名も chatpdf-api-python です。このモジュールのライセンスは Apache License 2.0 です。

chatpdf-api-python の使い方

chatpdf-api-python を使うにあたり留意していただきたい点

このモジュールは、ユーザーにより提供される、またはユーザーにより OS の環境変数に設定される ChatPDF API token を使用します。ChatPDF API token の取扱いはユーザーの責任であり、その取扱いによって生じた結果について、このモジュールの開発者は一切の責任を負いません。ChatPDF API token は機密情報であるため、適切に管理し、無意識のうちに公開しないように注意してください。chatpdf-api-python およびその改変版の使用によって、ユーザーの ChatPDF API token が漏洩した場合、その結果についての責任は全てユーザーに帰属します。

要件

  • Python 3.6+
    • os
    • requests
    • typing

インストール方法

このモジュールは非公式であることを鑑みて PyPI に公開していません。利用する場合は、Git リポジトリを利用してインストールする一般的な手順に従います。一例を以下に示します:

pip install git+https://github.com/Surpris/chatpdf-api-python.git

サンプル

2023/7/9 時点では、Git リポジトリ中の examples ディレクトリに Jupyter Notebook を一つ入れております。

how to use wrapper functions

import and set API_KEY

# import this module
import chatpdf_api_python as chatpdf

# set API_KEY if necessary.
# The API_KEY can be put in your OS environmental keys 'CHATPDF_API_KEY'
# prior to the import of this module.
chatpdf.API_KEY = '...'

add PDF via a URL

url = '...'

source_id = chatpdf.upload_url(url)

add PDFs via file upload

file_path_list = [
    '/path/to/your/file1.pdf',
    '/path/to/your/file2.pdf',
    ...
]

source_id = chatpdf.upload_files(file_path_list)

chat: post messages

messages = [
    { 'role': 'user', 'content': '...' },
    { 'role': 'user', 'content': '...' },
    ...
]
reference_sources = True

response = chatpdf.chat(source_id, messages, reference_sources=reference_sources)

delete the uploaded files

source_ids = [
    'source_id_1',
    'source_id_2',
    ...
]

response_code = chatpdf.delete_files(source_ids)

まとめ

この記事では ChatPDFBackend API の自作 Python wrapper である chatpdf-api-python について紹介しました。都度 requests モジュールで API を呼ぶコードを書くのが面倒な場合にご利用ください。なお、このモジュールを直接利用しなくても開発者としては全然問題ありません。皆様が ChatPDF Backend API を Python から利用する際の参考になれば幸いです。

最後に

今回紹介した chatpdf-api-python モジュールに限らず、API token を利用する際には、その token が漏洩しないよう管理に十分注意することが重要です。

また、このモジュールの利用する・しないに関わらず、ChatPDF Backend API の利用回数に制限があることに注意してください。 詳しくは ChatPDF Backend API のドキュメントをご確認ください。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0