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)
まとめ
この記事では ChatPDF の Backend API の自作 Python wrapper である chatpdf-api-python について紹介しました。都度 requests
モジュールで API を呼ぶコードを書くのが面倒な場合にご利用ください。なお、このモジュールを直接利用しなくても開発者としては全然問題ありません。皆様が ChatPDF Backend API を Python から利用する際の参考になれば幸いです。
最後に
今回紹介した chatpdf-api-python モジュールに限らず、API token を利用する際には、その token が漏洩しないよう管理に十分注意することが重要です。
また、このモジュールの利用する・しないに関わらず、ChatPDF Backend API の利用回数に制限があることに注意してください。 詳しくは ChatPDF Backend API のドキュメントをご確認ください。