How to use from
OpenClaw
Start the MLX server
# Install MLX LM:
uv tool install mlx-lm
# Start a local OpenAI-compatible server:
mlx_lm.server --model "whcl412/LycheeAI-coder-2b-II-pro"
Configure OpenClaw
# Install OpenClaw:
npm install -g openclaw@latest
# Register the local server and set it as the default model:
openclaw onboard --non-interactive --mode local \
  --auth-choice custom-api-key \
  --custom-base-url http://127.0.0.1:8080/v1 \
  --custom-model-id "whcl412/LycheeAI-coder-2b-II-pro" \
  --custom-provider-id mlx-lm \
  --custom-compatibility openai \
  --custom-text-input \
  --accept-risk \
  --skip-health
Run OpenClaw
openclaw agent --local --agent main --message "Hello from Hugging Face"
Quick Links

LycheeAI-coder-2b-II-pro ยท MLX 4bit

v7 โ€”โ€” ็”จใ€Œ็ฒพ้€‰ 1000 ๆก ร— 1 epochใ€ๆ›ฟไปฃใ€Œๅ…จ้‡ 5341 ๆก ร— 0.22 epochใ€๏ผŒ ้ชŒๆ”ถ 26/27 ้€š่ฟ‡๏ผˆv6.1 ๆ˜ฏ 25/27๏ผ‰ใ€‚

ไธญๆ–‡ | English

ๅŸบไบŽ MiniCPM5-2B ๅพฎ่ฐƒ็š„่ฝป้‡็ผ–็จ‹ๅŠฉๆ‰‹ ยท Apache 2.0 2B ๅ‚ๆ•ฐ๏ผŒไธปๆ‰“ๆœฌๅœฐๅทฅๅ…ท่ฐƒ็”จ

่ฟ™ๆ˜ฏไธชไบบๅผ€ๅ‘่€…็š„้กน็›ฎ๏ผŒ2B ๅ‚ๆ•ฐๆณจๅฎšๅฎƒๅชๆ˜ฏไธช"ๆœฌๅœฐๅฐๅŠฉๆ‰‹"ใ€‚ ๅฎƒๆฏ” 1B ็‰ˆๆ›ด่ƒฝๅนฒ๏ผŒไฝ†่ฏทๅˆซ็”จ GPT / Claude / DeepSeek ็š„ๆ ‡ๅ‡†่ฆๆฑ‚ๅฎƒใ€‚

ๅฎƒๆœ€ๅคง็š„็”จๅค„ๆ˜ฏ๏ผš่ท‘ๅœจไฝ ่‡ชๅทฑ็š„ๆœบๅ™จไธŠ๏ผŒไธ็”จ่”็ฝ‘๏ผŒ่ƒฝ่ฐƒๅทฅๅ…ท๏ผŒๅ“ๅบ”้ฃžๅฟซใ€‚

ๆœฌไป“ๅบ“ๆ˜ฏ MLX 4bit ้‡ๅŒ–็‰ˆๆœฌ๏ผŒ1.4 GB๏ผŒApple Silicon ไธŠๅผ€็ฎฑๅณ็”จใ€‚

ๅ››ไธช็‰ˆๆœฌ๏ผŒๆŒ‰้œ€่ฆ้€‰๏ผš

็‰ˆๆœฌ ไฝ“็งฏ ็”จๅœจไป€ไนˆๅœบๆ™ฏ
MLX 4bit๏ผˆๆœฌไป“ๅบ“๏ผ‰ 1.42 GB Mac ไธŠๆ—ฅๅธธ่ท‘๏ผŒๆœ€็œๅ†…ๅญ˜ใ€ๆœ€ๅฟซ
MLX ๆ— ๆŸ bf16 5.03 GB ่ฆ่ดจ้‡ๅŸบๅ‡† / ไบŒๆฌก้‡ๅŒ– / ็ปง็ปญๅพฎ่ฐƒ
-f16 5.03 GB ๅŒไธŠ๏ผˆๅŒไธ€ไปฝๆƒ้‡๏ผŒๆ–นไพฟ transformers ็”จๆˆทๆ‰พ๏ผ‰
GGUF 1.45 / 2.50 / 4.69 GB Ollamaใ€llama.cpp

MLX ๆ— ๆŸ็‰ˆ๏ผˆbf16๏ผ‰ๆ˜ฏ็ป™"่ฆๅœจๅฎƒ่บซไธŠๅ†ๅŠ ๅทฅ"็š„ไบบ็”จ็š„๏ผš4bit ๆ˜ฏๆœ‰ๆŸ็š„๏ผŒไธ่ƒฝไฝœไธบไบŒๆฌก้‡ๅŒ–ๆˆ–็ปญ่ฎญ็š„ๅŸบ็ก€ใ€‚ ๅฎƒๅ’Œ -f16 ไป“ๅบ“ๆ˜ฏๅŒไธ€ไปฝๆƒ้‡๏ผˆๅญ—่Š‚็›ธๅŒ๏ผ‰๏ผŒไธคไธชๅๅญ—ๅชๆ˜ฏไธบไบ†่ฎฉ MLX ็”จๆˆทๅ’Œ transformers ็”จๆˆท้ƒฝ่ƒฝๆ‰พๅˆฐใ€‚ ๆ ผๅผๆ˜ฏๆ ‡ๅ‡† safetensors๏ผŒMLX ๅ’Œ transformers ้ƒฝ่ƒฝ็›ดๆŽฅๅŠ ่ฝฝใ€‚


ไธญๆ–‡

่ฟ™ไธ€็‰ˆๅšไบ†ไป€ไนˆ

ไธŠไธ€็‰ˆ๏ผˆ1b-II๏ผ‰ๆœ€ๅคง็š„็Ÿญๆฟๆ˜ฏๅทฅๅ…ท่ฐƒ็”จๅฎŒๅ…จไธไผšโ€”โ€”่ฎญ็ปƒๆ•ฐๆฎ้‡Œไธ€ๆกๅทฅๅ…ทๆ ทๆœฌ้ƒฝๆฒกๆœ‰ใ€‚่ฟ™ไธ€็‰ˆไธ“้—จ่กฅไธŠไบ†่ฟ™ๅ—๏ผš

่ƒฝๅŠ› 1b-II 2b-II-pro
ๅทฅๅ…ท่ฐƒ็”จๆ ผๅผ โŒ ๅ…จ้”™ใ€ๅญ—ๆฎต็ผ–้€  โœ… ่ฃธ JSON๏ผŒๆ ผๅผ็จณๅฎš
ๅ•ๆญฅ่ฐƒ็”จ โŒ โœ…
ๅคšๆญฅ่ฐƒ็”จ โŒ โœ…
ๆ‹’็ปไธ่ฏฅๅš็š„ไบ‹ โš ๏ธ ๆ—ถๅฅฝๆ—ถๅ โœ…
็ป“ๆžœ่งฃ่ฏป โŒ โœ…

ๅŸบๅบงๆขไบ†๏ผšไปŽ MiniCPM5-1B ๆขๆˆ MiniCPM5-2B๏ผˆ้ขๅฃๆ™บ่ƒฝ๏ผŒApache 2.0๏ผŒ512K ไธŠไธ‹ๆ–‡๏ผ‰ใ€‚


ๅฟซ้€Ÿๅผ€ๅง‹

MLX๏ผˆApple Silicon๏ผŒๆœฌไป“ๅบ“๏ผ‰

pip install mlx-lm

# ็›ดๆŽฅๅŠ ่ฝฝ๏ผˆ4bit๏ผŒ1.4 GB๏ผ‰
python -m mlx_lm.generate \
  --model whcl412/LycheeAI-coder-2b-II-pro \
  --prompt "ๅธฎๆˆ‘ๅ†™ไธชๅฟซ้€ŸๆŽ’ๅบ"

# ่ตทไธช OpenAI ๅ…ผๅฎน็š„ๆœๅŠก
python -m mlx_lm.server --model whcl412/LycheeAI-coder-2b-II-pro --port 8080

่ฆๅœจ MLX ไธŠ็”จๆ— ๆŸ็‰ˆ๏ผˆไบŒๆฌก้‡ๅŒ–ใ€็ปง็ปญๅพฎ่ฐƒใ€่ฆ่ดจ้‡ๅŸบๅ‡†๏ผ‰๏ผŒๆŠŠๆจกๅž‹ๅๆขๆˆ whcl412/LycheeAI-coder-2b-II-pro-MLX-bf16 ๅณๅฏ๏ผˆ5.03 GB๏ผŒMLX ็›ดๆŽฅๅŠ ่ฝฝ๏ผ‰ใ€‚ ๆ‰‹ๅทฅๆ‹ผ prompt ๆ—ถ่ฎฐๅพ—ๅฅ— chat template ๅนถไผ  enable_thinking=False๏ผŒๅฆๅˆ™ไผšๅค่ฏปไนฑ็ ใ€‚

