這個工具負責將文字檔(.txt)或者 JSON 檔(.json)作為輸入,並產生對應的問答 (question, answer) .csv 檔案。此程式可用於將自然語言資料轉換為問答資料,讓用戶可以更有效地解析文件。
透過 PyPI 安裝:
python3 -m pip install to-qa-csv
透過 GitHub 下載並安裝:
python3 -m pip install git+https://github.com/bohachu/to_qa_csv.git
通過命令行界面使用 to_qa_csv
,範例如下:
to_qa_csv -i input_folder -u your_user_name -o output_folder -e .txt .json -p "Your prompt" -t 2 -m gpt-4 -f -c 5000
以下是各個參數的說明:
-i
or--input_folder
: 輸入文件的資料夾,將會搜尋這個資料夾中的.txt 和 .json 文件-u
or--user
: 使用者名稱-o
or--output_folder
: 輸出 .csv 檔案的目錄-e
or--extensions
: 指定要搜尋的檔案副檔名,以空格隔開,例如: .txt .json-p
or--prompt
: 給 AI model 的題詞-t
or--threads
: 指定多少 threads 同時進行轉換作業-m
or--model
: 要使用的 AI model 名稱,例如: gpt-4-f
or--force
: 是否強制重新製作輸出檔案-c
or--chunk_size
: 切割片段以多少字元為切割
導入 to_qa_csv
模組並使用 to_qa_csv
函數,範例如下:
from to_qa_csv import to_qa_csv
to_qa_csv(input_folder="/path/to/input/folder",
user="your_user_name",
output_folder="/path/to/output/folder",
extensions=[".txt", ".json"],
prompt="your_prompt",
threads=2,
model="gpt-4",
force=True,
chunk_size=5000)
## 設計過程prompt
2023-05-21 21:13 Bowen, 增添 README.md 完整說明
- python3 -m to_pip -v 1.0.1 -n to-qa-csv to_qa_csv.py
2023-05-21 16:51 Bowen Chiu prompt 修改偵測 chunk 製作為 sha 256 hex 字串之後,如果輸出的目錄當中有包含檔案名稱有 hex_dig 存在的檔案名字就跳過這個檔案不要製作了 (不要呼叫 prompt_to_ai),改為印出 hex_dig 這個字串已經存在的提示訊息就好 請告訴我該改哪些片段就好
2023-05-21 15:32 Bowen Chiu prompt 處理輸入的 .json 檔案一個就過大了,所以請讓輸入參數多新增一個參數是切割片段以多少字元為切割,預設是 1000 代表不管中文英文字元,都是以 1000 字元切割餵入 prompt_to_ai 每次餵入一次就產生一個 .csv 檔案這樣。當然 1000 要可以參數修改。給我完整修改後程式碼
2023-05-21 15:22 Bowen Chiu prompt -- 我想製作 to_qa_csv.py 目的: 讀取任意純文字檔案,可以是 .txt .json .csv 或任意純文字檔案,適當切割之後讓chatgpt api可以消化(因為gpt-4有max 8k tokens最大限制), 最終轉換為 .csv 一問一答, .csv 欄位有兩個:question, answer
用法: 同時要支援 cli 可以參數運用
用法: 同時要支援 import 套件可以運用呼叫
輸入參數: 使用者名稱,預設是 cbh@cameo.tw
輸入參數: 指定一個 folder,該目錄底下可以有一堆子目錄
輸入參數: 指定一個或多個副檔名,例如 *.txt *.json 甚至 * 就可以抓取多層子目錄底下的每一個檔案來處理
輸入參數: 可以指定轉換變成哪一國語言的 prompt, 預設是: -- 檔案轉換\n請將以下的純文字當中的內容,盡可能忠於原貌的,盡可能越詳細越好仔細的,轉換為 .csv 格式,欄位有 question,answer 兩個欄位,回答時用 --csv_start-- 作為.csv起始,然後回答結尾用 --csv_end-- 作為結束
輸入參數: 可以指定 multi threads 最多有多少 threads 進行轉換作業,預設是 5 threads
輸入參數: 轉換的AI model 預設是 gpt-3.5-turbo, 也可以指定是 gpt-4 或其他
防止重做: 事先判斷,如果輸出的檔案 sha 256 hex 比對時已經存在,就跳過不要重新製作,不要呼叫 prompt_to_ai 轉換,節省時間與成本
強迫重做: 參數如果有 force 參數,就不管輸出檔案是否存在,一律重新呼叫 prompt_to_ai 製作 .csv 輸出
輸入參數: 輸出檔案群 .csv 要放到哪個folder底下,預設目錄是放在 data/users/[使用者名稱]/to_qa_csv/[日期]/*.csv
輸出檔案群.csv檔名規則: 輸出的.csv只有question,answer兩個欄位,然後他的預設檔名舉例是這樣 data/users/cbh_cameo_tw/to_qa_csv/2023-05-21/type_to_qa_csv_time_2023-05-21T04_21_18Z_sha_2ef7bde608ce5404e97d5f042f95f89f1c232871.csv
輸出檔案群.csv檔名規則: 通用的預設輸出檔名規則如下,data/users/cbh_cameo_tw/to_qa_csv/[輸出當天日期]/type_to_qa_csv_time_[輸出當天的UTC時間包含TZ字元]sha[sha 256 hex的字串結果].csv
最新程式碼請參考: 請呼叫 openai_chat_thread_taiwan AI轉換純文字片段轉為.csv的字串部分的轉換,程式碼請用這個: from openai_chat_thread import openai_chat_thread_taiwan def prompt_to_ai(prompt,model='gpt-4'): q = openai_chat_thread_taiwan(prompt,model) lst = [] while True: response = q.get() if response is None: break else: lst.append(response) print(response, end="", flush=True) join_str = ''.join(lst) return join_str