はじめに
やりたかった
参考
APIキーの作成
クレジットカード支払いの設定
source
非公開情報を.envに移す(GitGuardian対策)
console
pip install django-environ
retrieval_qa_with_source/.env
SECRET_KEY=djaXXXXX
DEBUG=True
DB_ENGINE=django.db.backends.mysql
DB_NAME=gptplayground_db
DB_USER=python
DB_PASSWORD=python123
retrieval_qa_with_source/config/settings.py
from pathlib import Path
+ import environ
# Build paths inside the project like this: BASE_DIR / 'subdir'.
BASE_DIR = Path(__file__).resolve(strict=True).parent.parent
+ # read at .env
+ env = environ.Env(DEBUG=(bool, False))
+ environ.Env.read_env(Path(BASE_DIR, '.env'))
+ DEBUG = env('DEBUG') # read DEBUG at .env
+ SECRET_KEY = env('SECRET_KEY') # read SECRET_KEY at .env
# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/3.1/howto/deployment/checklist/
- # SECURITY WARNING: keep the secret key used in production secret!
- SECRET_KEY = 'djaXXXXX'
- # SECURITY WARNING: don't run with debug turned on in production!
- DEBUG = True
:
ここでいったん pycharm を再起動したり、コンソールの再起動をしないと引きずってえんえんとハマることになる
まとめ
大事なことは「ChatGPTは一度に扱えるテキストの量に限界がある」ということ。これがために、ページ単位にわけたドキュメントをさらに千切りにする。その千切りにしたデータは、自然言語1に対するmetadata1というかたちで、単に辞書で取り扱われていて、pdfのどこから引用したかというのを紐づけることができる chat/domain/valueobject/pdfdataloader.py
のあたりの処理。今回はページでしか割っていないがうまくいったのは英文だったからなのかも。そしたらページ単位に割った後、さらに千切りする必要が出てくるが自然言語とmetadataをペアにして「文書のどこから考えたのか」を人間に示すことができる。