Files
admin/.tasks/llm-web-proxy-qwen-web.md

54 lines
3.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# llm-web-proxy-qwen-web
Подзадача [llm-web-proxy] (п.4). Родитель: `.tasks/llm-web-proxy.md`.
## Goal
Добавить комбо `qwen-web` в llm-web-proxy (lwp): web-чат chat.qwen.ai как провайдер
(executor + ключ + конфиг + тесты + live-smoke). Модель — Qwen, эмуляция тулов
(`emulated`, как у deepseek-web). Отдельное комбо, НЕ смешивать с deepseek-комбо.
## Почему (контекст)
- В спеке llm-web-proxy qwen-web заявлен как будущее комбо («позже: qwen-web, gemini-web, kimi-web, grok-web — отдельные комбо, свои executors»).
- Оригинальный блокер: **DNS EAI_AGAIN chat.qwen.ai** — сетевой глюк, не ключ
(.wiki/concepts/omniroute-combo-deepseek-web-tuning.md:43).
- **Проверено 2026-08-22: DNS резолвится** (nslookup chat.qwen.ai → 47.91.78.155 / 47.254.175.31, aliases) — блокер, похоже, снят.
- Ключ есть: wiki `omniroute-combo-deepseek-web-tuning.md:58` — «qwen-web (✅ ключ есть, DNS-глюк)». userToken chat.qwen.ai — в кредах omniroute (не в pass; источник — конфиг/креды omniroute, паттерн deepseek-аккаунтов megan/yulia/vitya).
- Эмуляция тулов у qwen-web: `"emulated"` (webTools.ts парсер зоопарка `<tool>`-форматов — уже в lwp, общий для deepseek-web и qwen-web).
- В lwp сейчас ТОЛЬКО deepseek: 4 комбо (flash/pro ± search), 3 аккаунта. qwen-executor'а в пакете нет (проверено 2026-08-22).
## Что брать из omniroute
- `open-sse/executors/qwen-web.ts` — из docker-образа `diegosouzapw/omniroute:latest` (`/app/`), паттерн вытаскивания deepseek-web.ts (уже отработан в llm-web-proxy).
- Парсеры тулов общие — `webTools.ts` уже есть, переиспользовать.
## Что писать в lwp
1. executor `qwen-web` (по паттерну deepseek-web, но НЕ копипастить логику тул-эмуляции — общий модуль).
2. Ключ userToken chat.qwen.ai → в lwp key-store (паттерн deepseek-аккаунтов).
3. Комбо `qwen-web` в конфиг (аккаунт, модель, timeout).
4. Тесты: TDD — round-robin, failover, `<tool>`-парсинг (зоопарк), smoke против live.
5. Live-smoke: `lwp test qwen-web` / curl `/v1/chat/completions` model=qwen-web.
## Ожидаемый результат
- `lwp combo list` показывает qwen-web.
- `lwp test qwen-web` — 200, стриминг, tool-calls работают.
- Лог lwp: req/upstream/session/stream события для qwen (raw-reply виден).
## Open questions
- [ ] Актуальный userToken chat.qwen.ai жив? (проверить при работе — EAI_AGAIN мог быть и от бана/истечения)
- [ ] Какая модель по умолчанию у qwen-web (qwen3-max? qwen3-flash?) — смотреть executor omniroute.
## Completed steps
- [x] 2026-08-22: DNS-блокер перепроверен — chat.qwen.ai резолвится (EAI_AGAIN ушёл).
- [x] 2026-08-22: подтверждено, что qwen-executor'а в lwp ещё нет (только deepseek).
## Notes
- Родитель llm-web-proxy — 🔴 active (claimed 2026-08-22, vitya). Эта подзадача ⚪ ready, берётся в работу после/параллельно с п.2 (mac/linux autostart).
- «Настоящий» web-чат Qwen без подписки — бесплатный, тул-эмуляция emulated (wiki:58).