Skip to content

wuleiyuan/smart-model-selector

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

79 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿง  Smart Model Selector

ๆ™บ่ƒฝๆจกๅž‹่ทฏ็”ฑ ยท ๅŒๅผ•ๆ“Ž้ฉฑๅŠจ ยท ๆ•…้šœ่‡ชๅŠจ่ฝฌ็งป ๅ…ผๅฎน OpenCode / OpenClaw๏ผŒ่ฎฉไฝ ็š„ AI ๅŠฉๆ‰‹ๅง‹็ปˆ่ฐƒ็”จๆœ€ๅˆ้€‚็š„ๆจกๅž‹

Version Python License CI Docker PyPI Downloads


โšก 30 ็ง’ๅฟซ้€Ÿๅผ€ๅง‹

# 1. ไธ€้”ฎๅฎ‰่ฃ…
curl -sSL https://raw.githubusercontent.com/wuleiyuan/smart-model-selector/main/install.sh | bash

# 2. ๅกซๅ…ฅไฝ ็š„ API Keys
nano ~/.opencode/keys.json

# 3. ๆŸฅ็œ‹็Šถๆ€
python3 selector_core.py --status

# 4. ๅฏๅŠจๆœๅŠก
python3 api_server.py

๐Ÿง  ๅฎƒๆ˜ฏๅฆ‚ไฝ•ๅทฅไฝœ็š„๏ผŸ

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                        ็”จๆˆท่พ“ๅ…ฅ                              โ”‚
โ”‚                   "ๅธฎๆˆ‘ๅ†™ไธ€ไธช Python ็ˆฌ่™ซ"                    โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                          โ”‚
                          โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                    ๐Ÿง  ๆ™บๆ…งๅคง่„‘                               โ”‚
โ”‚              selector_core.py (ๆ„ๅ›พๅˆ†ๆž)                      โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”   โ”‚
โ”‚  โ”‚  ๅ…ณ้”ฎ่ฏๆฃ€ๆต‹ โ†’ ่ทฏ็”ฑๅ†ณ็ญ–                                โ”‚   โ”‚
โ”‚  โ”‚  "ไปฃ็ " โ†’ Gemini 3.1 Pro                            โ”‚   โ”‚
โ”‚  โ”‚  "ๆถฆ่‰ฒ" โ†’ MiniMax M2.7                              โ”‚   โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜   โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                          โ”‚
                          โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                   ๐Ÿ’ช ๆ‰ง่กŒ่‚Œ่‚‰                               โ”‚
โ”‚         smart_model_dispatcher.py (ๅŠจๆ€่ฐƒๅบฆ)                  โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”   โ”‚
โ”‚  โ”‚  ๆ•…้šœ่ฝฌ็งป | ่ดŸ่ฝฝๅ‡่กก | ๆตๅผ่พ“ๅ‡บ                        โ”‚   โ”‚
โ”‚  โ”‚  Google โŒ โ†’ ่‡ชๅŠจๅˆ‡ๆข โ†’ MiniMax โœ…                    โ”‚   โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜   โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

๐ŸŽฏ ๆจกๅž‹่ทฏ็”ฑ็ญ–็•ฅ

ๅœบๆ™ฏ ๅ…ณ้”ฎ่ฏ ่ทฏ็”ฑๆจกๅž‹
๐Ÿ ็ผ–็จ‹ๅผ€ๅ‘ ไปฃ็ ใ€Pythonใ€Javaใ€Bugใ€็ฎ—ๆณ• Gemini 3.1 Pro
โœ๏ธ ไธญๆ–‡ๅˆ›ไฝœ ๆถฆ่‰ฒใ€ๆ–‡็ซ ใ€ๅฐ่ฏดใ€ๅ‰งๆœฌใ€็ฟป่ฏ‘ MiniMax M2.7
โ“ ๆ—ฅๅธธ้—ฎ็ญ” (้ป˜่ฎค) Gemini 3.1 Pro

โœจ ๆ ธๅฟƒ็‰นๆ€ง

