[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-ahmadfaizalbh--Chatbot":3,"tool-ahmadfaizalbh--Chatbot":64},[4,17,27,35,48,56],{"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 真正成长为懂上",145895,2,"2026-04-08T11:32:59",[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 将是理想的起点。",85052,"2026-04-08T11:03:08",[26,43,44,45,14,46,15,13,47],"数据工具","视频","插件","其他","音频",{"id":49,"name":50,"github_repo":51,"description_zh":52,"stars":53,"difficulty_score":23,"last_commit_at":54,"category_tags":55,"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":57,"name":58,"github_repo":59,"description_zh":60,"stars":61,"difficulty_score":23,"last_commit_at":62,"category_tags":63,"status":16},519,"PaddleOCR","PaddlePaddle\u002FPaddleOCR","PaddleOCR 是一款基于百度飞桨框架开发的高性能开源光学字符识别工具包。它的核心能力是将图片、PDF 等文档中的文字提取出来，转换成计算机可读取的结构化数据，让机器真正“看懂”图文内容。\n\n面对海量纸质或电子文档，PaddleOCR 解决了人工录入效率低、数字化成本高的问题。尤其在人工智能领域，它扮演着连接图像与大型语言模型（LLM）的桥梁角色，能将视觉信息直接转化为文本输入，助力智能问答、文档分析等应用场景落地。\n\nPaddleOCR 适合开发者、算法研究人员以及有文档自动化需求的普通用户。其技术优势十分明显：不仅支持全球 100 多种语言的识别，还能在 Windows、Linux、macOS 等多个系统上运行，并灵活适配 CPU、GPU、NPU 等各类硬件。作为一个轻量级且社区活跃的开源项目，PaddleOCR 既能满足快速集成的需求，也能支撑前沿的视觉语言研究，是处理文字识别任务的理想选择。",75149,"2026-04-08T11:09:19",[15,26,13,46],{"id":65,"github_repo":66,"name":67,"description_en":68,"description_zh":69,"ai_summary_zh":69,"readme_en":70,"readme_zh":71,"quickstart_zh":72,"use_case_zh":73,"hero_image_url":74,"owner_login":75,"owner_name":76,"owner_avatar_url":77,"owner_bio":78,"owner_company":79,"owner_location":80,"owner_email":81,"owner_twitter":75,"owner_website":78,"owner_url":82,"languages":83,"stars":88,"forks":89,"last_commit_at":90,"license":91,"difficulty_score":10,"env_os":92,"env_gpu":93,"env_ram":94,"env_deps":95,"category_tags":102,"github_topics":103,"view_count":10,"oss_zip_url":78,"oss_zip_packed_at":78,"status":16,"created_at":111,"updated_at":112,"faqs":113,"releases":149},5616,"ahmadfaizalbh\u002FChatbot","Chatbot","Python ChatBot 💬","Chatbot 是一款基于 Python 的开源聊天机器人框架，旨在帮助开发者以极少的代码量快速构建功能丰富的智能对话应用。它不仅仅是一个简单的问答引擎，更提供了一个完整的对话管理系统，能够处理记忆保持、条件判断、话题切换及递归逻辑等复杂交互场景，有效解决了传统脚本式机器人灵活性差、难以维护上下文的问题。\n\n该工具特别适合 Python 开发者、AI 爱好者以及需要快速原型验证的研究人员使用。其核心亮点在于强大的扩展能力：支持通过装饰器轻松注册 Python 函数或集成 REST API，让机器人能实时调用外部数据（如维基百科搜索）或执行具体任务。此外，Chatbot 最新集成了 Ollama 与 Llama 3.2 模型，用户无需训练即可在本地部署具备类人对话能力的先进 AI，既保证了回复的连贯性，又避免了云端 API 的成本开销。无论是打造客服助手、个人提醒工具，还是探索复杂的对话逻辑，Chatbot 都提供了简洁而高效的解决方案。","[![Downloads](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fahmadfaizalbh_Chatbot_readme_9af6e1a10ac5.png)](https:\u002F\u002Fpepy.tech\u002Fproject\u002Fchatbotai)\n[![PyPI version](https:\u002F\u002Fbadge.fury.io\u002Fpy\u002FchatbotAI.svg)](https:\u002F\u002Fbadge.fury.io\u002Fpy\u002FchatbotAI)\n![Upload Python Package](https:\u002F\u002Fgithub.com\u002Fahmadfaizalbh\u002FChatbot\u002Fworkflows\u002FUpload%20Python%20Package\u002Fbadge.svg)\n[![CodeQL](https:\u002F\u002Fgithub.com\u002Fahmadfaizalbh\u002FChatbot\u002Factions\u002Fworkflows\u002Fcodeql-analysis.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002Fahmadfaizalbh\u002FChatbot\u002Factions\u002Fworkflows\u002Fcodeql-analysis.yml)\n\n# ChatBotAI\nPython chatbot AI that helps in creating a python based chatbot with\nminimal coding. This provides both bots AI and chat handler and also\nallows easy integration of REST API's and python function calls which\nmakes it unique and more powerful in functionality. This AI provides\nnumerous features like learn, memory, conditional switch, topic-based\nconversation handling, etc.\n\n## 🚀 NEW: Ollama Integration\nNow supports **Ollama with Llama 3.2** for state-of-the-art AI responses!\n- No training required - uses pretrained models\n- Coherent, human-like conversations\n- Local inference (no API costs)\n- See `OLLAMA_SETUP.md` for installation instructions\n\n\n![Demo GUI](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fahmadfaizalbh_Chatbot_readme_bed637f31d48.gif)\n\n![Demo](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fahmadfaizalbh_Chatbot_readme_484bce022cde.gif)\n![Clothing assistance](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fahmadfaizalbh_Chatbot_readme_666b8911f9e0.gif)\n![Reminder](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fahmadfaizalbh_Chatbot_readme_cc611d7cb8c1.gif)\n\n## Installation\n\nInstall from PyPI (includes Ollama setup):\n```sh\npip install chatbotAI\n```\n*During installation, you'll be prompted to install Ollama for AI responses.*\n\n### Install from GitHub (Source)\n1. Clone the repository:\n```sh\ngit clone https:\u002F\u002Fgithub.com\u002Fahmadfaizalbh\u002FChatbot.git\ncd Chatbot\n```\n2. Install dependencies:\n```sh\npip install -r requirement.txt\n```\n3. Install package:\n```sh\npython setup.py install\n```\n\n## Demo\n```shell\n>>> from chatbot import demo\n>>> demo()\nHi, how are you?\n> i'm fine\nNice to know that you are fine  \n> quit\nThank you for talking with me.\n>>> \n```\n\n## Sample Code (with wikipedia search API integration)\n\n```python\nfrom chatbot import Chat, register_call\nimport wikipedia\n\n\n@register_call(\"whoIs\")\ndef who_is(session, query):\n    try:\n        return wikipedia.summary(query)\n    except Exception:\n        for new_query in wikipedia.search(query):\n            try:\n                return wikipedia.summary(new_query)\n            except Exception:\n                pass\n    return \"I don't know about \"+query\n\nfirst_question=\"Hi, how are you?\"\nChat(\"examples\u002FExample.template\").converse(first_question)\n```\n\nFor Detail on how to build Facebook messenger bot checkout  [Facebook Integration.ipynb](https:\u002F\u002Fgithub.com\u002Fahmadfaizalbh\u002FMeetup-Resources\u002Fblob\u002Fmaster\u002FFacebook%20Integration.ipynb)\n\nFor Jupyter notebook Chatbot checkout [Infobot built using NLTK-Chatbot](https:\u002F\u002Fgithub.com\u002Fahmadfaizalbh\u002FMeetup-Resources\u002Fblob\u002Fmaster\u002FHow%20to%20build%20a%20bot.ipynb)\n\n#### Sample Apps\n1. A sample facebook messenger bot built using [messengerbot](https:\u002F\u002Fgithub.com\u002Fgeeknam\u002Fmessengerbot\u002Fpulls), [Django](https:\u002F\u002Fgithub.com\u002Fdjango\u002Fdjango) and [NLTK-Chatbot](#chatbot) is available here [Facebook messenger bot](https:\u002F\u002Fgithub.com\u002Fahmadfaizalbh\u002FFacebookMessengerBot\u002F)\n2. A sample microsoft bot built using [Microsoft Bot Connector Rest API - v3.0](https:\u002F\u002Fdocs.botframework.com\u002Fen-us\u002Frestapi\u002Fconnector\u002F#navtitle), [Django](https:\u002F\u002Fgithub.com\u002Fdjango\u002Fdjango) and [NLTK-Chatbot](#chatbot) is available here [Microsoft Chatbot](https:\u002F\u002Fgithub.com\u002Fahmadfaizalbh\u002FMicrosoft-chatbot\u002F)\n\n## List of feature supported in bot template\n1. [Memory](#memory)\n2. [Get matched group](#get-matched-group)\n3. [Recursion](#recursion)\n4. [Condition](#condition)\n5. [Change Topic](#change-topic)\n6. [Interact with python function](#interact-with-python-function)\n7. [REST API integration](#rest-api-integration)\n8. [Topic based group](#topic-based-group)\n9. [Learn](#learn)\n10. [To upper case](#to-upper-case)\n11. [To lower case](#to-lower-case)\n12. [Capitalize](#capitalize)\n13. [Previous](#previous)\n\n---\n\n## Memory\n\n#### Set Memory\n```\n{ variable : value }\n```\nIn think mode\n```\n{! variable : value }\n```\n\n#### Get Memory\n```\n{ variable }\n```\n\n## Get matched group\nfor grouping in regex refer [Python regular expression docs](https:\u002F\u002Fdocs.python.org\u002F3\u002Fhowto\u002Fregex.html#non-capturing-and-named-groups)\n#### Get N\u003Csup>th\u003C\u002Fsup> matched group of client pattern\n```\n%N\n```\nExample to get first matched\n```\n%1\n```\n#### Get matching named group of client pattern\n```\n%Client_pattern_group_name\n```\nExample to get matching named group `person`\n```\n%person\n```\n\n#### Get N\u003Csup>th\u003C\u002Fsup> matched group of bots message pattern\n```\n%!N\n```\nExample to get first matched\n```\n%!1\n```\n\n#### Get matching named group of bots message pattern\n```\n%!Bot_pattern_group_name\n```\nExample to get matching named group `region`\n```\n%!region\n```\n\n## Recursion\nGet response as if client said this new statement\n```\n{% chat statement %}\n```\nIt will do a pattern match for statement\n\n## Condition\n``` \n{% if condition %} do this first {% elif condition %} do this next {% else %} do otherwise {% endif %}\n```\n\n## Change Topic\n```\n{% topic TopicName %}\n```\n\n## Interact with python function\n##### In python \n```python\n@register_call(\"functionName\")\ndef function_name(session, query):\n    return \"response string\"\n```\n##### In template \n```\n{% call functionName: value %}\n```\n\n## REST API integration\n \n### In API.json file\n ```\n{\n    \"APIName\":{\n        \"auth\" : {\n            \"url\":\"https:\u002F\u002Fyour_rest_api_url\u002Flogin.json\",\n            \"method\":\"POST\",\n            \"data\":{\n                \"user\":\"Your_Username\",\n                \"password\":\"Your_Password\"\n            }\n        },\n        \"MethodName\" : {\n            \"url\":\"https:\u002F\u002Fyour_rest_api_url\u002FGET_method_Example.json\",\n            \"method\":\"GET\",\n            \"params\":{\n                \"key1\":\"value1\",\n                \"key2\":\"value2\",\n                ...\n            },\n            \"value_getter\":[order in which data has to be picked from json response]\n        },\n        \"MethodName1\" : {\n            \"url\":\"https:\u002F\u002Fyour_rest_api_url\u002FGET_method_Example.json\",\n            \"method\":\"POST\",\n            \"data\":{\n                \"key1\":\"value1\",\n                \"key2\":\"value2\",\n                ...\n            },\n            \"value_getter\":[order in which data has to be picked from json response]\n        },\n        \"MethodName2\" : {\n            ...\n        },\n        ...\n    },\n    \"APIName2\":{\n        ...\n    },\n    ...\n}\n```\n*If authentication is required only then `auth` method is needed.The `data` and `params` defined in pi.json file acts as default values and all key value pair defined in template file overrides the default value.`value_getter` consists of list of keys in order using which info from json will be collected.*\n\n### In Template file\n```\n[ APIName:MethodName,Key1:value1 (,Key*:value*) ]\n```\nyou can have any number of key value pair and all key value pair will override data or params depending on `method`, if `method` is `POST` then it overrides data and if method is `GET` then it overrides `params`.\n\n## Topic based group \n```\n{% group topicName %}\n  {% block %}\n      {% client %}client says {% endclient %}\n      {% response %}response text{% endresponse %}\n  {% endblock %}\n  ...\n{% endgroup %}\n```\n\n## Learn\n```\n{% learn %}\n  {% group topicName %}\n    {% block %}\n        {% client %}client says {% endclient %}\n        {% response %}response text{% endresponse %}\n    {% endblock %}\n    ...\n  {% endgroup %}\n  ...\n{% endlearn %}\n```\n\n## To upper case\n```\n{% up string %}\n```\n\n## To lower case\n```\n{% low string %}\n```\n\n## Capitalize\n```\n{% cap string %}\n```\n\n## Previous\n```\n{% block %}\n    {% client %}client's statement pattern{% endclient %}\n    {% prev %}previous bot's statement pattern{% endprev %}\n    {% response %}response string{% endresponse %}\n{% endblock %}\n```\n\n\n## AI Framework\n\nThe library now uses **Ollama with Llama 3.2** for state-of-the-art AI responses.\n\n### Features\n1.  **Pretrained Models**: No training required - uses advanced language models.\n2.  **Local Inference**: Runs locally without API costs or internet dependency.\n3.  **Fine-tuning**: Create custom models with your own training data.\n4.  **Online Learning**: The bot can learn specific responses dynamically.\n5.  **Fallback Mechanism**: If no template pattern matches, Ollama generates intelligent responses.\n\n### Usage\n\n#### Training\nYou can train the bot on text files or URLs:\n\n```python\nchat = Chat()\n# Train on a book or website\nchat.train(\"https:\u002F\u002Fwww.gutenberg.org\u002Ffiles\u002F11\u002F11-0.txt\", epochs=10)\n```\n\n#### Self-Learning\nThe bot can learn from interactions:\n\n```python\nchat.learn_response(\"What is the capital of Mars?\", \"Elon Musk's future home.\")\n```\n\n#### AI Fallback\nThe AI integration is automatic. If a user query does not match any defined template pattern, the `converse` method calls `ai_converse`.\n- If the model is untrained, it replies: *\"I haven't been trained on enough data to answer that yet. Please train me!\"*\n- Once trained, it generates a response based on its vocabulary and training.\n\n---\n\n![Chatbot AI flow Diagram](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fahmadfaizalbh_Chatbot_readme_bdc262c9898a.png)-0.txt\", epochs=10)\n```\n\n#### Self-Learning\nThe bot can learn from interactions:\n\n```python\nchat.learn_response(\"What is the capital of Mars?\", \"Elon Musk's future home.\")\n```\n\n#### AI Fallback\nThe AI integration is automatic. If a user query does not match any defined template pattern, the `converse` method calls `ai_converse`.\n- If the model is untrained, it replies: *\"I haven't been trained on enough data to answer that yet. Please train me!\"*\n- Once trained, it generates a response based on its vocabulary and training.\n\n---\n\n![Chatbot AI flow Diagram](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fahmadfaizalbh_Chatbot_readme_bdc262c9898a.png)\n\n","[![下载量](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fahmadfaizalbh_Chatbot_readme_9af6e1a10ac5.png)](https:\u002F\u002Fpepy.tech\u002Fproject\u002Fchatbotai)\n[![PyPI 版本](https:\u002F\u002Fbadge.fury.io\u002Fpy\u002FchatbotAI.svg)](https:\u002F\u002Fbadge.fury.io\u002Fpy\u002FchatbotAI)\n![上传 Python 包](https:\u002F\u002Fgithub.com\u002Fahmadfaizalbh\u002FChatbot\u002Factions\u002Fworkflows\u002FUpload%20Python%20Package\u002Fbadge.svg)\n[![CodeQL](https:\u002F\u002Fgithub.com\u002Fahmadfaizalbh\u002FChatbot\u002Factions\u002Fworkflows\u002Fcodeql-analysis.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002Fahmadfaizalbh\u002FChatbot\u002Factions\u002Fworkflows\u002Fcodeql-analysis.yml)\n\n# ChatBotAI\n一款基于 Python 的聊天机器人 AI，能够以最少的代码帮助用户创建 Python 聊天机器人。它不仅提供了 AI 引擎和对话处理器，还支持轻松集成 REST API 和 Python 函数调用，这使得它在功能上更加独特且强大。该 AI 具备学习、记忆、条件切换、基于主题的对话处理等多种功能。\n\n## 🚀 新增：Ollama 集成\n现已支持 **Ollama 与 Llama 3.2**，提供最先进的 AI 回答！\n- 无需训练——直接使用预训练模型\n- 对话连贯、接近人类表达\n- 本地推理（无 API 费用）\n- 请参阅 `OLLAMA_SETUP.md` 获取安装说明\n\n![演示 GUI](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fahmadfaizalbh_Chatbot_readme_bed637f31d48.gif)\n\n![演示](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fahmadfaizalbh_Chatbot_readme_484bce022cde.gif)\n![服装助手](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fahmadfaizalbh_Chatbot_readme_666b8911f9e0.gif)\n![提醒](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fahmadfaizalbh_Chatbot_readme_cc611d7cb8c1.gif)\n\n## 安装\n\n从 PyPI 安装（包含 Ollama 设置）：\n```sh\npip install chatbotAI\n```\n*安装过程中，系统会提示您安装 Ollama 以获取 AI 回答。*\n\n### 从 GitHub 安装（源码）\n1. 克隆仓库：\n```sh\ngit clone https:\u002F\u002Fgithub.com\u002Fahmadfaizalbh\u002FChatbot.git\ncd Chatbot\n```\n2. 安装依赖项：\n```sh\npip install -r requirement.txt\n```\n3. 安装包：\n```sh\npython setup.py install\n```\n\n## 演示\n```shell\n>>> from chatbot import demo\n>>> demo()\n你好，最近怎么样？\n> 我很好\n很高兴你一切顺利  \n> 退出\n谢谢你和我聊天。\n>>> \n```\n\n## 示例代码（集成维基百科搜索 API）\n\n```python\nfrom chatbot import Chat, register_call\nimport wikipedia\n\n\n@register_call(\"whoIs\")\ndef who_is(session, query):\n    try:\n        return wikipedia.summary(query)\n    except Exception:\n        for new_query in wikipedia.search(query):\n            try:\n                return wikipedia.summary(new_query)\n            except Exception:\n                pass\n    return \"我不太清楚关于 \"+query\n\nfirst_question=\"你好，最近怎么样？\"\nChat(\"examples\u002FExample.template\").converse(first_question)\n```\n\n有关如何构建 Facebook Messenger 机器人，请查看 [Facebook Integration.ipynb](https:\u002F\u002Fgithub.com\u002Fahmadfaizalbh\u002FMeetup-Resources\u002Fblob\u002Fmaster\u002FFacebook%20Integration.ipynb)。\n\n如需 Jupyter Notebook 聊天机器人示例，请参阅 [使用 NLTK 聊天机器人构建的 Infobot](https:\u002F\u002Fgithub.com\u002Fahmadfaizalbh\u002FMeetup-Resources\u002Fblob\u002Fmaster\u002FHow%20to%20build%20a%20bot.ipynb)。\n\n#### 示例应用\n1. 使用 [messengerbot](https:\u002F\u002Fgithub.com\u002Fgeeknam\u002Fmessengerbot\u002Fpulls)、[Django](https:\u002F\u002Fgithub.com\u002Fdjango\u002Fdjango) 和 [NLTK 聊天机器人](#chatbot) 构建的 Facebook Messenger 示例机器人可在 [Facebook Messenger 机器人](https:\u002F\u002Fgithub.com\u002Fahmadfaizalbh\u002FFacebookMessengerBot\u002F) 中找到。\n2. 使用 [Microsoft Bot Connector Rest API - v3.0](https:\u002F\u002Fdocs.botframework.com\u002Fen-us\u002Frestapi\u002Fconnector\u002F#navtitle)、[Django](https:\u002F\u002Fgithub.com\u002Fdjango\u002Fdjango) 和 [NLTK 聊天机器人](#chatbot) 构建的 Microsoft 示例机器人可在 [Microsoft 聊天机器人](https:\u002F\u002Fgithub.com\u002Fahmadfaizalbh\u002FMicrosoft-chatbot\u002F) 中找到。\n\n## 机器人模板支持的功能列表\n1. [记忆](#memory)\n2. [匹配分组](#get-matched-group)\n3. [递归](#recursion)\n4. [条件](#condition)\n5. [切换主题](#change-topic)\n6. [与 Python 函数交互](#interact-with-python-function)\n7. [REST API 集成](#rest-api-integration)\n8. [基于主题的分组](#topic-based-group)\n9. [学习](#learn)\n10. [转为大写](#to-upper-case)\n11. [转为小写](#to-lower-case)\n12. [首字母大写](#capitalize)\n13. [返回上一条](#previous)\n\n---\n\n## 记忆\n\n#### 设置记忆\n```\n{ 变量 : 值 }\n```\n在思考模式下：\n```\n{! 变量 : 值 }\n```\n\n#### 获取记忆\n```\n{ 变量 }\n```\n\n## 匹配分组\n关于正则表达式中的分组，请参考 [Python 正则表达式文档](https:\u002F\u002Fdocs.python.org\u002F3\u002Fhowto\u002Fregex.html#non-capturing-and-named-groups)。\n#### 获取客户端模式的第 N 个匹配分组\n```\n%N\n```\n例如，获取第一个匹配：\n```\n%1\n```\n\n#### 获取客户端模式的命名分组\n```\n%Client_pattern_group_name\n```\n例如，获取名为 `person` 的命名分组：\n```\n%person\n```\n\n#### 获取机器人消息模式的第 N 个匹配分组\n```\n%!N\n```\n例如，获取第一个匹配：\n```\n%!1\n```\n\n#### 获取机器人消息模式的命名分组\n```\n%!Bot_pattern_group_name\n```\n例如，获取名为 `region` 的命名分组：\n```\n%!region\n```\n\n## 递归\n根据客户的新陈述生成响应：\n```\n{% chat 陈述 %}\n```\n它将对陈述进行模式匹配。\n\n## 条件\n``` \n{% if 条件 %} 先执行这个 {% elif 条件 %} 再执行那个 {% else %} 执行其他 {% endif %}\n```\n\n## 切换主题\n```\n{% topic 主题名称 %}\n```\n\n## 与 Python 函数交互\n##### 在 Python 中\n```python\n@register_call(\"functionName\")\ndef function_name(session, query):\n    return \"响应字符串\"\n```\n##### 在模板中\n```\n{% call functionName: 值 %}\n```\n\n## REST API 集成\n\n### 在 API.json 文件中\n```\n{\n    \"APIName\":{\n        \"auth\" : {\n            \"url\":\"https:\u002F\u002Fyour_rest_api_url\u002Flogin.json\",\n            \"method\":\"POST\",\n            \"data\":{\n                \"user\":\"Your_Username\",\n                \"password\":\"Your_Password\"\n            }\n        },\n        \"MethodName\" : {\n            \"url\":\"https:\u002F\u002Fyour_rest_api_url\u002FGET_method_Example.json\",\n            \"method\":\"GET\",\n            \"params\":{\n                \"key1\":\"value1\",\n                \"key2\":\"value2\",\n                ...\n            },\n            \"value_getter\":[从 JSON 响应中提取数据的顺序]\n        },\n        \"MethodName1\" : {\n            \"url\":\"https:\u002F\u002Fyour_rest_api_url\u002FGET_method_Example.json\",\n            \"method\":\"POST\",\n            \"data\":{\n                \"key1\":\"value1\",\n                \"key2\":\"value2\",\n                ...\n            },\n            \"value_getter\":[从 JSON 响应中提取数据的顺序]\n        },\n        \"MethodName2\" : {\n            ...\n        },\n        ...\n    },\n    \"APIName2\":{\n        ...\n    },\n    ...\n}\n```\n*仅当需要身份验证时才需使用 `auth` 方法。pi.json 文件中定义的 `data` 和 `params` 作为默认值，而模板文件中定义的所有键值对都会覆盖这些默认值。`value_getter` 是一个按顺序排列的键列表，用于从 JSON 响应中提取信息。*\n\n### 在模板文件中\n```\n[ API名称:方法名,键1:值1 (,键*:值*) ]\n```\n你可以有任意数量的键值对，所有键值对会根据 `method` 的值来覆盖 `data` 或 `params`。如果 `method` 是 `POST`，则覆盖 `data`；如果 `method` 是 `GET`，则覆盖 `params`。\n\n## 基于主题的分组\n```\n{% group 主题名称 %}\n  {% block %}\n      {% client %}客户端说 {% endclient %}\n      {% response %}响应文本{% endresponse %}\n  {% endblock %}\n  ...\n{% endgroup %}\n```\n\n## 学习\n```\n{% learn %}\n  {% group 主题名称 %}\n    {% block %}\n        {% client %}客户端说 {% endclient %}\n        {% response %}响应文本{% endresponse %}\n    {% endblock %}\n    ...\n  {% endgroup %}\n  ...\n{% endlearn %}\n```\n\n## 转为大写\n```\n{% up 字符串 %}\n```\n\n## 转为小写\n```\n{% low 字符串 %}\n```\n\n## 首字母大写\n```\n{% cap 字符串 %}\n```\n\n## 上一条\n```\n{% block %}\n    {% client %}客户端的语句模式{% endclient %}\n    {% prev %}上一条机器人回复的语句模式{% endprev %}\n    {% response %}回复字符串{% endresponse %}\n{% endblock %}\n```\n\n\n## AI 框架\n\n该库现在使用 **Ollama 和 Llama 3.2** 来提供最先进的 AI 回答。\n\n### 特性\n1.  **预训练模型**: 无需训练，直接使用先进的语言模型。\n2.  **本地推理**: 可在本地运行，无需支付 API 费用，也不依赖互联网。\n3.  **微调**: 使用您自己的训练数据创建自定义模型。\n4.  **在线学习**: 机器人可以动态学习特定的回复。\n5.  **回退机制**: 如果没有匹配的模板模式，Ollama 会生成智能回复。\n\n### 使用方法\n\n#### 训练\n您可以使用文本文件或 URL 对机器人进行训练：\n\n```python\nchat = Chat()\n# 从书籍或网站训练\nchat.train(\"https:\u002F\u002Fwww.gutenberg.org\u002Ffiles\u002F11\u002F11-0.txt\", epochs=10)\n```\n\n#### 自我学习\n机器人可以从交互中学习：\n\n```python\nchat.learn_response(\"火星的首都是哪里？\", \"埃隆·马斯克的未来家园。\")\n```\n\n#### AI 回退\nAI 集成是自动的。如果用户的问题与任何已定义的模板模式都不匹配，则 `converse` 方法会调用 `ai_converse`。\n- 如果模型未经过训练，它会回复：“我还没有足够的数据来回答这个问题，请给我训练一下！”\n- 一旦经过训练，它就会根据自身的词汇和训练内容生成回复。\n\n---\n\n![聊天机器人 AI 流程图](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fahmadfaizalbh_Chatbot_readme_bdc262c9898a.png)-0.txt\", epochs=10)\n```\n\n#### 自我学习\n机器人可以从交互中学习：\n\n```python\nchat.learn_response(\"火星的首都是哪里？\", \"埃隆·马斯克的未来家园。\")\n```\n\n#### AI 回退\nAI 集成是自动的。如果用户的问题与任何已定义的模板模式都不匹配，则 `converse` 方法会调用 `ai_converse`。\n- 如果模型未经过训练，它会回复：“我还没有足够的数据来回答这个问题，请给我训练一下！”\n- 一旦经过训练，它就会根据自身的词汇和训练内容生成回复。\n\n---\n\n![聊天机器人 AI 流程图](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fahmadfaizalbh_Chatbot_readme_bdc262c9898a.png)","# ChatbotAI 快速上手指南\n\nChatbotAI 是一个基于 Python 的聊天机器人框架，支持极简代码构建智能对话。它集成了模板匹配、记忆系统、条件判断、REST API 调用以及最新的 **Ollama (Llama 3.2)** 本地大模型推理能力，无需训练即可实现类人对话。\n\n## 环境准备\n\n*   **操作系统**：Windows, macOS, Linux\n*   **Python 版本**：建议 Python 3.8 及以上\n*   **前置依赖**：\n    *   `pip` 包管理工具\n    *   (可选) **Ollama**：若需使用最新的 Llama 3.2 大模型功能，需预先安装 Ollama。安装过程中脚本会自动提示。\n\n> **国内开发者提示**：建议使用国内镜像源加速安装过程（如清华源或阿里源）。\n\n## 安装步骤\n\n### 方式一：通过 PyPI 安装（推荐）\n\n这是最快捷的安装方式，包含基础依赖及 Ollama 配置引导。\n\n```sh\n# 使用国内镜像源加速安装\npip install chatbotAI -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple\n```\n\n*注意：安装过程中若提示安装 Ollama，请根据指引操作以启用高级 AI 功能。*\n\n### 方式二：从 GitHub 源码安装\n\n适用于需要最新开发版或自定义修改的场景。\n\n1. 克隆仓库：\n```sh\ngit clone https:\u002F\u002Fgithub.com\u002Fahmadfaizalbh\u002FChatbot.git\ncd Chatbot\n```\n\n2. 安装依赖：\n```sh\npip install -r requirement.txt -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple\n```\n\n3. 安装 package：\n```sh\npython setup.py install\n```\n\n## 基本使用\n\n### 1. 快速体验 Demo\n\n运行内置演示程序，立即开始对话测试：\n\n```shell\n>>> from chatbot import demo\n>>> demo()\nHi, how are you?\n> i'm fine\nNice to know that you are fine  \n> quit\nThank you for talking with me.\n>>> \n```\n\n### 2. 编写自定义机器人\n\n以下示例展示了如何创建一个简单的聊天机器人，并集成 Wikipedia 搜索功能。\n\n**步骤 A：注册自定义函数**\n在 Python 代码中定义并注册一个处理特定意图的函数。\n\n```python\nfrom chatbot import Chat, register_call\nimport wikipedia\n\n\n@register_call(\"whoIs\")\ndef who_is(session, query):\n    try:\n        return wikipedia.summary(query)\n    except Exception:\n        for new_query in wikipedia.search(query):\n            try:\n                return wikipedia.summary(new_query)\n            except Exception:\n                pass\n    return \"I don't know about \"+query\n```\n\n**步骤 B：加载模板并启动对话**\n使用 `.template` 文件定义对话逻辑（需确保 `examples\u002FExample.template` 存在或自行创建），然后启动会话。\n\n```python\nfirst_question=\"Hi, how are you?\"\nChat(\"examples\u002FExample.template\").converse(first_question)\n```\n\n### 3. 使用 Ollama 大模型 (进阶)\n\n若已安装 Ollama，库将自动利用 **Llama 3.2** 处理未匹配模板的复杂问题，无需额外代码配置。\n\n*   **自动回退机制**：当用户输入不匹配任何预设模板时，系统自动调用 `ai_converse` 生成智能回复。\n*   **在线学习**：可通过代码动态教机器人新知识。\n\n```python\nchat = Chat()\n\n# 动态学习新问答对\nchat.learn_response(\"What is the capital of Mars?\", \"Elon Musk's future home.\")\n\n# 训练数据（可选）：从文本文件或 URL 训练\n# chat.train(\"https:\u002F\u002Fwww.gutenberg.org\u002Ffiles\u002F11\u002F11-0.txt\", epochs=10)\n```","一家小型电商初创团队希望为其网站快速构建一个能回答商品库存、处理售后咨询并支持多轮对话的智能客服系统。\n\n### 没有 Chatbot 时\n- 开发人员需从零编写复杂的正则匹配逻辑来识别用户意图，代码冗长且难以维护。\n- 实现“查询库存”或“订单状态”等功能时，必须手动编写大量样板代码来调用外部 REST API，集成效率极低。\n- 对话缺乏上下文记忆能力，用户一旦切换话题或进行多轮追问，机器人就会“失忆”并重复询问基础信息。\n- 无法灵活定义对话流程，遇到条件分支（如区分 VIP 与普通用户）时，逻辑硬编码导致扩展性差。\n- 部署成本高，若要获得类人回复往往需要接入昂贵的云端大模型 API，且数据隐私难以保障。\n\n### 使用 Chatbot 后\n- 利用模板化配置即可定义对话逻辑，通过简单的标签语法实现条件判断和话题切换，开发工作量减少 80%。\n- 直接注册 Python 函数（如 `@register_call`）即可无缝对接内部库存数据库或第三方物流 API，功能扩展仅需几行代码。\n- 内置的记忆模块自动保存会话状态，支持基于上下文的自然多轮交互，用户体验流畅自然。\n- 结合最新集成的 Ollama 与 Llama 3.2 模型，可在本地运行获得高质量拟人回复，既节省了 API 成本又确保了数据安全。\n- 提供现成的 Facebook Messenger 和 Microsoft Bot 集成示例，团队可在一天内将原型转化为全渠道客服应用。\n\nChatbot 通过极简的代码封装和强大的本地 AI 集成，让开发者能以最低成本快速构建具备记忆、逻辑判断及 API 调用能力的专业级智能助手。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fahmadfaizalbh_Chatbot_cc611d7c.gif","ahmadfaizalbh","Ahmad Faizal B H","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fahmadfaizalbh_4686699b.jpg",null,"Amazon","Bengaluru","ahmadfaizalbh726@gmail.com","https:\u002F\u002Fgithub.com\u002Fahmadfaizalbh",[84],{"name":85,"color":86,"percentage":87},"Python","#3572A5",100,858,351,"2026-04-03T19:38:23","MIT","未说明","不需要专用 GPU（基于 Ollama 的本地推理，支持 CPU 运行，若有 GPU 可加速）","未说明（建议至少 8GB 以流畅运行 Llama 3.2 模型）",{"notes":96,"python":97,"dependencies":98},"该工具核心为 Python 库，通过 pip 安装。主要特色是集成了 Ollama 以实现本地大模型推理（默认使用 Llama 3.2），无需额外训练即可进行类人对话，且无 API 费用。若不使用 AI 功能，仅需基础 Python 环境；若启用 Ollama 功能，需按照 OLLAMA_SETUP.md 安装 Ollama 服务。支持通过模板定义对话逻辑、调用 Python 函数及集成 REST API。","未说明（推测需 Python 3.6+ 以支持 pip 安装和示例代码）",[99,100,101],"chatbotAI","wikipedia","Ollama (含 Llama 3.2 模型)",[15],[104,105,106,107,108,109,110],"chatbot","python","ai-engine","chatbotai","python-chatbot","bots","chatbots","2026-03-27T02:49:30.150509","2026-04-09T02:34:54.452548",[114,119,124,129,134,139,144],{"id":115,"question_zh":116,"answer_zh":117,"source_url":118},25510,"如何在 Windows 上运行聊天机器人程序？","在 Windows 上，不要直接运行 setup.py 来启动程序。你应该先确保已安装 Python 并配置好环境变量。克隆并安装项目后，通常是通过运行主脚本（如 main.py 或特定的演示脚本）来启动，而不是运行 setup.py。如果遇到 'chatbot' 不是内部命令的错误，请检查是否在当前目录下正确调用了 Python 解释器，例如使用 `py main.py` 或 `python main.py`（取决于你的安装方式），并确保你在正确的项目目录中执行命令。","https:\u002F\u002Fgithub.com\u002Fahmadfaizalbh\u002FChatbot\u002Fissues\u002F22",{"id":120,"question_zh":121,"answer_zh":122,"source_url":123},25511,"如何通过中间件或自定义类来处理聊天机器人的回复？","你可以通过继承 `Chat` 类并重写 `converse` 方法来实现自定义的对话处理逻辑。示例代码如下：\n```python\nfrom chatbot import Chat\n\nclass MyChat(Chat):\n    def converse(self, first_question=None, quit=\"quit\", session_id=\"general\"):\n        if first_question:\n            self.conversation[session_id].append(first_question)\n            speak(first_question)\n        input_sentence = \"\"\n        while input_sentence != quit:\n            input_sentence = input(\"> \")\n            if input_sentence:\n                self.conversation[session_id].append(input_sentence)\n                input_sentence = input_sentence.rstrip(\"!.\")\n                # 在此处添加自定义处理逻辑\n```","https:\u002F\u002Fgithub.com\u002Fahmadfaizalbh\u002FChatbot\u002Fissues\u002F20",{"id":125,"question_zh":126,"answer_zh":127,"source_url":128},25512,"如何更改聊天机器人的会话名称或用户标识？","你可以使用 `Chat` 对象创建新会话，并通过 `_startNewSession` 方法设置用户标识。代码示例如下：\n```python\nimport os\nfrom chatbot import Chat\n\nchat = Chat(os.path.join(os.path.dirname(os.path.abspath(__file__)), \"Example.template\"))\nchat._startNewSession(\"User\") \n```\n注意：如果在类外部调用，可能需要实例化对象；如果在类内部，确保正确使用 `self`。","https:\u002F\u002Fgithub.com\u002Fahmadfaizalbh\u002FChatbot\u002Fissues\u002F12",{"id":130,"question_zh":131,"answer_zh":132,"source_url":133},25513,"如何获取机器人回答的置信度分数或判断是否匹配到模式？","目前库本身可能不直接返回置信度分数，但你可以通过模板优先级来控制。如果你定义了自定义块，它们会优先于默认模板被选择。如果没有任何模式匹配，通常会回退到默认回复。若要结合其他 NLU 工具（如 snips-nlu），可以在检测到默认回复或未匹配时触发备用解析逻辑。具体行为取决于模板配置，建议测试自定义块是否在默认模板之前被选中。","https:\u002F\u002Fgithub.com\u002Fahmadfaizalbh\u002FChatbot\u002Fissues\u002F36",{"id":135,"question_zh":136,"answer_zh":137,"source_url":138},25514,"为什么通过 register_call 注册的函数无法访问外部变量？","这是因为作用域问题。如果在主函数中定义了变量（如 `current_speaker`），它在注册的函数中不可见。解决方法有两种：\n1. 在需要使用该变量的函数内部声明 `global current_speaker`。\n2. 更好的做法是利用会话机制：为每个用户创建新会话 `start_new_session(session_id, topic)`，并在调用 `respond` 时传入唯一的 `session_id` 来区分不同用户的状态，从而避免依赖全局变量。\n示例修正：\n```python\ncurrent_speaker = None\n\n@register_call(\"iam\")\ndef iam(name, session_id=\"general\"):\n    global current_speaker  # 声明全局变量\n    if current_speaker is None:\n        return \"Nice to meet you \" + name\n    else:\n        return \"I already know you \" + name\n```","https:\u002F\u002Fgithub.com\u002Fahmadfaizalbh\u002FChatbot\u002Fissues\u002F29",{"id":140,"question_zh":141,"answer_zh":142,"source_url":143},25515,"如何获取机器人的文本回复以便集成到 Web 或窗口应用中？","`respond` 方法接收用户消息（文本）和 session_id（通常是用户名或唯一标识），并返回文本形式的机器人回复。你可以直接使用返回值进行展示或传输。示例代码：\n```python\nbot_response = chat.respond(user_message, session_id)\n```\n如果是部署到 Web 环境，建议使用数据库存储状态、话题和对话记录，并可参考 [ChatBotAI-HTTPServer](https:\u002F\u002Fgithub.com\u002Fahmadfaizalbh\u002FChatBotAI-HTTPServer) 或使用 Django 封装版本 [Django-Chatbot](https:\u002F\u002Fgithub.com\u002Fahmadfaizalbh\u002FDjango-Chatbot) 来通过 HTTP\u002FHTTPS 提供服务。","https:\u002F\u002Fgithub.com\u002Fahmadfaizalbh\u002FChatbot\u002Fissues\u002F55",{"id":145,"question_zh":146,"answer_zh":147,"source_url":148},25516,"什么是基于主题的组（Topic based group）以及如何使用？","基于主题的组用于构建具有多个主题和子主题的聊天机器人。例如，一个机器人可以处理“电影”和“旅行”两个大主题，其中“电影”下又可分为“宝莱坞”、“好莱坞”等子主题。在模板文件中，可以通过 `{% topic %}` 标签切换主题。示例模板结构：\n```\n{% block %}\n    {% client %}can we discuss about movie{% endclient %}\n    {% response %}Sure why not. {% topic Movie %}{% endresponse %}\n{% endblock %}\n{% block %}\n    {% client %}can we discuss about travel{% endclient %}\n    {% response %}Sure why not. {% topic Travel %}{% endresponse %}\n{% endblock %}\n```\n这样可以让机器人在不同上下文中提供针对性的回答。","https:\u002F\u002Fgithub.com\u002Fahmadfaizalbh\u002FChatbot\u002Fissues\u002F50",[150,155,160,165,170,175,180,185,190,194,198,203,208,212],{"id":151,"version":152,"summary_zh":153,"released_at":154},162824,"v0.3.1.3-beta","# 发布说明\n- 修复 chat_gui 的安装程序","2021-12-23T19:30:14",{"id":156,"version":157,"summary_zh":158,"released_at":159},162825,"v0.3.1.2-beta","# 发布说明\n- 添加了基于 Tkinter 的聊天 GUI","2021-12-16T21:29:42",{"id":161,"version":162,"summary_zh":163,"released_at":164},162826,"v0.3.1.1-beta","# 发布说明\n- 修复聊天处理器与匹配组相关的问题","2021-11-14T14:59:16",{"id":166,"version":167,"summary_zh":168,"released_at":169},162827,"v0.3.1.0-beta","# 发布说明\n- 新增希伯来语支持\n- 修复文件名拼写错误","2021-03-08T01:33:43",{"id":171,"version":172,"summary_zh":173,"released_at":174},162828,"v0.3.0.0-beta","# 发布说明\n- 新增完整的德语（de）和巴西葡萄牙语（pt-br）\n- 回调中添加会话对象\n- 安全修复\n","2020-11-05T10:26:54",{"id":176,"version":177,"summary_zh":178,"released_at":179},162829,"v0.2.2.1-beta","# 发布说明\n- 支持配置本地文件夹和语言设置","2020-08-03T13:00:10",{"id":181,"version":182,"summary_zh":183,"released_at":184},162830,"v0.2.1.2-beta","# 发布说明\r\n- 修复回调注册","2020-08-01T11:53:22",{"id":186,"version":187,"summary_zh":188,"released_at":189},162831,"v0.2.1.1-beta","# 发布说明\n- 添加了回调注册功能\n- 添加了命名分组支持\n- 添加了每个意图块支持多个聊天消息正则表达式\n- 添加了每个意图块支持多个前一条消息正则表达式\n- 添加了语言切换支持（需要添加映射表和基础模板）\n- 修复了归一化器\n- 修复了在没有第一条消息的情况下启动时的 IndexError 异常\n- 修复了 flake8 问题","2020-03-10T18:00:21",{"id":191,"version":192,"summary_zh":78,"released_at":193},162832,"v0.2.1.0-beta","2019-12-22T01:54:39",{"id":195,"version":196,"summary_zh":78,"released_at":197},162833,"v0.2.0.8-beta","2019-02-21T06:28:29",{"id":199,"version":200,"summary_zh":201,"released_at":202},162834,"v0.2.0.7-beta","修复了“lean”标签解析器的问题，并添加了拼写检查功能。","2019-02-18T14:07:51",{"id":204,"version":205,"summary_zh":206,"released_at":207},162835,"v0.2.0.3-beta","更新了上下文检查顺序和回退规则","2018-05-31T11:37:56",{"id":209,"version":210,"summary_zh":78,"released_at":211},162836,"v0.1.2.1-beta","2017-03-10T09:27:21",{"id":213,"version":214,"summary_zh":78,"released_at":215},162837,"v0.1.0.2-alpha","2016-06-27T00:55:58"]