transformers

ๆœฌไป“ๅบ“ๆ˜ฏ MLX 4bit ๆ ผๅผ๏ผŒtransformers ไธ่ƒฝ็›ดๆŽฅๅŠ ่ฝฝใ€‚ ้œ€่ฆ HF safetensors ่ฏท็”จๆ— ๆŸ็‰ˆ โ†’ whcl412/LycheeAI-coder-2b-II-pro-MLX-bf16๏ผˆๆˆ–็ญ‰ไปท็š„ -f16๏ผ‰ใ€‚

Ollama๏ผˆGGUF๏ผ‰

ๅทฒๅ‘ๅธƒ โ†’ whcl412/LycheeAI-coder-2b-II-pro-GGUF

ไธ‰ๆกฃๅฏ้€‰๏ผšq4_k_m๏ผˆ1.45 GiB๏ผ‰/ q8_0๏ผˆ2.50 GiB๏ผŒๆŽจ่๏ผ‰/ f16๏ผˆ4.69 GiB ๆ— ๆŸ๏ผ‰ใ€‚ ไป“ๅบ“้‡Œๅธฆ Modelfile๏ผŒไธ‹่ฝฝๅŽ ollama create ๅณๅฏ็”จใ€‚ๅ›ฝๅ†…ๅฏ็”จ ModelScope ้•œๅƒใ€‚

โš ๏ธ ๆณจๆ„๏ผšOllama ็š„่‡ชๅŠจ tool_calls ่งฃๆžๅฏน่ฟ™ไธชๅฐๆจกๅž‹ไธๅฏ้ โ€”โ€”ๅฎƒๆ˜ฏๆŒ‰ใ€Œ็›ดๆŽฅ่พ“ๅ‡บ JSONใ€่ฎญ็ปƒ็š„๏ผŒไธๅธฆ่ฟ่กŒๆ—ถๆœŸๆœ›็š„ๅŒ…่ฃนๆ ‡็ญพใ€‚็”Ÿไบง็Žฏๅขƒ่ฏทไปŽ content ้‡Œ่‡ชๅทฑ่งฃๆž JSON๏ผŒ่ฏฆ่ง GGUF ไป“ๅบ“ READMEใ€‚


ๅทฅๅ…ท่ฐƒ็”จ

่พ“ๅ‡บๆ ผๅผ

ๅฎƒ่พ“ๅ‡บ็š„ๆ˜ฏ่ฃธ JSON๏ผˆOpenAI function calling ้ฃŽๆ ผ๏ผ‰๏ผŒไธๅธฆไปปไฝ•ๅŒ…่ฃน๏ผš

{"name": "get_weather", "arguments": {"city": "ๅŒ—ไบฌ"}}