็‰นๆ€ง ่ฏดๆ˜Ž
๐Ÿง  ๆ™บ่ƒฝ่ทฏ็”ฑ ๆ นๆฎไปปๅŠกๅ…ณ้”ฎ่ฏ่‡ชๅŠจ้€‰ๆ‹ฉๆœ€ไผ˜ๆจกๅž‹
๐Ÿ”„ ๆ•…้šœ่ฝฌ็งป API ๆ•…้šœ่‡ชๅŠจๅˆ‡ๆข๏ผŒ็”จๆˆทๆ— ๆ„Ÿ็Ÿฅ
โšก ๆตๅผ่พ“ๅ‡บ ๅฎžๆ—ถๆตๅผ่ฟ”ๅ›ž๏ผŒๅƒๆ‰“ๅญ—ๆœบไธ€ๆ ทไธๆป‘
๐Ÿ“Š P0 ๅ่ฎฎ ๅคง่พ“ๅ‡บ่‡ชๅŠจๅˆ†ๆต๏ผŒ้˜ฒๆญขไธŠไธ‹ๆ–‡่ฟ‡่ฝฝ
๐Ÿ›ก๏ธ ่‡ชๆ„ˆ่ƒฝๅŠ› ็‹ฌ็ซ‹ๅฅๅบท็›‘ๆŽง๏ผŒๅ‘็Žฐๅผ‚ๅธธ็ซ‹ๅณๅ‘Š่ญฆ

๐Ÿ“Š ็ซžๅ“ๅฏนๆฏ”

็‰นๆ€ง Smart Model Selector LiteLLM PortKey
ๆ•…้šœ่‡ชๅŠจ่ฝฌ็งป โœ… ้›ถ้…็ฝฎ โŒ ้œ€ๆ‰‹ๅŠจ้…็ฝฎ โœ… ้œ€ไป˜่ดน
ๅ…ณ้”ฎ่ฏๆ™บ่ƒฝ่ทฏ็”ฑ โœ… ๅผ€็ฎฑๅณ็”จ โŒ ไธๆ”ฏๆŒ โŒ ไธๆ”ฏๆŒ
ๅคš API Key ่ดŸ่ฝฝๅ‡่กก โœ… ๆ”ฏๆŒ โœ… ๆ”ฏๆŒ โœ… ๆ”ฏๆŒ
ๆตๅผ่พ“ๅ‡บไฟๆดป โœ… ่งฃๅ†ณ EOF ๆ–ญ่ฟž โš ๏ธ ้ƒจๅˆ†ๆ”ฏๆŒ โš ๏ธ ้ƒจๅˆ†ๆ”ฏๆŒ
้›ถๅค–้ƒจไพ่ต– โœ… ็บฏ Python โŒ ้œ€ Redis/ๆ•ฐๆฎๅบ“ โŒ ้œ€ไบ‘ๆœๅŠก
้ƒจ็ฝฒๅคๆ‚ๅบฆ โญ ๆž็ฎ€ โญโญโญ ๅคๆ‚ โญโญ ้œ€้…็ฝฎ

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

ๅฎ‰่ฃ…ๆ–นๅผไธ€๏ผšไธ€้”ฎๅฎ‰่ฃ…๏ผˆๆŽจ่๏ผ‰

curl -sSL https://raw.githubusercontent.com/wuleiyuan/smart-model-selector/main/install.sh | bash

ๅฎ‰่ฃ…ๆ–นๅผไบŒ๏ผšๆ‰‹ๅŠจๅฎ‰่ฃ…

git clone https://github.com/wuleiyuan/smart-model-selector.git
cd smart-model-selector
./install.sh

้…็ฝฎ API Keys

ๅคๅˆถๆจกๆฟๅนถๅกซๅ…ฅไฝ ็š„ Keys๏ผš

cp keys.example.json keys.json
nano keys.json
{
  "google_paid": ["YOUR_GOOGLE_API_KEY"],
  "google_free": ["YOUR_GOOGLE_FREE_API_KEY"],
  "minimax_paid": ["YOUR_MINIMAX_API_KEY"]
}

ๅฏๅŠจๆœๅŠก

# ๆŸฅ็œ‹็ณป็ปŸ็Šถๆ€
python3 selector_core.py --status

# ๅฏๅŠจ API ๆœๅŠก
python3 api_server.py

# ๆต‹่ฏ•่ทฏ็”ฑ
python3 selector_core.py "ๅธฎๆˆ‘ๅ†™ไธ€ไธช Python ๆŽ’ๅบ็ฎ—ๆณ•"

Docker ้ƒจ็ฝฒ๏ผˆๆŽจ่็”Ÿไบง็Žฏๅขƒ๏ผ‰

# ไฝฟ็”จ Docker Compose
docker-compose up -d

# ๆˆ–ๆ‰‹ๅŠจๆž„ๅปบ
docker build -t smart-model-selector .
docker run -v $(pwd)/keys.json:/app/keys.json:ro -p 8080:8080 smart-model-selector

---

## ๐Ÿ“ ้กน็›ฎๆžถๆž„

