이 프로젝트는 매우 길고 교과서 품질의 사전 계통 데이터를 생성합니다. 다음은 70m 토큰 예입니다. OpenAI 또는 자신의 API에 대해 세대를 동시에 실행할 수 있습니다. 주제를 처음부터 생성하거나 제공하는 씨앗 세트를 사용할 수 있습니다.
발전기는 검색을 사용하여 품질을 향상시킵니다. 기본적으로 Serply를 사용하여 검색을 수행하지만 Serpapi를 사용하거나 검색을 비활성화 할 수도 있습니다.
코어는 확장 가능하므로 새로운 API에 연결하여 검색어 백엔드에 연결할 수 있습니다.
brew install postgres 로 설치할 수 있습니다. psql postgres -c "create database textbook;"git clone https://github.com/VikParuchuri/textbook_quality.gitcd textbook_qualitypoetry installinvoke migrate-dev 먼저, Repo의 루트 디렉토리에 local.env 파일을 만들어 비밀 키를 저장하십시오. 또는 아래 키를 ENV VAR로 설정할 수 있습니다.
app/settings.py 에서 사용 가능한 모든 구성 값을 볼 수 있습니다.
OPENAI_KEY=sk-xxxxxx 와 같은 OpenAI 키를 추가하십시오SERPLY_KEY="..." ) 또는 SerpApi 키 ( SERPAPI_KEY="..." )를 추가하십시오.SEARCH_BACKEND=serply 또는 SEARCH_BACKEND=serpapi 추가하여 적절한 백엔드를 사용하십시오. 기본적으로 이것은 gpt-3.5 사용합니다. Envs vars LLM_TYPE , LLM_INSTRUCT_TYPE gpt-4 로 설정하여 gpt-4 사용할 수 있습니다. LLM_EXTENDED_TYPE gpt-4 로 설정하는 데 도망 갈 수 있지만 8K 컨텍스트보다 긴 컨텍스트가 필요할 수 있습니다.
OPENAI_KEY API 키의 값 또는 더미 값으로 설정하십시오.OPENAI_BASE_URL API의 URL로 설정하십시오 (https://vllm-api.com/v1)LLM_TYPE , LLM_INSTRUCT_TYPE 및 LLM_EXTENDED_TYPE 설정을 모델 이름 (예 : llama )으로 설정하십시오.LLM_TYPES 설정에서 모델 이름과 최대 토큰을 설정하십시오. 발전기는 이상적으로 최대 16k 의 컨텍스트 길이가 필요하지만 필요한 경우 12k 로 도망 갈 수 있습니다. 교과서 gen (이 repo에 캐시 된 프롬프트를 기준으로)에 대한 자신의 모델을 미세 조정 한 경우 FINETUNED 및 INCLUDE_EXAMPLES 설정을 사용하여 토큰 사용을 줄일 수 있습니다.
SEARCH_BACKEND=none 설정합니다 레포에는 세 가지 주요 스크립트가 있습니다. 이전 스크립트의 출력에서 각 스크립트를 실행할 수 있습니다. 모든 출력은 app/data 에 기본적으로 표시되며 설정에서 지정된 DATA_DIR 입니다.
주제, 주제를 저장하려는 파일 및 반복 수를 입력합니다. 주제는 중복 제거됩니다.
사용 예 :
python topic_generator.py "computer science with python" python_cs_titles.json --iterations 50
기존 씨앗 (평평한 JSON 목록)이있는 파일을 가져 와서 보강하십시오. 주제 생성기에서 출력 파일을 종자 파일로 전달하거나 자신의 시드를 사용할 수 있습니다. 도메인은 도메인 내의 주제를 제한하기위한 선택적 플래그입니다.
이것은 또한 의미 적으로 주제를 제거 할 것입니다.
사용 예 :
python topic_augmentor.py python_titles.json python_topics.json --domain python
이것은 플랫 JSON 주제 목록이있는 파일을 가져 와서 주제 당 하나의 교과서를 생성합니다. 노동자 깃발은 병렬 세대의 수를 통제합니다. 속도 제한에 도달하면 낮추십시오.
사용 예 :
python book_generator.py topics.json books.jsonl --workers 5
local.env 사용하는 대신 환경 변수로 설정을 무시할 수도 있습니다. 이 예제는 OpenAI 대신 VLLM API를 사용합니다.
LLM_TYPE=llama LLM_INSTRUCT_TYPE=llama LLM_EXTENDED_TYPE=llama OPENAI_KEY="llama" OPENAI_BASE_URL="https://vllm-api.com/v1" python book_generator.py topics.json books.jsonl --workers 10
python book_generator.py --help 실행하여 모든 옵션을 볼 수 있습니다.
코스는 기본적으로 캐싱되므로 동일한 이름의 코스를 두 번 재생해도 API에 다시는 맞지 않습니다. 캐시는 각 모델과 각 주제에만 해당됩니다. --revision 옵션을 사용하여 코스의 개정 번호를 지정하여 캐시를 건너 뛸 수 있습니다.
다음 필드가있는 JSONL 파일을 만들어 기존 개요에서 책을 생성 할 수도 있습니다.
topic - 책의 주제/제목outline - 플랫 JSON 목록으로서 책의 개요. 이것은 특정 형식이어야합니다. 아래의 "클린 목차"를 참조하십시오.queries - 검색에 사용할 최대 2 개의 검색 쿼리. 검색을 사용하지 않으려면이를 빈 목록으로 설정하십시오. 이는 기존 목차 및 제목이있는 JSONL 파일을 사용하여 책 생성을 위해 올바른 형식으로 처리합니다.
사용 예 :
python toc_cleaner.py toc.jsonl clean_toc.jsonl
toc.jsonl 각 라인에 다음 필드를 가져야합니다.
title - 책 제목toc 목차를 포함하는 문자열. 이것은 제대로 형식화되지 않을 수 있습니다이를 확장하여 새로운 LLM 어댑터, 검색 방법 또는 작업을 추가 할 수 있습니다. PR은 매우 환영합니다.
app/llm/adaptors 에 있습니다app/services/adaptors 에 있습니다. services/generators/pdf.py 에서 설정을 조정해야 할 수도 있습니다app/llm/generators 에 있습니다 기본적으로 콘솔 노이즈를 피하기 위해 많은 예외가 숨겨져 있습니다. DEBUG=true 사용하여 다음과 같이 표시하십시오.
DEBUG=true python book_generator.py python_topics.json books.jsonl --max 5 --workers 5