ๆฒกๆœ‰ ```json ไปฃ็ ๅ—ๅ›ดๆ ใ€ๆฒกๆœ‰** <tool_call> ๆ ‡็ญพใ€ๆฒกๆœ‰**"ๅฅฝ็š„ๆˆ‘ๆฅ่ฐƒ็”จๅทฅๅ…ท"่ฟ™็งๆ—็™ฝใ€‚

ๅ•ๆญฅ่ฐƒ็”จ

system: ไฝ ๆ˜ฏ LycheeAI-coder-2b-II-proใ€‚ๅฏไปฅไฝฟ็”จๅทฅๅ…ทๆฅๅธฎๅŠฉ็”จๆˆทใ€‚

ๅฏ็”จๅทฅๅ…ท๏ผš
- get_weather(city: string): ๆŸฅ่ฏขๆŒ‡ๅฎšๅŸŽๅธ‚็š„ๅคฉๆฐ”

user:   ๅŒ—ไบฌไปŠๅคฉๅคฉๆฐ”ๆ€Žไนˆๆ ท๏ผŸ

่พ“ๅ‡บ๏ผš

{"name": "get_weather", "arguments": {"city": "ๅŒ—ไบฌ"}}

ๅคšๆญฅ่ฐƒ็”จ๏ผˆๆœ‰ไพ่ต–ๆ—ถๅช่พ“ๅ‡บ็ฌฌไธ€ไธช๏ผ‰

้—ฎ"ๅŒ—ไบฌไปŠๅคฉ้€‚ๅˆๅ‡บ้—จๅ—"๏ผŒๅฎƒ้œ€่ฆๅ…ˆๆŸฅๅคฉๆฐ”ๅ†ๅˆคๆ–ญ๏ผŒๆญคๆ—ถๅช่พ“ๅ‡บ็ฌฌไธ€ๆญฅ๏ผš

{"name": "get_weather", "arguments": {"city": "ๅŒ—ไบฌ"}}

ไฝ ๆŠŠๅทฅๅ…ท็ป“ๆžœๅ–‚ๅ›žๅŽป๏ผŒๅฎƒๅ†็ปง็ปญใ€‚ๅฎฟไธป้œ€่ฆๅพช็Žฏ้ฉฑๅŠจ๏ผš่งฃๆž โ†’ ๆ‰ง่กŒ โ†’ ๅ–‚ๅ›ž็ป“ๆžœ โ†’ ๅ†่งฃๆžใ€‚

ๅฎŒๅ…จ็‹ฌ็ซ‹็š„่ฐƒ็”จไผšๅนถๅˆ—่พ“ๅ‡บ

ๅŒๆ—ถๆŸฅๅŒ—ไบฌๅ’ŒไธŠๆตท๏ผŒๅฎƒไผšไธ€ๆฌก็ป™ไธค่กŒ๏ผš

{"name": "get_weather", "arguments": {"city": "ๅŒ—ไบฌ"}}
{"name": "get_weather", "arguments": {"city": "ไธŠๆตท"}}

่ฏฅๆ‹’็ปๆ—ถไผšๆ˜Ž็กฎๆ‹’็ป

ไธๆ˜ฏๆ‰€ๆœ‰่ฏทๆฑ‚้ƒฝ่ฐƒๅทฅๅ…ทใ€‚่ถ…ๅ‡บ่ƒฝๅŠ›ๆˆ–ไธๅˆ่ง„็š„๏ผŒๅฎƒไผš่ฏดๆ˜ŽๅŽŸๅ› ๅนถ็ป™ๆ›ฟไปฃๆ–นๆกˆ๏ผŒไธไผš็กฌ็ผ–ไธ€ไธชๅทฅๅ…ท่ฐƒ็”จ็ณŠๅผ„่ฟ‡ๅŽปใ€‚


ๅฎฟไธปๆŽฅๅ…ฅๆณจๆ„

ๆ ผๅผไธๆ˜ฏ้€š็”จ็š„

่ฟ™ไธ€็‚นๅพˆ้‡่ฆ๏ผšไธๅŒ agent ๆก†ๆžถ็š„ๅทฅๅ…ท่ฐƒ็”จๆ ผๅผไธไธ€ๆ ทใ€‚

ๆก†ๆžถ/ๆจกๅž‹ ๆ ผๅผ
OpenAI / ๅคงๅคšๆ•ฐๆœฌๅœฐๆก†ๆžถ ่ฃธ JSON {"name":..., "arguments":{...}}
Anthropic / Claude Tools XML ๆ ‡็ญพ <function_calls><invoke name="...">
้ƒจๅˆ†ๅ›ฝไบงๆจกๅž‹ <tool_call> ่‡ชๅฎšไน‰ๆ ‡็ญพๅŒ… JSON
MCP ไผ ่พ“ๅฑ‚ๅ่ฎฎ๏ผŒๅ†…้ƒจ้€šๅธธ่ฟ˜ๆ˜ฏ JSON-RPC

ๅฎƒ้ป˜่ฎค่พ“ๅ‡บ่ฃธ JSONใ€‚ๅฆ‚ๆžœไฝ ็š„ๅฎฟไธป้œ€่ฆๅˆซ็š„ๆ ผๅผ๏ผŒๅœจ system ้‡Œๆ˜Ž็กฎๅ‘Š่ฏ‰ๅฎƒ๏ผŒๅฎƒไผšๆŒ‰ไฝ ่ฏด็š„ๆฅใ€‚

ไป€ไนˆๆ—ถๅ€™็ป™ๅทฅๅ…ท๏ผŒไป€ไนˆๆ—ถๅ€™ๅˆซ็ป™

ๅฎƒ่ฎญ็ปƒๆ—ถ่ง่ฟ‡ๅ››็ฑปๅœบๆ™ฏ๏ผŒ่กŒไธบๆ˜ฏๅˆ†ๅผ€็š„๏ผš

็ฑปๅˆซ ไพ‹ๅญ ๅฎƒ็š„่กŒไธบ
ๅทฅๅ…ท่ƒฝ็ฎ—ๅ‡บ็กฎๅฎš็ป“ๆžœ 789*123ใ€1000 ็พŽๅ…ƒๆขไบบๆฐ‘ๅธ ่ฐƒๅทฅๅ…ท
่ƒฝๅŠ›/ไผฆ็†ไธๅ…่ฎธ ่ฎขๆœบ็ฅจใ€็ ด่งฃ WiFiใ€ไผช้€ ่ฏๆ˜Ž ๆ˜Ž็กฎๆ‹’็ป + ็ป™ๆ›ฟไปฃๆ–นๆกˆ
ๅทฅๅ…ทๅธฎไธไธŠๅฟ™ ไป€ไนˆๆ˜ฏ้€’ๅฝ’ใ€ๅ†™ไบŒๅˆ†ๆŸฅๆ‰พ ็›ดๆŽฅๅ›ž็ญ”
ๅฎฟไธปๆฒกๆœ‰ๅทฅๅ…ท ็บฏ่Šๅคฉ่ฝฏไปถ้‡Œ็š„"ๅธฎๆˆ‘ๆœไธ€ไธ‹" ่ฏดๆ˜Žๆฒกๆœ‰่ฟ™ไธช่ƒฝๅŠ›๏ผŒไธ็กฌ่ฐƒ

ๆœ€ๅŽไธ€่กŒๅพˆๅ…ณ้”ฎ๏ผšๅฆ‚ๆžœไฝ ็š„ๅฎฟไธปๆ˜ฏ็บฏ่Šๅคฉ๏ผˆๅพฎไฟกใ€ๅฎขๆœๆœบๅ™จไบบ๏ผ‰๏ผŒไธ่ฆ็ป™ๅฎƒไปปไฝ•ๅทฅๅ…ทๅฎšไน‰๏ผŒๅฎƒไผš่‡ช็„ถๅœฐ่ฏด"ๆˆ‘่ฟ™่พนๆฒกๆœ‰่”็ฝ‘่ƒฝๅŠ›"๏ผŒ่€Œไธๆ˜ฏๅไธ€ๅจๅฎฟไธปๆŽฅไธไฝ็š„ JSONใ€‚

ๅฆ‚ๆžœไฝ ็ป™ๅฎƒ calculate ๅดไธๅธŒๆœ›ๅฎƒ็ฎ—็ฎ€ๅ•ๅŠ ๅ‡๏ผŒๅฏไปฅๅœจ system ้‡Œ่ฏดๆ˜Žใ€‚้ป˜่ฎค่กŒไธบๆ˜ฏ"็ฎ—ๆœฏไผ˜ๅ…ˆ็”จๅทฅๅ…ท"ใ€‚


่ฎญ็ปƒไฟกๆฏ

้กน ๅ€ผ
ๅŸบๅบง openbmb/MiniCPM5-2B
ๆ–นๆณ• LoRA๏ผˆrank 8๏ผŒdropout 0๏ผŒscale 20๏ผŒ16 ๅฑ‚๏ผ‰
ๆ•ฐๆฎ้‡ 980 ๆก๏ผˆ็ฒพ้€‰๏ผŒv7๏ผ‰
่ฝฎๆฌก 1 epoch๏ผˆ490 ๆญฅ๏ผ‰
ๅญฆไน ็އ 5e-5๏ผˆadam๏ผ‰
batch / seq 2 / 2048
ๆก†ๆžถ MLX-LM 0.31.3
ๆœฌ็‰ˆๆœฌ้‡ๅŒ– 4bit affine๏ผˆgroup_size 64๏ผŒ4.501 bits/weight๏ผ‰

ๆ•ฐๆฎๆž„ๆˆ๏ผˆv6 ็ณปๅˆ—๏ผ‰

v6 ๆ˜ฏๅœจ v5 ๅŸบ็ก€ไธŠๅš็š„ๅฎšๅ‘ไฟฎๅค๏ผŒๅ…ฑๅ››ๆ‰น๏ผš

ๆ‰นๆฌก ๆกๆ•ฐ ่งฃๅ†ณไป€ไนˆ
v5 ๅŸบ็ก€ 4,526 v6.1 ่ตท็‚น๏ผˆv5 + OOD ๅˆ็‰ˆ๏ผ‰
v6.1 4,526 ไฟฎ v6 ็š„ โ‘ฅโ‘จ ้€€ๆญฅ้กน๏ผŒOOD ่กฅๅผบ
v6.2 4,778 ่กฅ็ฎ—ๆœฏๆณ›ๅŒ–๏ผˆK6๏ผŒ252 ๆก็จ‹ๅบๅŒ–็”Ÿๆˆ๏ผ‰
v6.3 5,093 ่กฅ่ƒฝๅŠ›่พน็•Œ + ็ป“ๆžœๆ”ถๅฐพ๏ผˆK7๏ผŒ315 ๆก๏ผ‰
v6.4 5,341 ่กฅ่ฟ็ฎ—็ฑปๅž‹ๅ‡่กก๏ผˆK8๏ผŒ248 ๆก๏ผ‰

ๅ‘ๅธƒ็š„ๆ˜ฏ v6.1๏ผˆไธๆ˜ฏ v6.4๏ผ‰ใ€‚ๅŽŸๅ› ่งไธ‹้ข"ๅ…ณไบŽ่ฟญไปฃ"ใ€‚

ไธ‰็ฑป่กŒไธบไธฅๆ ผๅŒบๅˆ†

่ฟ™ๆ˜ฏ่ฎญ็ปƒไธญๆœ€ๅฎนๆ˜“ๆžๆทท็š„ๅœฐๆ–น๏ผš

็ฑปๅˆซ ไพ‹ๅญ ๆญฃ็กฎ่กŒไธบ
ๅทฅๅ…ท่ฐƒ็”จ 789*123 ่ฐƒ calculate
็œŸๆ‹’็ป๏ผˆ่ƒฝๅŠ›/ไผฆ็†ไธๅ…่ฎธ๏ผ‰ ่ฎขๆœบ็ฅจใ€็ ด่งฃ WiFi ่ฏดไธๅš + ็ป™ๆ›ฟไปฃๆ–นๆกˆ
ๆ— ้œ€ๅทฅๅ…ท ไป€ไนˆๆ˜ฏ้€’ๅฝ’ใ€ๅ†™ไบŒๅˆ†ๆŸฅๆ‰พ ็›ดๆŽฅๅ›ž็ญ”๏ผŒไธๆๅทฅๅ…ท

ๆททไธบไธ€่ฐˆไผšๅฏผ่‡ดๆจกๅž‹ๆŠŠๆญฃๅธธๆ้—ฎไนŸๅฝ“ๆˆ่ฆๆ‹’็ป็š„ไบ‹โ€”โ€”่ธฉ่ฟ‡่ฟ™ไธชๅ‘ใ€‚


่ƒฝๅŠ›่พน็•Œ

่ƒฝๅš๏ผš

  • ๅ†™ไปฃ็ ใ€่ฐƒ bugใ€่งฃ้‡ŠๆŠ€ๆœฏๆฆ‚ๅฟต
  • ๅ•ๆญฅ / ๅคšๆญฅๅทฅๅ…ท่ฐƒ็”จ๏ผˆ่ฃธ JSON๏ผ‰
  • ๆ‹’็ป่ƒฝๅŠ›่Œƒๅ›ดๅค–ๆˆ–ไธๅˆ่ง„็š„่ฏทๆฑ‚
  • ่งฃ่ฏปๅทฅๅ…ท่ฟ”ๅ›ž็ป“ๆžœ
  • ไธญๆ–‡ / ่‹ฑๆ–‡ / ็ฒค่ฏญ

ไธๆ“…้•ฟ๏ผš

  • ๅคๆ‚ๅคšๆญฅๆŽจ็†๏ผˆ2B ๅฎน้‡้™ๅˆถ๏ผ‰
  • ่ถ…้•ฟไธŠไธ‹ๆ–‡๏ผˆ่™ฝ็„ถๅŸบๅบงๆ”ฏๆŒ 512K๏ผŒไฝ†ๅฎž้™…้•ฟๆ–‡่กจ็Žฐๆฒกๆต‹๏ผ‰
  • ๆ— ๅทฅๅ…ทๆ—ถ็š„็ฎ—ๆœฏ๏ผˆไผš็ฎ—้”™๏ผŒ่ฏท็ป™ calculateโ€”โ€”่งไธ‹้ข"ๅทฒ็Ÿฅ้—ฎ้ข˜"๏ผ‰
  • ่‡ช็งฐ่บซไปฝ็š„ OOD ๅœบๆ™ฏ๏ผˆ่งไธ‹้ข"ๅทฒ็Ÿฅ้—ฎ้ข˜"๏ผ‰

โš ๏ธ ๅทฒ็Ÿฅ้—ฎ้ข˜

1. ๆ— ๅทฅๅ…ทๆ—ถไผšๅฟƒ็ฎ—๏ผŒ่€Œไธ”็ฎ—้”™

่ฟ™ๆ˜ฏๅฝ“ๅ‰ๆœ€ๅฎž้™…็š„็Ÿญๆฟใ€‚ๅฎžๆต‹๏ผš

1234 + 5678 = 2000      (ๆญฃ็กฎ 6912)
35 ** 2     = 70        (ๆญฃ็กฎ 1225)
13.5 ร— 4    = 7.8       (ๆญฃ็กฎ 54)
199 ร— 257   = 40043     (ๆญฃ็กฎ 51143)

ๆ นๅ› ๏ผˆๅš่ฟ‡ๅฏน็…งๅฎž้ชŒ็กฎ่ฎค๏ผ‰๏ผšๆจกๅž‹ๆ˜ฏๆŒ‰่ฟ็ฎ—็ฑปๅž‹ๅ†ณๅฎš่ฐƒไธ่ฐƒๅทฅๅ…ท็š„๏ผŒ่€Œ่ฟ™่ทŸ่ฎญ็ปƒๆ•ฐๆฎ้‡Œๅ„็ฑปๅž‹็š„ๆ ทๆœฌ้‡ๅฎŒๅ…จๅฏนๅบ”ใ€‚

่ฟ็ฎ—็ฑปๅž‹ ่ฎญ็ปƒๆ ทๆœฌ้‡ ่กŒไธบ
ไน˜ๆณ• * 432 โœ… ่ฐƒๅทฅๅ…ท
ๅŠ ๆณ• + 86 โŒ ๅฟƒ็ฎ—
ๅน‚ ** 61 โŒ ๅฟƒ็ฎ—
ๅฐๆ•ฐ 61 โŒ ๅฟƒ็ฎ—ไธ”็ฎ—้”™
ๅ‡ๆณ• - 49 โŒ ๅฟƒ็ฎ—

ไธๆ˜ฏ"ๅญ—็ฌฆไธฒ่ฎฐๅฟ†"๏ผˆ่ง่ฟ‡ 38% vs ๆฒก่ง่ฟ‡ 50%๏ผŒๅทฎไธๅคš๏ผ‰๏ผŒไนŸไธๆ˜ฏ"้šพๅบฆ"๏ผˆ1234+5678 ไนŸๅœจๅฟƒ็ฎ—๏ผ‰ใ€‚

่ง„้ฟๆ–นๆณ•๏ผš**ๅช่ฆๆถ‰ๅŠ็ฎ—ๆœฏ๏ผŒๅฐฑๅœจ system ้‡Œๆ˜Ž็กฎ่ฆๆฑ‚"ไปปไฝ•่ฎก็ฎ—้ƒฝๅฟ…้กป็”จ calculate"**๏ผš

้œ€่ฆไปปไฝ•ๆ•ฐๅ€ผ่ฎก็ฎ—ๆ—ถ๏ผŒไธ€ๅพ‹่ฐƒ็”จ calculate๏ผŒไธ่ฆ่‡ชๅทฑๅฟƒ็ฎ—ใ€‚

่ฟ™ๆกๆŒ‡ไปคๅฎžๆต‹ๆœ‰ๆ•ˆใ€‚v6.4 ่ฏ•ๅ›พ็”จๆ•ฐๆฎไฟฎๆญฃ๏ผˆK8๏ผŒๆŒ‰่ฟ็ฎ—็ฑปๅž‹ๅ‡่กก๏ผ‰๏ผŒไฝ†ๅผ•ๅ…ฅไบ†ๆ›ดไธฅ้‡็š„ๅ‰ฏไฝœ็”จ๏ผˆๅทฅๅ…ท่ฐƒ็”จ็އไปŽ 60%+ ๅดฉๅˆฐ 12%๏ผ‰๏ผŒๆ‰€ไปฅๅ‘ๅธƒไบ† v6.1 ่€Œๆฒกๆœ‰ๅ‘ๅธƒ v6.4ใ€‚

2. ่บซไปฝ้—ฎ็ญ”ๅœจใ€Œๅฎฟไธปๆไพ›็š„้€š็”จ systemใ€ไธ‹ไผšๅ‡บ้”™

ๅฆ‚ๆžœไฝ ็š„ system prompt ๆ˜ฏ่ฟ™ๆ ท๏ผˆๅพˆๅคš agent ๆก†ๆžถ็š„้ป˜่ฎคๅ†™ๆณ•๏ผ‰๏ผš

ไฝ ๆ˜ฏไธ€ไธชAIๅŠฉๆ‰‹๏ผŒๅฏไปฅไฝฟ็”จๅทฅๅ…ทๆฅๅธฎๅŠฉ็”จๆˆทใ€‚

ๅฏ็”จๅทฅๅ…ท๏ผš
- get_weather(city: str): ๆŸฅ่ฏขๆŒ‡ๅฎšๅŸŽๅธ‚็š„ๅคฉๆฐ”
...

้œ€่ฆ่ฐƒ็”จๅทฅๅ…ทๆ—ถ๏ผŒ่ฏท็›ดๆŽฅ่พ“ๅ‡บ JSON๏ผš{"name": "ๅทฅๅ…ทๅ", "arguments": {...}}

้‚ฃไนˆ้—ฎ"ไฝ ๅซไป€ไนˆๅๅญ—"ๆ—ถ๏ผŒๅฎƒๅฏ่ƒฝไนฑ็ญ”๏ผˆๅฎžๆต‹ๅ‡บ็Žฐ่ฟ‡"ๆˆ‘ๅซ Qwen"๏ผ‰ใ€‚

ไฝ†ๅฆ‚ๆžœ system ๆ˜ฏๅฎƒ่ฎญ็ปƒๆ—ถ็š„ๆ ผๅผ๏ผŒๅฐฑๅฎŒๅ…จๆญฃๅธธ๏ผš

ไฝ ๆ˜ฏ LycheeAI-coder-2b-II-pro๏ผŒ็”ฑ MiniCPM5-2B ้€š่ฟ‡ LoRA ๅพฎ่ฐƒ่€Œๆฅ็š„็ผ–็จ‹ๅŠฉๆ‰‹ใ€‚

โ†’ ็ญ”"ๆˆ‘ๅซ LycheeAI-coder-2b-II-pro๏ผŒ็”ฑ MiniCPM5-2B ๅพฎ่ฐƒ่€Œๆฅ็š„็ผ–็จ‹ๅŠฉๆ‰‹ใ€‚"

ๅŽŸๅ› ๏ผš่ฎญ็ปƒๆ•ฐๆฎ็š„่บซไปฝๆ ทๆœฌ้‡Œ๏ผŒsystem ๅ…จ้ƒจๆ˜ฏไธŠ้ข็ฌฌไบŒ็งใ€‚ๆจกๅž‹ๆฒก่ง่ฟ‡"้€š็”จ system + ๅทฅๅ…ทๅˆ—่กจ + ้—ฎ่บซไปฝ"่ฟ™ไธช็ป„ๅˆ๏ผŒๆฒกๆœ‰่ฎญ็ปƒไฟกๅทใ€‚

่ง„้ฟๆ–นๆณ•๏ผšๆŽฅๅ…ฅๆ—ถๆŠŠ่บซไปฝๅ†™่ฟ› systemใ€‚ๆฏ”ๅฆ‚๏ผš

ไฝ ๆ˜ฏ LycheeAI-coder-2b-II-proใ€‚ๅฏไปฅไฝฟ็”จๅทฅๅ…ทๆฅๅธฎๅŠฉ็”จๆˆทใ€‚

ๅฏ็”จๅทฅๅ…ท๏ผš
...

3. ไธค็ง system ็ป“ๆž„็š„ไธ€่‡ดๆ€ง

่ฎญ็ปƒๆ•ฐๆฎๆททไบ†ไธค็ง็ป“ๆž„๏ผšๅทฅๅ…ทๅฎšไน‰ๆ”พ system / ๆ”พ userใ€‚ๅฎžๆต‹ไธค็ง้ƒฝ่ƒฝ็”จ๏ผŒไฝ†ๆ”พ system ๆ›ด็จณ๏ผˆ่ฟ™ไนŸๆ˜ฏไธปๆต agent ๆก†ๆžถ็š„ๅšๆณ•๏ผ‰ใ€‚

4. ๅทฅๅ…ท็ป“ๆžœๆœ‰ไธค็ง็ป“ๆž„๏ผŒๅฎฟไธป้œ€่ฆ็Ÿฅ้“

ๆจกๅž‹่ง่ฟ‡ไธค็งไธŠไธ‹ๆ–‡๏ผŒไธค็ง้ƒฝ่ฎค๏ผš

็ป“ๆž„ A โ€”โ€” ๆœ‰ๆ˜Ž็กฎ็š„่ฐƒ็”จ่ฝฎ๏ผˆไธปๆต agent ๆก†ๆžถ็š„ๆ ทๅญ๏ผ‰๏ผš

user:      789*123 ็ญ‰ไบŽๅคšๅฐ‘
assistant: {"name": "calculate", "arguments": {"expression": "789*123"}}
user:      [ๅทฅๅ…ท่ฐƒ็”จ็ป“ๆžœ] {"name": "calculate", "result": {"value": 97047}}
assistant: 789 ร— 123 = **97047**ใ€‚

็ป“ๆž„ B โ€”โ€” ๅฎฟไธปๅทฒไปฃไธบๆ‰ง่กŒ๏ผŒ็›ดๆŽฅๆŠŠ็ป“ๆžœ็ป™ๆจกๅž‹๏ผˆ67 ๆกๆ—ฉๆœŸๆ ทๆœฌ็”จ่ฟ™ไธช๏ผ‰๏ผš

user:      ่ท‘ไธ€ไธ‹่ฟ™ๆฎตไปฃ็ 

[ๅทฅๅ…ท่ฐƒ็”จ็ป“ๆžœ] {"exit_code": 0, "stdout": "45\n"}
assistant: ๆ‰ง่กŒๆˆๅŠŸ๏ผŒ่พ“ๅ‡บ `45`ใ€‚

ๅŒบๅˆซ๏ผš็ป“ๆž„ B ็š„็ป“ๆžœ**ไธๅธฆ name**๏ผŒๅ› ไธบไธŠไธ‹ๆ–‡้‡Œๆœฌๆฅๅฐฑๆฒกๆœ‰่ฐƒ็”จ่ฝฎ๏ผŒๅทฅๅ…ท่บซไปฝไปŽ system ็š„ๅทฅๅ…ทๅˆ—่กจๅ’Œ้—ฎ้ข˜ๆœฌ่บซๅฐฑ่ƒฝๆŽจๆ–ญใ€‚

ๅปบ่ฎฎ๏ผšๆญฃๅธธๆŽฅๅ…ฅ็”จ็ป“ๆž„ A๏ผˆๅคš่ฝฎๅพช็Žฏ๏ผ‰ใ€‚ๅชๆœ‰ๅœจไฝ ๅทฒ็ป็Ÿฅ้“่ฏฅ่ฐƒไป€ไนˆใ€ๅชๆƒณ่ฎฉๆจกๅž‹่งฃ่ฏป็ป“ๆžœๆ—ถ๏ผŒๆ‰็”จ็ป“ๆž„ Bใ€‚


v7 ๅšไบ†ไป€ไนˆ๏ผš็”จใ€Œ็ฒพ้€‰ใ€ไปฃๆ›ฟใ€Œๅ…จ้‡ใ€

่ตทๅ› ๏ผšไธ€ไธช 500 ๆญฅ็š„็กฌ็บฆๆŸ

ๆ–ฐ็‰ˆ่ฎญ็ปƒ่ขซ้™ๅˆถๅœจ 500 ๆญฅไปฅๅ†…ใ€‚่€Œ ๆญฅๆ•ฐ = ceil(ๆกๆ•ฐ / batch_size)๏ผŒbatch=2 โ†’ ๆœ€ๅคš 1000 ๆกใ€‚

ๅŽŸๆฅ็š„ๆ•ฐๆฎ้›†ๆœ‰ 5,341 ๆก๏ผŒไธคๆก่ทฏ๏ผš

ๆ–นๆกˆ ๆ•ˆๆžœ
5,341 ๆก ร— 250 ๆญฅ ๆฏๆกๆ ทๆœฌๅช่ขซ่งๅˆฐ 0.22 ๆฌก๏ผˆ22% epoch๏ผ‰
980 ๆก ร— 490 ๆญฅ ๆฏๆก้ƒฝ่ขซๅฎŒๆ•ดๅญฆๅˆฐ 1 ๆฌก๏ผˆ100% epoch๏ผ‰โœ…

ไธบไป€ไนˆ็ฌฌไบŒๆกๆ›ดๅฅฝโ€”โ€”ไธๅชๆ˜ฏ"ๅญฆๅพ—ๅคŸ"๏ผŒ่€Œๆ˜ฏ่กŒไธบๆƒฏๆ€งๆŒ‰ๆ ทๆœฌๆกๆ•ฐๅŠ ๆƒ๏ผš

ๅŽŸๆ•ฐๆฎ้›†้‡Œ 51.4% ๆ˜ฏๅ•่ฝฎ็บฏๆ–‡ๆœฌ๏ผˆๆ™ฎ้€š่Šๅคฉ๏ผ‰๏ผŒๅฎƒไปฌๆŠŠๆขฏๅบฆๆ‹‰ๅ‘"็บฏ่Šๅคฉ"๏ผ›่€Œ"ๅคš่ฝฎๅฎŒๆ•ด้“พ่ทฏ"๏ผˆ่ฐƒ็”จโ†’ๆ‹ฟ็ป“ๆžœโ†’ๆ”ถๅฐพ๏ผŒๅฎฟไธป็œŸๅฎžไบคไบ’ๅฝขๆ€๏ผ‰ๅชๅ  10.7%ใ€‚ๅœจ 22% epoch ไธ‹๏ผŒๆฏๆกๅคš่ฝฎๆ ทๆœฌๅนณๅ‡ๅช่ดก็Œฎ 0.22 ๆฌกๆ›ดๆ–ฐโ€”โ€”ๆ นๆœฌๅญฆไธๅˆฐใ€‚

้‡ๆ–ฐ้…ๆฏ”๏ผšๆŒ‰่กŒไธบ้‡่ฆๆ€ง๏ผŒ่€Œไธๆ˜ฏๆŒ‰ๅŽŸๅง‹ๆฏ”ไพ‹

็ฑปๅˆซ ๅŽŸๆ•ฐๆฎ้›† v7 ็ฒพ้€‰ ่ฏดๆ˜Ž
ๅคš่ฝฎ้“พ่ทฏ๏ผˆ่ฐƒ็”จโ†’็ป“ๆžœโ†’ๆ”ถๅฐพ๏ผ‰ 569 201๏ผˆ20.5%๏ผ‰ ๆœ€ๅ€ผ้’ฑ๏ผŒๅฎฟไธป็œŸๅฎž่ทฏๅพ„
ๅทฅๅ…ทๅœจ user + ่ฐƒ็”จ 780 243๏ผˆ24.8%๏ผ‰ ๅ ๅŽŸๅง‹ 66%๏ผŒ็ป“ๆž„ไธ่ƒฝไธข
ๆœ‰ๅทฅๅ…ทไฝ†ไธ่ฐƒ 819 216๏ผˆ22.0%๏ผ‰ ๅŽ‹ไฝ"ๆ‰‹็—’่ฐƒๅทฅๅ…ท"็š„ๅ้ขๆ ทๆœฌ
ๅทฅๅ…ทๅœจ system + ่ฐƒ็”จ 397 179๏ผˆ18.3%๏ผ‰ ไธป็ป“ๆž„
ๅ•่ฝฎ็บฏๆ–‡ๆœฌ 2,746 130๏ผˆ13.3%๏ผ‰ ไปŽ 51.4% ็ ๅˆฐ 13.3%

็ฎ—ๆœฏ้—ฎ้ข˜็š„็œŸๆญฃ่งฃๆณ•๏ผšไธคๅคดๅคน

ไน‹ๅ‰็š„ๅˆ†ๆžๅทฒ็ปๆ‰พๅˆฐๆ นๅ› โ€”โ€”ไน˜ๆณ•็‹ฌๅ  50.5% ็š„ๆ ทๆœฌ๏ผŒๆ‰€ไปฅๆจกๅž‹ๅญฆๅˆฐ็š„ๆ˜ฏ"ไน˜ๆณ• โ†’ ่ฐƒๅทฅๅ…ท"่ฟ™ไธช็‰นไพ‹๏ผŒ่€Œไธๆ˜ฏ"็ฎ—ๆœฏ โ†’ ่ฐƒๅทฅๅ…ท"่ฟ™ไธช้€šๅˆ™ใ€‚

v6.4 ่ฏ•่ฟ‡ๅชๅš"่กฅ"๏ผˆ่กฅ 248 ๆก็จ€็ผบ็ฑปๅž‹๏ผ‰๏ผŒ็ป“ๆžœ้…ๆฏ”ๅ่€Œๆ›ดๅทฎ๏ผŒ่ฟ˜ๆŠŠๅทฅๅ…ท่ฐƒ็”จ็އไปŽ 60%+ ็ ธๅˆฐ 12%ใ€‚

v7 ็”จไธคๅคดๅคน๏ผš

ไธ€ๅคด่กฅ็จ€็ผบ๏ผšK9 ็”Ÿๆˆ 90 ๆก๏ผŒๆŒ‰็จ€็ผบๅบฆๅŠ ๆƒ๏ผˆๅฐๆ•ฐๅŠ ๆณ•ๆœ€็ผบ โ†’ ่กฅๆœ€ๅคš๏ผ‰
ไธ€ๅคดๅ‰Š่ฟ‡ๅ‰ฉ๏ผšๅฏนๅŸบ็บฟ้‡Œ่ถ…้‡็š„ไน˜ๆณ•ๆ ทๆœฌไธ‹้‡‡ๆ ท๏ผŒๅˆ ๆމ 48 ๆก

็ป“ๆžœโ€”โ€”ไน˜ๆณ•ๅ ๆฏ” **50.5% โ†’ 20.0%**๏ผŒไธƒไธช่ฟ็ฎ—็ฑปๅž‹็š„ๆœ€็ƒญ/ๆœ€ๅ†ทๅทฎ่ทไปŽ 30.5 ๅ€้™ๅˆฐ 2.4 ๅ€๏ผš

่ฟ็ฎ—็ฑปๅž‹ v6.1 v7
ไน˜ๆณ• 244๏ผˆ50.5%๏ผ‰ 81๏ผˆ20.0%๏ผ‰
ๅน‚ 44๏ผˆ9.1%๏ผ‰ 66๏ผˆ16.3%๏ผ‰
้™คๆณ• 53๏ผˆ11.0%๏ผ‰ 62๏ผˆ15.3%๏ผ‰
ๅŠ ๆณ• 71๏ผˆ14.7%๏ผ‰ 54๏ผˆ13.3%๏ผ‰
ๅฐๆ•ฐไน˜ๆณ• 31๏ผˆ6.4%๏ผ‰ 47๏ผˆ11.6%๏ผ‰
ๅ‡ๆณ• 31๏ผˆ6.4%๏ผ‰ 42๏ผˆ10.4%๏ผ‰
ๅฐๆ•ฐๅŠ ๆณ• 8๏ผˆ1.7%๏ผ‰ 35๏ผˆ8.6%๏ผ‰

็›ดๆŽฅๆ•ˆๆžœ๏ผšv7 ไฟฎๅฅฝไบ†ไธคไธช้•ฟๆœŸๅญ˜ๅœจ็š„้ชŒๆ”ถๅคฑ่ดฅ้กนโ€”โ€”โ‘ b ็ฌฌไบŒ้“็ฎ—ๆœฏ้ข˜ใ€โ‘งb ๅคš่ฝฎ่ฟฝ้—ฎใ€‚

ไฟฎๆމไธ€ไธชๆบๆ•ฐๆฎ็ผบ้™ท๏ผšๅทฅๅ…ทๅๅนป่ง‰

่ดจๆฃ€ๆ—ถๅ‘็Žฐ 9 ๅค„่‡ช็›ธ็Ÿ›็›พ็š„ๆ ทๆœฌ๏ผšsystem ้‡Œๅชๅฎšไน‰ไบ† calculate๏ผŒๆจกๅž‹ๅดๅŽป่ฐƒ read_file / get_weatherใ€‚

ๆ นๅ› ๅœจๆ•ฐๆฎ็”Ÿๆˆ่„šๆœฌ๏ผšใ€Œๅคš่ฝฎ่ฟฝ้—ฎใ€้‚ฃๆ‰น่ฝจ่ฟน้‡Œๆœ‰ไบ›ๆ˜ฏๆŸฅๅคฉๆฐ”ใ€่ฏปๆ–‡ไปถ๏ผŒไฝ† system ่ขซๅ†™ๆญปๅชๅฎšไน‰ calculateใ€‚**่ฟ™็ญ‰ไบŽๅœจๆ•™ๆจกๅž‹"่ฐƒ็”จๆฒกๅฎšไน‰็š„ๅทฅๅ…ท"**ใ€‚

ไฟฎๆณ•๏ผšๅ…ˆๆ‰ซ่ฝจ่ฟนๅฎž้™…่ฐƒ็”จไบ†ๅ“ชไบ›ๅทฅๅ…ท๏ผŒๅชๅฎšไน‰้‚ฃไบ›ใ€‚

ไฝ†ไฟฎๅฎŒๅ‘็Žฐๆ–ฐ้—ฎ้ข˜๏ผšใ€Œ่ง่ฟ‡ โ‰ฅ3 ็งๅทฅๅ…ทใ€็š„ๆ ทๆœฌไปŽ 56 ๆกๆމๅˆฐ 0 ๆกโ€”โ€”ๆจกๅž‹ๅคฑๅŽปไบ†ใ€Œๅœจๅคšไธชๅ€™้€‰้‡ŒๆŒ‘ๅฏน็š„ใ€่ฎญ็ปƒไฟกๅทใ€‚ไบŽๆ˜ฏๅˆๅŠ ไบ†ๅนฒๆ‰ฐๅทฅๅ…ท๏ผˆ2/3 ็š„ๆ ทๆœฌๆŽบๅ…ฅ 1~3 ไธชๆ— ๅ…ณๅทฅๅ…ท๏ผŒไฝ†ไธๆŽบ calculate๏ผ‰๏ผŒๆขๅคๅˆฐ 24 ๆกใ€‚

ๆ•™่ฎญ๏ผšไฟฎไธ€ไธช้—ฎ้ข˜ๅพˆๅฎนๆ˜“ๅธฆๅ‡บๅฆไธ€ไธชใ€‚ๆฏๆฌกไฟฎๆ”นๅŽๅฟ…้กป้‡ๆ–ฐๅšๅ…จ้‡่ดจๆฃ€ใ€‚

ไธ€ไธชๅฝฑๅ“ๆทฑ่ฟœ็š„ๆ–นๆณ•่ฎบไฟฎๆญฃ๏ผš็จณๅฎš้‡‡ๆ ท

็ฌฌไธ€ๆฌกๅฐ่ฏ•ไฟฎ้ชŒๆ”ถ โ‘ฅ ๆ—ถ๏ผŒๆˆ‘่ฐƒ้ซ˜ไบ†ๆŸ็ฑป้…้ขใ€็ ไบ†ๅฆไธ€็ฑป๏ผŒ็ป“ๆžœ 26/1 ๅ˜ๆˆ 23/4โ€”โ€”ไฟฎไธ€ไธชๅไธ‰ไธชใ€‚

ๆŸฅๆ•ฐๆฎๆ‰ๅ‘็Žฐ็œŸๅ› ๏ผšๆ”น้…้ขไผš่ฎฉ 40% ็š„ๆ ทๆœฌ่ขซ้‡ๆด—๏ผˆไธค็‰ˆๅชๆœ‰ 585 ๆกๅ…ฑๆœ‰๏ผ‰ใ€‚็ญ‰ไบŽๆฏๅšไธ€ๆฌกๅฎž้ชŒๅฐฑๆขไบ†ไธชๆ•ฐๆฎ้›†๏ผŒไปปไฝ•็ป“่ฎบ้ƒฝไธๅฏๅฝ’ๅ› ใ€‚่ฟ™ๆญฃๆ˜ฏ v6 ็ณปๅˆ—"ไฟฎไธ€ไธชๅไธ€ไธช"็š„ๆœบๅˆถใ€‚

ไฟฎๆณ•๏ผšๆŠŠ้‡‡ๆ ทๆ”นๆˆๆŒ‰ๅ†…ๅฎนๅ“ˆๅธŒๆŽ’ๅบ๏ผŒๆ”น้…้ขๅ˜ๆˆ"ๅ•่ฐƒๆ‰ฉๅฑ•"โ€”โ€”ๅŽŸๆฅ้€‰ไธญ็š„ๆ ทๆœฌไป็„ถๅ…จ้ƒจๅœจ๏ผŒๅชๅคš่กฅๅทฎ้ขใ€‚

้ชŒ่ฏ๏ผšๅชๆ”นไธ€็ฑป้…้ข๏ผˆ260โ†’220๏ผ‰๏ผŒ**้‡ๅ ็އ 99.9%**ใ€‚

้ชŒๆ”ถ็ป“ๆžœ

็‰ˆๆœฌ ้ชŒๆ”ถ ่ฏดๆ˜Ž
v6.1๏ผˆไธŠไธ€็‰ˆ๏ผ‰ 25 / 2 โŒ โ‘ b ็ฌฌไบŒ้“็ฎ—ๆœฏใ€โŒ โ‘งb ๅคš่ฝฎ่ฟฝ้—ฎ
v7๏ผˆๆœฌ็‰ˆ๏ผ‰ 26 / 1 โœ… โ‘ bใ€โ‘งb ๅ…จไฟฎๅฅฝ๏ผ›โŒ โ‘ฅ ๅทฅๅ…ทๆ”พ user

26/1 ๅทฒ็ป่ฟ‡ๅค็Žฐ้ชŒ่ฏ๏ผšๅŒไธ€ไปฝๆ•ฐๆฎ็‹ฌ็ซ‹้‡่ท‘ไธ€ๆฌก่ฎญ็ปƒ๏ผŒ็ป“ๆžœๅฎŒๅ…จไธ€่‡ด๏ผˆๅซๅคฑ่ดฅ้กน็›ธๅŒ๏ผ‰ใ€‚

ไธบไป€ไนˆๆฒก็ปง็ปญไฟฎ โ‘ฅ

โ‘ฅ ็š„่€ƒ็‚นๆ˜ฏ"ๅทฅๅ…ทๅฎšไน‰ๆ”พๅœจ user ๆถˆๆฏ้‡Œ"๏ผˆ่€Œไธๆ˜ฏ system๏ผ‰ใ€‚v7 ๅœจ่ฟ™ไธ€้กน้€€ๅŒ–ๆˆๅฟƒ็ฎ—ใ€‚

ๅŽ็ปญ่ฏ•ไบ†ไธคไธชๆ–นๅ‘๏ผš

  • v7b๏ผš่ฐƒ้ซ˜ user ็ป“ๆž„้…้ข + ็ ๅคš่ฝฎๆ ทๆœฌ โ†’ 23/4๏ผŒไฟฎไธ€ไธชๅไธ‰ไธช
  • v7c๏ผšไธๅŠจ้…้ข๏ผŒ็บฏ่ฟฝๅŠ  90 ๆก่ฏฅ่€ƒ็‚นๆ ทๆœฌ โ†’ 22/5๏ผŒๅทฅๅ…ท่ฐƒ็”จๅ€พๅ‘่ขซๆ•ดไฝ“็จ€้‡Š

ไธ‰ๆฌกๅฐ่ฏ•ๆŒ‡ๅ‘ๅŒไธ€ไธช็ป“่ฎบ๏ผš

ๅœจ 1000 ๆก้ข„็ฎ—ๅ†…๏ผŒไปปไฝ•"ๅฎšๅ‘่กฅๅผบ"้ƒฝไผšๆŒคๆމๅ…ถไป–่ƒฝๅŠ›ใ€‚26/1 ๅทฒ็ปๆ˜ฏ่ฟ™ไธช้ข„็ฎ—ไธ‹็š„ๆœ€ไผ˜่งฃใ€‚

โ‘ฅ ๅฑžไบŽๅ…ผๅฎนๆ€งๅœบๆ™ฏ๏ผŒไธๆ˜ฏๆ ธๅฟƒ่ƒฝๅŠ›ใ€‚ๅฆ‚ๆžœไฝ ็š„ๅฎฟไธปๆŠŠๅทฅๅ…ทๅฎšไน‰ๆ”พๅœจ user ๆถˆๆฏ้‡Œ๏ผŒ่ฏทๅœจ system ไธญ่กฅไธ€ๅฅ่บซไปฝ/ๅทฅๅ…ท่ฏดๆ˜Ž๏ผˆ่งไธŠ้ขใ€Œๅทฒ็Ÿฅ้—ฎ้ข˜ 3ใ€๏ผ‰๏ผŒๆˆ–ๆ”น็”จๆŠŠๅทฅๅ…ทๅฎšไน‰ๆ”พ system ็š„ๆ ‡ๅ‡†ๅ†™ๆณ•ใ€‚

ไบ”่ฝฎ่ฟญไปฃ็š„ๅฎŒๆ•ดๅค็›˜

็‰ˆๆœฌ ้ชŒๆ”ถ ็ป“ๆžœ
v6 24 / 3 โ‘ฅโ‘จ ๅ๏ผŒโ‘ b ๅฅฝ
v6.1 25 / 2 โœ… ๆ›พๅ‘ๅธƒ
v6.2 24 / 3 ไฟฎๅฅฝ โ‘ b๏ผŒไฝ† โ‘งa โ‘จg ้€€ๆญฅ
v6.3 25 / 2 ไฟฎๅฅฝ โ‘งa โ‘จg๏ผŒโ‘ b ๅˆ้€€๏ผ›้€้กนไธŽ v6.1 ็›ธๅŒ๏ผˆ็ญ‰ไบŽ็™ฝ่ท‘๏ผ‰
v6.4 25/2 + โ‘ฃๅ ่ฐƒ็”จ็އๅดฉๅˆฐ 12%
v7 26 / 1 โœ… ๆœฌ็‰ˆๅ‘ๅธƒ
v7b 23 / 4 ๅฐ่ฏ•ไฟฎ โ‘ฅ ๅคฑ่ดฅ
v7c 22 / 5 ๅฐ่ฏ•ไฟฎ โ‘ฅ ๅคฑ่ดฅ๏ผˆๅฆไธ€ๆ–นๅ‘๏ผ‰

ๆ ธๅฟƒๆ•™่ฎญ๏ผšv6 ็ณปๅˆ—ๆฏ่ฝฎ้ƒฝๆ˜ฏใ€Œๅ‘็Žฐ้—ฎ้ข˜ โ†’ ่กฅ 5% ๆ•ฐๆฎ โ†’ ๅ…จ้‡้‡่ฎญใ€๏ผŒๆŠŠๆ•ดไธช่ƒฝๅŠ›ๅˆ†ๅธƒ้‡ๆด—ไธ€้๏ผŒ็ป“ๆžœไฟฎไธ€ไธชๅไธ€ไธชใ€‚่กฅไธๆ•ฐๆฎ็š„ๆ•ˆๅŠ›ๅ–ๅ†ณไบŽๅฎƒๅ ๆ–ฐๆ•ฐๆฎ้›†็š„ๆฏ”ไพ‹๏ผŒไธๆ˜ฏๅฎƒ็š„็ปๅฏนๆกๆ•ฐโ€”โ€”v6.4 ่กฅไบ† 248 ๆกๅŽปๅฏนๅ†ฒ 244 ๆกไน˜ๆณ•ๅŸบ็บฟ๏ผŒๅ ๆฏ”ๅชๆœ‰ 4.6%๏ผŒๅŽ‹ไธไฝๅทฒๆœ‰ๆƒฏๆ€งใ€‚

v7 ๆขไบ†ๆ–นๆณ•๏ผšๆ”น้…ๆฏ”๏ผŒไธๆ”นๅขž้‡ใ€‚ไธๅพ€ๅคงๆ•ฐๆฎ้›†้‡Œๅกž่กฅไธ๏ผŒ่€Œๆ˜ฏ้‡ๆ–ฐ็ฒพ้€‰ๆ•ดไธชๆ•ฐๆฎ้›†ใ€‚


่ฎธๅฏ

Apache 2.0๏ผŒ่ทŸๅŸบๅบง MiniCPM5-2B ไธ€่‡ดใ€‚

่ฎญ็ปƒๆ•ฐๆฎใ€่„šๆœฌ้ƒฝๅœจ้กน็›ฎ้‡Œ๏ผŒๆฌข่ฟŽ issue ไบคๆตใ€‚


English

What's new

The biggest gap in the previous release (1b-II) was that it couldn't call tools at all โ€” the training data contained zero tool-use samples. This release is built specifically to fix that:

Capability 1b-II 2b-II-pro
Tool-call format โŒ malformed, invented fields โœ… bare JSON, stable
Single-step calls โŒ โœ…
Multi-step calls โŒ โœ…
Refusing what it shouldn't do โš ๏ธ inconsistent โœ…
Interpreting tool results โŒ โœ…

New base model: switched from MiniCPM5-1B to MiniCPM5-2B (OpenBMB, Apache 2.0, 512K context).

This repo is the MLX 4-bit quantized build, 1.4 GB, ready to run on Apple Silicon.

Four builds, pick by use case:

Build Size Use case
MLX 4-bit (this repo) 1.42 GB Everyday use on a Mac โ€” fastest, smallest footprint
MLX lossless bf16 5.03 GB Quality baseline / re-quantization / further fine-tuning
-f16 5.03 GB Same as above (identical weights, named for transformers users)
GGUF 1.45 / 2.50 / 4.69 GB Ollama, llama.cpp

The MLX lossless (bf16) build is for anyone who needs to build on top of this model โ€” 4-bit is lossy and unsuitable as a base for re-quantization or continued training. It holds byte-identical weights to the -f16 repo; the two names exist so both MLX and transformers users can find it. It's a standard safetensors checkpoint โ€” loadable by MLX and transformers alike.


Quick start

MLX (Apple Silicon, this repo)

pip install mlx-lm

python -m mlx_lm.generate \
  --model whcl412/LycheeAI-coder-2b-II-pro \
  --prompt "write a quicksort"

python -m mlx_lm.server --model whcl412/LycheeAI-coder-2b-II-pro --port 8080

transformers

This repo is in MLX 4-bit format and cannot be loaded by transformers. Use the lossless build for HF safetensors โ†’ whcl412/LycheeAI-coder-2b-II-pro-MLX-bf16 (or the equivalent -f16).

Ollama (GGUF)

Published โ†’ whcl412/LycheeAI-coder-2b-II-pro-GGUF

Three variants: q4_k_m (1.45 GiB) / q8_0 (2.50 GiB, recommended) / f16 (4.69 GiB, lossless). The repo ships a Modelfile โ€” download, then ollama create.

โš ๏ธ Note: Ollama's automatic tool_calls parsing is unreliable for this small model โ€” it was trained to emit bare JSON, without the wrapper tags runtimes expect. For production, parse the JSON from content yourself. See the GGUF repo README.


Tool calling

Output format

It emits bare JSON (OpenAI function-calling style), with no wrapper at all:

{"name": "get_weather", "arguments": {"city": "Beijing"}}

No ```json fences, **no** <tool_call> tags, no "Sure, let me call the tool" narration.

