@synsci/cli-darwin-x64 1.1.70 → 1.1.72
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.
- package/bin/skills/citation-management/SKILL.md +1109 -0
- package/bin/skills/citation-management/assets/bibtex_template.bib +264 -0
- package/bin/skills/citation-management/assets/citation_checklist.md +386 -0
- package/bin/skills/citation-management/references/bibtex_formatting.md +908 -0
- package/bin/skills/citation-management/references/citation_validation.md +794 -0
- package/bin/skills/citation-management/references/google_scholar_search.md +725 -0
- package/bin/skills/citation-management/references/metadata_extraction.md +870 -0
- package/bin/skills/citation-management/references/pubmed_search.md +839 -0
- package/bin/skills/citation-management/scripts/doi_to_bibtex.py +182 -0
- package/bin/skills/citation-management/scripts/extract_metadata.py +570 -0
- package/bin/skills/citation-management/scripts/format_bibtex.py +349 -0
- package/bin/skills/citation-management/scripts/search_google_scholar.py +251 -0
- package/bin/skills/citation-management/scripts/search_pubmed.py +348 -0
- package/bin/skills/citation-management/scripts/validate_citations.py +494 -0
- package/bin/skills/clinical-decision-support/README.md +129 -0
- package/bin/skills/clinical-decision-support/SKILL.md +506 -0
- package/bin/skills/clinical-decision-support/assets/biomarker_report_template.tex +380 -0
- package/bin/skills/clinical-decision-support/assets/clinical_pathway_template.tex +222 -0
- package/bin/skills/clinical-decision-support/assets/cohort_analysis_template.tex +359 -0
- package/bin/skills/clinical-decision-support/assets/color_schemes.tex +149 -0
- package/bin/skills/clinical-decision-support/assets/example_gbm_cohort.md +208 -0
- package/bin/skills/clinical-decision-support/assets/recommendation_strength_guide.md +328 -0
- package/bin/skills/clinical-decision-support/assets/treatment_recommendation_template.tex +529 -0
- package/bin/skills/clinical-decision-support/references/biomarker_classification.md +719 -0
- package/bin/skills/clinical-decision-support/references/clinical_decision_algorithms.md +604 -0
- package/bin/skills/clinical-decision-support/references/evidence_synthesis.md +840 -0
- package/bin/skills/clinical-decision-support/references/outcome_analysis.md +640 -0
- package/bin/skills/clinical-decision-support/references/patient_cohort_analysis.md +427 -0
- package/bin/skills/clinical-decision-support/references/treatment_recommendations.md +521 -0
- package/bin/skills/clinical-decision-support/scripts/biomarker_classifier.py +383 -0
- package/bin/skills/clinical-decision-support/scripts/build_decision_tree.py +417 -0
- package/bin/skills/clinical-decision-support/scripts/create_cohort_tables.py +509 -0
- package/bin/skills/clinical-decision-support/scripts/generate_survival_analysis.py +441 -0
- package/bin/skills/clinical-decision-support/scripts/validate_cds_document.py +326 -0
- package/bin/skills/clinical-reports/IMPLEMENTATION_SUMMARY.md +641 -0
- package/bin/skills/clinical-reports/README.md +236 -0
- package/bin/skills/clinical-reports/SKILL.md +1127 -0
- package/bin/skills/clinical-reports/assets/case_report_template.md +352 -0
- package/bin/skills/clinical-reports/assets/clinical_trial_csr_template.md +353 -0
- package/bin/skills/clinical-reports/assets/clinical_trial_sae_template.md +359 -0
- package/bin/skills/clinical-reports/assets/consult_note_template.md +305 -0
- package/bin/skills/clinical-reports/assets/discharge_summary_template.md +453 -0
- package/bin/skills/clinical-reports/assets/hipaa_compliance_checklist.md +395 -0
- package/bin/skills/clinical-reports/assets/history_physical_template.md +305 -0
- package/bin/skills/clinical-reports/assets/lab_report_template.md +309 -0
- package/bin/skills/clinical-reports/assets/pathology_report_template.md +249 -0
- package/bin/skills/clinical-reports/assets/quality_checklist.md +338 -0
- package/bin/skills/clinical-reports/assets/radiology_report_template.md +318 -0
- package/bin/skills/clinical-reports/assets/soap_note_template.md +253 -0
- package/bin/skills/clinical-reports/references/case_report_guidelines.md +570 -0
- package/bin/skills/clinical-reports/references/clinical_trial_reporting.md +693 -0
- package/bin/skills/clinical-reports/references/data_presentation.md +530 -0
- package/bin/skills/clinical-reports/references/diagnostic_reports_standards.md +629 -0
- package/bin/skills/clinical-reports/references/medical_terminology.md +588 -0
- package/bin/skills/clinical-reports/references/patient_documentation.md +744 -0
- package/bin/skills/clinical-reports/references/peer_review_standards.md +585 -0
- package/bin/skills/clinical-reports/references/regulatory_compliance.md +577 -0
- package/bin/skills/clinical-reports/scripts/check_deidentification.py +332 -0
- package/bin/skills/clinical-reports/scripts/compliance_checker.py +78 -0
- package/bin/skills/clinical-reports/scripts/extract_clinical_data.py +97 -0
- package/bin/skills/clinical-reports/scripts/format_adverse_events.py +97 -0
- package/bin/skills/clinical-reports/scripts/generate_report_template.py +149 -0
- package/bin/skills/clinical-reports/scripts/terminology_validator.py +126 -0
- package/bin/skills/clinical-reports/scripts/validate_case_report.py +323 -0
- package/bin/skills/clinical-reports/scripts/validate_trial_report.py +88 -0
- package/bin/skills/fireworks-ai/SKILL.md +665 -0
- package/bin/skills/generate-image/SKILL.md +178 -0
- package/bin/skills/generate-image/scripts/generate_image.py +254 -0
- package/bin/skills/groq/SKILL.md +347 -0
- package/bin/skills/hypothesis-generation/SKILL.md +293 -0
- package/bin/skills/hypothesis-generation/assets/FORMATTING_GUIDE.md +672 -0
- package/bin/skills/hypothesis-generation/assets/hypothesis_generation.sty +307 -0
- package/bin/skills/hypothesis-generation/assets/hypothesis_report_template.tex +572 -0
- package/bin/skills/hypothesis-generation/references/experimental_design_patterns.md +329 -0
- package/bin/skills/hypothesis-generation/references/hypothesis_quality_criteria.md +198 -0
- package/bin/skills/hypothesis-generation/references/literature_search_strategies.md +622 -0
- package/bin/skills/latex-posters/README.md +417 -0
- package/bin/skills/latex-posters/SKILL.md +1602 -0
- package/bin/skills/latex-posters/assets/baposter_template.tex +257 -0
- package/bin/skills/latex-posters/assets/beamerposter_template.tex +244 -0
- package/bin/skills/latex-posters/assets/poster_quality_checklist.md +358 -0
- package/bin/skills/latex-posters/assets/tikzposter_template.tex +251 -0
- package/bin/skills/latex-posters/references/latex_poster_packages.md +745 -0
- package/bin/skills/latex-posters/references/poster_content_guide.md +748 -0
- package/bin/skills/latex-posters/references/poster_design_principles.md +806 -0
- package/bin/skills/latex-posters/references/poster_layout_design.md +900 -0
- package/bin/skills/latex-posters/scripts/review_poster.sh +214 -0
- package/bin/skills/literature-review/SKILL.md +641 -0
- package/bin/skills/literature-review/assets/review_template.md +412 -0
- package/bin/skills/literature-review/references/citation_styles.md +166 -0
- package/bin/skills/literature-review/references/database_strategies.md +455 -0
- package/bin/skills/literature-review/scripts/generate_pdf.py +184 -0
- package/bin/skills/literature-review/scripts/search_databases.py +310 -0
- package/bin/skills/literature-review/scripts/verify_citations.py +218 -0
- package/bin/skills/market-research-reports/SKILL.md +904 -0
- package/bin/skills/market-research-reports/assets/FORMATTING_GUIDE.md +428 -0
- package/bin/skills/market-research-reports/assets/market_report_template.tex +1380 -0
- package/bin/skills/market-research-reports/assets/market_research.sty +564 -0
- package/bin/skills/market-research-reports/references/data_analysis_patterns.md +548 -0
- package/bin/skills/market-research-reports/references/report_structure_guide.md +999 -0
- package/bin/skills/market-research-reports/references/visual_generation_guide.md +1077 -0
- package/bin/skills/market-research-reports/scripts/generate_market_visuals.py +472 -0
- package/bin/skills/markitdown/INSTALLATION_GUIDE.md +318 -0
- package/bin/skills/markitdown/LICENSE.txt +22 -0
- package/bin/skills/markitdown/OPENROUTER_INTEGRATION.md +359 -0
- package/bin/skills/markitdown/QUICK_REFERENCE.md +309 -0
- package/bin/skills/markitdown/README.md +184 -0
- package/bin/skills/markitdown/SKILL.md +486 -0
- package/bin/skills/markitdown/SKILL_SUMMARY.md +307 -0
- package/bin/skills/markitdown/assets/example_usage.md +463 -0
- package/bin/skills/markitdown/references/api_reference.md +399 -0
- package/bin/skills/markitdown/references/file_formats.md +542 -0
- package/bin/skills/markitdown/scripts/batch_convert.py +195 -0
- package/bin/skills/markitdown/scripts/convert_literature.py +262 -0
- package/bin/skills/markitdown/scripts/convert_with_ai.py +224 -0
- package/bin/skills/ml-paper-writing/SKILL.md +937 -0
- package/bin/skills/ml-paper-writing/references/checklists.md +361 -0
- package/bin/skills/ml-paper-writing/references/citation-workflow.md +562 -0
- package/bin/skills/ml-paper-writing/references/reviewer-guidelines.md +367 -0
- package/bin/skills/ml-paper-writing/references/sources.md +159 -0
- package/bin/skills/ml-paper-writing/references/writing-guide.md +476 -0
- package/bin/skills/ml-paper-writing/templates/README.md +251 -0
- package/bin/skills/ml-paper-writing/templates/aaai2026/README.md +534 -0
- package/bin/skills/ml-paper-writing/templates/aaai2026/aaai2026-unified-supp.tex +144 -0
- package/bin/skills/ml-paper-writing/templates/aaai2026/aaai2026-unified-template.tex +952 -0
- package/bin/skills/ml-paper-writing/templates/aaai2026/aaai2026.bib +111 -0
- package/bin/skills/ml-paper-writing/templates/aaai2026/aaai2026.bst +1493 -0
- package/bin/skills/ml-paper-writing/templates/aaai2026/aaai2026.sty +315 -0
- package/bin/skills/ml-paper-writing/templates/acl/README.md +50 -0
- package/bin/skills/ml-paper-writing/templates/acl/acl.sty +312 -0
- package/bin/skills/ml-paper-writing/templates/acl/acl_latex.tex +377 -0
- package/bin/skills/ml-paper-writing/templates/acl/acl_lualatex.tex +101 -0
- package/bin/skills/ml-paper-writing/templates/acl/acl_natbib.bst +1940 -0
- package/bin/skills/ml-paper-writing/templates/acl/anthology.bib.txt +26 -0
- package/bin/skills/ml-paper-writing/templates/acl/custom.bib +70 -0
- package/bin/skills/ml-paper-writing/templates/acl/formatting.md +326 -0
- package/bin/skills/ml-paper-writing/templates/colm2025/README.md +3 -0
- package/bin/skills/ml-paper-writing/templates/colm2025/colm2025_conference.bib +11 -0
- package/bin/skills/ml-paper-writing/templates/colm2025/colm2025_conference.bst +1440 -0
- package/bin/skills/ml-paper-writing/templates/colm2025/colm2025_conference.pdf +0 -0
- package/bin/skills/ml-paper-writing/templates/colm2025/colm2025_conference.sty +218 -0
- package/bin/skills/ml-paper-writing/templates/colm2025/colm2025_conference.tex +305 -0
- package/bin/skills/ml-paper-writing/templates/colm2025/fancyhdr.sty +485 -0
- package/bin/skills/ml-paper-writing/templates/colm2025/math_commands.tex +508 -0
- package/bin/skills/ml-paper-writing/templates/colm2025/natbib.sty +1246 -0
- package/bin/skills/ml-paper-writing/templates/iclr2026/fancyhdr.sty +485 -0
- package/bin/skills/ml-paper-writing/templates/iclr2026/iclr2026_conference.bib +24 -0
- package/bin/skills/ml-paper-writing/templates/iclr2026/iclr2026_conference.bst +1440 -0
- package/bin/skills/ml-paper-writing/templates/iclr2026/iclr2026_conference.pdf +0 -0
- package/bin/skills/ml-paper-writing/templates/iclr2026/iclr2026_conference.sty +246 -0
- package/bin/skills/ml-paper-writing/templates/iclr2026/iclr2026_conference.tex +414 -0
- package/bin/skills/ml-paper-writing/templates/iclr2026/math_commands.tex +508 -0
- package/bin/skills/ml-paper-writing/templates/iclr2026/natbib.sty +1246 -0
- package/bin/skills/ml-paper-writing/templates/icml2026/algorithm.sty +79 -0
- package/bin/skills/ml-paper-writing/templates/icml2026/algorithmic.sty +201 -0
- package/bin/skills/ml-paper-writing/templates/icml2026/example_paper.bib +75 -0
- package/bin/skills/ml-paper-writing/templates/icml2026/example_paper.pdf +0 -0
- package/bin/skills/ml-paper-writing/templates/icml2026/example_paper.tex +662 -0
- package/bin/skills/ml-paper-writing/templates/icml2026/fancyhdr.sty +864 -0
- package/bin/skills/ml-paper-writing/templates/icml2026/icml2026.bst +1443 -0
- package/bin/skills/ml-paper-writing/templates/icml2026/icml2026.sty +767 -0
- package/bin/skills/ml-paper-writing/templates/icml2026/icml_numpapers.pdf +0 -0
- package/bin/skills/ml-paper-writing/templates/neurips2025/Makefile +36 -0
- package/bin/skills/ml-paper-writing/templates/neurips2025/extra_pkgs.tex +53 -0
- package/bin/skills/ml-paper-writing/templates/neurips2025/main.tex +38 -0
- package/bin/skills/ml-paper-writing/templates/neurips2025/neurips.sty +382 -0
- package/bin/skills/paper-2-web/SKILL.md +491 -0
- package/bin/skills/paper-2-web/references/installation.md +141 -0
- package/bin/skills/paper-2-web/references/paper2poster.md +346 -0
- package/bin/skills/paper-2-web/references/paper2video.md +305 -0
- package/bin/skills/paper-2-web/references/paper2web.md +187 -0
- package/bin/skills/paper-2-web/references/usage_examples.md +436 -0
- package/bin/skills/peer-review/SKILL.md +702 -0
- package/bin/skills/peer-review/references/calibration_guidelines.md +196 -0
- package/bin/skills/peer-review/references/common_issues.md +552 -0
- package/bin/skills/peer-review/references/paper_mechanics.md +269 -0
- package/bin/skills/peer-review/references/reporting_standards.md +290 -0
- package/bin/skills/peer-review/references/scoring_rubric.md +239 -0
- package/bin/skills/pptx-posters/SKILL.md +410 -0
- package/bin/skills/pptx-posters/assets/poster_html_template.html +257 -0
- package/bin/skills/pptx-posters/assets/poster_quality_checklist.md +358 -0
- package/bin/skills/pptx-posters/references/poster_content_guide.md +748 -0
- package/bin/skills/pptx-posters/references/poster_design_principles.md +806 -0
- package/bin/skills/pptx-posters/references/poster_layout_design.md +900 -0
- package/bin/skills/research-grants/README.md +285 -0
- package/bin/skills/research-grants/SKILL.md +938 -0
- package/bin/skills/research-grants/assets/budget_justification_template.md +453 -0
- package/bin/skills/research-grants/assets/nih_specific_aims_template.md +166 -0
- package/bin/skills/research-grants/assets/nsf_project_summary_template.md +92 -0
- package/bin/skills/research-grants/references/broader_impacts.md +392 -0
- package/bin/skills/research-grants/references/darpa_guidelines.md +636 -0
- package/bin/skills/research-grants/references/doe_guidelines.md +586 -0
- package/bin/skills/research-grants/references/nih_guidelines.md +851 -0
- package/bin/skills/research-grants/references/nsf_guidelines.md +570 -0
- package/bin/skills/research-grants/references/specific_aims_guide.md +458 -0
- package/bin/skills/research-lookup/README.md +156 -0
- package/bin/skills/research-lookup/SKILL.md +606 -0
- package/bin/skills/research-lookup/examples.py +174 -0
- package/bin/skills/research-lookup/lookup.py +187 -0
- package/bin/skills/research-lookup/research_lookup.py +483 -0
- package/bin/skills/research-lookup/scripts/research_lookup.py +483 -0
- package/bin/skills/scholar-evaluation/SKILL.md +289 -0
- package/bin/skills/scholar-evaluation/references/evaluation_framework.md +663 -0
- package/bin/skills/scholar-evaluation/scripts/calculate_scores.py +366 -0
- package/bin/skills/scientific-critical-thinking/SKILL.md +566 -0
- package/bin/skills/scientific-critical-thinking/references/common_biases.md +364 -0
- package/bin/skills/scientific-critical-thinking/references/evidence_hierarchy.md +484 -0
- package/bin/skills/scientific-critical-thinking/references/experimental_design.md +496 -0
- package/bin/skills/scientific-critical-thinking/references/logical_fallacies.md +478 -0
- package/bin/skills/scientific-critical-thinking/references/scientific_method.md +169 -0
- package/bin/skills/scientific-critical-thinking/references/statistical_pitfalls.md +506 -0
- package/bin/skills/scientific-schematics/QUICK_REFERENCE.md +207 -0
- package/bin/skills/scientific-schematics/README.md +327 -0
- package/bin/skills/scientific-schematics/SKILL.md +615 -0
- package/bin/skills/scientific-schematics/example_usage.sh +89 -0
- package/bin/skills/scientific-schematics/references/best_practices.md +559 -0
- package/bin/skills/scientific-schematics/scripts/generate_schematic.py +135 -0
- package/bin/skills/scientific-schematics/scripts/generate_schematic_ai.py +807 -0
- package/bin/skills/scientific-schematics/test_ai_generation.py +243 -0
- package/bin/skills/scientific-slides/SKILL.md +942 -0
- package/bin/skills/scientific-slides/assets/timing_guidelines.md +597 -0
- package/bin/skills/scientific-slides/references/data_visualization_slides.md +708 -0
- package/bin/skills/scientific-slides/references/presentation_structure.md +642 -0
- package/bin/skills/scientific-slides/references/slide_design_principles.md +849 -0
- package/bin/skills/scientific-slides/references/talk_types_guide.md +687 -0
- package/bin/skills/scientific-slides/references/visual_review_workflow.md +775 -0
- package/bin/skills/scientific-slides/scripts/generate_slide_image.py +143 -0
- package/bin/skills/scientific-slides/scripts/generate_slide_image_ai.py +748 -0
- package/bin/skills/scientific-slides/scripts/pdf_to_images.py +201 -0
- package/bin/skills/scientific-slides/scripts/slides_to_pdf.py +220 -0
- package/bin/skills/scientific-slides/scripts/validate_presentation.py +367 -0
- package/bin/skills/scientific-writing/SKILL.md +714 -0
- package/bin/skills/scientific-writing/assets/REPORT_FORMATTING_GUIDE.md +574 -0
- package/bin/skills/scientific-writing/assets/scientific_report.sty +606 -0
- package/bin/skills/scientific-writing/assets/scientific_report_template.tex +449 -0
- package/bin/skills/scientific-writing/references/citation_styles.md +720 -0
- package/bin/skills/scientific-writing/references/figures_tables.md +806 -0
- package/bin/skills/scientific-writing/references/imrad_structure.md +686 -0
- package/bin/skills/scientific-writing/references/professional_report_formatting.md +664 -0
- package/bin/skills/scientific-writing/references/reporting_guidelines.md +748 -0
- package/bin/skills/scientific-writing/references/writing_principles.md +824 -0
- package/bin/skills/tinker/SKILL.md +2 -3
- package/bin/skills/together-ai/SKILL.md +722 -0
- package/bin/skills/treatment-plans/README.md +488 -0
- package/bin/skills/treatment-plans/SKILL.md +1579 -0
- package/bin/skills/treatment-plans/assets/STYLING_QUICK_REFERENCE.md +185 -0
- package/bin/skills/treatment-plans/assets/chronic_disease_management_plan.tex +665 -0
- package/bin/skills/treatment-plans/assets/general_medical_treatment_plan.tex +547 -0
- package/bin/skills/treatment-plans/assets/medical_treatment_plan.sty +222 -0
- package/bin/skills/treatment-plans/assets/mental_health_treatment_plan.tex +774 -0
- package/bin/skills/treatment-plans/assets/one_page_treatment_plan.tex +193 -0
- package/bin/skills/treatment-plans/assets/pain_management_plan.tex +799 -0
- package/bin/skills/treatment-plans/assets/perioperative_care_plan.tex +753 -0
- package/bin/skills/treatment-plans/assets/quality_checklist.md +471 -0
- package/bin/skills/treatment-plans/assets/rehabilitation_treatment_plan.tex +756 -0
- package/bin/skills/treatment-plans/references/goal_setting_frameworks.md +411 -0
- package/bin/skills/treatment-plans/references/intervention_guidelines.md +507 -0
- package/bin/skills/treatment-plans/references/regulatory_compliance.md +476 -0
- package/bin/skills/treatment-plans/references/specialty_specific_guidelines.md +655 -0
- package/bin/skills/treatment-plans/references/treatment_plan_standards.md +485 -0
- package/bin/skills/treatment-plans/scripts/check_completeness.py +322 -0
- package/bin/skills/treatment-plans/scripts/generate_template.py +233 -0
- package/bin/skills/treatment-plans/scripts/timeline_generator.py +385 -0
- package/bin/skills/treatment-plans/scripts/validate_treatment_plan.py +369 -0
- package/bin/skills/unsloth/SKILL.md +565 -47
- package/bin/skills/unsloth/docs/advanced-rl.md +222 -0
- package/bin/skills/unsloth/docs/chat-templates.md +141 -0
- package/bin/skills/unsloth/docs/datasets.md +489 -0
- package/bin/skills/unsloth/docs/docker-extended.md +99 -0
- package/bin/skills/unsloth/docs/dynamic-ggufs-2.0.md +116 -0
- package/bin/skills/unsloth/docs/dynamic-ggufs-aider.md +118 -0
- package/bin/skills/unsloth/docs/faq.md +91 -0
- package/bin/skills/unsloth/docs/fp16-vs-bf16.md +61 -0
- package/bin/skills/unsloth/docs/fp8-rl.md +224 -0
- package/bin/skills/unsloth/docs/glm-4.7-flash.md +997 -0
- package/bin/skills/unsloth/docs/inference-deployment-overview.md +17 -0
- package/bin/skills/unsloth/docs/inference.md +27 -0
- package/bin/skills/unsloth/docs/installation-docker.md +155 -0
- package/bin/skills/unsloth/docs/installation-pip.md +148 -0
- package/bin/skills/unsloth/docs/kernels-packing.md +190 -0
- package/bin/skills/unsloth/docs/kimi-k2.5.md +634 -0
- package/bin/skills/unsloth/docs/lm-studio.md +235 -0
- package/bin/skills/unsloth/docs/lora-hot-swapping.md +75 -0
- package/bin/skills/unsloth/docs/lora-hyperparameters.md +363 -0
- package/bin/skills/unsloth/docs/memory-efficient-rl.md +267 -0
- package/bin/skills/unsloth/docs/model-selection.md +70 -0
- package/bin/skills/unsloth/docs/models.md +532 -0
- package/bin/skills/unsloth/docs/multi-gpu-ddp.md +90 -0
- package/bin/skills/unsloth/docs/notebooks.md +223 -0
- package/bin/skills/unsloth/docs/overview.md +110 -0
- package/bin/skills/unsloth/docs/qwen3-coder-next-extended.md +900 -0
- package/bin/skills/unsloth/docs/qwen3-coder-next.md +900 -0
- package/bin/skills/unsloth/docs/requirements.md +45 -0
- package/bin/skills/unsloth/docs/reward-hacking.md +25 -0
- package/bin/skills/unsloth/docs/saving-to-gguf.md +138 -0
- package/bin/skills/unsloth/docs/saving-to-ollama.md +46 -0
- package/bin/skills/unsloth/docs/sglang-guide.md +278 -0
- package/bin/skills/unsloth/docs/speculative-decoding.md +70 -0
- package/bin/skills/unsloth/docs/tool-calling.md +334 -0
- package/bin/skills/unsloth/docs/troubleshooting-faq.md +204 -0
- package/bin/skills/unsloth/docs/troubleshooting-inference.md +26 -0
- package/bin/skills/unsloth/docs/tts-fine-tuning.md +149 -0
- package/bin/skills/unsloth/docs/tutorial-grpo.md +273 -0
- package/bin/skills/unsloth/docs/tutorial-llama3-ollama.md +356 -0
- package/bin/skills/unsloth/docs/vision-fine-tuning.md +135 -0
- package/bin/skills/unsloth/docs/vision-rl.md +170 -0
- package/bin/skills/unsloth/docs/vllm-engine-arguments.md +43 -0
- package/bin/skills/unsloth/docs/vllm-guide.md +98 -0
- package/bin/skills/venue-templates/SKILL.md +686 -0
- package/bin/skills/venue-templates/assets/examples/cell_summary_example.md +247 -0
- package/bin/skills/venue-templates/assets/examples/medical_structured_abstract.md +313 -0
- package/bin/skills/venue-templates/assets/examples/nature_abstract_examples.md +213 -0
- package/bin/skills/venue-templates/assets/examples/neurips_introduction_example.md +245 -0
- package/bin/skills/venue-templates/assets/grants/nih_specific_aims.tex +235 -0
- package/bin/skills/venue-templates/assets/grants/nsf_proposal_template.tex +375 -0
- package/bin/skills/venue-templates/assets/journals/nature_article.tex +171 -0
- package/bin/skills/venue-templates/assets/journals/neurips_article.tex +283 -0
- package/bin/skills/venue-templates/assets/journals/plos_one.tex +317 -0
- package/bin/skills/venue-templates/assets/posters/beamerposter_academic.tex +311 -0
- package/bin/skills/venue-templates/references/cell_press_style.md +483 -0
- package/bin/skills/venue-templates/references/conferences_formatting.md +564 -0
- package/bin/skills/venue-templates/references/cs_conference_style.md +463 -0
- package/bin/skills/venue-templates/references/grants_requirements.md +787 -0
- package/bin/skills/venue-templates/references/journals_formatting.md +486 -0
- package/bin/skills/venue-templates/references/medical_journal_styles.md +535 -0
- package/bin/skills/venue-templates/references/ml_conference_style.md +556 -0
- package/bin/skills/venue-templates/references/nature_science_style.md +405 -0
- package/bin/skills/venue-templates/references/posters_guidelines.md +628 -0
- package/bin/skills/venue-templates/references/reviewer_expectations.md +417 -0
- package/bin/skills/venue-templates/references/venue_writing_styles.md +321 -0
- package/bin/skills/venue-templates/scripts/customize_template.py +195 -0
- package/bin/skills/venue-templates/scripts/query_template.py +266 -0
- package/bin/skills/venue-templates/scripts/validate_format.py +250 -0
- package/bin/synsc +0 -0
- package/package.json +1 -1
- package/bin/skills/unsloth/references/index.md +0 -7
- package/bin/skills/unsloth/references/llms-full.md +0 -16799
- package/bin/skills/unsloth/references/llms-txt.md +0 -12044
- package/bin/skills/unsloth/references/llms.md +0 -82
|
@@ -0,0 +1,900 @@
|
|
|
1
|
+
# Qwen3-Coder-Next: How to Run Locally
|
|
2
|
+
|
|
3
|
+
Qwen releases Qwen3-Coder-Next, an 80B MoE model (3B active parameters) with **256K context** for fast agentic coding and local use. It is comparable to the performance of models with 10–20× more active parameters.
|
|
4
|
+
|
|
5
|
+
It runs on **46GB RAM**/VRAM/unified memory (85GB for 8-bit), is non-reasoning for ultra-quick code responses. The model excels at long-horizon reasoning, complex tool use, and recovery from execution failures.
|
|
6
|
+
|
|
7
|
+
{% hint style="success" %}
|
|
8
|
+
**Feb 4 update:** `llama.cpp` fixed a bug correcting the calculation for `vectorized key_gdiff.` This fixes previous looping and output issues. We updated the GGUFs - please **re-download** and **UPDATE** `llama.cpp` for better outputs.
|
|
9
|
+
{% endhint %}
|
|
10
|
+
|
|
11
|
+
We introduce new MXFP4 quants for great quality and speed and you’ll also learn to run the model on Codex & Claude Code.
|
|
12
|
+
|
|
13
|
+
Qwen3-Coder-Next Unsloth [Dynamic GGUFs](https://unsloth.ai/docs/basics/unsloth-dynamic-2.0-ggufs) to run: [unsloth/Qwen3-Coder-Next-GGUF](htthuggingface.co/unsloth/Qwen3-Coder-Next-GGUF)
|
|
14
|
+
|
|
15
|
+
<a href="#run-qwen3-coder-next" class="button primary">Run GGUF Tutorial</a><a href="#improving-generation-speed" class="button secondary">Codex & Claude Code</a><a href="#fp8-qwen3-coder-next-in-vllm" class="button secondary">FP8 vLLM Tutorial</a>
|
|
16
|
+
|
|
17
|
+
### ⚙️ Usage Guide
|
|
18
|
+
|
|
19
|
+
Don't have 46GB RAM or unified memory? No worries you can run our smaller quants like 3-bit. It is best to have the model size = to the sum of your compute ( **`disk space + RAM + VRAM ≥ size of quant).`** If your quant fully fits on your device, expect 20+ tokens/s. If it doesn't fit, it'll still work by offloading but it will be slower.
|
|
20
|
+
|
|
21
|
+
To achieve optimal performance, Qwen recommends these settings:
|
|
22
|
+
|
|
23
|
+
* <mark style="background-color:blue;">`Temperature = 1.0`</mark>
|
|
24
|
+
* `Top_P = 0.95`
|
|
25
|
+
* `Top_K = 40`
|
|
26
|
+
* `Min_P = 0.01` (llama.cpp's default is 0.05)
|
|
27
|
+
|
|
28
|
+
Supports up to `262,144` context natively but you can set it to `32,768` tokens for less memory use.
|
|
29
|
+
|
|
30
|
+
### 🖥️ Run Qwen3-Coder-Next
|
|
31
|
+
|
|
32
|
+
Depending e-case you will need to use different settings. Because this guide uses 4-bit, you will need around 46GB RAM/unified memory. We recommend using at least 3-bit precision for best performance.
|
|
33
|
+
|
|
34
|
+
{% hint style="success" %}
|
|
35
|
+
**Feb 4 update:** `llama.cpp` fixed a bug correcting the calculation for `vectorized key_gdiff.` This fixes previous looping and output issues. We updated the GGUFs - please **re-download** and **UPDATE** `llama.cpp` for better outputs.
|
|
36
|
+
{% endhint %}
|
|
37
|
+
|
|
38
|
+
{% hint style="info" %}
|
|
39
|
+
NOTE: This model supports only non-thinking mode and does not generate `<think></think>` blocks in its output. So specifying `enable_thinking=False` is no longer required.
|
|
40
|
+
{% endhint %}
|
|
41
|
+
|
|
42
|
+
#### Llama.cpp Tutorial (GGUF):
|
|
43
|
+
|
|
44
|
+
Instructions to run in llama.cpp (note we will be using 4-bit to fit most devices):
|
|
45
|
+
|
|
46
|
+
{% stepper %}
|
|
47
|
+
{% step %}
|
|
48
|
+
Obtain the latest `llama.cpp` on [GitHub here](https://github.com/ggml-org/llama.cpp). You can follow the build instructions below as well. Change `-DGGML_CUDA=ON` to `-DGGML_CUDA=OFF` if you don't have a GPU or just want CPU inference.
|
|
49
|
+
|
|
50
|
+
{% code overflow="wrap" %}
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
apt-get update
|
|
54
|
+
apt-get install pciutils build-essential cmake curl libcurl4-openssl-dev -y
|
|
55
|
+
git clone https://github.com/ggml-org/llama.cpp
|
|
56
|
+
cmake llama.cpp -B llama.cpp/build \
|
|
57
|
+
-DBUILD_SHARED_LIBS=OFF -DGGML_CUDA=ON
|
|
58
|
+
cmake --build llama.cpp/build --config Release -j --clean-first --target llama-cli llama-mtmd-cli llama-server llama-gguf-split
|
|
59
|
+
cp llama.cpp/build/bin/llama-* llama.cpp
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
{% endcode %}
|
|
63
|
+
{% endstep %}
|
|
64
|
+
|
|
65
|
+
{% step %}
|
|
66
|
+
You can directly pull from Hugging Face. You can increase the context to 256K if your RAM/VRAM can fit it. Using `--fit on` will also auto determine the context length.
|
|
67
|
+
|
|
68
|
+
You can use the recommended parameters: `temperature=1.0`, `top_p=0.95`, `top_k=40`
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
./llama.cpp/llama-cli \
|
|
72
|
+
-hf unsloth/Qwen3-Coder-Next-GGUF:UD-Q4_K_XL \
|
|
73
|
+
--jinja --ctx-size 16384 \
|
|
74
|
+
--temp 1.0 --top-p 0.95 --min-p 0.01 --top-k 40 --fit on
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
{% endstep %}
|
|
78
|
+
|
|
79
|
+
{% step %}
|
|
80
|
+
Download the model via (after installing `pip install huggingface_hub`). You can choose `UD-Q4_K_XL` or other quantized versions.
|
|
81
|
+
|
|
82
|
+
{% code overflow="wrap" %}
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
pip install -U huggingface_hub
|
|
86
|
+
hf download unsloth/Qwen3-Coder-Next-GGUF \
|
|
87
|
+
--local-dir unsloth/Qwen3-Coder-Next-GGUF \
|
|
88
|
+
--include "*UD-Q4_K_XL*"
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
{% endcode %}
|
|
92
|
+
{% endstep %}
|
|
93
|
+
|
|
94
|
+
{% step %}
|
|
95
|
+
Then run the model in conversation mode:
|
|
96
|
+
|
|
97
|
+
{% code overflow="wrap" %}
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
./llama.cpp/llama-cli \
|
|
101
|
+
--model unsloth/Qwen3-Coder-Next-GGUF/Qwen3-Coder-Next-UD-Q4_K_XL.gguf \
|
|
102
|
+
--fit on \
|
|
103
|
+
--seed 3407 \
|
|
104
|
+
--temp 1.0 \
|
|
105
|
+
--top-p 0.95 \
|
|
106
|
+
--min-p 0.01 \
|
|
107
|
+
--top-k 40 \
|
|
108
|
+
--jinja
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
{% endcode %}
|
|
112
|
+
|
|
113
|
+
Also, adjust **context window** as required, up to `262,144`
|
|
114
|
+
|
|
115
|
+
{% hint style="info" %}
|
|
116
|
+
NOTE: This model supports only non-thinking mode and does not generate `<think></think>` blocks in its output. So specifying `enable_thinking=False` is no longer required.
|
|
117
|
+
{% endhint %}
|
|
118
|
+
{% endstep %}
|
|
119
|
+
{% endstepper %}
|
|
120
|
+
|
|
121
|
+
### 🦙Llama-server serving & deployment
|
|
122
|
+
|
|
123
|
+
To deploy Qwen3-Coder-Next for production, we e `llama-server` In a new terminal say via tmux. Then, deploy the model via:
|
|
124
|
+
|
|
125
|
+
{% code overflow="wrap" %}
|
|
126
|
+
|
|
127
|
+
```bash
|
|
128
|
+
./llama.cpp/llama-server \
|
|
129
|
+
--model unsloth/Qwen3-Coder-Next-GGUF/Qwen3-Coder-Next-UD-Q4_K_XL.gguf \
|
|
130
|
+
--alias "unsloth/Qwen3-Coder-Next" \
|
|
131
|
+
--fit on \
|
|
132
|
+
--seed 3407 \
|
|
133
|
+
--temp 1.0 \
|
|
134
|
+
--top-p 0.95 \
|
|
135
|
+
--min-p 0.01 \
|
|
136
|
+
--top-k 40 \
|
|
137
|
+
--port 8001 \
|
|
138
|
+
--jinja
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
{% endcode %}
|
|
142
|
+
|
|
143
|
+
Then in a new terminal, after doing `pip install openai`, we can run the model:
|
|
144
|
+
|
|
145
|
+
{% code overflow="wrap" %}
|
|
146
|
+
|
|
147
|
+
```python
|
|
148
|
+
from openai import OpenAI
|
|
149
|
+
import json
|
|
150
|
+
openai_client = OpenAI(
|
|
151
|
+
base_url = "http://127.0.0.1:8001/v1",
|
|
152
|
+
api_key = "sk-no-key-required",
|
|
153
|
+
)
|
|
154
|
+
completion = openai_client.chat.completions.create(
|
|
155
|
+
model = "unsloth/Qwen3-Coder-Next",
|
|
156
|
+
messages = [{"role": "user", "content": "Create a Flappy Bird game in HTML"},],
|
|
157
|
+
)
|
|
158
|
+
print(completion.choices[0].message.content)
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
{% endcode %}
|
|
162
|
+
|
|
163
|
+
Which will output:
|
|
164
|
+
|
|
165
|
+
{% columns %}
|
|
166
|
+
{% column width="66.66666666666666%" %}
|
|
167
|
+
{% code overflow="wrap" expandable="true" %}
|
|
168
|
+
|
|
169
|
+
````markdown
|
|
170
|
+
Here is a complete, working Flappy Bird game contained in a single file.
|
|
171
|
+
|
|
172
|
+
I have used **HTML5 Canvas** for the graphics and **JavaScript** for the physics (gravity, collision detection, and scoring). No external images or downloads are required; the game draws the bird and pipes using code.
|
|
173
|
+
|
|
174
|
+
### How to run this:
|
|
175
|
+
1. Copy the code block below.
|
|
176
|
+
2. Create a new file on your computer named `game.html`.
|
|
177
|
+
3. Paste the code into that file and save it.
|
|
178
|
+
4. Double-click `game.html` to open it in your web browser.
|
|
179
|
+
|
|
180
|
+
```html
|
|
181
|
+
<!DOCTYPE html>
|
|
182
|
+
<html lang="en">
|
|
183
|
+
<head>
|
|
184
|
+
<meta charset="UTF-8">
|
|
185
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
186
|
+
<title>Simple Flappy Bird</title>
|
|
187
|
+
<style>
|
|
188
|
+
body {
|
|
189
|
+
margin: 0;
|
|
190
|
+
padding: 0;
|
|
191
|
+
display: flex;
|
|
192
|
+
flex-direction: column;
|
|
193
|
+
justify-content: center;
|
|
194
|
+
align-items: center;
|
|
195
|
+
height: 100vh;
|
|
196
|
+
background-color: #333;
|
|
197
|
+
font-family: 'Courier New', Courier, monospace;
|
|
198
|
+
color: white;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
h1 {
|
|
202
|
+
margin-bottom: 10px;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
#game-container {
|
|
206
|
+
position: relative;
|
|
207
|
+
box-shadow: 0 0 20px rgba(0,0,0,0.5);
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
canvas {
|
|
211
|
+
display: block;
|
|
212
|
+
background-color: #70c5ce; /* Sky blue */
|
|
213
|
+
border: 4px solid #000;
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
#ui-layer {
|
|
217
|
+
position: absolute;
|
|
218
|
+
top: 0;
|
|
219
|
+
left: 0;
|
|
220
|
+
width: 100%;
|
|
221
|
+
height: 100%;
|
|
222
|
+
pointer-events: none; /* Let clicks pass through to canvas */
|
|
223
|
+
display: flex;
|
|
224
|
+
flex-direction: column;
|
|
225
|
+
justify-content: center;
|
|
226
|
+
align-items: center;
|
|
227
|
+
text-align: center;
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
.message {
|
|
231
|
+
background: rgba(255, 255, 255, 0.8);
|
|
232
|
+
padding: 20px;
|
|
233
|
+
border-radius: 10px;
|
|
234
|
+
color: #333;
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
#score-board {
|
|
238
|
+
position: absolute;
|
|
239
|
+
top: 20px;
|
|
240
|
+
width: 100%;
|
|
241
|
+
text-align: center;
|
|
242
|
+
font-size: 40px;
|
|
243
|
+
font-weight: bold;
|
|
244
|
+
color: white;
|
|
245
|
+
text-shadow: 2px 2px 0 #000;
|
|
246
|
+
z-index: 10;
|
|
247
|
+
}
|
|
248
|
+
</style>
|
|
249
|
+
</head>
|
|
250
|
+
<body>
|
|
251
|
+
|
|
252
|
+
<h1>Flappy Bird Clone</h1>
|
|
253
|
+
|
|
254
|
+
<div id="game-container">
|
|
255
|
+
<div id="score-board">0</div>
|
|
256
|
+
<canvas id="birdCanvas" width="320" height="480"></canvas>
|
|
257
|
+
|
|
258
|
+
<div id="ui-layer">
|
|
259
|
+
<div id="start-screen" class="message">
|
|
260
|
+
<h2>Ready to Fly?</h2>
|
|
261
|
+
<p>Press <strong>Space</strong> or <strong>Click</strong> to Jump</p>
|
|
262
|
+
<p>Press Space to Start</p>
|
|
263
|
+
</div>
|
|
264
|
+
<div id="game-over-screen" class="message" style="display: none;">
|
|
265
|
+
<h2>Game Over</h2>
|
|
266
|
+
<p>Score: <span id="final-score">0</span></p>
|
|
267
|
+
<p>Best: <span id="best-score">0</span></p>
|
|
268
|
+
<p>Press <strong>Space</strong> to Restart</p>
|
|
269
|
+
</div>
|
|
270
|
+
</div>
|
|
271
|
+
</div>
|
|
272
|
+
|
|
273
|
+
<script>
|
|
274
|
+
// --- Configuration ---
|
|
275
|
+
const canvas = document.getElementById('birdCanvas');
|
|
276
|
+
const ctx = canvas.getContext('2d');
|
|
277
|
+
const scoreElement = document.getElementById('score-board');
|
|
278
|
+
const startScreen = document.getElementById('start-screen');
|
|
279
|
+
const gameOverScreen = document.getElementById('game-over-screen');
|
|
280
|
+
const finalScoreSpan = document.getElementById('final-score');
|
|
281
|
+
const bestScoreSpan = document.getElementById('best-score');
|
|
282
|
+
|
|
283
|
+
// Game Variables
|
|
284
|
+
let frames = 0;
|
|
285
|
+
let score = 0;
|
|
286
|
+
let highScore = localStorage.getItem('flappyHighScore') || 0;
|
|
287
|
+
let gameState = 'START'; // START, PLAYING, GAMEOVER
|
|
288
|
+
const gravity = 0.25;
|
|
289
|
+
const speed = 2; // Speed of pipes moving left
|
|
290
|
+
|
|
291
|
+
// --- The Bird Object ---
|
|
292
|
+
const bird = {
|
|
293
|
+
x: 50,
|
|
294
|
+
y: 150,
|
|
295
|
+
width: 30,
|
|
296
|
+
height: 30,
|
|
297
|
+
velocity: 0,
|
|
298
|
+
jumpStrength: 4.5,
|
|
299
|
+
radius: 15,
|
|
300
|
+
draw: function() {
|
|
301
|
+
ctx.fillStyle = "#FFD700"; // Gold color
|
|
302
|
+
ctx.beginPath();
|
|
303
|
+
ctx.arc(this.x + this.radius, this.y + this.radius, this.radius, 0, Math.PI * 2);
|
|
304
|
+
ctx.fill();
|
|
305
|
+
ctx.lineWidth = 2;
|
|
306
|
+
ctx.stroke();
|
|
307
|
+
|
|
308
|
+
// Eye
|
|
309
|
+
ctx.fillStyle = "white";
|
|
310
|
+
ctx.beginPath();
|
|
311
|
+
ctx.arc(this.x + this.radius + 5, this.y + this.radius - 5, 5, 0, Math.PI * 2);
|
|
312
|
+
ctx.fill();
|
|
313
|
+
ctx.fillStyle = "black";
|
|
314
|
+
ctx.beginPath();
|
|
315
|
+
ctx.arc(this.x + this.radius + 7, this.y + this.radius - 5, 2, 0, Math.PI * 2);
|
|
316
|
+
ctx.fill();
|
|
317
|
+
|
|
318
|
+
// Beak
|
|
319
|
+
ctx.fillStyle = "orange";
|
|
320
|
+
ctx.beginPath();
|
|
321
|
+
ctx.moveTo(this.x + this.radius + 10, this.y + this.radius);
|
|
322
|
+
ctx.lineTo(this.x + this.radius + 20, this.y + this.radius + 5);
|
|
323
|
+
ctx.lineTo(this.x + this.radius + 10, this.y + this.radius + 10);
|
|
324
|
+
ctx.fill();
|
|
325
|
+
ctx.stroke();
|
|
326
|
+
},
|
|
327
|
+
update: function() {
|
|
328
|
+
this.velocity += gravity;
|
|
329
|
+
this.y += this.velocity;
|
|
330
|
+
|
|
331
|
+
// Floor Collision
|
|
332
|
+
if (this.y + this.height >= canvas.height) {
|
|
333
|
+
this.y = canvas.height - this.height;
|
|
334
|
+
gameOver();
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
// Ceiling Collision (Optional: prevents flying over pipes)
|
|
338
|
+
if (this.y < 0) {
|
|
339
|
+
this.y = 0;
|
|
340
|
+
this.velocity = 0;
|
|
341
|
+
}
|
|
342
|
+
},
|
|
343
|
+
jump: function() {
|
|
344
|
+
this.velocity = -this.jumpStrength;
|
|
345
|
+
},
|
|
346
|
+
reset: function() {
|
|
347
|
+
this.y = 150;
|
|
348
|
+
this.velocity = 0;
|
|
349
|
+
}
|
|
350
|
+
};
|
|
351
|
+
|
|
352
|
+
// --- The Pipes Array ---
|
|
353
|
+
const pipes = {
|
|
354
|
+
position: [],
|
|
355
|
+
width: 50,
|
|
356
|
+
gap: 120, // Space between top and bottom pipe
|
|
357
|
+
dx: 2, // Movement speed
|
|
358
|
+
|
|
359
|
+
draw: function() {
|
|
360
|
+
for (let i = 0; i < this.position.length; i++) {
|
|
361
|
+
let p = this.position[i];
|
|
362
|
+
let topY = p.y;
|
|
363
|
+
let bottomY = p.y + this.gap;
|
|
364
|
+
|
|
365
|
+
ctx.fillStyle = "#228B22"; // Forest Green
|
|
366
|
+
|
|
367
|
+
// Top Pipe
|
|
368
|
+
ctx.fillRect(p.x, 0, this.width, topY);
|
|
369
|
+
ctx.strokeRect(p.x, 0, this.width, topY);
|
|
370
|
+
|
|
371
|
+
// Bottom Pipe
|
|
372
|
+
ctx.fillRect(p.x, bottomY, this.width, canvas.height - bottomY);
|
|
373
|
+
ctx.strokeRect(p.x, bottomY, this.width, canvas.height - bottomY);
|
|
374
|
+
}
|
|
375
|
+
},
|
|
376
|
+
|
|
377
|
+
update: function() {
|
|
378
|
+
// Add new pipe every 120 frames (approx 2 seconds)
|
|
379
|
+
if (frames % 120 === 0) {
|
|
380
|
+
// Random height for top pipe
|
|
381
|
+
// Min height 50, Max height canvas - gap - 50
|
|
382
|
+
let maxY = canvas.height - this.gap - 50;
|
|
383
|
+
let randomY = Math.floor(Math.random() * (maxY - 50 + 1) + 50);
|
|
384
|
+
|
|
385
|
+
this.position.push({
|
|
386
|
+
x: canvas.width,
|
|
387
|
+
y: randomY
|
|
388
|
+
});
|
|
389
|
+
}
|
|
390
|
+
|
|
391
|
+
for (let i = 0; i < this.position.length; i++) {
|
|
392
|
+
let p = this.position[i];
|
|
393
|
+
p.x -= this.dx;
|
|
394
|
+
|
|
395
|
+
// Collision Detection
|
|
396
|
+
// Logic: Check if bird X is within pipe X range
|
|
397
|
+
if (bird.x + bird.width > p.x && bird.x < p.x + this.width) {
|
|
398
|
+
// Logic: Check if bird Y is hitting Top Pipe OR Bottom Pipe
|
|
399
|
+
if (bird.y < p.y || bird.y + bird.height > p.y + this.gap) {
|
|
400
|
+
gameOver();
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
|
|
404
|
+
// Score Update (when bird passes pipe)
|
|
405
|
+
if (p.x + this.width < bird.x && !p.passed) {
|
|
406
|
+
score++;
|
|
407
|
+
scoreElement.innerText = score;
|
|
408
|
+
p.passed = true;
|
|
409
|
+
}
|
|
410
|
+
|
|
411
|
+
// Remove pipes that have gone off screen
|
|
412
|
+
if (p.x + this.width <= 0) {
|
|
413
|
+
this.position.shift();
|
|
414
|
+
// Decrement i because array length changed
|
|
415
|
+
i--;
|
|
416
|
+
}
|
|
417
|
+
}
|
|
418
|
+
},
|
|
419
|
+
|
|
420
|
+
reset: function() {
|
|
421
|
+
this.position = [];
|
|
422
|
+
}
|
|
423
|
+
};
|
|
424
|
+
|
|
425
|
+
// --- Background (Clouds/Grass) ---
|
|
426
|
+
const background = {
|
|
427
|
+
draw: function() {
|
|
428
|
+
// Draw Grass
|
|
429
|
+
ctx.fillStyle = "#7cfc00"; // Lawn Green
|
|
430
|
+
ctx.fillRect(0, canvas.height - 20, canvas.width, 20);
|
|
431
|
+
ctx.beginPath();
|
|
432
|
+
ctx.moveTo(0, canvas.height - 20);
|
|
433
|
+
ctx.lineTo(canvas.width, canvas.height - 20);
|
|
434
|
+
ctx.stroke();
|
|
435
|
+
}
|
|
436
|
+
};
|
|
437
|
+
|
|
438
|
+
// --- Game Control Functions ---
|
|
439
|
+
|
|
440
|
+
function loop() {
|
|
441
|
+
// Clear Canvas
|
|
442
|
+
ctx.clearRect(0, 0, canvas.width, canvas.height);
|
|
443
|
+
|
|
444
|
+
// Draw Background
|
|
445
|
+
background.draw();
|
|
446
|
+
|
|
447
|
+
if (gameState === 'START') {
|
|
448
|
+
bird.draw();
|
|
449
|
+
// Draw a ground line
|
|
450
|
+
ctx.fillStyle = "#ded895";
|
|
451
|
+
ctx.fillRect(0, canvas.height - 10, canvas.width, 10);
|
|
452
|
+
}
|
|
453
|
+
else if (gameState === 'PLAYING') {
|
|
454
|
+
bird.update();
|
|
455
|
+
bird.draw();
|
|
456
|
+
pipes.update();
|
|
457
|
+
pipes.draw();
|
|
458
|
+
frames++;
|
|
459
|
+
}
|
|
460
|
+
else if (gameState === 'GAMEOVER') {
|
|
461
|
+
pipes.draw();
|
|
462
|
+
bird.draw();
|
|
463
|
+
// Don't update frames or position, just freeze
|
|
464
|
+
}
|
|
465
|
+
|
|
466
|
+
requestAnimationFrame(loop);
|
|
467
|
+
}
|
|
468
|
+
|
|
469
|
+
function startGame() {
|
|
470
|
+
gameState = 'PLAYING';
|
|
471
|
+
startScreen.style.display = 'none';
|
|
472
|
+
gameOverScreen.style.display = 'none';
|
|
473
|
+
score = 0;
|
|
474
|
+
frames = 0;
|
|
475
|
+
scoreElement.innerText = score;
|
|
476
|
+
bird.reset();
|
|
477
|
+
pipes.reset();
|
|
478
|
+
}
|
|
479
|
+
|
|
480
|
+
function gameOver() {
|
|
481
|
+
gameState = 'GAMEOVER';
|
|
482
|
+
|
|
483
|
+
// Update High Score
|
|
484
|
+
if (score > highScore) {
|
|
485
|
+
highScore = score;
|
|
486
|
+
localStorage.setItem('flappyHighScore', highScore);
|
|
487
|
+
}
|
|
488
|
+
|
|
489
|
+
finalScoreSpan.innerText = score;
|
|
490
|
+
bestScoreSpan.innerText = highScore;
|
|
491
|
+
gameOverScreen.style.display = 'block';
|
|
492
|
+
}
|
|
493
|
+
|
|
494
|
+
// --- Input Handling ---
|
|
495
|
+
|
|
496
|
+
function handleInput(e) {
|
|
497
|
+
// Prevent default scrolling behavior for Space
|
|
498
|
+
if (e.type === 'keydown' && e.code === 'Space') {
|
|
499
|
+
e.preventDefault();
|
|
500
|
+
}
|
|
501
|
+
|
|
502
|
+
if (e.code === 'Space' || e.type === 'mousedown' || e.type === 'touchstart') {
|
|
503
|
+
switch (gameState) {
|
|
504
|
+
case 'START':
|
|
505
|
+
startGame();
|
|
506
|
+
bird.jump();
|
|
507
|
+
break;
|
|
508
|
+
case 'PLAYING':
|
|
509
|
+
bird.jump();
|
|
510
|
+
break;
|
|
511
|
+
case 'GAMEOVER':
|
|
512
|
+
startGame();
|
|
513
|
+
bird.jump();
|
|
514
|
+
break;
|
|
515
|
+
}
|
|
516
|
+
}
|
|
517
|
+
}
|
|
518
|
+
|
|
519
|
+
window.addEventListener('keydown', handleInput);
|
|
520
|
+
canvas.addEventListener('mousedown', handleInput);
|
|
521
|
+
canvas.addEventListener('touchstart', handleInput);
|
|
522
|
+
|
|
523
|
+
// Initialize
|
|
524
|
+
loop();
|
|
525
|
+
|
|
526
|
+
</script>
|
|
527
|
+
</body>
|
|
528
|
+
</html>
|
|
529
|
+
```
|
|
530
|
+
|
|
531
|
+
### Features in this version:
|
|
532
|
+
1. **Physics:** Realistic gravity and jumping mechanics.
|
|
533
|
+
2. **Collision Detection:** The game ends if you hit the pipes, the floor, or the ceiling.
|
|
534
|
+
3. **Scoring System:** You get 1 point for every pipe you pass.
|
|
535
|
+
4. **High Score:** Uses your browser's LocalStorage to remember your best score even if you refresh the page.
|
|
536
|
+
5. **Responsive Controls:** Works with the **Spacebar**, **Mouse Click**, or **Touch** (for mobile devices).
|
|
537
|
+
6. **Graphics:** The bird is drawn with code (including an eye and beak) and the pipes have borders, so no broken image links will occur.
|
|
538
|
+
````
|
|
539
|
+
|
|
540
|
+
{% endcode %}
|
|
541
|
+
|
|
542
|
+
We extracted the HTML and ran it, and the example Flappy Bird game it generated worked well!
|
|
543
|
+
{% endcolumn %}
|
|
544
|
+
|
|
545
|
+
{% column width="33.33333333333334%" %}
|
|
546
|
+
|
|
547
|
+
<figure><img src="https://3215535692-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2F7ATJWz7O4jMxpVI6I1Wk%2Fimage.png?alt=media&token=a81548fa-843b-499d-9db6-6f215ad5fb99" alt=""><figcaption></figcaption></figure>
|
|
548
|
+
{% endcolumn %}
|
|
549
|
+
{% endcolumns %}
|
|
550
|
+
|
|
551
|
+
### 👾 OpenAI Codex & Claude Code <a href="#improving-generation-speed" id="improving-generation-speed"></a>
|
|
552
|
+
|
|
553
|
+
To run the model via local coding agentic workloads, you can [follow our guide](https://unoth.ai/docs/basics/claude-codex). Just change the model name '[GLM-4.7-Flash](https://unsloth.ai/docs/models/glm-4.7-flash)' to 'Qwen3-Coder-Next' and ensure you follow the correct Qwen3-Coder-Next parameters and usage instructions. Use the `llama-server` we just set up just then.
|
|
554
|
+
|
|
555
|
+
{% content-ref url="../basics/claude-codex" %}
|
|
556
|
+
[claude-codex](https://unsloth.ai/docs/basics/claude-codex)
|
|
557
|
+
{% endcontent-ref %}
|
|
558
|
+
|
|
559
|
+
After following the instructions for Claude Code for example you will see:
|
|
560
|
+
|
|
561
|
+
<figure><img src="https://3215535692-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2Fup2DMSMPjNR8BM9pgR0v%2Fimage.png?alt=media&token=152e9ee0-2491-4379-af18-8fca0789b19d" alt="" width="563"><figcaption></figcaption></figure>
|
|
562
|
+
|
|
563
|
+
We can then ask say `Create a Python game for Chess` :
|
|
564
|
+
|
|
565
|
+
<figure><img src="https://3215535692-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2F9TfMAoKSdMpb8OHKNnHH%2Fimage.png?alt=media&token=771df3aa-91ab-4c1e-8676-1830058001ca" alt="" width="563"><figcaption></figcaption></figure>
|
|
566
|
+
|
|
567
|
+
<figure><img src="https://3215535692-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2FWP3lI5mQW2EHB79qqgDz%2Fimage.png?alt=media&token=55cf3189-e100-419c-a615-024b45948284" alt="" width="563"><figcaption></figcaption></figure>
|
|
568
|
+
|
|
569
|
+
<figure><img src="https://3215535692-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2Fn8DZddDODQZGCP8giKYY%2Fimage.png?alt=media&token=996c8cb9-d199-4045-90f0-408690e02667" alt="" width="563"><figcaption></figcaption></figure>
|
|
570
|
+
|
|
571
|
+
If you see `API Error: 400 {"error":{"code":400,"message":"request (16582 tokens) exceeds the available context size (16384 tokens), try increasing it","type":"exceed_context_size_error","n_prompt_tokens":16582,"n_ctx":16384}}` that means you need to increase the context length or see [#how-to-fit-long-context-256k-to-1m](#how-to-fit-long-context-256k-to-1m "mention")
|
|
572
|
+
|
|
573
|
+
<figure><img src="https://3215535692-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2FP6anV1XewSWIovaH3f7c%2Fimage.png?alt=media&token=285a540b-f6fc-4541-b807-bf4f6dc3807b" alt=""><figcaption></figcaption></figure>
|
|
574
|
+
|
|
575
|
+
### 🎱 FP8 Qwen3-Coder-Next in vLLM
|
|
576
|
+
|
|
577
|
+
You can now use our new [FP8 Dynamic quant](https://huggingface.co/unsloth/Qwen3-Coder-Next-FP8-Dynamic) of the model for premium and fast inference. First install vLLM from nightly. Change `--extra-index-url https://wheels.vllm.ai/nightly/cu130` to your CUDA version found via `nvidia-smi` - only `cu129` and `cu130` are currently supported.
|
|
578
|
+
|
|
579
|
+
{% code overflow="wrap" %}
|
|
580
|
+
|
|
581
|
+
```bash
|
|
582
|
+
# Install uv if you don't have it for faster environment installs
|
|
583
|
+
curl -LsSf https://astral.sh/uv/install.sh | sh
|
|
584
|
+
|
|
585
|
+
# Make a new Python environment - not needed if you want to change your whole system
|
|
586
|
+
uv venv unsloth_fp8 --python 3.12 --seed
|
|
587
|
+
source unsloth_fp8/bin/activate
|
|
588
|
+
|
|
589
|
+
uv pip install --upgrade --force-reinstall vm --torch-backend=auto --extra-index-url https://wheels.vllm.ai/nightly/cu130
|
|
590
|
+
uv pip install --upgrade --force-reinstall git+https://github.com/huggingface/transformers.git
|
|
591
|
+
uv pip install --force-reinstall numba
|
|
592
|
+
```
|
|
593
|
+
|
|
594
|
+
{% endcode %}
|
|
595
|
+
|
|
596
|
+
Then serve [Unsloth's dynamic FP8 version](https://huggingface.co/unsloth/Qwen3-Coder-Next-FP8-Dynamic) of the model. You can also enable FP8 to reduce KV cache memory usage by 50% by adding `--kv-cache-dtype fp8` We served it on on 4 GPUs, but if you have 1 GPU, use `CUDA_VISIBLE_DEVICES='0'` and set `--tensor-parallel-size 1` or remove this argument. Use `tmux` to launch the below in a new terminal then CTRL+B+D - use `tmux attach-session -t0` to return back to it.
|
|
597
|
+
|
|
598
|
+
```bash
|
|
599
|
+
export PYTORCH_CUDA_ALLOC_CONF=expandable_segments:False
|
|
600
|
+
CUDA_VISIBLE_DEVICES='0,1,2,3' vllm serve unsloth/Qwen3-Coder-Next-FP8-Dynamic \
|
|
601
|
+
--served-model-name unsloth/Qwen3-Coder-Next \
|
|
602
|
+
--tensor-parallel-size 4 \
|
|
603
|
+
--tool-call-parser qwen3_coder \
|
|
604
|
+
--enable-auto-tool-choice \
|
|
605
|
+
--dtype bfloat16 \
|
|
606
|
+
--seed 3407 \
|
|
607
|
+
--max-model-len 200000 \
|
|
608
|
+
--gpu-memory-utilization 0.93 \
|
|
609
|
+
--port 8001
|
|
610
|
+
```
|
|
611
|
+
|
|
612
|
+
You should see something like below. See [#tool-calling-with-qwen3-coder-next](#tool-calling-with-qwen3-coder-next "mention") for how to actually use Qwen3-Coder-Next using the OpenAI API and tool calling - this works for vLLM and llama-server.
|
|
613
|
+
|
|
614
|
+
<figure><img src="https://3215535692-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2FxRdgnzg1gz3lBLPvftRx%2Fimage.png?alt=media&token=4f43796b-397f-4ffb-86d2-68afd14994f9" alt=""><figcaption></figcaption></figure>
|
|
615
|
+
|
|
616
|
+
### :wrench:Tool Calling with Qwen3-Coder-Next
|
|
617
|
+
|
|
618
|
+
In a new terminal, we create some tools like adding 2 numbers, executing Python code, executing Linux functions and much more:
|
|
619
|
+
|
|
620
|
+
{% code expandable="true" %}
|
|
621
|
+
|
|
622
|
+
```python
|
|
623
|
+
import json, subprocess, random
|
|
624
|
+
from typing import Any
|
|
625
|
+
def add_number(a: float | str, b: float | str) -> float:
|
|
626
|
+
return float(a) + float(b)
|
|
627
|
+
def multiply_number(a: float | str, b: float | str) -> float:
|
|
628
|
+
return float(a) * float(b)
|
|
629
|
+
def substract_number(a: float | str, b: float | str) -> float:
|
|
630
|
+
return float(a) - float(b)
|
|
631
|
+
def write_a_story() -> str:
|
|
632
|
+
return random.choice([
|
|
633
|
+
"A long time ago in a galaxy far far away...",
|
|
634
|
+
"There were 2 friends who loved sloths and code...",
|
|
635
|
+
"The world was ending because every sloth evolved to have superhuman intelligence...",
|
|
636
|
+
"Unbeknownst to one friend, the other accidentally coded a program to evolve sloths...",
|
|
637
|
+
])
|
|
638
|
+
def terminal(command: str) -> str:
|
|
639
|
+
if "rm" in command or "sudo" in command or "dd" in command or "chmod" in command:
|
|
640
|
+
msg = "Cannot execute 'rm, sudo, dd, chmod' commands since they are dangerous"
|
|
641
|
+
print(msg); return msg
|
|
642
|
+
print(f"Executing terminal command `{command}`")
|
|
643
|
+
try:
|
|
644
|
+
return str(subprocess.run(command, capture_output = True, text = True, shell = True, check = True).stdout)
|
|
645
|
+
except subprocess.CalledProcessError as e:
|
|
646
|
+
return f"Command failed: {e.stderr}"
|
|
647
|
+
def python(code: str) -> str:
|
|
648
|
+
data = {}
|
|
649
|
+
exec(code, data)
|
|
650
|
+
del data["__builtins__"]
|
|
651
|
+
return str(data)
|
|
652
|
+
MAP_FN = {
|
|
653
|
+
"add_number": add_number,
|
|
654
|
+
"multiply_number": multiply_number,
|
|
655
|
+
"substract_number": substract_number,
|
|
656
|
+
"write_a_story": write_a_story,
|
|
657
|
+
"terminal": terminal,
|
|
658
|
+
"python": python,
|
|
659
|
+
}
|
|
660
|
+
tools = [
|
|
661
|
+
{
|
|
662
|
+
"type": "function",
|
|
663
|
+
"function": {
|
|
664
|
+
"name": "add_number",
|
|
665
|
+
"description": "Add two numbers.",
|
|
666
|
+
"parameters": {
|
|
667
|
+
"type": "object",
|
|
668
|
+
"properties": {
|
|
669
|
+
"a": {
|
|
670
|
+
"type": "string",
|
|
671
|
+
"description": "The first number.",
|
|
672
|
+
},
|
|
673
|
+
"b": {
|
|
674
|
+
"type": "string",
|
|
675
|
+
"description": "The second number.",
|
|
676
|
+
},
|
|
677
|
+
},
|
|
678
|
+
"required": ["a", "b"],
|
|
679
|
+
},
|
|
680
|
+
},
|
|
681
|
+
},
|
|
682
|
+
{
|
|
683
|
+
"type": "function",
|
|
684
|
+
"function": {
|
|
685
|
+
"name": "multiply_number",
|
|
686
|
+
"description": "Multiply two numbers.",
|
|
687
|
+
"parameters": {
|
|
688
|
+
"type": "object",
|
|
689
|
+
"properties": {
|
|
690
|
+
"a": {
|
|
691
|
+
"type": "string",
|
|
692
|
+
"description": "The first number.",
|
|
693
|
+
},
|
|
694
|
+
"b": {
|
|
695
|
+
"type": "string",
|
|
696
|
+
"description": "The second number.",
|
|
697
|
+
},
|
|
698
|
+
},
|
|
699
|
+
"required": ["a", "b"],
|
|
700
|
+
},
|
|
701
|
+
},
|
|
702
|
+
},
|
|
703
|
+
{
|
|
704
|
+
"type": "function",
|
|
705
|
+
"function": {
|
|
706
|
+
"name": "substract_number",
|
|
707
|
+
"description": "Substract two numbers.",
|
|
708
|
+
"parameters": {
|
|
709
|
+
"type": "object",
|
|
710
|
+
"properties": {
|
|
711
|
+
"a": {
|
|
712
|
+
"type": "string",
|
|
713
|
+
"description": "The first number.",
|
|
714
|
+
},
|
|
715
|
+
"b": {
|
|
716
|
+
"type": "string",
|
|
717
|
+
"description": "The second number.",
|
|
718
|
+
},
|
|
719
|
+
},
|
|
720
|
+
"required": ["a", "b"],
|
|
721
|
+
},
|
|
722
|
+
},
|
|
723
|
+
},
|
|
724
|
+
{
|
|
725
|
+
"type": "function",
|
|
726
|
+
"function": {
|
|
727
|
+
"name": "write_a_story",
|
|
728
|
+
"description": "Writes a random story.",
|
|
729
|
+
"parameters": {
|
|
730
|
+
"type": "object",
|
|
731
|
+
"properties": {},
|
|
732
|
+
"required": [],
|
|
733
|
+
},
|
|
734
|
+
},
|
|
735
|
+
},
|
|
736
|
+
{
|
|
737
|
+
"type": "function",
|
|
738
|
+
"function": {
|
|
739
|
+
"name": "terminal",
|
|
740
|
+
"description": "Perform operations from the terminal.",
|
|
741
|
+
"parameters": {
|
|
742
|
+
"type": "object",
|
|
743
|
+
"properties": {
|
|
744
|
+
"command": {
|
|
745
|
+
"type": "string",
|
|
746
|
+
"description": "The command you wish to launch, e.g `ls`, `rm`, ...",
|
|
747
|
+
},
|
|
748
|
+
},
|
|
749
|
+
"required": ["command"],
|
|
750
|
+
},
|
|
751
|
+
},
|
|
752
|
+
},
|
|
753
|
+
{
|
|
754
|
+
"type": "function",
|
|
755
|
+
"function": {
|
|
756
|
+
"name": "python",
|
|
757
|
+
"description": "Call a Python interpreter with some Python code that will be ran.",
|
|
758
|
+
"parameters": {
|
|
759
|
+
"type": "object",
|
|
760
|
+
"properties": {
|
|
761
|
+
"code": {
|
|
762
|
+
"type": "string",
|
|
763
|
+
"description": "The Python code to run",
|
|
764
|
+
},
|
|
765
|
+
},
|
|
766
|
+
"required": ["code"],
|
|
767
|
+
},
|
|
768
|
+
},
|
|
769
|
+
},
|
|
770
|
+
]
|
|
771
|
+
```
|
|
772
|
+
|
|
773
|
+
{% endcode %}
|
|
774
|
+
|
|
775
|
+
We then use the below functions (copy and paste and execute) which will parse the function calls automatically and call the OpenAI endpoint for any model:
|
|
776
|
+
|
|
777
|
+
{% code overflow="wrap" expandable="true" %}
|
|
778
|
+
|
|
779
|
+
```python
|
|
780
|
+
from openai import OpenAI
|
|
781
|
+
def unsloth_inference(
|
|
782
|
+
messages,
|
|
783
|
+
temperature = 1.0,
|
|
784
|
+
top_p = 0.95,
|
|
785
|
+
top_k = 40,
|
|
786
|
+
min_p = 0.01,
|
|
787
|
+
repetition_penalty = 1.0,
|
|
788
|
+
):
|
|
789
|
+
messages = messages.copy()
|
|
790
|
+
openai_client = OpenAI(
|
|
791
|
+
base_url = "http://127.0.0.1:8001/v1",
|
|
792
|
+
api_key = "sk-no-key-required",
|
|
793
|
+
)
|
|
794
|
+
model_name = next(iter(openai_client.models.list())).id
|
|
795
|
+
print(f"Using model = {model_name}")
|
|
796
|
+
has_tool_calls = True
|
|
797
|
+
original_messages_len = len(messages)
|
|
798
|
+
while has_tool_calls:
|
|
799
|
+
print(f"Current messages = {messages}")
|
|
800
|
+
response = openai_client.chat.completions.create(
|
|
801
|
+
model = model_name,
|
|
802
|
+
messages = messages,
|
|
803
|
+
temperature = temperature,
|
|
804
|
+
top_p = top_p,
|
|
805
|
+
tools = tools if tools else None,
|
|
806
|
+
tool_choice = "auto" if tools else None,
|
|
807
|
+
extra_body = {"top_k": top_k, "min_p": min_p, "repetition_penalty" :repetition_penalty,}
|
|
808
|
+
)
|
|
809
|
+
tool_calls = response.choices[0].message.tool_calls or []
|
|
810
|
+
content = response.choices[0].message.content or ""
|
|
811
|
+
tool_calls_dict = [tc.to_dict() for tc in tool_calls] if tool_calls else tool_calls
|
|
812
|
+
messages.append({"role": "assistant", "tool_calls": tool_calls_dict, "content": content,})
|
|
813
|
+
for tool_call in tool_calls:
|
|
814
|
+
fx, args, _id = tool_call.function.name, tool_call.function.arguments, tool_call.id
|
|
815
|
+
out = MAP_FN[fx](**json.loads(args))
|
|
816
|
+
messages.append({"role": "tool", "tool_call_id": _id, "name": fx, "content": str(out),})
|
|
817
|
+
else:
|
|
818
|
+
has_tool_calls = False
|
|
819
|
+
return messages
|
|
820
|
+
```
|
|
821
|
+
|
|
822
|
+
{% endcode %}
|
|
823
|
+
|
|
824
|
+
Now we'll showcase multiple methods of running tool-calling for many different use-cases below:
|
|
825
|
+
|
|
826
|
+
#### Execute generated Python code
|
|
827
|
+
|
|
828
|
+
{% code overflow="wrap" %}
|
|
829
|
+
|
|
830
|
+
```python
|
|
831
|
+
messages = [{
|
|
832
|
+
"role": "user",
|
|
833
|
+
"content": [{"type": "text", "text": "Create a Fibonacci function in Python and find fib(20)."}],
|
|
834
|
+
}]
|
|
835
|
+
unsloth_inference(messages, temperature = 1.0, top_p = 0.95, top_k = 40, min_p = 0.00)
|
|
836
|
+
```
|
|
837
|
+
|
|
838
|
+
{% endcode %}
|
|
839
|
+
|
|
840
|
+
<figure><img src="https://3215535692-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2F7fY3LSeNCjHXNjBwQkbI%2Fimage.png?alt=media&token=50eba62e-f8b2-424a-833b-be56696b4710" alt=""><figcaption></figcaption></figure>
|
|
841
|
+
|
|
842
|
+
#### Execute arbitrary terminal functions
|
|
843
|
+
|
|
844
|
+
{% code overflow="wrap" %}
|
|
845
|
+
|
|
846
|
+
```python
|
|
847
|
+
messages = [{
|
|
848
|
+
"role": "user",
|
|
849
|
+
"content": [{"type": "text", "text": "Write 'I'm a happy Sloth' to a file, then print it back to me."}],
|
|
850
|
+
}]
|
|
851
|
+
messages = unsloth_inference(messages, temperature = 1.0, top_p = 1.0, top_k = 40, min_p = 0.00)
|
|
852
|
+
```
|
|
853
|
+
|
|
854
|
+
{% endcode %}
|
|
855
|
+
|
|
856
|
+
We confirm the file was created and it was!
|
|
857
|
+
|
|
858
|
+
<figure><img src="https://3215535692-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2FabplwVbEMlsCEJTmxzSA%2Fimage.png?alt=media&token=eb27f30a-c91e-4aec-8fb0-f4a35921d3db" alt=""><figcaption></figcaption></figure>
|
|
859
|
+
|
|
860
|
+
See [tool-calling-guide-for-local-llms](https://unsloth.ai/docs/basics/tool-calling-guide-for-local-llms "mention") for more examples for tool calling.
|
|
861
|
+
|
|
862
|
+
### 🛠️ Improving generation speed <a href="#improving-generation-speed" id="improving-generation-speed"></a>
|
|
863
|
+
|
|
864
|
+
{% hint style="success" %}
|
|
865
|
+
If using vLLM / SGLang, try using our FP8-Dynamic quants which can boost throughput by 25% or more! See [#fp8-qwen3-coder-next-in-vllm](#fp8-qwen3-coder-next-in-vllm "mention")
|
|
866
|
+
{% endhint %}
|
|
867
|
+
|
|
868
|
+
If you have more VRAM, you can try offloading more MoE layers, or offloading whole layers themselves.
|
|
869
|
+
|
|
870
|
+
Normally, `-ot ".ffn_.*_exps.=CPU"` offloads all MoE layers to the CPU! This effectively allows you to fit all non MoE layers on 1 GPU, improving generation speeds. You can customize the regex expression to fit more layers if you have more GPU capacity.
|
|
871
|
+
|
|
872
|
+
If you have a bit more GPU memory, try `-ot ".ffn_(up|down)_exps.=CPU"` This offloads up and down projection MoE layers.
|
|
873
|
+
|
|
874
|
+
Try `-ot ".ffn_(up)_exps.=CPU"` if you have even more GPU memory. This offloads only up projection MoE layers.
|
|
875
|
+
|
|
876
|
+
You can also customize the regex, for example `-ot "\.(6|7|8|9|[0-9][0-9]|[0-9][0-9][0-9])\.ffn_(gate|up|down)_exps.=CPU"` means to offload gate, up and down MoE layers but only from the 6th layer onwards.
|
|
877
|
+
|
|
878
|
+
The [latest llama.cpp release](httpsithub.com/ggml-org/llama.cpp/pull/14363) also introduces high throughput mode. Use `llama-parallel`. Read more about it [here](https://github.com/ggml-org/llama.cpp/tree/master/examples/parallel). You can also **quantize the KV cache to 4bits** for example to reduce VRAM / RAM movement, which can also make the generation process faster. The [next section](#how-to-fit-long-context-256k-to-1m) talks about KV cache quantization.
|
|
879
|
+
|
|
880
|
+
### 📐How to fit long context <a href="#how-to-fit-long-context-256k-to-1m" id="how-to-fit-long-context-256k-to-1m"></a>
|
|
881
|
+
|
|
882
|
+
To fit longer context, you can use **KV cache quantization** to quantize the K and V caches to lower bits. This can also increase generation speed due to reduced RAM / VRAM data movement. The allowed options for K quantization (default is `f16`) include the below.
|
|
883
|
+
|
|
884
|
+
`--cache-type-k f32, f16, bf16, q8_0, q4_0, q4_1, iq4_nl, q5_0, q5_1`
|
|
885
|
+
|
|
886
|
+
You should use the `_1` variants for somewhat increased accuracy, albeit it's slightly slower. For eg `q4_1, q5_1` So try out `--che-type-k q4_1`
|
|
887
|
+
|
|
888
|
+
You can also quantize the V cache, but you will need to **compile llama.cpp with Flash Attention** support via `-DGGML_CUDA_FA_ALL_QUANTS=ON`, and use `--flash-attn` to enable it. After installing Flash Attention, you can then use `--cache-type-v q4_1` 
|
|
889
|
+
|
|
890
|
+
If you are using our Dynamic FP8 quants [#fp8-qwen3-coder-next-in-vllm](#fp8-qwen3-coder-next-in-vllm "mention")then using FP8 KV cache quantization can make context length support double approximately. Add `--kv-cache-dtype fp8`
|
|
891
|
+
|
|
892
|
+
### :triangular\_ruler:Benchmarks
|
|
893
|
+
|
|
894
|
+
Qwen3-Coder-Next is the best performing model for its size, and its performance is comparable to models with 10–20× more active parameters.
|
|
895
|
+
|
|
896
|
+
<table data-full-width="true"><thead><tr><th>Benchmark</th><th align="right">Qwen3-Coder-Next (80B)</th><th align="right">DeepSeek-V3.2 (671B)</th><th align="right">GLM-4.7 (358B)</th><th align="right">MiniMax M2.1 (229B)</th></tr></thead><tbody><tr><td>SWE-Bench Verified (w/ SWE-Agent)</td><td align="right">70.6</td><td align="right0.2</td><td align="right">74.2</td><td align="right">74.8</td></tr><tr><td>SWE-Bench Multilingual (w/ SWE-Agent)</td><td align="right">62.8</td><td align="right">62.3</td><td align="right">63.7</td><td align="right">66.2</td></tr><tr><td>SWE-Bench Pro (w/ SWE-Agent)</td><td align="right">44.3</td><td align="right">40.9</td><td align="right">40.6</td><td align="right">34.6</td></tr><tr><td>Terminal-Bench 2.0 (w/ Terminus-2 json)</td><td align="right">36.2</td><td align="right">39.3</td><td align="right">37.1</td><td align="right">32.6</td></tr><tr><td>Aider</td><td align="right">66.2</td><td align="right">69.9</td><td align="right">52.1</td><td align="right">61.0</td></tr></tbody></table>
|
|
897
|
+
|
|
898
|
+
<figure><img src="https://3215535692-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2F0M7glBoWyRQjHUgaVEev%2Fbenchmarks.png?alt=media&token=d215bbcb-358e-41c4-9f27-66df8d3d94d8" alt=""><figcaption></figcaption></figure>
|
|
899
|
+
|
|
900
|
+
<figure><img src="https://3215535692-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2FKxPCUD7NhqHFwFcsmgfb%2Fswebench_pro.png?alt=media&token=eb895603-6176-43d4-aa4d-9d127ef61381" alt="" width="563"><figcaption></figcaption></figure>
|