smart-model-selector/ โ”œโ”€โ”€ ๐Ÿง  selector_core.py # ๆ™บๆ…งๅคง่„‘ - ๆ„ๅ›พๅˆ†ๆž + ่ทฏ็”ฑๅ†ณ็ญ– โ”œโ”€โ”€ ๐Ÿ’ช smart_model_dispatcher.py # ๆ‰ง่กŒ่‚Œ่‚‰ - ๅŠจๆ€่ฐƒๅบฆ + ๆ•…้šœ่ฝฌ็งป โ”œโ”€โ”€ ๐ŸŒ api_server.py # API ็ฝ‘ๅ…ณ - OpenAI ๅ…ผๅฎนๆŽฅๅฃ โ”œโ”€โ”€ ๐Ÿ“‹ output_protocol.py # P0 ๅ่ฎฎ - ๅคง่พ“ๅ‡บ่‡ชๅŠจๅˆ†ๆต โ”œโ”€โ”€ โš™๏ธ daemon.py # ๅŽๅฐๅฎˆๆŠค่ฟ›็จ‹ - ๅฅๅบท็›‘ๆŽง โ”œโ”€โ”€ ๐Ÿ“œ keys.example.json # ้…็ฝฎๆจกๆฟ๏ผˆ่„ฑๆ•๏ผ‰ โ”œโ”€โ”€ ๐Ÿ“– README.md # ๆœฌๆ–‡ๆกฃ โ””โ”€โ”€ ๐Ÿ”ง install.sh # ไธ€้”ฎๅฎ‰่ฃ…่„šๆœฌ


---

## ๐Ÿ”ง ้ซ˜็บง้…็ฝฎ

### P0 ่พ“ๅ‡บ้ฟ่ฎฉๅ่ฎฎ

ๅฝ“่พ“ๅ‡บ่ถ…่ฟ‡ 4KB ๆ—ถ๏ผŒ่‡ชๅŠจๅˆ†ๆตๅˆฐ `/tmp/smart_selector_outputs/`

```python
from output_protocol import OutputProtocol

protocol = OutputProtocol()
result = protocol.handle(large_content)

if result["evaded"]:
    print(f"๐Ÿ“ ๅ†…ๅฎนๅทฒไฟๅญ˜่‡ณ: {result['save_path']}")

ๅŽๅฐๅฎˆๆŠค่ฟ›็จ‹

# ๅฏๅŠจๅŽๅฐๅฎˆๆŠค่ฟ›็จ‹๏ผˆๅฅๅบท็›‘ๆŽง + ่‡ชๅŠจๆ•…้šœๆขๅค๏ผ‰
python3 daemon.py &

# ๆŸฅ็œ‹ๆ—ฅๅฟ—
tail -f ~/.config/opencode/daemon.log

๐ŸŽจ ่ฎพ่ฎกๅŽŸๅˆ™

ๅŽŸๅˆ™ ่ฏดๆ˜Ž
ๆ ธๅฟƒๆž็ฎ€ ๆฏไธชๆจกๅ—ๅชๅšไธ€ไปถไบ‹๏ผŒๅšๅˆฐๆž่‡ด
ๆ’ไปถ่งฃ่€ฆ ่ทฏ็”ฑ่ง„ๅˆ™ๅฏๆ‰ฉๅฑ•๏ผŒๆ–นไพฟๆทปๅŠ ๆ–ฐๆจกๅž‹
่‡ชๆ„ˆ่ƒฝๅŠ›ๅผบ ๆ•…้šœ่‡ชๅŠจ่ฝฌ็งป๏ผŒๆ— ้œ€ไบบๅทฅๅนฒ้ข„

๐Ÿ“– ๆ–‡ๆกฃ


๐Ÿค ่ดก็Œฎ

ๆฌข่ฟŽๆไบค Issue ๅ’Œ PR๏ผ

๐Ÿ“„ License

MIT License - see LICENSE


โญ ๅฆ‚ๆžœ่ฟ™ไธช้กน็›ฎๅฏนไฝ ๆœ‰ๅธฎๅŠฉ๏ผŒ่ฏท็‚นไธช Star ๆ”ฏๆŒไธ€ไธ‹๏ผ

About

๐Ÿง ๆ™บ่ƒฝๆจกๅž‹่ฐƒๅบฆ็ณป็ปŸ - ๅŸบไบŽไปปๅŠก็ฑปๅž‹่‡ชๅŠจ้€‰ๆ‹ฉๆœ€ไผ˜ AI ๆจกๅž‹๏ผŒๆ”ฏๆŒๅคš Provider ่ดŸ่ฝฝๅ‡่กกใ€ๆ•…้šœ่‡ชๅŠจ่ฝฌ็งปใ€ๆˆๆœฌไผ˜ๅŒ–

Topics

Resources

License

Contributing

Stars

1 star

Watchers

0 watching

Forks

Packages

 
 
 

Contributors