Multi-step calls (only the first step is emitted when dependent)

For "Is it a good day to go out in Beijing?", it needs to check the weather first. In that case it emits only the first step:

{"name": "get_weather", "arguments": {"city": "Beijing"}}

Feed the tool result back and it continues. Your host must drive the loop: parse โ†’ execute โ†’ feed result back โ†’ parse again.

Independent calls are emitted in parallel

{"name": "get_weather", "arguments": {"city": "Beijing"}}
{"name": "get_weather", "arguments": {"city": "Shanghai"}}

It refuses clearly when it should

Not every request becomes a tool call. When something is out of scope or disallowed, it says so and offers alternatives instead of fabricating a tool call.


When to give it tools, and when not to

Category Example Behavior
Tool gives a definite answer 789*123, 1000 USD to CNY calls the tool
Out of scope / disallowed booking flights, cracking WiFi refuses + offers alternatives
Tool doesn't help "what is recursion", "write binary search" answers directly
Host has no tools "search for me" in a plain chat app says it can't, doesn't emit JSON

The last row matters: if your host is a plain chat app, give it no tool definitions at all. It will say "I have no web access" instead of emitting JSON your host can't handle.


Training

Item Value
Base openbmb/MiniCPM5-2B
Method LoRA (rank 8, dropout 0, scale 20, 16 layers)
Data 5,341 samples
Epochs 1 (2,671 steps)
LR 5e-5 (adam)
batch / seq 2 / 2048
Framework MLX-LM 0.31.3
Quantization 4-bit affine (group_size 64)

