erabi 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- erabi-0.1.0/LICENSE +21 -0
- erabi-0.1.0/PKG-INFO +103 -0
- erabi-0.1.0/README.md +76 -0
- erabi-0.1.0/pyproject.toml +47 -0
- erabi-0.1.0/setup.cfg +4 -0
- erabi-0.1.0/src/erabi/__init__.py +3 -0
- erabi-0.1.0/src/erabi/__main__.py +440 -0
- erabi-0.1.0/src/erabi/api.py +178 -0
- erabi-0.1.0/src/erabi/cache.py +246 -0
- erabi-0.1.0/src/erabi/calibrate.py +309 -0
- erabi-0.1.0/src/erabi/data/calibration/builder.py +122 -0
- erabi-0.1.0/src/erabi/data/calibration/generator.py +243 -0
- erabi-0.1.0/src/erabi/data/general_choice/__init__.py +1 -0
- erabi-0.1.0/src/erabi/data/general_choice/builder.py +180 -0
- erabi-0.1.0/src/erabi/data/general_choice/generator.py +332 -0
- erabi-0.1.0/src/erabi/data/general_choice/validator.py +121 -0
- erabi-0.1.0/src/erabi/data/operators/__init__.py +1 -0
- erabi-0.1.0/src/erabi/data/operators/builder.py +146 -0
- erabi-0.1.0/src/erabi/data/operators/generator.py +824 -0
- erabi-0.1.0/src/erabi/data/operators/validator.py +255 -0
- erabi-0.1.0/src/erabi/data/robustness/__init__.py +1 -0
- erabi-0.1.0/src/erabi/data/robustness/builder.py +140 -0
- erabi-0.1.0/src/erabi/data/robustness/generator.py +280 -0
- erabi-0.1.0/src/erabi/data/robustness/validator.py +136 -0
- erabi-0.1.0/src/erabi/data/sealed_acceptance/builder.py +296 -0
- erabi-0.1.0/src/erabi/evaluate.py +238 -0
- erabi-0.1.0/src/erabi/inference.py +149 -0
- erabi-0.1.0/src/erabi/onnx_engine.py +203 -0
- erabi-0.1.0/src/erabi/schema.py +209 -0
- erabi-0.1.0/src/erabi/semantic_validator.py +418 -0
- erabi-0.1.0/src/erabi/serve.py +57 -0
- erabi-0.1.0/src/erabi/train.py +571 -0
- erabi-0.1.0/src/erabi.egg-info/PKG-INFO +103 -0
- erabi-0.1.0/src/erabi.egg-info/SOURCES.txt +55 -0
- erabi-0.1.0/src/erabi.egg-info/dependency_links.txt +1 -0
- erabi-0.1.0/src/erabi.egg-info/entry_points.txt +2 -0
- erabi-0.1.0/src/erabi.egg-info/requires.txt +18 -0
- erabi-0.1.0/src/erabi.egg-info/top_level.txt +1 -0
- erabi-0.1.0/tests/test_api.py +125 -0
- erabi-0.1.0/tests/test_calibration.py +113 -0
- erabi-0.1.0/tests/test_contracts.py +186 -0
- erabi-0.1.0/tests/test_m3_3.py +136 -0
- erabi-0.1.0/tests/test_m3_7_handoff.py +295 -0
- erabi-0.1.0/tests/test_m4_3_1_semantic_repair.py +171 -0
- erabi-0.1.0/tests/test_m4_4_1_retention.py +92 -0
- erabi-0.1.0/tests/test_m4_4_retention.py +106 -0
- erabi-0.1.0/tests/test_m6_operator.py +60 -0
- erabi-0.1.0/tests/test_m7_robustness.py +101 -0
- erabi-0.1.0/tests/test_m8_general_choice.py +59 -0
- erabi-0.1.0/tests/test_onnx_engine.py +109 -0
- erabi-0.1.0/tests/test_practical_v1.py +32 -0
- erabi-0.1.0/tests/test_rc1_api.py +97 -0
- erabi-0.1.0/tests/test_rc3_1_logic_data.py +112 -0
- erabi-0.1.0/tests/test_repair.py +132 -0
- erabi-0.1.0/tests/test_scores.py +92 -0
- erabi-0.1.0/tests/test_train.py +145 -0
- erabi-0.1.0/tests/test_train_rc3_1.py +186 -0
erabi-0.1.0/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 sugarkwork
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
erabi-0.1.0/PKG-INFO
ADDED
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: erabi
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: ERABI - Local probability distribution engine for choices
|
|
5
|
+
Author: ERABI Project
|
|
6
|
+
License-Expression: MIT
|
|
7
|
+
Project-URL: Repository, https://github.com/sugarkwork/erabi
|
|
8
|
+
Project-URL: Model, https://huggingface.co/sugarknight/erabi-practical-v1-experimental
|
|
9
|
+
Requires-Python: >=3.11
|
|
10
|
+
Description-Content-Type: text/markdown
|
|
11
|
+
License-File: LICENSE
|
|
12
|
+
Requires-Dist: torch
|
|
13
|
+
Requires-Dist: transformers>=4.40.0
|
|
14
|
+
Requires-Dist: gliclass>=0.1.20
|
|
15
|
+
Requires-Dist: pydantic>=2.0.0
|
|
16
|
+
Provides-Extra: api
|
|
17
|
+
Requires-Dist: fastapi>=0.110.0; extra == "api"
|
|
18
|
+
Requires-Dist: uvicorn>=0.28.0; extra == "api"
|
|
19
|
+
Provides-Extra: calibrate
|
|
20
|
+
Requires-Dist: scipy>=1.12.0; extra == "calibrate"
|
|
21
|
+
Provides-Extra: data-gen
|
|
22
|
+
Requires-Dist: openai<3,>=2.54.0; extra == "data-gen"
|
|
23
|
+
Provides-Extra: dev
|
|
24
|
+
Requires-Dist: pytest>=7.0.0; extra == "dev"
|
|
25
|
+
Requires-Dist: httpx>=0.27.0; extra == "dev"
|
|
26
|
+
Dynamic: license-file
|
|
27
|
+
|
|
28
|
+
# ERABI(えらび)
|
|
29
|
+
|
|
30
|
+
ERABIは、`context`(状況)、`question`(判断基準)、2~16個の`choices`(候補)から、全候補の確率分布を返すローカル判断エンジンです。Jevの公式版や再現版ではありません。回答は常に確認対象(`review`)であり、最大確率は正解の保証ではありません。
|
|
31
|
+
|
|
32
|
+
## インストールと最初の推論
|
|
33
|
+
|
|
34
|
+
Python 3.11以上が必要です。PyTorchのGPU版を使う場合は、先に利用環境に合うPyTorchをインストールしてください。
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
python -m pip install erabi
|
|
38
|
+
erabi predict --request '{"schema_version":"1","context":"7冊のノートと2個の消しゴムを買った。","question":"全部で何個?","choices":[{"id":"nine","text":"9個"},{"id":"ten","text":"10個"}]}'
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
PowerShellではJSONの引用規則が異なるため、リポジトリを取得して `erabi predict --request examples/request.json` とするのが簡単です。初回は約1.75GBのモデルダウンロードが必要で、以降はHugging Faceのローカルキャッシュを再利用します。ネットワークが使えない場合は、事前取得したモデルのローカルディレクトリを`--model-id`で指定してください。
|
|
42
|
+
|
|
43
|
+
無指定の既定値は公開済みの[ERABI Practical V1実験モデル](https://huggingface.co/sugarknight/erabi-practical-v1-experimental)です。正式合格モデルではなく、未レビュー合成データで追加学習した未校正weightsです。別のモデルを使う場合はローカルパスまたはHugging FaceのモデルIDを指定できます。
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
erabi predict --request examples/request.json --model-id path/to/checkpoint
|
|
47
|
+
# または、利用するモデルIDを既定値として設定
|
|
48
|
+
export ERABI_MODEL_ID=owner/model-name
|
|
49
|
+
erabi predict --request examples/request.json
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
`erabi doctor` はCPU/CUDAと空き容量を表示します。`erabi evaluate --input examples/smoke_cases.jsonl --output-dir runs/smoke` は評価ファイルを処理します。ローカルHTTP APIはオプション依存を入れて `python -m erabi.serve --model-id path/to/checkpoint` で起動します(localhost限定)。
|
|
53
|
+
|
|
54
|
+
## 入出力とデータセット形式
|
|
55
|
+
|
|
56
|
+
推論入力はUTF-8 JSONです。候補の`id`と順序を保ち、全候補のlogitsに対して1回だけSoftmaxを適用します。入力全体が512トークンを超える場合は無言で切り詰めずにエラーにします。
|
|
57
|
+
|
|
58
|
+
```json
|
|
59
|
+
{
|
|
60
|
+
"schema_version": "1",
|
|
61
|
+
"context": "文房具店でノートを7冊、消しゴムを2個買った。",
|
|
62
|
+
"question": "全部で何個買った?",
|
|
63
|
+
"choices": [
|
|
64
|
+
{"id": "a", "text": "9個"},
|
|
65
|
+
{"id": "b", "text": "10個"}
|
|
66
|
+
]
|
|
67
|
+
}
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
出力の`choices`は各候補の`id`と`probability`を入力順で返し、`best_candidate_id`は最大logitの候補を示します。`decision.status`は既定で`review`、未校正の`calibration.status`は`none`です。例は[examples/request.json](examples/request.json)を参照してください。
|
|
71
|
+
|
|
72
|
+
学習・評価データは1行1問のJSONLです。上の入力に加えて、最低限`id`、`group_id`、`target`を付けます。`group_id`は同じ原題の言い換えや候補順序違いをまとめ、train/dev/calibration/final_test間で重複させません。
|
|
73
|
+
|
|
74
|
+
```json
|
|
75
|
+
{"schema_version":"1","id":"sample-001","group_id":"story-001","context":"ノート7冊と消しゴム2個を買った。","question":"全部で何個?","choices":[{"id":"a","text":"9個"},{"id":"b","text":"10個"}],"target":{"kind":"hard","choice_id":"a"},"language":"ja","family":"everyday_arithmetic","review_status":"unreviewed"}
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
`target.choice_id`は選択肢のIDを参照し、選択肢を並べ替えても正しいIDを保ちます。`language`、`family`、`review_status`などは出所・品質の追跡用メタデータです。合成教師ラベルを人手確認済みgoldと呼ばないことが重要です。[Practical V1のデータ説明](data/practical_v1/README.md)に生成・監査の詳細があります。
|
|
79
|
+
|
|
80
|
+
## 学習と評価で得られた知見
|
|
81
|
+
|
|
82
|
+
2026-09-22時点の追加学習実験では、凍結RC3(約438Mパラメータ)からPractical V1のtrain 2,414問のみで1 epoch、151 optimizer steps、peak LR 2.5e-6、microbatch 2・勾配蓄積8、fp16 AMPを実施しました。dev 399問と旧RC3 Bridge 480問で選定し、eval 386問は選定後に一度だけ評価しました。release weightsは上書きしていません。
|
|
83
|
+
|
|
84
|
+
| セット | 学習前 | 学習後 |
|
|
85
|
+
|---|---:|---:|
|
|
86
|
+
| Practical V1 dev | 59.90% (239/399) | 77.19% (308/399) |
|
|
87
|
+
| Practical V1 eval | 61.66% (238/386) | 76.17% (294/386) |
|
|
88
|
+
| 旧RC3 Bridge | 88.75% (426/480) | 88.54% (425/480) |
|
|
89
|
+
|
|
90
|
+
新データでは日常算数23/68→48/68、ツール選択50/70→62/70、JSONログ判断51/69→65/69と改善しましたが、読解は54/71→50/71に低下しました。候補順序の入替一致率は旧Bridgeで97.29%→97.50%でした。**同一教師モデルが作成・再判定した未レビュー合成データ上の結果**であり、独立した人手goldでの汎化性能、実在入試問題の成績、Jevとの同等性は示しません。現時点では校正・正式リリースも未実施です。
|
|
91
|
+
|
|
92
|
+
Practical V1は日本語・英語・簡体字中国語の6分野(日常算数、ツール選択、会話の次行動、JSON会話ログ、読解、創作入試風)で構成されます。実在の入試問題や私的会話ログは利用していません。生成・再判定に使ったDeepSeek経由の料金推計は$1.0612で、追加予算枠は使いませんでした。より信頼できる次の評価には、人手ラベル監査と独立した実問題の調達が必要です。
|
|
93
|
+
|
|
94
|
+
再現用コードは[scripts/train_practical_v1.py](scripts/train_practical_v1.py)、監査結果は[data/practical_v1/audit.json](data/practical_v1/audit.json)にあります。この学習スクリプトの再実行には別途RC3チェックポイントが`release/rc3/model`に必要です。GPU学習と大容量weightsはpipパッケージに含まれません。
|
|
95
|
+
|
|
96
|
+
## 開発とライセンス
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
python -m pip install -e ".[dev]"
|
|
100
|
+
python -m pytest tests -q
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
コードは[MIT License](LICENSE)です。ベースモデルと学習済みweightsには別のライセンスが適用されます。[THIRD_PARTY_LICENSES.md](THIRD_PARTY_LICENSES.md)を参照してください。
|
erabi-0.1.0/README.md
ADDED
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
# ERABI(えらび)
|
|
2
|
+
|
|
3
|
+
ERABIは、`context`(状況)、`question`(判断基準)、2~16個の`choices`(候補)から、全候補の確率分布を返すローカル判断エンジンです。Jevの公式版や再現版ではありません。回答は常に確認対象(`review`)であり、最大確率は正解の保証ではありません。
|
|
4
|
+
|
|
5
|
+
## インストールと最初の推論
|
|
6
|
+
|
|
7
|
+
Python 3.11以上が必要です。PyTorchのGPU版を使う場合は、先に利用環境に合うPyTorchをインストールしてください。
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
python -m pip install erabi
|
|
11
|
+
erabi predict --request '{"schema_version":"1","context":"7冊のノートと2個の消しゴムを買った。","question":"全部で何個?","choices":[{"id":"nine","text":"9個"},{"id":"ten","text":"10個"}]}'
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
PowerShellではJSONの引用規則が異なるため、リポジトリを取得して `erabi predict --request examples/request.json` とするのが簡単です。初回は約1.75GBのモデルダウンロードが必要で、以降はHugging Faceのローカルキャッシュを再利用します。ネットワークが使えない場合は、事前取得したモデルのローカルディレクトリを`--model-id`で指定してください。
|
|
15
|
+
|
|
16
|
+
無指定の既定値は公開済みの[ERABI Practical V1実験モデル](https://huggingface.co/sugarknight/erabi-practical-v1-experimental)です。正式合格モデルではなく、未レビュー合成データで追加学習した未校正weightsです。別のモデルを使う場合はローカルパスまたはHugging FaceのモデルIDを指定できます。
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
erabi predict --request examples/request.json --model-id path/to/checkpoint
|
|
20
|
+
# または、利用するモデルIDを既定値として設定
|
|
21
|
+
export ERABI_MODEL_ID=owner/model-name
|
|
22
|
+
erabi predict --request examples/request.json
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
`erabi doctor` はCPU/CUDAと空き容量を表示します。`erabi evaluate --input examples/smoke_cases.jsonl --output-dir runs/smoke` は評価ファイルを処理します。ローカルHTTP APIはオプション依存を入れて `python -m erabi.serve --model-id path/to/checkpoint` で起動します(localhost限定)。
|
|
26
|
+
|
|
27
|
+
## 入出力とデータセット形式
|
|
28
|
+
|
|
29
|
+
推論入力はUTF-8 JSONです。候補の`id`と順序を保ち、全候補のlogitsに対して1回だけSoftmaxを適用します。入力全体が512トークンを超える場合は無言で切り詰めずにエラーにします。
|
|
30
|
+
|
|
31
|
+
```json
|
|
32
|
+
{
|
|
33
|
+
"schema_version": "1",
|
|
34
|
+
"context": "文房具店でノートを7冊、消しゴムを2個買った。",
|
|
35
|
+
"question": "全部で何個買った?",
|
|
36
|
+
"choices": [
|
|
37
|
+
{"id": "a", "text": "9個"},
|
|
38
|
+
{"id": "b", "text": "10個"}
|
|
39
|
+
]
|
|
40
|
+
}
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
出力の`choices`は各候補の`id`と`probability`を入力順で返し、`best_candidate_id`は最大logitの候補を示します。`decision.status`は既定で`review`、未校正の`calibration.status`は`none`です。例は[examples/request.json](examples/request.json)を参照してください。
|
|
44
|
+
|
|
45
|
+
学習・評価データは1行1問のJSONLです。上の入力に加えて、最低限`id`、`group_id`、`target`を付けます。`group_id`は同じ原題の言い換えや候補順序違いをまとめ、train/dev/calibration/final_test間で重複させません。
|
|
46
|
+
|
|
47
|
+
```json
|
|
48
|
+
{"schema_version":"1","id":"sample-001","group_id":"story-001","context":"ノート7冊と消しゴム2個を買った。","question":"全部で何個?","choices":[{"id":"a","text":"9個"},{"id":"b","text":"10個"}],"target":{"kind":"hard","choice_id":"a"},"language":"ja","family":"everyday_arithmetic","review_status":"unreviewed"}
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
`target.choice_id`は選択肢のIDを参照し、選択肢を並べ替えても正しいIDを保ちます。`language`、`family`、`review_status`などは出所・品質の追跡用メタデータです。合成教師ラベルを人手確認済みgoldと呼ばないことが重要です。[Practical V1のデータ説明](data/practical_v1/README.md)に生成・監査の詳細があります。
|
|
52
|
+
|
|
53
|
+
## 学習と評価で得られた知見
|
|
54
|
+
|
|
55
|
+
2026-09-22時点の追加学習実験では、凍結RC3(約438Mパラメータ)からPractical V1のtrain 2,414問のみで1 epoch、151 optimizer steps、peak LR 2.5e-6、microbatch 2・勾配蓄積8、fp16 AMPを実施しました。dev 399問と旧RC3 Bridge 480問で選定し、eval 386問は選定後に一度だけ評価しました。release weightsは上書きしていません。
|
|
56
|
+
|
|
57
|
+
| セット | 学習前 | 学習後 |
|
|
58
|
+
|---|---:|---:|
|
|
59
|
+
| Practical V1 dev | 59.90% (239/399) | 77.19% (308/399) |
|
|
60
|
+
| Practical V1 eval | 61.66% (238/386) | 76.17% (294/386) |
|
|
61
|
+
| 旧RC3 Bridge | 88.75% (426/480) | 88.54% (425/480) |
|
|
62
|
+
|
|
63
|
+
新データでは日常算数23/68→48/68、ツール選択50/70→62/70、JSONログ判断51/69→65/69と改善しましたが、読解は54/71→50/71に低下しました。候補順序の入替一致率は旧Bridgeで97.29%→97.50%でした。**同一教師モデルが作成・再判定した未レビュー合成データ上の結果**であり、独立した人手goldでの汎化性能、実在入試問題の成績、Jevとの同等性は示しません。現時点では校正・正式リリースも未実施です。
|
|
64
|
+
|
|
65
|
+
Practical V1は日本語・英語・簡体字中国語の6分野(日常算数、ツール選択、会話の次行動、JSON会話ログ、読解、創作入試風)で構成されます。実在の入試問題や私的会話ログは利用していません。生成・再判定に使ったDeepSeek経由の料金推計は$1.0612で、追加予算枠は使いませんでした。より信頼できる次の評価には、人手ラベル監査と独立した実問題の調達が必要です。
|
|
66
|
+
|
|
67
|
+
再現用コードは[scripts/train_practical_v1.py](scripts/train_practical_v1.py)、監査結果は[data/practical_v1/audit.json](data/practical_v1/audit.json)にあります。この学習スクリプトの再実行には別途RC3チェックポイントが`release/rc3/model`に必要です。GPU学習と大容量weightsはpipパッケージに含まれません。
|
|
68
|
+
|
|
69
|
+
## 開発とライセンス
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
python -m pip install -e ".[dev]"
|
|
73
|
+
python -m pytest tests -q
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
コードは[MIT License](LICENSE)です。ベースモデルと学習済みweightsには別のライセンスが適用されます。[THIRD_PARTY_LICENSES.md](THIRD_PARTY_LICENSES.md)を参照してください。
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=77.0.0"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "erabi"
|
|
7
|
+
version = "0.1.0"
|
|
8
|
+
description = "ERABI - Local probability distribution engine for choices"
|
|
9
|
+
authors = [
|
|
10
|
+
{ name = "ERABI Project" }
|
|
11
|
+
]
|
|
12
|
+
readme = "README.md"
|
|
13
|
+
license = "MIT"
|
|
14
|
+
license-files = ["LICENSE"]
|
|
15
|
+
requires-python = ">=3.11"
|
|
16
|
+
dependencies = [
|
|
17
|
+
"torch",
|
|
18
|
+
"transformers>=4.40.0",
|
|
19
|
+
"gliclass>=0.1.20",
|
|
20
|
+
"pydantic>=2.0.0",
|
|
21
|
+
]
|
|
22
|
+
|
|
23
|
+
[project.scripts]
|
|
24
|
+
erabi = "erabi.__main__:main"
|
|
25
|
+
|
|
26
|
+
[project.optional-dependencies]
|
|
27
|
+
api = [
|
|
28
|
+
"fastapi>=0.110.0",
|
|
29
|
+
"uvicorn>=0.28.0",
|
|
30
|
+
]
|
|
31
|
+
calibrate = [
|
|
32
|
+
"scipy>=1.12.0",
|
|
33
|
+
]
|
|
34
|
+
data-gen = [
|
|
35
|
+
"openai>=2.54.0,<3",
|
|
36
|
+
]
|
|
37
|
+
dev = [
|
|
38
|
+
"pytest>=7.0.0",
|
|
39
|
+
"httpx>=0.27.0",
|
|
40
|
+
]
|
|
41
|
+
|
|
42
|
+
[project.urls]
|
|
43
|
+
Repository = "https://github.com/sugarkwork/erabi"
|
|
44
|
+
Model = "https://huggingface.co/sugarknight/erabi-practical-v1-experimental"
|
|
45
|
+
|
|
46
|
+
[tool.setuptools.packages.find]
|
|
47
|
+
where = ["src"]
|
erabi-0.1.0/setup.cfg
ADDED