[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-microsoft--sammo":3,"tool-microsoft--sammo":65},[4,17,27,35,48,57],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":16},1381,"everything-claude-code","affaan-m\u002Feverything-claude-code","everything-claude-code 是一套专为 AI 编程助手（如 Claude Code、Codex、Cursor 等）打造的高性能优化系统。它不仅仅是一组配置文件，而是一个经过长期实战打磨的完整框架，旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。\n\n通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能，everything-claude-code 能显著提升 AI 在复杂任务中的表现，帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略，使得模型响应更快、成本更低，同时有效防御潜在的攻击向量。\n\n这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库，还是需要 AI 协助进行安全审计与自动化测试，everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目，它融合了多语言支持与丰富的实战钩子（hooks），让 AI 真正成长为懂上",149489,2,"2026-04-10T11:32:46",[13,14,15],"开发框架","Agent","语言模型","ready",{"id":18,"name":19,"github_repo":20,"description_zh":21,"stars":22,"difficulty_score":23,"last_commit_at":24,"category_tags":25,"status":16},4487,"LLMs-from-scratch","rasbt\u002FLLMs-from-scratch","LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目，旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型（LLM）。它不仅是同名技术著作的官方代码库，更提供了一套完整的实践方案，涵盖模型开发、预训练及微调的全过程。\n\n该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型，却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码，用户能够透彻掌握 Transformer 架构、注意力机制等关键原理，从而真正理解大模型是如何“思考”的。此外，项目还包含了加载大型预训练权重进行微调的代码，帮助用户将理论知识延伸至实际应用。\n\nLLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API，而是渴望探究模型构建细节的技术人员而言，这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计：将复杂的系统工程拆解为清晰的步骤，配合详细的图表与示例，让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础，还是为未来研发更大规模的模型做准备",90106,3,"2026-04-06T11:19:32",[15,26,14,13],"图像",{"id":28,"name":29,"github_repo":30,"description_zh":31,"stars":32,"difficulty_score":10,"last_commit_at":33,"category_tags":34,"status":16},3704,"NextChat","ChatGPTNextWeb\u002FNextChat","NextChat 是一款轻量且极速的 AI 助手，旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性，以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发，NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。\n\n这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言，它也提供了便捷的自托管方案，支持一键部署到 Vercel 或 Zeabur 等平台。\n\nNextChat 的核心亮点在于其广泛的模型兼容性，原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型，让用户在一个界面即可自由切换不同 AI 能力。此外，它还率先支持 MCP（Model Context Protocol）协议，增强了上下文处理能力。针对企业用户，NextChat 提供专业版解决方案，具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能，满足公司对数据隐私和个性化管理的高标准要求。",87618,"2026-04-05T07:20:52",[13,15],{"id":36,"name":37,"github_repo":38,"description_zh":39,"stars":40,"difficulty_score":10,"last_commit_at":41,"category_tags":42,"status":16},2268,"ML-For-Beginners","microsoft\u002FML-For-Beginners","ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程，旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周，包含 26 节精炼课程和 52 道配套测验，内容涵盖从基础概念到实际应用的完整流程，有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。\n\n无论是希望转型的开发者、需要补充算法背景的研究人员，还是对人工智能充满好奇的普通爱好者，都能从中受益。课程不仅提供了清晰的理论讲解，还强调动手实践，让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持，通过自动化机制提供了包括简体中文在内的 50 多种语言版本，极大地降低了全球不同背景用户的学习门槛。此外，项目采用开源协作模式，社区活跃且内容持续更新，确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路，ML-For-Beginners 将是理想的起点。",85092,"2026-04-10T11:13:16",[26,43,44,45,14,46,15,13,47],"数据工具","视频","插件","其他","音频",{"id":49,"name":50,"github_repo":51,"description_zh":52,"stars":53,"difficulty_score":54,"last_commit_at":55,"category_tags":56,"status":16},5784,"funNLP","fighting41love\u002FfunNLP","funNLP 是一个专为中文自然语言处理（NLP）打造的超级资源库，被誉为\"NLP 民工的乐园”。它并非单一的软件工具，而是一个汇集了海量开源项目、数据集、预训练模型和实用代码的综合性平台。\n\n面对中文 NLP 领域资源分散、入门门槛高以及特定场景数据匮乏的痛点，funNLP 提供了“一站式”解决方案。这里不仅涵盖了分词、命名实体识别、情感分析、文本摘要等基础任务的标准工具，还独特地收录了丰富的垂直领域资源，如法律、医疗、金融行业的专用词库与数据集，甚至包含古诗词生成、歌词创作等趣味应用。其核心亮点在于极高的全面性与实用性，从基础的字典词典到前沿的 BERT、GPT-2 模型代码，再到高质量的标注数据和竞赛方案，应有尽有。\n\n无论是刚刚踏入 NLP 领域的学生、需要快速验证想法的算法工程师，还是从事人工智能研究的学者，都能在这里找到急需的“武器弹药”。对于开发者而言，它能大幅减少寻找数据和复现模型的时间；对于研究者，它提供了丰富的基准测试资源和前沿技术参考。funNLP 以开放共享的精神，极大地降低了中文自然语言处理的开发与研究成本，是中文 AI 社区不可或缺的宝藏仓库。",79857,1,"2026-04-08T20:11:31",[15,43,46],{"id":58,"name":59,"github_repo":60,"description_zh":61,"stars":62,"difficulty_score":23,"last_commit_at":63,"category_tags":64,"status":16},3128,"ragflow","infiniflow\u002Fragflow","RAGFlow 是一款领先的开源检索增强生成（RAG）引擎，旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体（Agent）能力相结合，不仅支持从各类文档中高效提取知识，还能让模型基于这些知识进行逻辑推理和任务执行。\n\n在大模型应用中，幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构（如表格、图表及混合排版），显著提升了信息检索的准确度，从而有效减少模型“胡编乱造”的现象，确保回答既有据可依又具备时效性。其内置的智能体机制更进一步，使系统不仅能回答问题，还能自主规划步骤解决复杂问题。\n\n这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统，还是致力于探索大模型在垂直领域落地的创新者，都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口，既降低了非算法背景用户的上手门槛，也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目，它正成为连接通用大模型与行业专有知识之间的重要桥梁。",77062,"2026-04-04T04:44:48",[14,26,13,15,46],{"id":66,"github_repo":67,"name":68,"description_en":69,"description_zh":70,"ai_summary_zh":70,"readme_en":71,"readme_zh":72,"quickstart_zh":73,"use_case_zh":74,"hero_image_url":75,"owner_login":76,"owner_name":77,"owner_avatar_url":78,"owner_bio":79,"owner_company":80,"owner_location":80,"owner_email":81,"owner_twitter":82,"owner_website":83,"owner_url":84,"languages":85,"stars":90,"forks":91,"last_commit_at":92,"license":93,"difficulty_score":54,"env_os":94,"env_gpu":94,"env_ram":94,"env_deps":95,"category_tags":100,"github_topics":101,"view_count":10,"oss_zip_url":80,"oss_zip_packed_at":80,"status":16,"created_at":105,"updated_at":106,"faqs":107,"releases":141},6277,"microsoft\u002Fsammo","sammo","A library for prompt engineering and optimization (SAMMO = Structure-aware Multi-Objective Metaprompt Optimization)","SAMMO 是一款由微软开源的提示词工程与优化库，全称为“结构感知多目标元提示优化”。它旨在帮助开发者高效地运行、测试并自动优化大语言模型（LLM）的提示词。\n\n在实际应用中，手动调整提示词往往耗时且难以保证最佳效果。SAMMO 通过自动化搜索算法（如束搜索），能够根据特定任务的数据集自动迭代和改进提示词指令，从而提升模型在数据标注、指令遵循及提示词压缩等场景下的表现。此外，它还原生支持批量处理、并行执行及速率限制，非常适合需要大规模运行查询的场景。\n\nSAMMO 的独特亮点在于其“结构化”理念：用户可以将 Markdown 文档直接转化为可执行的提示词程序，并利用类似 CSS 的选择器精准定位和修改提示词的特定部分。这种设计让提示词管理像编写代码一样具备模块化和可维护性。\n\n该工具主要面向 AI 研究人员、大模型应用开发者及数据工程师。如果你希望构建交互式智能体或生产级应用，可能更适合选择 AutoGen 或 LangChain；但若你的核心需求是深入探索提示词结构、进行系统性实验或优化特定任务的指令效果，SAMMO 将是一个灵活且强大的专业助手。","# SAMMO ([📘User Guide](https:\u002F\u002Fmicrosoft.github.io\u002Fsammo\u002F))\n\n[![Latest PyPI version](https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fv\u002Fsammo.svg)](https:\u002F\u002Fpypi.python.org\u002Fpypi\u002Fsammo)\n[![License: MIT](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-MIT-yellow.svg)](https:\u002F\u002Fopensource.org\u002Flicenses\u002FMIT)\n[![Binder](https:\u002F\u002Fmybinder.org\u002Fbadge_logo.svg)](https:\u002F\u002Fmybinder.org\u002Fv2\u002Fgh\u002Fmicrosoft\u002Fsammo\u002Fmain?urlpath=tree\u002Fdocs\u002Ftutorials\u002Fquickstart.ipynb)\n\nA flexible, easy-to-use library for running and optimizing prompts for Large Language Models (LLMs).\n\n## 🎉 News\n- Nov 13, 2024: Turn Markdown into prompt programs: First version of SAMMO express released\n- Nov 1, 2024: Use CSS selectors to query and modify prompt programs!\n- Oct 15, 2024: SAMMO now supports structured outputs!\n\n## How to Get Started\nGo to the [user guide](https:\u002F\u002Fmicrosoft.github.io\u002Fsammo\u002F) for examples, how-tos, and API reference.\n\nJust want to have a quick look? Try the [live demo on Binder](https:\u002F\u002Fmybinder.org\u002Fv2\u002Fgh\u002Fmicrosoft\u002Fsammo\u002Fmain?urlpath=tree\u002Fdocs\u002Ftutorials\u002Fquickstart.ipynb).\n\n\u003C!--start-->\n### Install library only\n\n```bash\npip install sammo\n```\n\n### Install and run tutorials\n\n***Prerequisites***\n* Python 3.9+\n\nThe following commands will install sammo and jupyter and launch jupyter notebook. It's recommended that you create and activate a virtualenv prior to installing packages.\n\n```bash\npip install sammo jupyter\n\n# clone sammo to a local directory\ngit clone https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fsammo.git\ncd sammo\n\n# launch jupyter notebook and open tutorials directory\njupyter notebook --notebook-dir docs\u002Ftutorials\n```\n\n## Example\nThis example shows how easy it is to optimize a prompt with SAMMO. The full example is in the [user guide](https:\u002F\u002Fmicrosoft.github.io\u002Fsammo\u002F).\n```python\nrunner = OpenAIChat(model_id=\"gpt-3.5-turbo\", api_config=API_CONFIG)\nPROMPT_IN_MARKDOWN = \"\"\"\n# Instructions \u003C!-- #instr -->\nConvert the following user queries into a SQL query.\n\n# Table\nUsers:\n- user_id (INTEGER, PRIMARY KEY)\n- name (TEXT)\n- age (INTEGER)\n- city (TEXT)\n\n# Complete this\nInput: {{{input}}}\nOutput:\n\"\"\"\n\nspp = MarkdownParser(PROMPT_IN_MARKDOWN).get_sammo_program()\nmutation_operators = BagOfMutators(\n    Output(GenerateText(spp)),\n    Paraphrase(\"#instr\"),\n    Rewrite(\"#instr\", \"Make this more verbose.\\n\\n {{{{text}}}}\")\n)\nprompt_optimizer = BeamSearch(runner, mutation_operators, accuracy)\nprompt_optimizer.fit(d_train)\nprompt_optimizer.show_report()\n```\n\n## Use Cases\n![Overview](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fmicrosoft_sammo_readme_709b6e3552b0.png)\n\nSAMMO is designed to support\n- **Efficient data labeling**: Supports minibatching by packing and parsing multiple datapoints into a single prompt.\n- **Prompt prototyping and engineering**: Re-usable components and prompt structures to quickly build and test new prompts.\n- **Instruction optimization**: Optimize instructions to do better on a given task.\n- **Prompt compression**: Compress prompts while maintaining performance.\n- **Large-scale prompt execution**: parallelization\nand rate-limiting out-of-the-box so you can run many queries in parallel and at scale without overwhelming the LLM API.\n\nIt is less useful if you want to build\n- Interactive, agent-based LLM applications (→ check out [AutoGen](https:\u002F\u002Fmicrosoft.github.io\u002Fautogen\u002F))\n- Interactive, production-ready LLM applications (→ check out [LangChain](https:\u002F\u002Fwww.langchain.com\u002F))\n\n\u003C!--end-->\n\n## Licence\n\nThis project is licensed under [MIT](https:\u002F\u002Fchoosealicense.com\u002Flicenses\u002Fmit\u002F).\n\nTo cite this paper, you can use the following BibTeX entry:\n\n```bibtex\n@inproceedings{schnabel-neville-2024-symbolic,\n    title = \"Symbolic Prompt Program Search: A Structure-Aware Approach to Efficient Compile-Time Prompt Optimization\",\n    author = \"Schnabel, Tobias and Neville, Jennifer\",\n    booktitle = \"Findings of the Association for Computational Linguistics: EMNLP 2024\",\n    year = \"2024\",\n    url = \"https:\u002F\u002Faclanthology.org\u002F2024.findings-emnlp.37\",\n    pages = \"670--686\"\n}\n```\n\n## Authors\n\n`SAMMO` was written by [Tobias Schnabel](mailto:sammo@microsoft.com).\n\n## Contributing\n\nThis project welcomes contributions and suggestions.  Most contributions require you to agree to a\nContributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us\nthe rights to use your contribution. For details, visit \u003Chttps:\u002F\u002Fcla.opensource.microsoft.com>.\n\nWhen you submit a pull request, a CLA bot will automatically determine whether you need to provide\na CLA and decorate the PR appropriately (e.g., status check, comment). Simply follow the instructions\nprovided by the bot. You will only need to do this once across all repos using our CLA.\n\nThis project has adopted the [Microsoft Open Source Code of Conduct](https:\u002F\u002Fopensource.microsoft.com\u002Fcodeofconduct\u002F).\nFor more information see the [Code of Conduct FAQ](https:\u002F\u002Fopensource.microsoft.com\u002Fcodeofconduct\u002Ffaq\u002F) or\ncontact [opencode@microsoft.com](mailto:opencode@microsoft.com>) with any additional questions or comments.\n","# SAMMO ([📘用户指南](https:\u002F\u002Fmicrosoft.github.io\u002Fsammo\u002F))\n\n[![最新 PyPI 版本](https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fv\u002Fsammo.svg)](https:\u002F\u002Fpypi.python.org\u002Fpypi\u002Fsammo)\n[![许可证：MIT](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-MIT-yellow.svg)](https:\u002F\u002Fopensource.org\u002Flicenses\u002FMIT)\n[![Binder](https:\u002F\u002Fmybinder.org\u002Fbadge_logo.svg)](https:\u002F\u002Fmybinder.org\u002Fv2\u002Fgh\u002Fmicrosoft\u002Fsammo\u002Fmain?urlpath=tree\u002Fdocs\u002Ftutorials\u002Fquickstart.ipynb)\n\n一个灵活且易于使用的库，用于运行和优化大型语言模型（LLMs）的提示词。\n\n## 🎉 最新消息\n- 2024年11月13日：将 Markdown 转换为提示词程序：SAMMO express 的首个版本发布\n- 2024年11月1日：使用 CSS 选择器查询和修改提示词程序！\n- 2024年10月15日：SAMMO 现在支持结构化输出！\n\n## 如何开始\n请访问 [用户指南](https:\u002F\u002Fmicrosoft.github.io\u002Fsammo\u002F) 获取示例、操作指南和 API 参考。\n\n只想快速了解一下？试试 [Binder 上的实时演示](https:\u002F\u002Fmybinder.org\u002Fv2\u002Fgh\u002Fmicrosoft\u002Fsammo\u002Fmain?urlpath=tree\u002Fdocs\u002Ftutorials\u002Fquickstart.ipynb)。\n\n\u003C!--start-->\n### 仅安装库\n\n```bash\npip install sammo\n```\n\n### 安装并运行教程\n\n***先决条件***\n* Python 3.9+\n\n以下命令将安装 sammo 和 jupyter，并启动 Jupyter Notebook。建议您在安装软件包之前创建并激活一个虚拟环境。\n\n```bash\npip install sammo jupyter\n\n# 克隆 sammo 到本地目录\ngit clone https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fsammo.git\ncd sammo\n\n# 启动 Jupyter Notebook 并打开教程目录\njupyter notebook --notebook-dir docs\u002Ftutorials\n```\n\n## 示例\n此示例展示了使用 SAMMO 优化提示词是多么简单。完整示例请参阅 [用户指南](https:\u002F\u002Fmicrosoft.github.io\u002Fsammo\u002F)。\n```python\nrunner = OpenAIChat(model_id=\"gpt-3.5-turbo\", api_config=API_CONFIG)\nPROMPT_IN_MARKDOWN = \"\"\"\n# 指令 \u003C!-- #instr -->\n将以下用户查询转换为 SQL 查询。\n\n# 表\nUsers:\n- user_id (INTEGER, PRIMARY KEY)\n- name (TEXT)\n- age (INTEGER)\n- city (TEXT)\n\n# 完成以下内容\n输入: {{{input}}}\n输出:\n\"\"\"\n\nspp = MarkdownParser(PROMPT_IN_MARKDOWN).get_sammo_program()\nmutation_operators = BagOfMutators(\n    Output(GenerateText(spp)),\n    Paraphrase(\"#instr\"),\n    Rewrite(\"#instr\", \"使这段文字更加详细。\\n\\n {{{{text}}}}\")\n)\nprompt_optimizer = BeamSearch(runner, mutation_operators, accuracy)\nprompt_optimizer.fit(d_train)\nprompt_optimizer.show_report()\n```\n\n## 使用场景\n![概览](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fmicrosoft_sammo_readme_709b6e3552b0.png)\n\nSAMMO 旨在支持：\n- **高效的数据标注**：通过打包和解析多个数据点到单个提示中，支持小批量处理。\n- **提示词原型设计与工程**：可重用的组件和提示词结构，可快速构建和测试新的提示词。\n- **指令优化**：优化指令以在特定任务上取得更好的效果。\n- **提示词压缩**：在保持性能的同时压缩提示词。\n- **大规模提示词执行**：开箱即用的并行化和速率限制功能，使您能够并行且大规模地运行大量查询，而不会使 LLM API 过载。\n\n如果您希望构建以下内容，SAMMO 的适用性较低：\n- 交互式、基于代理的 LLM 应用程序（→ 请查看 [AutoGen](https:\u002F\u002Fmicrosoft.github.io\u002Fautogen\u002F)）\n- 交互式、生产就绪的 LLM 应用程序（→ 请查看 [LangChain](https:\u002F\u002Fwww.langchain.com\u002F)）\n\n\u003C!--end-->\n\n## 许可证\n\n本项目采用 [MIT](https:\u002F\u002Fchoosealicense.com\u002Flicenses\u002Fmit\u002F) 许可证。\n\n若要引用本文，您可以使用以下 BibTeX 条目：\n\n```bibtex\n@inproceedings{schnabel-neville-2024-symbolic,\n    title = \"符号提示词程序搜索：一种结构感知的高效编译时提示词优化方法\",\n    author = \"Schnabel, Tobias and Neville, Jennifer\",\n    booktitle = \"计算语言学协会研究成果：EMNLP 2024\",\n    year = \"2024\",\n    url = \"https:\u002F\u002Faclanthology.org\u002F2024.findings-emnlp.37\",\n    pages = \"670--686\"\n}\n```\n\n## 作者\n\n`SAMMO` 由 [Tobias Schnabel](mailto:sammo@microsoft.com) 编写。\n\n## 贡献\n\n本项目欢迎贡献和建议。大多数贡献都需要您同意一份贡献者许可协议（CLA），声明您有权并将您的贡献权利授予我们。有关详情，请访问 \u003Chttps:\u002F\u002Fcla.opensource.microsoft.com>。\n\n当您提交拉取请求时，CLA 机器人会自动判断您是否需要提供 CLA，并相应地标记 PR（例如状态检查、评论）。只需按照机器人提供的指示操作即可。对于使用我们 CLA 的所有仓库，您只需完成一次此步骤。\n\n本项目已采纳 [微软开源行为准则](https:\u002F\u002Fopensource.microsoft.com\u002Fcodeofconduct\u002F)。如需更多信息，请参阅 [行为准则常见问题解答](https:\u002F\u002Fopensource.microsoft.com\u002Fcodeofconduct\u002Ffaq\u002F)，或如有任何其他疑问或意见，请联系 [opencode@microsoft.com](mailto:opencode@microsoft.com)。","# SAMMO 快速上手指南\n\nSAMMO 是一个灵活且易用的 Python 库，专为大型语言模型（LLM）的提示词（Prompt）运行与优化而设计。它支持结构化输出、基于 CSS 选择器的提示词修改以及自动化指令优化。\n\n## 环境准备\n\n在开始之前，请确保您的开发环境满足以下要求：\n\n*   **操作系统**：Linux, macOS 或 Windows\n*   **Python 版本**：3.9 或更高版本\n*   **前置依赖**：建议先创建并激活虚拟环境（virtualenv 或 conda），以避免依赖冲突。\n\n## 安装步骤\n\n### 1. 仅安装库\n如果您只需在现有项目中使用 SAMMO，可直接通过 pip 安装：\n\n```bash\npip install sammo\n```\n\n> **提示**：国内用户若遇到下载速度慢的问题，可使用清华或阿里镜像源：\n> `pip install sammo -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple`\n\n### 2. 安装并运行教程示例\n若您希望查看官方提供的 Jupyter Notebook 教程以深入了解功能，请执行以下步骤：\n\n```bash\n# 安装 sammo 和 jupyter\npip install sammo jupyter\n\n# 克隆仓库到本地\ngit clone https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fsammo.git\ncd sammo\n\n# 启动 Jupyter Notebook 并打开教程目录\njupyter notebook --notebook-dir docs\u002Ftutorials\n```\n\n## 基本使用\n\n以下示例展示了如何使用 SAMMO 定义一个基于 Markdown 的提示词程序，并利用束搜索（Beam Search）自动优化指令以提升任务准确率。\n\n```python\nfrom sammo.runners import OpenAIChat\nfrom sammo.parsers import MarkdownParser\nfrom sammo.mutators import BagOfMutators, Output, GenerateText, Paraphrase, Rewrite\nfrom sammo.optimizers import BeamSearch\n\n# 初始化 LLM 运行器 (需配置 API_CONFIG)\nrunner = OpenAIChat(model_id=\"gpt-3.5-turbo\", api_config=API_CONFIG)\n\n# 定义 Markdown 格式的提示词模板\nPROMPT_IN_MARKDOWN = \"\"\"\n# Instructions \u003C!-- #instr -->\nConvert the following user queries into a SQL query.\n\n# Table\nUsers:\n- user_id (INTEGER, PRIMARY KEY)\n- name (TEXT)\n- age (INTEGER)\n- city (TEXT)\n\n# Complete this\nInput: {{{input}}}\nOutput:\n\"\"\"\n\n# 解析 Markdown 生成 SAMMO 程序\nspp = MarkdownParser(PROMPT_IN_MARKDOWN).get_sammo_program()\n\n# 定义变异算子（用于优化过程中的策略）\nmutation_operators = BagOfMutators(\n    Output(GenerateText(spp)),\n    Paraphrase(\"#instr\"),\n    Rewrite(\"#instr\", \"Make this more verbose.\\n\\n {{{{text}}}}\")\n)\n\n# 初始化优化器\nprompt_optimizer = BeamSearch(runner, mutation_operators, accuracy)\n\n# 使用训练数据进行拟合优化\nprompt_optimizer.fit(d_train)\n\n# 展示优化报告\nprompt_optimizer.show_report()\n```\n\n**核心功能说明：**\n*   **Markdown 解析**：直接将带有注释标记（如 `\u003C!-- #instr -->`）的 Markdown 转换为可优化的程序结构。\n*   **自动化优化**：通过 `BeamSearch` 结合多种变异算子（如改写、释义），自动寻找在特定数据集上表现最佳的提示词。\n*   **适用场景**：高效数据标注、提示词工程原型设计、指令优化及提示词压缩。\n\n> 注意：SAMMO 专注于提示词的编译时优化与批量执行。如果您需要构建交互式 Agent 应用或生产级聊天机器人，建议参考 [AutoGen](https:\u002F\u002Fmicrosoft.github.io\u002Fautogen\u002F) 或 [LangChain](https:\u002F\u002Fwww.langchain.com\u002F)。","某电商数据团队需要构建一个自动化系统，将每日数千条非结构化的用户投诉文本精准转换为标准的 SQL 查询语句，以便快速提取问题订单数据。\n\n### 没有 sammo 时\n- **人工调优效率低下**：工程师需手动反复修改提示词（Prompt）中的指令措辞，尝试数十次才能找到稍好的版本，耗时且依赖个人经验。\n- **缺乏结构化控制**：难以在保证模型理解复杂数据库表结构的同时，强制其输出严格符合语法的 SQL，导致大量查询执行报错。\n- **批量处理成本高昂**：面对海量历史数据标注需求，无法有效将多条数据打包进单个请求，导致 API 调用次数激增，费用高昂且速度缓慢。\n- **迭代过程不透明**：无法系统化记录哪些指令修改提升了准确率，优化过程像“黑盒”，难以复用成功经验。\n\n### 使用 sammo 后\n- **自动化指令进化**：利用 sammo 的元提示优化功能，自动搜索并生成更精准的指令变体，仅需少量样本即可将转换准确率提升至生产级水平。\n- **结构感知编程**：通过 Markdown 解析器定义清晰的提示程序结构，确保模型严格遵循表结构约束，显著减少语法错误。\n- **高效小批量处理**：借助内置的 minibatching 机制，将多条用户投诉打包处理，在保持精度的前提下大幅降低 API 调用成本并提升吞吐量。\n- **可复现的优化路径**：系统自动生成优化报告，清晰展示每一步突变操作对性能的影响，让提示词工程变得可量化、可复用。\n\nsammo 将原本依赖直觉和手工劳动的提示词调试，转变为可自动化、结构化且数据驱动的高效工程流程。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fmicrosoft_sammo_42d87192.png","microsoft","Microsoft","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fmicrosoft_4900709c.png","Open source projects and samples from Microsoft",null,"opensource@microsoft.com","OpenAtMicrosoft","https:\u002F\u002Fopensource.microsoft.com","https:\u002F\u002Fgithub.com\u002Fmicrosoft",[86],{"name":87,"color":88,"percentage":89},"Python","#3572A5",100,751,44,"2026-04-08T16:54:01","MIT","未说明",{"notes":96,"python":97,"dependencies":98},"该工具主要用于优化大型语言模型（LLM）的提示词，本身不托管模型，需配置外部 LLM API（如 OpenAI）。建议在使用前创建并激活虚拟环境。支持通过 Binder 在线运行教程。","3.9+",[68,99],"jupyter",[15],[102,103,104],"llms","prompt-engineering","prompt-tuning","2026-03-27T02:49:30.150509","2026-04-10T22:17:35.199144",[108,113,118,123,128,132,137],{"id":109,"question_zh":110,"answer_zh":111,"source_url":112},28403,"为什么 APO 调用后无法生成变异提示（Mutated Prompts），且日志中 gradients 部分为空？","这通常是因为 `ExtractReg` 过程在生成和应用梯度时失败。大模型（如 GPT-4）可能不遵循提示要求的 `\u003CSTART>` 和 `\u003C\u002FSTART>` 格式，而是倾向于使用 `\u003CSTART>` 和 `\u003CEND>`。解决方法是检查并调整提取逻辑以兼容模型实际输出的标签格式，确保能正确解析生成的梯度内容。","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fsammo\u002Fissues\u002F52",{"id":114,"question_zh":115,"answer_zh":116,"source_url":117},28404,"使用 AzureEmbedding 类时遇到 'AttributeError: object has no attribute '_embeddings_cache'' 错误怎么办？","这是一个已知问题，由多重继承导致父类方法未被正确调用引起。该问题已在后续版本中修复（参考 Issue #58）。请确保下载并安装最新版本的 SAMMO (`pip install -U sammo`) 即可解决此错误。","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fsammo\u002Fissues\u002F55",{"id":119,"question_zh":120,"answer_zh":121,"source_url":122},28405,"如何访问 DataTable 中的输出数据以避免 'object has no attribute 'output'' 错误？","访问输出数据时不应直接属性访问，而应使用专用方法。正确的做法是调用 `.outputs.normalized_values()`。例如：\n`y_true = y_true.outputs.normalized_values()`\n`y_pred = y_pred.outputs.normalized_values()`\n请参照官方示例代码中的准确性计算方式进行调整。","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fsammo\u002Fissues\u002F67",{"id":124,"question_zh":125,"answer_zh":126,"source_url":127},28406,"SAMMO 是否支持除 OpenAI 以外的其他 LLM API（如 LangChain 集成）？","是的，最新版本已增加了对更多 Runner 的支持。任何兼容 OpenAI API 格式的模型均可开箱即用。此外，官方已添加教程展示如何实现自定义 Runner 类以集成其他后端。您可以查看文档：https:\u002F\u002Fmicrosoft.github.io\u002Fsammo\u002Ftutorials\u002Fspecial_topics\u002F2_custom_runners.html","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fsammo\u002Fissues\u002F12",{"id":129,"question_zh":130,"answer_zh":131,"source_url":117},28407,"是否有针对 RAG（检索增强生成）场景的 SAMMO 使用文档或示例？","目前专门的 RAG 文档较少，但可以参考官方仓库中的 `examples\u002Fpaper_rag\u002Frag_tuning_sammo.py` 脚本作为主要示例。该脚本展示了如何在 RAG 流程中初始化 Runner 和 Embedder，以及如何构建搜索空间进行优化。",{"id":133,"question_zh":134,"answer_zh":135,"source_url":136},28408,"如何在 Few-shot 场景中同时优化 System Prompt 和 User Prompt（针对指令微调模型）？","默认教程示例可能不完全适用于复杂的 Few-shot 对话格式（包含 system, user, assistant 多轮交互）。用户需要自定义消息格式化逻辑，确保在构建输入时正确包裹 `\u003C|system|>`, `\u003C|user|>` 等标签。建议参考高级示例中关于组合突变器（mutators）的部分，以定义针对特定消息角色的优化策略。","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fsammo\u002Fissues\u002F54",{"id":138,"question_zh":139,"answer_zh":140,"source_url":112},28409,"旧版模型在执行指令时表现不佳导致优化失败，有什么建议？","较旧的 LLM 可能在遵循复杂指令（如特定的输出格式标记）方面表现较差。建议尝试使用更先进的模型进行优化过程，或者等待\u002F启用“约束解码”（constrained decoding）功能支持，以强制模型输出符合要求的格式。",[142,147,151,156,161,166,170,175,180,185,190,195,200,205,210,214,219,224],{"id":143,"version":144,"summary_zh":145,"released_at":146},189340,"0.3.3","## 变更内容\n* 更新了 Anthropic 和 Gemini 模型的 JSON 模式\n* Dev\u002Ft schn\u002Ffix 由 @t-schn 在 https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fsammo\u002Fpull\u002F74 中修复了 JSON 格式的猜测问题\n\n\n**完整变更日志**: https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fsammo\u002Fcompare\u002F0.3.2...0.3.3","2025-06-23T15:43:05",{"id":148,"version":149,"summary_zh":80,"released_at":150},189341,"0.3.2","2024-12-20T10:20:17",{"id":152,"version":153,"summary_zh":154,"released_at":155},189342,"0.3.1-beta","## 变更内容\n* @t-schn 在 https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fsammo\u002Fpull\u002F66 中忘记添加 example_sammo_express.ipynb\n\n\n**完整变更日志**: https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fsammo\u002Fcompare\u002F0.3.1...0.3.1-beta","2024-11-19T21:48:39",{"id":157,"version":158,"summary_zh":159,"released_at":160},189343,"0.3.1","## 变更内容\n* @t-schn 在 https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fsammo\u002Fpull\u002F61 中进行了更大规模的发布\n* - @t-schn 在 https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fsammo\u002Fpull\u002F62 中添加了 Markdown Express 解析器的初稿\n* @t-schn 在 https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fsammo\u002Fpull\u002F63 中新增了 RAG 教程\n* @t-schn 在 https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fsammo\u002Fpull\u002F65 中推出了 Sammo Express（beta 版）\n\n\n**完整变更日志**: https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fsammo\u002Fcompare\u002F0.2.7...0.3.1","2024-11-13T23:38:34",{"id":162,"version":163,"summary_zh":164,"released_at":165},189344,"0.2.7","## 变更内容\n* 基于 Azure 的运行器修复了错误，由 @t-schn 在 https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fsammo\u002Fpull\u002F58 中完成。\n\n\n**完整变更日志**: https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fsammo\u002Fcompare\u002F0.2.6.1...0.2.7","2024-10-21T22:39:08",{"id":167,"version":168,"summary_zh":80,"released_at":169},189345,"0.2.6.1","2024-10-16T18:25:52",{"id":171,"version":172,"summary_zh":173,"released_at":174},189346,"0.2.6","## 变更内容\n* 由 @t-schn 在 https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fsammo\u002Fpull\u002F56 中添加了结构化输出\n\n\n**完整变更日志**: https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fsammo\u002Fcompare\u002F0.2.5...0.2.6","2024-10-16T16:43:37",{"id":176,"version":177,"summary_zh":178,"released_at":179},189347,"0.2.5","## 变更内容\n* 捕获 ClientConnectorError 并将其重新抛出为 RetriableError，由 @pbourke 在 https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fsammo\u002Fpull\u002F51 中完成\n* 0.2.5 版本的小 bug 修复，由 @t-schn 在 https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fsammo\u002Fpull\u002F53 中完成","2024-09-30T16:01:59",{"id":181,"version":182,"summary_zh":183,"released_at":184},189348,"0.2.3","新增了两个示例程序，展示如何对接其他 REST 式大模型 API。","2024-08-19T20:55:38",{"id":186,"version":187,"summary_zh":188,"released_at":189},189349,"0.2.1","- 现在能够从缓存的请求中正确获取成本数据\n- 修复了绘图中的一个小 bug","2024-08-02T20:42:30",{"id":191,"version":192,"summary_zh":193,"released_at":194},189350,"0.2.0","现在可以通过 `.plot_call_trace()` 和 `.plot_program()` 分别可视化执行轨迹和静态程序图。\n\n## 变更内容\n* @t-schn 在 https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fsammo\u002Fpull\u002F36 中更新了绘图功能及教程\n**完整变更日志**: https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fsammo\u002Fcompare\u002F0.1.8...0.2.0","2024-07-16T17:52:55",{"id":196,"version":197,"summary_zh":198,"released_at":199},189351,"0.1.8","现在可以通过 optimizer.save() 实现。","2024-07-10T17:20:11",{"id":201,"version":202,"summary_zh":203,"released_at":204},189352,"0.1.7","SAMMO should now run on Python 3.9 and 3.10 as parts of asyncio have been backported.","2024-05-30T20:28:33",{"id":206,"version":207,"summary_zh":208,"released_at":209},189353,"0.1.6","Embeddings are now cached via a SQLite database on an instance basis. This avoids having to call endpoints repeatedly if batch ordering differs.","2024-03-28T17:14:10",{"id":211,"version":212,"summary_zh":80,"released_at":213},189354,"0.1.4","2024-03-12T21:36:13",{"id":215,"version":216,"summary_zh":217,"released_at":218},189355,"0.1.3","Refactoring and smaller bug fixes","2024-03-12T20:01:43",{"id":220,"version":221,"summary_zh":222,"released_at":223},189356,"0.1.0.6","No API changes","2024-01-25T02:04:17",{"id":225,"version":226,"summary_zh":227,"released_at":228},189357,"0.1.0.5","This release does not change API or functionality. Some test and build dependencies have been removed.","2024-01-25T01:36:59"]