โš ๏ธ Known issues

1. It does mental arithmetic without tools โ€” and gets it wrong

1234 + 5678 = 2000      (should be 6912)
35 ** 2     = 70        (should be 1225)
13.5 ร— 4    = 7.8       (should be 54)
199 ร— 257   = 40043     (should be 51143)

Root cause (confirmed by controlled experiment): the model decides based on operation type, and this maps exactly onto per-type sample counts in the training data โ€” multiplication 432 samples โ†’ calls the tool; addition 86 / power 61 / subtraction 49 โ†’ does it in its head.

It is not string memorization (38% vs 50%, no real difference), and not difficulty (1234+5678 also gets mental math).

Workaround: state it explicitly in the system prompt:

้œ€่ฆไปปไฝ•ๆ•ฐๅ€ผ่ฎก็ฎ—ๆ—ถ๏ผŒไธ€ๅพ‹่ฐƒ็”จ calculate๏ผŒไธ่ฆ่‡ชๅทฑๅฟƒ็ฎ—ใ€‚

2. Identity questions fail under a generic system prompt

If your system prompt is the generic "You are an AI assistant with tools..." style, asking "what's your name" may produce nonsense (observed: "I'm Qwen").

Put the identity in the system prompt:

You are LycheeAI-coder-2b-II-pro. You have access to tools.

