๐ SecGPT๏ผๅ จ็้ฆไธช็ฝ็ปๅฎๅ จๅผๆบๅคงๆจกๅ
๐ ๆจกๅ็ฎไป
SecGPT ๆฏ็ฑ ไบ่ตทๆ ๅ ไบ 2023 ๅนดๆญฃๅผๆจๅบ็ๅผๆบๅคงๆจกๅ๏ผไธไธบ็ฝ็ปๅฎๅ จๅบๆฏๆ้ ๏ผๆจๅจไปฅไบบๅทฅๆบ่ฝๆๆฏๅ จ้ขๆๅๅฎๅ จ้ฒๆคๆ็ไธๆๆใ
โ ๆไปฌ็ๆฟๆฏ๏ผๆจๅจ็ฝ็ปๅฎๅ จๆบ่ฝๅ๏ผไธบ็คพไผๆๅปบๆดๅฎๅ จ็ๆฐๅญ็ฉบ้ด ๐ ๆไปฌ็ไฝฟๅฝ๏ผ่ฎฉๆฏไธๅฎถไผไธ๏ผ้ฝ่ฝๆฅๆไธไธชโๆๅฎๅ จโ็ๆบ่ฝๅฉๆ
SecGPT ่ๅไบ่ช็ถ่ฏญ่จ็่งฃใไปฃ็ ็ๆใๅฎๅ จ็ฅ่ฏๆจ็็ญๆ ธๅฟ่ฝๅ๏ผๅทฒๆๅ่ฝๅฐๅคไธชๅ ณ้ฎๅฎๅ จไปปๅกๅบๆฏ๏ผ
- ๐ ๆผๆดๅๆ๏ผ็่งฃๆผๆดๆๅ ใ่ฏไผฐๅฝฑๅ่ๅดใ็ๆไฟฎๅคๅปบ่ฎฎ
- ๐งญ ๆฅๅฟไธๆต้ๆบฏๆบ๏ผ่ฟๅๆปๅป่ทฏๅพใๅๆๆปๅป้พ๏ผ่พ ๅฉไบไปถๅค็
- โ ๏ธ ๅผๅธธๆฃๆต๏ผ่ฏๅซๆฝๅจๅจ่๏ผๆๅๅฎๅ จๆ็ฅไธๅๅบ่ฝๅ
- ๐ฏ ๆป้ฒๆจ็๏ผๆๅกไบ็บข้ๆผ็ปใ่้ๅๆ๏ผๆฏๆๅฎๆๅณ็ญ
- ๐ ๅฝไปค่งฃๆ๏ผๅๆๆปๅป่ๆฌ๏ผ่ฏๅซๆๅพไธ้ซๅฑๆไฝ
- ๐ฌ ๅฎๅ จ็ฅ่ฏ้ฎ็ญ๏ผๅข้โๅณ้ฎๅณ็ญโ็็ฅ่ฏๅผๆ
๐ง ๆๆฐๅจๆ
- 2025ๅนด4ๆ๏ผSecGPT V2.0 ๅๅธ๏ผๅ จ้ขๅ็บงๅฎๅ จ็่งฃไธไปปๅกๆง่ก่ฝๅ
- 2024ๅนด3ๆ๏ผ่ฝป้ๅ็ๆฌ SecGPT-Mini ๆญฃๅผๅผๆบ๏ผๅฏๅจ CPU ไธ้ซๆ่ฟ่ก
- 2023ๅนด12ๆ๏ผSecGPT ๆญฃๅผๅๅธ๏ผๆไธบๅ จ็้ฆไธชๅผๆบ็ฝ็ปๅฎๅ จๅคงๆจกๅ
๐ ๅผๆบ่ตๆบ
๐ง ๆจกๅ้จ็ฝฒ
SecGPT ๆฏๆ้่ฟ vLLM ้ซๆง่ฝๆจ็ๆกๆถ้จ็ฝฒ๏ผ้็จไบ ไฝๅปถ่ฟใ้ซๅนถๅใๅคงๅๅ้ ็ๅฎๅ จๆจกๅๆๅกๅบๆฏใ
็ฏๅขๅๅคไธๆๅกๅฏๅจ๏ผ
# ๅๅปบ Python ็ฏๅข๏ผๅปบ่ฎฎ Python 3.10+๏ผ
conda create -n secgpt-vllm python=3.10 -y
conda activate secgpt-vllm
# ๅฎ่ฃ
vLLM๏ผ้ๅ
ทๅค PyTorch + CUDA๏ผ
pip install --upgrade pip
pip install vllm
# ๅฏๅจserver ๆๅก
CUDA_VISIBLE_DEVICES= xxx(GPU index) \
vllm serve ./secgpt \
--tokenizer ./secgpt \
--tensor-parallel-size 4 \
--max-model-len 32768 \
--gpu-memory-utilization 0.9 \
--dtype bfloat16 \
# ็คบไพ่ฏทๆฑ
curl http://localhost:8000/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "secgpt",
"messages": [{"role": "user", "content": "ไปไนๆฏ XSS ๆปๅป๏ผ"}],
"temperature": 0.7
}'
ๆฌ่ฝฎๆดๆฐไบฎ็น๏ผ
1. ๆดๅผบ็ๅบๅบง่ฝๅ๏ผ้็จ+ๅฎๅ จๆทฑๅบฆ่ๅ
ๆไปฌๅบไบ Qwen2.5-Instruct ็ณปๅ ไธ DeepSeek-R1 ็ณปๅ ๆจกๅ๏ผ็ปๅ่ชๅปบๅฎๅ จไปปๅก้ไธๅฎๅ จ็ฅ่ฏๅบ๏ผ ๅจ 8ๅฐA100 GPU ้็พคไธๆ็ปญ่ฎญ็ปไธๅจไปฅไธ๏ผๅฎๆๅคง่งๆจก้ข่ฎญ็ป + ๆไปคๅพฎ่ฐ + ๅผบๅๅญฆไน ๏ผ ๆพ่ๆๅๆจกๅๅจๅฎๅ จๅบๆฏไธญ็็่งฃใๆจ็ไธๅๅบ่ฝๅใ
ไธๅพๅฑ็คบไบไธๆฌก่ฎญ็ป่ฟ็จไธญๅๅ ณ้ฎๆๆ ็ๆผๅ่ฝจ่ฟน๏ผ
- ่ฎญ็ปไธ้ช่ฏๆๅคฑ๏ผtrain/loss ไธ eval/loss๏ผ๏ผไบ่ ๅๅ็ฐๅบๅนณ็จณไธ้่ถๅฟ๏ผ่ฏดๆๆจกๅๅจ่ฎญ็ป้ไธ้ช่ฏ้ไธๅๆ็ปญๆถๆ๏ผๆชๅบ็ฐ่ฟๆๅ่ฟน่ฑกใ
- ๅญฆไน ็ๆฒ็บฟ๏ผtrain/learning_rate๏ผ๏ผ้็จๅ ธๅ็ Warmup + ่กฐๅ็ญ็ฅ๏ผๆๆๆๅไบๆฉๆ่ฎญ็ป็็จณๅฎๆงไธๆถๆ้ๅบฆใ
- ๆขฏๅบฆ่ๆฐ๏ผtrain/grad_norm๏ผ๏ผๆดไฝๆณขๅจๅนณ็จณ๏ผไป ๅจๅฐๆฐๆญฅๆฐๅญๅจ่ฝปๅพฎๅฐๅณฐ๏ผๆชๅบ็ฐๆขฏๅบฆ็็ธๆๆถๅคฑ๏ผ่กจๆ่ฎญ็ป่ฟ็จๅฅๅบท็จณๅฎใ
- ่ฏไผฐ่กจ็ฐ๏ผ
eval/runtime
ไธeval/samples_per_second
ๆณขๅจ่ๅดๅฐ๏ผ่ฏดๆๅจ่ฏไผฐ่ฟ็จไธญ็ณป็ป่ตๆบไฝฟ็จ้ซๆ๏ผๆจ็ๅๅ้็จณๅฎใ - ๅ ถไปๆๆ ๅฆ่ฎญ็ป่ฝฎๆฐ๏ผtrain/epoch๏ผใ่พๅ ฅ token ๆฐ้๏ผtrain/num_input_tokens_seen๏ผ็ญไน่กจๆ่ฎญ็ป่ฟ็จๅฆๆ่ฟ่ก๏ผ่พพๆ้ขๆ่ฎกๅใ
2. ๆดๅคง็้ซ่ดจ้ๅฎๅ จ่ฏญๆๅบ๏ผ็งๆ + ๅ ฌๅ ฑๆฐๆฎๅ่ฝฎ้ฉฑๅจ
ๆไปฌๅทฒๆๅปบไบไธไธช่ถ ๅคง่งๆจกใ็ปๆๅฎๅค็็ฝ็ปๅฎๅ จ่ฏญๆๅบ๏ผๆป้่ถ ่ฟ 5TBใๅ ฑ่ฎก 106,721 ไธชๅๅงๆไปถ๏ผๅ ถไธญ่ถ ่ฟ 40% ๅ ๅฎนไธบไบบๅทฅ็ฒพ้ไธ็ปๆๅๅค็ใ็งๆๆฐๆฎ้จๅ็ณป็ปๆดๅไบๅ ทๅค 70+ ๅญๆฎต / 14 ็ฑป็ปๆๆ ็ญพไฝ็ณป ็ๅฎๅ จๆฐๆฎ่ตๆบ๏ผ็ป่ฟ็ปไธๆธ ๆดใ่ฏญไนๆ ๆณจไธ้ๆ๏ผๆๅปบๅบ ๆฐ็พไบฟ Tokens ็บง็้ซ่ดจ้่ฏญๆ๏ผไธบๅคงๆจกๅๆทฑๅบฆๆจ็่ฝๅๆไพๅๅฎๆฏๆใ
ไธๅพๅฑ็คบไบ่ฏฅ่ฏญๆๅบ็ๆๆ็ปดๅบฆ๏ผๆดไฝ้้้ป่พ้ตๅพชโ็่ฎบๆฏๆ โ ๅฎๆๅฏนๆ โ ๅบ็จ่ฝๅฐโไธๅฑ็ปๆไฝ็ณป๏ผ
- ็่ฎบๆฏๆ๏ผๆถต็ๆณๅพๆณ่งใๅญฆๆฏ่ฎบๆใ่กไธๆฅๅ็ญๆๅจ่ตๆ๏ผไธบๆจกๅๆไพ็จณๅบ็็ฅ่ฏๅบๅบง๏ผ
- ๅฎๆๅฏนๆ๏ผๅ ๆฌๆผๆด่ฏฆๆ ใCTF้ขๅบใๆฅๅฟๆต้ใๆถๆๆ ทๆฌไธ้ๅๅๆ็ญๆฐๆฎ๏ผๆๅๆจกๅๅฏน็ๅฎๆปๅป่กไธบ็่ฏๅซไธ่ฟฝ่ธช่ฝๅ๏ผ
- ๅบ็จ่ฝๅฐ๏ผๆถต็ๅฎๅ จ็คพๅบๅๅฎขใๆ่ฒๅน่ฎญ่ตๆใๅฎๅ จ็ฅ่ฏๅพ่ฐฑไธ่ชๅจๅ็ญ็ฅ๏ผๅขๅผบๆจกๅๅจๅฎๅ จ่ฟ่ฅใ่พ ๅฉๅณ็ญ็ญๅบๆฏไธญ็้้ ่ฝๅใ
๐งช ๆจกๅ่ฏๆตไธ่ฝๅๅๆ
1. ๆจกๅ่ฝๅ่ฏๆต๏ผๅ จ้ขๆๆ ่ทๅ๏ผๅฎๆๆบ่ฝๅ็ฐ
ไธบๅ จ้ข่ฏไผฐ SecGPT ็ๅฎๅ จๅฎๆ่ฝๅ๏ผๆไปฌๆๅปบไบไธๅฅ่ฆ็ๅฎๅ จ่ฏไนฆ้ฎ็ญใๅฎๅ จ้่ฏใ็ผ็จ่ฝๅใ็ฅ่ฏ็่งฃไธๆจ็่ฝๅ็็ปผๅ่ฏไผฐไฝ็ณป๏ผไธป่ฆ้็จไปฅไธๆ ๅๅๆฐๆฎ้๏ผCISSPใCS-EVALใCEVALใGSM8KใBBHใ
่ฏๆต้ๅ็งฐ | ็ฎ่ฆ่ฏดๆ | ๅ่้พๆฅ |
---|---|---|
CISSP | ๆๅจไฟกๆฏๅฎๅ จ่ฎค่ฏไฝ็ณป๏ผ่ๅฏๆจกๅๅจๅฎๅ จ็ฎก็ใ่ฎฟ้ฎๆงๅถใ้ฃ้ฉๆฒป็็ญ้ขๅ็ไธไธ็ฅ่ฏ่ฆ็ๅบฆไธ็ญ้ขๅ็กฎ็๏ผ้็จไบ่ฏไผฐๆจกๅๅจ้็จไฟกๆฏๅฎๅ จ้ขๅ็ๆๆก็จๅบฆใ | ISCยฒ ๅฎๆน็ฝ็ซ ่ฎค่ฏ่่ฏๆๅ |
CS-Eval | ้ขๅ็ฝ็ปๅฎๅ จไปปๅก็ๅคงๆจกๅ่ฝๅ็ปผๅ่ฏๆต้๏ผ่ฆ็ 11 ไธช็ฝ็ปๅฎๅ จไธป็ฑปใ42 ไธชๅญ็ฑป๏ผๅ ฑ่ฎก 4369 ้้ข็ฎ๏ผๅ ๅซ้ๆฉ้ขใๅคๆญ้ขใ็ฅ่ฏๆฝๅ็ญ้ขๅ๏ผๅ ผ้กพ็ฅ่ฏๆงไธๅฎๆๆง๏ผ็จไบ่ฏไผฐๆจกๅ็ๅฎๅ จ้่ฏไธไปปๅกๆง่ก่ฝๅใ | ModelScope ๆฐๆฎ้ ่ฎบๆไป็ป (arXiv) |
C-Eval | ไธญๆ่ฝๅ่ฏไผฐใ็ฑไธๆตทไบค้ๅคงๅญฆใๆธ ๅๅคงๅญฆๅ็ฑไธๅ กๅคงๅญฆ็็ ็ฉถไบบๅๅจ2023ๅนด5ๆ่ๅๆจๅบใๅ ๅซ13948ไธชๅค้กน้ๆฉ้ข๏ผๆถต็ไบ52ไธชไธๅ็ๅญฆ็งๅๅไธช้พๅบฆ็บงๅซใ | ่ฎบๆ้พๆฅ (arXiv) CSDN ๅฎ่ทตไป็ป |
GSM8K | ่งฃๅณๆฐๅญฆ้ฎ้ข็่ฝๅใGoogleๅผๅ็ไธไธชๆฐๅญฆ้ฎ้ขๆฑ่งฃๆฐๆฎ้๏ผๅ ๅซๅคง็บฆ8,000ไธช้ซไธญๅฐๅคงๅญฆๆฐดๅนณ็ๆฐๅญฆ้ฎ้ขใ | GSM8K GitHub |
BBH | ๅคๆ่ฏญ่จ็่งฃ่ฝๅใ็ฑGoogleใๆฏๅฆ็ฆ็ญ็ ็ฉถไบบๅๅผๅ็ๆฐๆฎ้๏ผๅ ๅซๅคง้ๅคๆ่ฏญ่จ็่งฃไปปๅก็้ๅ๏ผๅฏ่ฝๅ ๅซ้่ฆๆทฑๅบฆๆจ็ใๅธธ่ฏ่ฟ็จๆๅคๆ่ฎค็ฅๆ่ฝ็ไปปๅกใ | ่ฎบๆ้พๆฅ (arXiv) |
ๅจไธๅๅงๆจกๅ SecGPT-mini ็ๅฏนๆฏไธญ๏ผ่ฎญ็ปๅ็ๆจกๅๅจๆๆๆๆ ไธๅๅฎ็ฐๅคงๅน ่ทๅ๏ผๅ ทไฝๅฆไธ๏ผ
1.1 ๆจกๅ็บตๅ่ฏๆตๅฏนๆฏ
ๆจกๅ็ๆฌ | CISSP | CS-EVAL | CEVAL | GSM8K | BBH |
---|---|---|---|---|---|
SecGPT-mini | 25.67 | 39.64 | 37.50 | 3.87 | 21.80 |
SecGPT-1.5B | 71.09๐บ+45.42 | 81.53 ๐บ+41.89 | 53.5 ๐บ+16.00 | 57.47๐บ+53.60 | 45.17๐บ+23.37 |
SecGPT-7B | 78.23๐บ+52.97 | 85.12 ๐บ+45.48 | 72.89๐บ+35.39 | 76.88๐บ+73.01 | 67.08๐บ+45.28 |
SecGPT-14B | 77.37๐บ+51.70 | 86.12 ๐บ+46.48 | 59.45๐บ+29.95 | 88.25๐บ+84.38 | 75.90๐บ+54.10 |
๐ ่ฝๅ่ทๅ่งฃ่ฏป๏ผ
- mini โ 1.5B๏ผๅ ทๅคโ่ฝ็ญๅฏนโ็ๅบ็ก้ฎ็ญ่ฝๅ๏ผ้้ ไธญไฝๅคๆๅบฆไปปๅก๏ผ
- 1.5B โ 7B๏ผๆจ็ๆทฑๅบฆใๆณๅ่ฝๅๆพ่ๅขๅผบ๏ผ่ฝ็่งฃไปปๅกๆๅพๅนถๆๅปบ่พไธบๅฎๆด็่งฃๅณ่ทฏๅพ๏ผ
- 7B โ 14B๏ผ่ฝๅ่ท่ฟ่ณโ็ฑปไธๅฎถโ็บง๏ผ่ฝๅคๅค็้ซๅคๆๅบฆๆจ็ใๅฎๅ จ็ญ็ฅๅถๅฎ็ญ้ซ้ถไปปๅกใ
1.2 ๆจกๅๆจชๅ่ฏๆตๅฏนๆฏ
็ธ่พไบๅบ็กๆจกๅ Qwen2.5-Instruct๏ผSecGPT ๅจๆๆ่ฏๆตๆๆ ไธๅๅฎ็ฐๅฎ่ดจๆง่ถ ่ถ๏ผๅๆ ๅบๆไปฌๅจๆฐๆฎๆๅปบใๅพฎ่ฐ่ๅผใๅฎๅ จไปปๅก็ฒพ่ฐๆบๅถไธ็ๆดไฝไผๅๆๆ๏ผ
ๆจกๅ็ๆฌ | CISSP โ | CS-EVAL โ | CEVAL โ | GSM8K โ | BBH โ |
---|---|---|---|---|---|
Qwen2.5-1.5B | 52.97 | 71.66 | 59.91 | 61.03 | 43.44 |
SecGPT-1.5B | 71.09 | 81.53 | 53.5 | 57.47 | 45.17 |
Qwen2.5-7B | 66.30 | 84.66 | 74.97 | 80.36 | 71.20 |
SecGPT-7B | 78.23 | 85.12 | 72.89 | 76.88 | 67.08 |
Qwen2.5-14B | 71.09 | 86.22 | 68.57 | 90.03 | 78.25 |
SecGPT-14B | 77.37 | 86.12 | 59.45 | 88.25 | 75.90 |
๐ก ๆดๅฏไบฎ็น๏ผ
- ๅจ CISSP ๅ CS-EVAL ็ญๅฎๅ จ็ฑปๆฐๆฎ้ไธ๏ผSecGPT ๅจๆๆๅๆฐ่งๆจกไธๅ่กจ็ฐไผไบ Qwen2.5 ๅ่งๆ ผ็ๆฌ๏ผ
- ่กจๆๆไปฌๆๅปบ็ๅฎๅ จไปปๅกๆไปค้ไธ็ฒพ่ฐ็ญ็ฅๅทฒๆพ่ๆๅๆจกๅ็ๅฎๆๅบ็จ่ฝๅไธไธไธ้ฎ็ญๆทฑๅบฆใ
2. ๅฎๅ จ่ฝๅๆๅ๏ผๆดๅ จใๆดๅใๆดไธไธ
ๆฌ่ฝฎๅ็บงไธญ๏ผSecGPT ๅจๅฎๅ จ็ฅ่ฏ้ฎ็ญๆน้ขๅฎๆไบไปไฟกๆฏๆดๅๅฐ้ป่พ่พๅบ็่ฝๅ่ท่ฟ๏ผๅ ทไฝไฝ็ฐๅจ๏ผ
- ็ฅ่ฏ่ฆ็ๆดๅ จ้ข๏ผๅผๅ ฅไบๆถต็ๆณๅพๆณ่งใๆปๅปๆๆฏใ้ๅๅๆ็ญ14็ฑปๅฎๅ จ็ฅ่ฏ้ขๅ็็ปๆๅ่ฏญๆ๏ผ
- ็ญๆก็ๆๆด็ฒพๅ๏ผ้่ฟๅค่ฝฎๅฏน่ฏๆงๅถไธ่ฏญไนไผๅๆๆฏ๏ผๆๅไบ้ฎ็ญๅฏน้ฝ็ไธไธไธๆ่ฎฐๅฟ็จณๅฎๆง๏ผ
- ๆจ็่ฝๅๆด็ชๅบ๏ผๅ ทๅคๅคๆฎต็ฅ่ฏ่็ปไธๅคๅ้ป่พๆจๆผ่ฝๅ๏ผ่ฝๅฎๆๅฆๆปๅป้พๅๆใๅจ่็ ๅค็ญๅคๆไปปๅกใ
2.1 ๆธ้ๆต่ฏๅบๆฏ่ฝๅ๏ผ
SecGPT ่ฝๅคๆจกๆๆธ้ๆปๅปๆต็จ๏ผไปไฟกๆฏๆถ้ใๆผๆดๅฉ็จๅฐๆๆๆจชๅ๏ผๅ ทๅคๅ ณ้ฎๅทฅๅ ทๅฝไปคๅๆใPayload ๆ้ ใๅฉ็จ้พ็ๆ็ญ่ฝๅใ
2.2 ๆฅๅฟๅๆๅๆต้ๅๆ่ฝๅ
ๅจๅฎๅ จๆฅๅฟไธ็ฝ็ปๆต้ๅบๆฏไธ๏ผSecGPT ่ฝ่ชๅจ่ฏๅซๅผๅธธไบไปถใๆๅปบๆปๅป้พๅพ่ฐฑใๆฝๅๅ ณ้ฎ IOC๏ผIndicator of Compromise๏ผ๏ผ่พ ๅฉๅฎๆไบไปถๆบฏๆบไธๅ่ญฆๅ็ฑปใ
2.3 ้ๅๅๆ่ฝๅ
ๅบไบๅฏนๅๆฑ็ผใAPI ่ฐ็จๅบๅใๅ ๅฃณ่กไธบ็ญไฝๅฑๆฐๆฎ็็่งฃ๏ผSecGPT ่ฝ่พ ๅฉๅฎๆๆถๆๆ ทๆฌ็้ๆๅๆใ็นๅพๆๅไธๅฎถๆๅฝ็ฑป๏ผๅ ทๅคไธๅฎ็้ๅ่พ ๅฉ่งฃ่ฏป่ฝๅใ
2.4 ไปฃ็ ๅฎก่ฎก่ฝๅ
import java.util.*;
import java.util.stream.Collectors;
public class AverageCalculator {
public static double calculateAverage(Object input, boolean strict) {
if (strict) {
System.out.println("Running in STRICT mode");
@SuppressWarnings("unchecked")
List<Number> numbers = (List<Number>) input;
double total = 0;
for (Number num : numbers) {
total += num.doubleValue();
}
return total / numbers.size();
} else {
System.out.println("Running in SAFE mode");
List<Double> parsed = parseInputSafe(input);
double total = parsed.stream().mapToDouble(Double::doubleValue).sum();
return total / parsed.size();
}
}
public static List<Double> parseInputSafe(Object input) {
List<Double> result = new ArrayList<>();
if (input instanceof String) {
String s = (String) input;
if (!s.matches("\\d+")) {
throw new IllegalArgumentException("String must contain only digits.");
}
for (char c : s.toCharArray()) {
result.add(Double.parseDouble(String.valueOf(c)));
}
} else if (input instanceof List<?>) {
for (Object obj : (List<?>) input) {
try {
result.add(Double.parseDouble(obj.toString()));
} catch (NumberFormatException e) {
throw new IllegalArgumentException("Invalid element in list: " + obj);
}
}
} else {
throw new IllegalArgumentException("Unsupported input type: " + input.getClass());
}
return result;
}
public static void main(String[] args) {
List<TestCase> testCases = Arrays.asList(
new TestCase("12345", false),
new TestCase("12345", true),
new TestCase(Arrays.asList(1, 2, "3", "4"), false),
new TestCase(Arrays.asList(1, 2, 3, "four"), false),
new TestCase(Arrays.asList(1, 2, 3, "four"), true)
);
for (int i = 0; i < testCases.size(); i++) {
TestCase tc = testCases.get(i);
System.out.println("\n--- Test Case " + (i + 1) + " | strict=" + tc.strict + " ---");
try {
double avg = calculateAverage(tc.input, tc.strict);
System.out.println("โ
Average: " + avg);
} catch (Exception e) {
System.out.println("โ Error: " + e.getMessage());
}
}
}
static class TestCase {
Object input;
boolean strict;
TestCase(Object input, boolean strict) {
this.input = input;
this.strict = strict;
}
}
}
2.5 ๅทฅๅ ทไฝฟ็จ
๐ฎ ่็ณปๆไปฌ

ๆไปฌ่ฏๆ้่ฏทๅ จ็็ๅฎๅ จ็ ็ฉถ่ ใๅทฅ็จๅธใ็ฑๅฅฝ่ ๅ ฑๅๅไธ SecGPT ็ๅปบ่ฎพไธไผๅ๏ผ
- ๐ง ๆๅบไฝฟ็จๅปบ่ฎฎๆๅ่ฝ้ๆฑ
- ๐ ๅ้ฆ้ฎ้ขๅนถๆไบค Issue
- ๐ป ่ดก็ฎไปฃ็ ไธๅฎๅ จไปปๅกๆฐๆฎ้
- ๐ข ๅไธไฝฟ็จ็ป้ชไบคๆตไธๆไฝณๅฎ่ทตๅไบซ
๐ฌ ่ฅๆจๅฏนๆจกๅๆไปปไฝ็้ฎๆๅไฝๆๅ๏ผๆฌข่ฟ้่ฟ GitHub ๅไธ่ดก็ฎๆ่็ณปไบ่ตทๆ ๅ ๅข้ใๆไปฌๆๅพ ไธๆดๅคๅฟๅ้ๅ็ไผไผดไธ่ตท๏ผๅ ฑๅปบโ็ๆญฃๆๅฎๅ จโ็ AI ็ณป็ปใ
โญ Star History
โ ๏ธ ๅ ่ดฃๅฃฐๆ
ๅจไฝฟ็จ SecGPT ๆถ๏ผ่ฏทๆจๆณจๆไปฅไธไบ้กน๏ผ
- ๆฌ้กน็ฎไธบ็ ็ฉถไธไบคๆต็ฎ็ๆๆๅปบ๏ผ่พๅบๅ ๅฎนๅฏ่ฝๅ้ไบๆจกๅ่ฎญ็ปๆฐๆฎ็่ฆ็่ๅด๏ผ
- ็จๆทๅจไฝฟ็จๆจกๅ่ฟ็จไธญ๏ผๅบ่ช่กๅคๆญๅ ถ่พๅบ็ๆญฃ็กฎๆงไธ้็จๆง๏ผ
- ่ฅๆจ่ฎกๅๅฐๆฌๆจกๅ็จไบ ๅ ฌๅผๅๅธๆๅไธๅ้จ็ฝฒ๏ผ่ฏทๅกๅฟ ๆ็กฎๆฟๆ ็ธๅ ณๆณๅพๅๅ่ง่ดฃไปป๏ผ
- ๆฌ้กน็ฎ็ๅผๅ่ ๅฏนๅ ไฝฟ็จๆฌๆจกๅ๏ผๅ ๆฌไฝไธ้ไบๆจกๅๆฌ่บซใ่ฎญ็ปๆฐๆฎใ่พๅบๅ ๅฎน๏ผๆๅฏ่ฝไบง็็ไปปไฝ็ดๆฅๆ้ดๆฅๆๅฎณๆฆไธ่ด่ดฃใ
- Downloads last month
- 592