Cause: every identity sample in the training data used the specific system prompt above; the model never saw the generic-tools-plus-identity combination.

3. Tool results come in two shapes โ€” your host should know which it's sending

Both are understood:

Shape A โ€” an explicit call turn (what mainstream agent frameworks do):

user:      789*123 ็ญ‰ไบŽๅคšๅฐ‘
assistant: {"name": "calculate", "arguments": {"expression": "789*123"}}
user:      [ๅทฅๅ…ท่ฐƒ็”จ็ป“ๆžœ] {"name": "calculate", "result": {"value": 97047}}
assistant: 789 ร— 123 = **97047**ใ€‚

Shape B โ€” the host already executed it and hands the result straight over (used by 67 early samples):

user:      ่ท‘ไธ€ไธ‹่ฟ™ๆฎตไปฃ็ 

[ๅทฅๅ…ท่ฐƒ็”จ็ป“ๆžœ] {"exit_code": 0, "stdout": "45\n"}
assistant: ๆ‰ง่กŒๆˆๅŠŸ๏ผŒ่พ“ๅ‡บ `45`ใ€‚

Difference: shape B has no name in the result, because there is no call turn in context โ€” the tool identity is inferable from the system tool list and the question itself.

Recommendation: use shape A for normal integration (multi-turn loop). Use shape B only when you already know which tool to run and just want the model to interpret the result.

4. Why v6.1 and not v6.4

Five iterations were trained. v6.2 fixed one item and broke two; v6.3 was item-for-item identical to v6.1; v6.4 collapsed the tool-call rate to 12%. v6.1 is the only version with a real improvement over v6 (25/2 vs 24/3 on a 27-item eval).

Lesson: each round patched ~5% of the data and retrained on everything, reshuffling the whole behavior distribution. The next version will validate on small-scale runs first.


License

Apache 2.0, same as the MiniCPM5-2B base.


LycheeAI โ€”โ€” ๅฐ็š„๏ผŒไฝ†่ƒฝๅนฒๆดปใ€‚
LycheeAI โ€” small, but it gets the job done.

Downloads last month
62
Safetensors
Model size
3B params
Tensor type
U32
ยท
BF16
ยท
MLX
Hardware compatibility
Log In to add your hardware

4-bit

Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐Ÿ™‹ Ask for provider support

Model tree for whcl412/LycheeAI-coder-2b-II-pro

Quantized
(126)
this model