[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-Ai00-X--ai00_server":3,"tool-Ai00-X--ai00_server":61},[4,18,26,36,44,53],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":17},4358,"openclaw","openclaw\u002Fopenclaw","OpenClaw 是一款专为个人打造的本地化 AI 助手，旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚，能够直接接入你日常使用的各类通讯渠道，包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息，OpenClaw 都能即时响应，甚至支持在 macOS、iOS 和 Android 设备上进行语音交互，并提供实时的画布渲染功能供你操控。\n\n这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地，用户无需依赖云端服务即可享受快速、私密的智能辅助，真正实现了“你的数据，你做主”。其独特的技术亮点在于强大的网关架构，将控制平面与核心助手分离，确保跨平台通信的流畅性与扩展性。\n\nOpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者，以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力（支持 macOS、Linux 及 Windows WSL2），即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你",349277,3,"2026-04-06T06:32:30",[13,14,15,16],"Agent","开发框架","图像","数据工具","ready",{"id":19,"name":20,"github_repo":21,"description_zh":22,"stars":23,"difficulty_score":10,"last_commit_at":24,"category_tags":25,"status":17},3808,"stable-diffusion-webui","AUTOMATIC1111\u002Fstable-diffusion-webui","stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面，旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点，将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。\n\n无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师，还是想要深入探索模型潜力的开发者与研究人员，都能从中获益。其核心亮点在于极高的功能丰富度：不仅支持文生图、图生图、局部重绘（Inpainting）和外绘（Outpainting）等基础模式，还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外，它内置了 GFPGAN 和 CodeFormer 等人脸修复工具，支持多种神经网络放大算法，并允许用户通过插件系统无限扩展能力。即使是显存有限的设备，stable-diffusion-webui 也提供了相应的优化选项，让高质量的 AI 艺术创作变得触手可及。",162132,"2026-04-05T11:01:52",[14,15,13],{"id":27,"name":28,"github_repo":29,"description_zh":30,"stars":31,"difficulty_score":32,"last_commit_at":33,"category_tags":34,"status":17},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 真正成长为懂上",157379,2,"2026-04-15T23:32:42",[14,13,35],"语言模型",{"id":37,"name":38,"github_repo":39,"description_zh":40,"stars":41,"difficulty_score":32,"last_commit_at":42,"category_tags":43,"status":17},2271,"ComfyUI","Comfy-Org\u002FComfyUI","ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎，专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式，采用直观的节点式流程图界面，让用户通过连接不同的功能模块即可构建个性化的生成管线。\n\n这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景，也能自由组合模型、调整参数并实时预览效果，轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性，不仅支持 Windows、macOS 和 Linux 全平台，还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构，并率先支持 SDXL、Flux、SD3 等前沿模型。\n\n无论是希望深入探索算法潜力的研究人员和开发者，还是追求极致创作自由度的设计师与资深 AI 绘画爱好者，ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",108322,"2026-04-10T11:39:34",[14,15,13],{"id":45,"name":46,"github_repo":47,"description_zh":48,"stars":49,"difficulty_score":32,"last_commit_at":50,"category_tags":51,"status":17},6121,"gemini-cli","google-gemini\u002Fgemini-cli","gemini-cli 是一款由谷歌推出的开源 AI 命令行工具，它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言，它提供了一条从输入提示词到获取模型响应的最短路径，无需切换窗口即可享受智能辅助。\n\n这款工具主要解决了开发过程中频繁上下文切换的痛点，让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用，还是执行复杂的 Git 操作，gemini-cli 都能通过自然语言指令高效处理。\n\n它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口，具备出色的逻辑推理能力；内置 Google 搜索、文件操作及 Shell 命令执行等实用工具；更独特的是，它支持 MCP（模型上下文协议），允许用户灵活扩展自定义集成，连接如图像生成等外部能力。此外，个人谷歌账号即可享受免费的额度支持，且项目基于 Apache 2.0 协议完全开源，是提升终端工作效率的理想助手。",100752,"2026-04-10T01:20:03",[52,13,15,14],"插件",{"id":54,"name":55,"github_repo":56,"description_zh":57,"stars":58,"difficulty_score":32,"last_commit_at":59,"category_tags":60,"status":17},4721,"markitdown","microsoft\u002Fmarkitdown","MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具，专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片（含 OCR）、音频（含语音转录）、HTML 乃至 YouTube 链接等多种格式的解析，能够精准提取文档中的标题、列表、表格和链接等关键结构信息。\n\n在人工智能应用日益普及的今天，大语言模型（LLM）虽擅长处理文本，却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点，它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式，成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外，它还提供了 MCP（模型上下文协议）服务器，可无缝集成到 Claude Desktop 等 LLM 应用中。\n\n这款工具特别适合开发者、数据科学家及 AI 研究人员使用，尤其是那些需要构建文档检索增强生成（RAG）系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性，但其核心优势在于为机器",93400,"2026-04-06T19:52:38",[52,14],{"id":62,"github_repo":63,"name":64,"description_en":65,"description_zh":66,"ai_summary_zh":67,"readme_en":68,"readme_zh":69,"quickstart_zh":70,"use_case_zh":71,"hero_image_url":72,"owner_login":73,"owner_name":73,"owner_avatar_url":74,"owner_bio":75,"owner_company":76,"owner_location":76,"owner_email":76,"owner_twitter":76,"owner_website":76,"owner_url":77,"languages":78,"stars":87,"forks":88,"last_commit_at":89,"license":90,"difficulty_score":32,"env_os":91,"env_gpu":92,"env_ram":93,"env_deps":94,"category_tags":101,"github_topics":102,"view_count":32,"oss_zip_url":76,"oss_zip_packed_at":76,"status":17,"created_at":113,"updated_at":114,"faqs":115,"releases":150},7959,"Ai00-X\u002Fai00_server","ai00_server","The all-in-one RWKV runtime box with embed, RAG, AI agents, and more.","ai00_rwkv_server 是一款基于 RWKV 语言模型的一体化推理服务工具，旨在为用户提供高效、便捷的本地大模型部署方案。它集成了嵌入（Embed）、检索增强生成（RAG）及 AI 智能体等功能，能够轻松胜任聊天机器人、文本生成、翻译及问答等多种任务。\n\n该工具主要解决了传统大模型部署依赖庞大运行环境（如 PyTorch、CUDA）且对硬件要求苛刻的痛点。其核心亮点在于采用 Rust 语言编写并基于 web-rwkv 引擎，无需安装复杂的深度学习框架即可“开箱即用”。更独特的是，它支持 Vulkan 并行加速，这意味着不仅限于 NVIDIA 显卡，AMD 显卡甚至集成显卡也能获得高效的 GPU 加速支持，极大地降低了本地运行大模型的硬件门槛。同时，它原生兼容 OpenAI ChatGPT API 接口，方便开发者无缝迁移现有应用。\n\nai00_rwkv_server 非常适合希望在本地私有化部署大模型的开发者、受限于硬件条件的研究人员，以及想要体验高性能 AI 但缺乏专业显卡资源的普通用户。无论是用于快速原型开发、技术调研，还是构建实际的商业应用，它都是一个轻量级且强大的选择","ai00_rwkv_server 是一款基于 RWKV 语言模型的一体化推理服务工具，旨在为用户提供高效、便捷的本地大模型部署方案。它集成了嵌入（Embed）、检索增强生成（RAG）及 AI 智能体等功能，能够轻松胜任聊天机器人、文本生成、翻译及问答等多种任务。\n\n该工具主要解决了传统大模型部署依赖庞大运行环境（如 PyTorch、CUDA）且对硬件要求苛刻的痛点。其核心亮点在于采用 Rust 语言编写并基于 web-rwkv 引擎，无需安装复杂的深度学习框架即可“开箱即用”。更独特的是，它支持 Vulkan 并行加速，这意味着不仅限于 NVIDIA 显卡，AMD 显卡甚至集成显卡也能获得高效的 GPU 加速支持，极大地降低了本地运行大模型的硬件门槛。同时，它原生兼容 OpenAI ChatGPT API 接口，方便开发者无缝迁移现有应用。\n\nai00_rwkv_server 非常适合希望在本地私有化部署大模型的开发者、受限于硬件条件的研究人员，以及想要体验高性能 AI 但缺乏专业显卡资源的普通用户。无论是用于快速原型开发、技术调研，还是构建实际的商业应用，它都是一个轻量级且强大的选择。","# 💯AI00 RWKV Server\n\u003Cp align='center'>\n\u003Cimage src=\"docs\u002Fpublic\u002Flogo.gif\" \u002F>\n    \n\u003C\u002Fp>\n\n\u003Cdiv align=\"center\"> \n    \n![license](https:\u002F\u002Fshields.io\u002Fbadge\u002Flicense-MIT%2FApache--2.0-blue)\n[![Rust Version](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FRust-1.78.0+-blue)](https:\u002F\u002Freleases.rs\u002Fdocs\u002F1.75.0)\n![PRs welcome](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FPRs-Welcome-brightgreen)     \n\u003C!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->\n[![All Contributors](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fall_contributors-8-orange.svg?style=flat-square)](#contributors-)\n\u003C!-- ALL-CONTRIBUTORS-BADGE:END -->\n\n[![en](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flang-en-red.svg)](README.md)\n[![zh](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flang-zh-blue.svg)](README.zh.md)\n\n---\n\n\u003Cdiv align=\"left\">\n    \n`AI00 RWKV Server` is an inference API server for the [`RWKV` language model](https:\u002F\u002Fgithub.com\u002FBlinkDL\u002FChatRWKV) based upon the [`web-rwkv`](https:\u002F\u002Fgithub.com\u002Fcryscan\u002Fweb-rwkv) inference engine.\n\nIt supports `Vulkan` parallel and concurrent batched inference and can run on all GPUs that support `Vulkan`. No need for Nvidia cards!!! AMD cards and even integrated graphics can be accelerated!!!\n\nNo need for bulky `pytorch`, `CUDA` and other runtime environments, it's compact and ready to use out of the box!\n\nCompatible with OpenAI's ChatGPT API interface.\n\n100% open source and commercially usable, under the MIT license.\n\nIf you are looking for a fast, efficient, and easy-to-use LLM API server, then `AI00 RWKV Server` is your best choice. It can be used for various tasks, including chatbots, text generation, translation, and Q&A.\n\nJoin the `AI00 RWKV Server` community now and experience the charm of AI!\n\nQQ Group for communication: 30920262\n\n### 💥Features\n\n*   Based on the `RWKV` model, it has high performance and accuracy\n*   Supports `Vulkan` inference acceleration, you can enjoy GPU acceleration without the need for `CUDA`! Supports AMD cards, integrated graphics, and all GPUs that support `Vulkan`\n*   No need for bulky `pytorch`, `CUDA` and other runtime environments, it's compact and ready to use out of the box!\n*   Compatible with OpenAI's ChatGPT API interface\n\n### ⭕Usages\n\n*   Chatbot\n*   Text generation\n*   Translation\n*   Q&A\n*   Any other tasks that LLM can do\n\n### 👻Other\n\n*   Based on the [web-rwkv](https:\u002F\u002Fgithub.com\u002Fcryscan\u002Fweb-rwkv) project\n*   Model download: [V5](https:\u002F\u002Fhuggingface.co\u002Fcgisky\u002FAI00_RWKV_V5), [V6](https:\u002F\u002Fhuggingface.co\u002Fcgisky\u002Fai00_rwkv_x060), [V7](https:\u002F\u002Fhuggingface.co\u002Fcgisky\u002FRWKV-x070-Ai00)\n\n## Installation, Compilation, and Usage\n\n### 📦Download Pre-built Executables\n\n1.  Directly download the latest version from [Release](https:\u002F\u002Fgithub.com\u002Fcgisky1980\u002Fai00_rwkv_server\u002Freleases)\n    \n2.  After [downloading the model](#👻other), place the model in the `assets\u002Fmodels\u002F` path, for example, `assets\u002Fmodels\u002FRWKV-x060-World-3B-v2-20240228-ctx4096.st`\n\n3.  Optionally modify [`assets\u002Fconfigs\u002FConfig.toml`](.\u002Fassets\u002Fconfigs\u002FConfig.toml) for model configurations like model path, quantization layers, etc.\n    \n4.  Run in the command line\n    \n    ```bash\n    $ .\u002Fai00_rwkv_server\n    ```\n    \n5.  Open the browser and visit the WebUI at http:\u002F\u002Flocalhost:65530 (https:\u002F\u002Flocalhost:65530 if `tls` is enabled)\n    \n\n### 📜(Optional) Build from Source\n\n1.  [Install Rust](https:\u002F\u002Fwww.rust-lang.org\u002F)\n    \n2.  Clone this repository\n    \n    ```bash\n    $ git clone https:\u002F\u002Fgithub.com\u002Fcgisky1980\u002Fai00_rwkv_server.git\n    $ cd ai00_rwkv_server\n    ```\n    \n3.  After [downloading the model](#👻other), place the model in the `assets\u002Fmodels\u002F` path, for example, `assets\u002Fmodels\u002FRWKV-x060-World-3B-v2-20240228-ctx4096.st`\n    \n4.  Compile\n    \n    ```bash\n    $ cargo build --release\n    ```\n    \n5.  After compilation, run\n    \n    ```bash\n    $ cargo run --release\n    ```\n    \n6.  Open the browser and visit the WebUI at http:\u002F\u002Flocalhost:65530 (https:\u002F\u002Flocalhost:65530 if `tls` is enabled)\n\n### 📒Convert the Model\n\nIt only supports Safetensors models with the `.st` extension now. Models saved with the `.pth` extension using torch need to be converted before use.\n\n1. [Download the `.pth` model](https:\u002F\u002Fhuggingface.co\u002FBlinkDL)\n\n2. (Recommended) Run the python script `convert_safetensors.py`:\n\n    ```bash\n    $ python assets\u002Fscripts\u002Fconvert_safetensors.py --input \u002Fpath\u002Fto\u002Fmodel.pth --output \u002Fpath\u002Fto\u002Fmodel.st\n    ```\n\n    Requirements: Python, with `torch` and `safetensors` installed.\n\n3. If you do not want to install python, In the [Release](https:\u002F\u002Fgithub.com\u002Fcgisky1980\u002Fai00_rwkv_server\u002Freleases) you could find an executable called `converter`. Run\n  \n  ```bash\n  $ .\u002Fconverter --input \u002Fpath\u002Fto\u002Fmodel.pth --output \u002Fpath\u002Fto\u002Fmodel.st\n  ```\n  \n3. If you are building from source, run\n  \n  ```bash\n  $ cargo run --release --package converter -- --input \u002Fpath\u002Fto\u002Fmodel.pth --output \u002Fpath\u002Fto\u002Fmodel.st\n  ```\n\n4. Just like the steps mentioned above, place the model in the `.st` model in the `assets\u002Fmodels\u002F` path and modify the model path in [`assets\u002Fconfigs\u002FConfig.toml`](.\u002Fassets\u002Fconfigs\u002FConfig.toml)\n    \n\n## 📝Supported Arguments\n\n*   `--config`: Configure file path (default: `assets\u002Fconfigs\u002FConfig.toml`)\n*   `--ip`: The IP address the server is bound to\n*   `--port`: Running port\n\n\n## 📙Currently Available APIs\n\nThe API service starts at port 65530, and the data input and output format follow the Openai API specification.\nNote that some APIs like `chat` and `completions` have additional optional fields for advanced functionalities. Visit http:\u002F\u002Flocalhost:65530\u002Fapi-docs for API schema.\n\n*   `\u002Fapi\u002Foai\u002Fv1\u002Fmodels`\n*   `\u002Fapi\u002Foai\u002Fmodels`\n*   `\u002Fapi\u002Foai\u002Fv1\u002Fchat\u002Fcompletions`\n*   `\u002Fapi\u002Foai\u002Fchat\u002Fcompletions`\n*   `\u002Fapi\u002Foai\u002Fv1\u002Fcompletions`\n*   `\u002Fapi\u002Foai\u002Fcompletions`\n*   `\u002Fapi\u002Foai\u002Fv1\u002Fembeddings`\n*   `\u002Fapi\u002Foai\u002Fembeddings`\n\nThe following is an out-of-box example of Ai00 API invocations in Python:\n\n```python\nimport openai\n\nclass Ai00:\n    def __init__(self,model=\"model\",port=65530,api_key=\"JUSTSECRET_KEY\") :\n        openai.api_base = f\"http:\u002F\u002F127.0.0.1:{port}\u002Fapi\u002Foai\"\n        openai.api_key = api_key\n        self.ctx = []\n        self.params = {\n            \"system_name\": \"System\",\n            \"user_name\": \"User\", \n            \"assistant_name\": \"Assistant\",\n            \"model\": model,\n            \"max_tokens\": 4096,\n            \"top_p\": 0.6,\n            \"temperature\": 1,\n            \"presence_penalty\": 0.3,\n            \"frequency_penalty\": 0.3,\n            \"half_life\": 400,\n            \"stop\": ['\\x00','\\n\\n']\n        }\n        \n    def set_params(self,**kwargs):\n        self.params.update(kwargs)\n        \n    def clear_ctx(self):\n        self.ctx = []\n        \n    def get_ctx(self):\n        return self.ctx\n    \n    def continuation(self, message):\n        response = openai.Completion.create(\n            model=self.params['model'],\n            prompt=message,\n            max_tokens=self.params['max_tokens'],\n            half_life=self.params['half_life'],\n            top_p=self.params['top_p'],\n            temperature=self.params['temperature'],\n            presence_penalty=self.params['presence_penalty'],\n            frequency_penalty=self.params['frequency_penalty'],\n            stop=self.params['stop']\n        )\n        result = response.choices[0].text\n        return result\n    \n    def append_ctx(self,role,content):\n        self.ctx.append({\n            \"role\": role,\n            \"content\": content\n        })\n        \n    def send_message(self, message,role=\"user\"):\n        self.ctx.append({\n            \"role\": role,\n            \"content\": message\n        })\n        result = openai.ChatCompletion.create(\n            model=self.params['model'],\n            messages=self.ctx,\n            names={\n                \"system\": self.params['system_name'],\n                \"user\": self.params['user_name'],\n                \"assistant\": self.params['assistant_name']\n            },\n            max_tokens=self.params['max_tokens'],\n            half_life=self.params['half_life'],\n            top_p=self.params['top_p'],\n            temperature=self.params['temperature'],\n            presence_penalty=self.params['presence_penalty'],\n            frequency_penalty=self.params['frequency_penalty'],\n            stop=self.params['stop']\n        )\n        result = result.choices[0].message['content']\n        self.ctx.append({\n            \"role\": \"assistant\",\n            \"content\": result\n        })\n        return result\n    \nai00 = Ai00()\nai00.set_params(\n    max_tokens = 4096,\n    top_p = 0.55,\n    temperature = 2,\n    presence_penalty = 0.3,\n    frequency_penalty = 0.8,\n    half_life = 400,\n    stop = ['\\x00','\\n\\n']\n)\nprint(ai00.send_message(\"how are you?\"))\nprint(ai00.send_message(\"me too!\"))\nprint(ai00.get_ctx())\nai00.clear_ctx()\nprint(ai00.continuation(\"i like\"))\n```\n\n## BNF Sampling\n\nSince v0.5, Ai00 has a unique feature called BNF sampling. BNF forces the model to output in specified formats (e.g., JSON or markdown with specified fields) by limiting the possible next tokens the model can choose from.\n\nHere is an example BNF for JSON with fields \"name\", \"age\" and \"job\":\n\n```\nstart ::= json_object;\njson_object ::= \"{\\n\" object_members \"\\n}\";\nobject_members ::= json_member | json_member \",\\n\" object_members;\njson_member ::= \"\\t\" json_key \": \" json_value;\njson_key ::= '\"' \"name\" '\"' | '\"' \"age\" '\"' | '\"' \"job\" '\"';\njson_value ::= json_string | json_number;\njson_string ::= '\"'content'\"';\ncontent ::= #\"\\\\w*\";\njson_number ::= positive_digit digits|'0';\ndigits ::= digit|digit digits;\ndigit ::= '0'|positive_digit;\npositive_digit::=\"1\"|\"2\"|\"3\"|\"4\"|\"5\"|\"6\"|\"7\"|\"8\"|\"9\";\n```\n\n\u003Cimage src=\"img\u002Fbnf.png\" \u002F>\n\n## 📙WebUI Screenshots\n\n### Chat\n\n\u003Cimage src=\"img\u002Fchat_en.gif\" \u002F>\n\n### Continuation\n\n\u003Cimage src=\"img\u002Fcontinuation_en.gif\" \u002F>\n\n### Paper (Parallel Inference Demo)\n\n\u003Cimage src=\"img\u002Fpaper_en.gif\" \u002F>\n\n## 📝TODO List\n\n*   [x] Support for `text_completions` and `chat_completions`\n*   [x] Support for sse push\n*   [x] Integrate basic front-end\n*   [x] Parallel inference via `batch serve`\n*   [x] Support for `int8` quantization\n*   [x] Support for `NF4` quantization\n*   [x] Support for `LoRA` model\n*   [x] Support for tuned initial states\n*   [ ] Hot loading and switching of `LoRA` model\n*   [x] Hot loading and switching of tuned initial states\n*   [x] BNF sampling\n\n## 👥Join Us\n\nWe are always looking for people interested in helping us improve the project. If you are interested in any of the following, please join us!\n\n*   💀Writing code\n*   💬Providing feedback\n*   🔆Proposing ideas or needs\n*   🔍Testing new features\n*   ✏Translating documentation\n*   📣Promoting the project\n*   🏅Anything else that would be helpful to us\n\nNo matter your skill level, we welcome you to join us. You can join us in the following ways:\n\n*   Join our Discord channel\n*   Join our QQ group\n*   Submit issues or pull requests on GitHub\n*   Leave feedback on our website\n\nWe can't wait to work with you to make this project better! We hope the project is helpful to you!\n\n\n## Acknowledgement\nThank you to these awesome individuals who are insightful and outstanding for their support and selfless dedication to the project!\n\n\u003C!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->\n\u003C!-- prettier-ignore-start -->\n\u003C!-- markdownlint-disable -->\n\u003Ctable>\n  \u003Ctbody>\n    \u003Ctr>\n      \u003Ctd align=\"center\" valign=\"top\" width=\"14.28%\">\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fcgisky1980\">\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FAi00-X_ai00_server_readme_f77b4f8e7ec4.png\" width=\"100px;\" alt=\"顾真牛\"\u002F>\u003Cbr \u002F>\u003Csub>\u003Cb>顾真牛\u003C\u002Fb>\u003C\u002Fsub>\u003C\u002Fa>\u003Cbr \u002F>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FAi00-X\u002Fai00_server\u002Fcommits?author=cgisky1980\" title=\"Documentation\">📖\u003C\u002Fa> \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FAi00-X\u002Fai00_server\u002Fcommits?author=cgisky1980\" title=\"Code\">💻\u003C\u002Fa> \u003Ca href=\"#content-cgisky1980\" title=\"Content\">🖋\u003C\u002Fa> \u003Ca href=\"#design-cgisky1980\" title=\"Design\">🎨\u003C\u002Fa> \u003Ca href=\"#mentoring-cgisky1980\" title=\"Mentoring\">🧑‍🏫\u003C\u002Fa>\u003C\u002Ftd>\n      \u003Ctd align=\"center\" valign=\"top\" width=\"14.28%\">\u003Ca href=\"http:\u002F\u002Fcryscan.github.io\u002Fprofile\">\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FAi00-X_ai00_server_readme_b751c50ac398.png\" width=\"100px;\" alt=\"研究社交\"\u002F>\u003Cbr \u002F>\u003Csub>\u003Cb>研究社交\u003C\u002Fb>\u003C\u002Fsub>\u003C\u002Fa>\u003Cbr \u002F>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FAi00-X\u002Fai00_server\u002Fcommits?author=cryscan\" title=\"Code\">💻\u003C\u002Fa> \u003Ca href=\"#example-cryscan\" title=\"Examples\">💡\u003C\u002Fa> \u003Ca href=\"#ideas-cryscan\" title=\"Ideas, Planning, & Feedback\">🤔\u003C\u002Fa> \u003Ca href=\"#maintenance-cryscan\" title=\"Maintenance\">🚧\u003C\u002Fa> \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FAi00-X\u002Fai00_server\u002Fpulls?q=is%3Apr+reviewed-by%3Acryscan\" title=\"Reviewed Pull Requests\">👀\u003C\u002Fa> \u003Ca href=\"#platform-cryscan\" title=\"Packaging\u002Fporting to new platform\">📦\u003C\u002Fa>\u003C\u002Ftd>\n      \u003Ctd align=\"center\" valign=\"top\" width=\"14.28%\">\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FjosStorer\">\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FAi00-X_ai00_server_readme_5add8cdaa667.png\" width=\"100px;\" alt=\"josc146\"\u002F>\u003Cbr \u002F>\u003Csub>\u003Cb>josc146\u003C\u002Fb>\u003C\u002Fsub>\u003C\u002Fa>\u003Cbr \u002F>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FAi00-X\u002Fai00_server\u002Fissues?q=author%3AjosStorer\" title=\"Bug reports\">🐛\u003C\u002Fa> \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FAi00-X\u002Fai00_server\u002Fcommits?author=josStorer\" title=\"Code\">💻\u003C\u002Fa> \u003Ca href=\"#ideas-josStorer\" title=\"Ideas, Planning, & Feedback\">🤔\u003C\u002Fa> \u003Ca href=\"#tool-josStorer\" title=\"Tools\">🔧\u003C\u002Fa>\u003C\u002Ftd>\n      \u003Ctd align=\"center\" valign=\"top\" width=\"14.28%\">\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fl15y\">\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FAi00-X_ai00_server_readme_a7772544e884.png\" width=\"100px;\" alt=\"l15y\"\u002F>\u003Cbr \u002F>\u003Csub>\u003Cb>l15y\u003C\u002Fb>\u003C\u002Fsub>\u003C\u002Fa>\u003Cbr \u002F>\u003Ca href=\"#tool-l15y\" title=\"Tools\">🔧\u003C\u002Fa> \u003Ca href=\"#plugin-l15y\" title=\"Plugin\u002Futility libraries\">🔌\u003C\u002Fa> \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FAi00-X\u002Fai00_server\u002Fcommits?author=l15y\" title=\"Code\">💻\u003C\u002Fa>\u003C\u002Ftd>\n      \u003Ctd align=\"center\" valign=\"top\" width=\"14.28%\">\u003Ca href=\"https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Fcahyawirawan\u002F\">\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FAi00-X_ai00_server_readme_5a6eacf72847.png\" width=\"100px;\" alt=\"Cahya Wirawan\"\u002F>\u003Cbr \u002F>\u003Csub>\u003Cb>Cahya Wirawan\u003C\u002Fb>\u003C\u002Fsub>\u003C\u002Fa>\u003Cbr \u002F>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FAi00-X\u002Fai00_server\u002Fissues?q=author%3Acahya-wirawan\" title=\"Bug reports\">🐛\u003C\u002Fa>\u003C\u002Ftd>\n      \u003Ctd align=\"center\" valign=\"top\" width=\"14.28%\">\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fyuunnn-w\">\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FAi00-X_ai00_server_readme_8a66fec9c488.png\" width=\"100px;\" alt=\"yuunnn_w\"\u002F>\u003Cbr \u002F>\u003Csub>\u003Cb>yuunnn_w\u003C\u002Fb>\u003C\u002Fsub>\u003C\u002Fa>\u003Cbr \u002F>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FAi00-X\u002Fai00_server\u002Fcommits?author=yuunnn-w\" title=\"Documentation\">📖\u003C\u002Fa> \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FAi00-X\u002Fai00_server\u002Fcommits?author=yuunnn-w\" title=\"Tests\">⚠️\u003C\u002Fa>\u003C\u002Ftd>\n      \u003Ctd align=\"center\" valign=\"top\" width=\"14.28%\">\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Flongzou\">\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FAi00-X_ai00_server_readme_0692911cc8f7.png\" width=\"100px;\" alt=\"longzou\"\u002F>\u003Cbr \u002F>\u003Csub>\u003Cb>longzou\u003C\u002Fb>\u003C\u002Fsub>\u003C\u002Fa>\u003Cbr \u002F>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FAi00-X\u002Fai00_server\u002Fcommits?author=longzou\" title=\"Code\">💻\u003C\u002Fa> \u003Ca href=\"#security-longzou\" title=\"Security\">🛡️\u003C\u002Fa>\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd align=\"center\" valign=\"top\" width=\"14.28%\">\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fshoumenchougou\">\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FAi00-X_ai00_server_readme_cb472b1ce3bd.png\" width=\"100px;\" alt=\"luoqiqi\"\u002F>\u003Cbr \u002F>\u003Csub>\u003Cb>luoqiqi\u003C\u002Fb>\u003C\u002Fsub>\u003C\u002Fa>\u003Cbr \u002F>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FAi00-X\u002Fai00_server\u002Fcommits?author=shoumenchougou\" title=\"Documentation\">📖\u003C\u002Fa>\u003C\u002Ftd>\n    \u003C\u002Ftr>\n  \u003C\u002Ftbody>\n\u003C\u002Ftable>\n\n\u003C!-- markdownlint-restore -->\n\u003C!-- prettier-ignore-end -->\n\n\u003C!-- ALL-CONTRIBUTORS-LIST:END -->\n\n\n## Stargazers over time\n\n[![Stargazers over time](https:\u002F\u002Fstarchart.cc\u002Fcgisky1980\u002Fai00_rwkv_server.svg)](https:\u002F\u002Fstarchart.cc\u002Fcgisky1980\u002Fai00_rwkv_server)\n","# 💯AI00 RWKV 服务器\n\u003Cp align='center'>\n\u003Cimage src=\"docs\u002Fpublic\u002Flogo.gif\" \u002F>\n    \n\u003C\u002Fp>\n\n\u003Cdiv align=\"center\"> \n    \n![license](https:\u002F\u002Fshields.io\u002Fbadge\u002Flicense-MIT%2FApache--2.0-blue)\n[![Rust 版本](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FRust-1.78.0+-blue)](https:\u002F\u002Freleases.rs\u002Fdocs\u002F1.75.0)\n![欢迎提交 PR](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FPRs-Welcome-brightgreen)     \n\u003C!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->\n[![所有贡献者](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fall_contributors-8-orange.svg?style=flat-square)](#contributors-)\n\u003C!-- ALL-CONTRIBUTORS-BADGE:END -->\n\n[![en](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flang-en-red.svg)](README.md)\n[![zh](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flang-zh-blue.svg)](README.zh.md)\n\n---\n\n\u003Cdiv align=\"left\">\n    \n`AI00 RWKV 服务器` 是一个基于 [`web-rwkv`](https:\u002F\u002Fgithub.com\u002Fcryscan\u002Fweb-rwkv) 推理引擎的、用于 [`RWKV` 语言模型](https:\u002F\u002Fgithub.com\u002FBlinkDL\u002FChatRWKV) 的推理 API 服务器。\n\n它支持 `Vulkan` 并行与并发批处理推理，可在所有支持 `Vulkan` 的 GPU 上运行。无需英伟达显卡！！！AMD 显卡甚至集成显卡也能加速！！！\n\n无需臃肿的 `PyTorch`、`CUDA` 等运行时环境，体积小巧，开箱即用！\n\n兼容 OpenAI 的 ChatGPT API 接口。\n\n100% 开源且可商业使用，采用 MIT 许可证。\n\n如果您正在寻找一个快速、高效、易用的 LLM API 服务器，那么 `AI00 RWKV 服务器` 就是您的最佳选择。它可以用于多种任务，包括聊天机器人、文本生成、翻译和问答等。\n\n立即加入 `AI00 RWKV 服务器` 社区，体验 AI 的魅力吧！\n\n交流 QQ 群：30920262\n\n### 💥特性\n\n*   基于 `RWKV` 模型，性能和准确性高\n*   支持 `Vulkan` 推理加速，无需 `CUDA` 即可享受 GPU 加速！支持 AMD 显卡、集成显卡以及所有支持 `Vulkan` 的 GPU\n*   无需臃肿的 `PyTorch`、`CUDA` 等运行时环境，体积小巧，开箱即用！\n*   兼容 OpenAI 的 ChatGPT API 接口\n\n### ⭕用途\n\n*   聊天机器人\n*   文本生成\n*   翻译\n*   问答\n*   LLM 可以完成的任何其他任务\n\n### 👻其他\n\n*   基于 [web-rwkv](https:\u002F\u002Fgithub.com\u002Fcryscan\u002Fweb-rwkv) 项目\n*   模型下载：[V5](https:\u002F\u002Fhuggingface.co\u002Fcgisky\u002FAI00_RWKV_V5)、[V6](https:\u002F\u002Fhuggingface.co\u002Fcgisky\u002Fai00_rwkv_x060)、[V7](https:\u002F\u002Fhuggingface.co\u002Fcgisky\u002FRWKV-x070-Ai00)\n\n## 安装、编译与使用\n\n### 📦下载预编译的可执行文件\n\n1.  直接从 [Release](https:\u002F\u002Fgithub.com\u002Fcgisky1980\u002Fai00_rwkv_server\u002Freleases) 下载最新版本\n    \n2.  在 [下载模型](#👻other) 后，将模型放置在 `assets\u002Fmodels\u002F` 路径下，例如 `assets\u002Fmodels\u002FRWKV-x060-World-3B-v2-20240228-ctx4096.st`\n    \n3.  可选地修改 [`assets\u002Fconfigs\u002FConfig.toml`](.\u002Fassets\u002Fconfigs\u002FConfig.toml)，以配置模型路径、量化层等参数\n    \n4.  在命令行中运行\n    \n    ```bash\n    $ .\u002Fai00_rwkv_server\n    ```\n    \n5.  打开浏览器，访问 WebUI：http:\u002F\u002Flocalhost:65530（如果启用了 `tls`，则为 https:\u002F\u002Flocalhost:65530）\n\n### 📜（可选）从源码构建\n\n1.  [安装 Rust](https:\u002F\u002Fwww.rust-lang.org\u002F)\n    \n2.  克隆本仓库\n    \n    ```bash\n    $ git clone https:\u002F\u002Fgithub.com\u002Fcgisky1980\u002Fai00_rwkv_server.git\n    $ cd ai00_rwkv_server\n    ```\n    \n3.  在 [下载模型](#👻other) 后，将模型放置在 `assets\u002Fmodels\u002F` 路径下，例如 `assets\u002Fmodels\u002FRWKV-x060-World-3B-v2-20240228-ctx4096.st`\n    \n4.  编译\n    \n    ```bash\n    $ cargo build --release\n    ```\n    \n5.  编译完成后，运行\n    \n    ```bash\n    $ cargo run --release\n    ```\n    \n6.  打开浏览器，访问 WebUI：http:\u002F\u002Flocalhost:65530（如果启用了 `tls`，则为 https:\u002F\u002Flocalhost:65530）\n\n### 📒模型转换\n\n目前仅支持 `.st` 扩展名的 Safetensors 模型。使用 PyTorch 保存的 `.pth` 格式模型需要在使用前进行转换。\n\n1. [下载 `.pth` 模型](https:\u002F\u002Fhuggingface.co\u002FBlinkDL)\n\n2. （推荐）运行 Python 脚本 `convert_safetensors.py`：\n\n    ```bash\n    $ python assets\u002Fscripts\u002Fconvert_safetensors.py --input \u002Fpath\u002Fto\u002Fmodel.pth --output \u002Fpath\u002Fto\u002Fmodel.st\n    ```\n\n    需要：Python，并已安装 `torch` 和 `safetensors`。\n\n3. 如果不想安装 Python，在 [Release](https:\u002F\u002Fgithub.com\u002Fcgisky1980\u002Fai00_rwkv_server\u002Freleases) 中可以找到名为 `converter` 的可执行文件，运行：\n\n    ```bash\n    $ .\u002Fconverter --input \u002Fpath\u002Fto\u002Fmodel.pth --output \u002Fpath\u002Fto\u002Fmodel.st\n    ```\n    \n3. 如果您是从源码构建的，请运行：\n\n    ```bash\n    $ cargo run --release --package converter -- --input \u002Fpath\u002Fto\u002Fmodel.pth --output \u002Fpath\u002Fto\u002Fmodel.st\n    ```\n\n4. 就像上述步骤一样，将 `.st` 格式的模型放入 `assets\u002Fmodels\u002F` 路径，并在 [`assets\u002Fconfigs\u002FConfig.toml`](.\u002Fassets\u002Fconfigs\u002FConfig.toml) 中修改模型路径。\n    \n\n## 📝支持的参数\n\n*   `--config`：配置文件路径（默认：`assets\u002Fconfigs\u002FConfig.toml`）\n*   `--ip`：服务器绑定的 IP 地址\n*   `--port`：运行端口\n\n## 📙当前可用的 API\n\nAPI 服务启动在端口 65530，数据输入和输出格式遵循 OpenAI API 规范。\n请注意，某些 API（如 `chat` 和 `completions`）具有用于高级功能的额外可选字段。有关 API 模式的详细信息，请访问 http:\u002F\u002Flocalhost:65530\u002Fapi-docs。\n\n*   `\u002Fapi\u002Foai\u002Fv1\u002Fmodels`\n*   `\u002Fapi\u002Foai\u002Fmodels`\n*   `\u002Fapi\u002Foai\u002Fv1\u002Fchat\u002Fcompletions`\n*   `\u002Fapi\u002Foai\u002Fchat\u002Fcompletions`\n*   `\u002Fapi\u002Foai\u002Fv1\u002Fcompletions`\n*   `\u002Fapi\u002Foai\u002Fcompletions`\n*   `\u002Fapi\u002Foai\u002Fv1\u002Fembeddings`\n*   `\u002Fapi\u002Foai\u002Fembeddings`\n\n以下是 Python 中调用 Ai00 API 的开箱即用示例：\n\n```python\nimport openai\n\nclass Ai00:\n    def __init__(self, model=\"model\", port=65530, api_key=\"JUSTSECRET_KEY\") :\n        openai.api_base = f\"http:\u002F\u002F127.0.0.1:{port}\u002Fapi\u002Foai\"\n        openai.api_key = api_key\n        self.ctx = []\n        self.params = {\n            \"system_name\": \"System\",\n            \"user_name\": \"User\", \n            \"assistant_name\": \"Assistant\",\n            \"model\": model,\n            \"max_tokens\": 4096,\n            \"top_p\": 0.6,\n            \"temperature\": 1,\n            \"presence_penalty\": 0.3,\n            \"frequency_penalty\": 0.3,\n            \"half_life\": 400,\n            \"stop\": ['\\x00','\\n\\n']\n        }\n        \n    def set_params(self, **kwargs):\n        self.params.update(kwargs)\n        \n    def clear_ctx(self):\n        self.ctx = []\n        \n    def get_ctx(self):\n        return self.ctx\n    \n    def continuation(self, message):\n        response = openai.Completion.create(\n            model=self.params['model'],\n            prompt=message,\n            max_tokens=self.params['max_tokens'],\n            half_life=self.params['half_life'],\n            top_p=self.params['top_p'],\n            temperature=self.params['temperature'],\n            presence_penalty=self.params['presence_penalty'],\n            frequency_penalty=self.params['frequency_penalty'],\n            stop=self.params['stop']\n        )\n        result = response.choices[0].text\n        return result\n    \n    def append_ctx(self, role, content):\n        self.ctx.append({\n            \"role\": role,\n            \"content\": content\n        })\n        \n    def send_message(self, message, role=\"user\"):\n        self.ctx.append({\n            \"role\": role,\n            \"content\": message\n        })\n        result = openai.ChatCompletion.create(\n            model=self.params['model'],\n            messages=self.ctx,\n            names={\n                \"system\": self.params['system_name'],\n                \"user\": self.params['user_name'],\n                \"assistant\": self.params['assistant_name']\n            },\n            max_tokens=self.params['max_tokens'],\n            half_life=self.params['half_life'],\n            top_p=self.params['top_p'],\n            temperature=self.params['temperature'],\n            presence_penalty=self.params['presence_penalty'],\n            frequency_penalty=self.params['frequency_penalty'],\n            stop=self.params['stop']\n        )\n        result = result.choices[0].message['content']\n        self.ctx.append({\n            \"role\": \"assistant\",\n            \"content\": result\n        })\n        return result\n    \nai00 = Ai00()\nai00.set_params(\n    max_tokens = 4096,\n    top_p = 0.55,\n    temperature = 2,\n    presence_penalty = 0.3,\n    frequency_penalty = 0.8,\n    half_life = 400,\n    stop = ['\\x00','\\n\\n']\n)\nprint(ai00.send_message(\"how are you?\"))\nprint(ai00.send_message(\"me too!\"))\nprint(ai00.get_ctx())\nai00.clear_ctx()\nprint(ai00.continuation(\"i like\"))\n```\n\n## BNF 采样\n\n自 v0.5 版本起，Ai00 引入了一项独特的功能——BNF 采样。BNF 通过限制模型可选择的下一个标记，强制模型按照指定的格式（例如包含特定字段的 JSON 或 Markdown）进行输出。\n\n以下是一个包含“name”、“age”和“job”字段的 JSON 的 BNF 示例：\n\n```\nstart ::= json_object;\njson_object ::= \"{\\n\" object_members \"\\n}\";\nobject_members ::= json_member | json_member \",\\n\" object_members;\njson_member ::= \"\\t\" json_key \": \" json_value;\njson_key ::= '\"' \"name\" '\"' | '\"' \"age\" '\"' | '\"' \"job\" '\"';\njson_value ::= json_string | json_number;\njson_string ::= '\"'content'\"';\ncontent ::= #\"\\\\w*\";\njson_number ::= positive_digit digits|'0';\ndigits ::= digit|digit digits;\ndigit ::= '0'|positive_digit;\npositive_digit::=\"1\"|\"2\"|\"3\"|\"4\"|\"5\"|\"6\"|\"7\"|\"8\"|\"9\";\n```\n\n\u003Cimage src=\"img\u002Fbnf.png\" \u002F>\n\n## 📙WebUI 截图\n\n### 聊天\n\n\u003Cimage src=\"img\u002Fchat_en.gif\" \u002F>\n\n### 续写\n\n\u003Cimage src=\"img\u002Fcontinuation_en.gif\" \u002F>\n\n### 论文（并行推理演示）\n\n\u003Cimage src=\"img\u002Fpaper_en.gif\" \u002F>\n\n## 📝待办事项清单\n\n*   [x] 支持 `text_completions` 和 `chat_completions`\n*   [x] 支持 SSE 推送\n*   [x] 集成基础前端\n*   [x] 通过 `batch serve` 实现并行推理\n*   [x] 支持 `int8` 量化\n*   [x] 支持 `NF4` 量化\n*   [x] 支持 `LoRA` 模型\n*   [x] 支持微调的初始状态\n*   [ ] 热加载和切换 `LoRA` 模型\n*   [x] 热加载和切换微调的初始状态\n*   [x] BNF 采样\n\n## 👥加入我们\n\n我们始终欢迎对改进项目感兴趣的人士。如果您对以下任何一项感兴趣，请加入我们！\n\n*   💀编写代码\n*   💬提供反馈\n*   🔆提出想法或需求\n*   🔍测试新功能\n*   ✏翻译文档\n*   📣推广项目\n*   🏅任何其他对我们有帮助的事情\n\n无论您的技能水平如何，我们都欢迎您加入。您可以通过以下方式加入我们：\n\n*   加入我们的 Discord 频道\n*   加入我们的 QQ 群\n*   在 GitHub 上提交问题或拉取请求\n*   在我们的网站上留下反馈\n\n我们迫不及待地想与您合作，共同让这个项目变得更好！希望该项目能对您有所帮助！\n\n## 致谢\n感谢这些富有洞察力且杰出的个人，他们对本项目给予了支持，并无私奉献！\n\n\u003C!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->\n\u003C!-- prettier-ignore-start -->\n\u003C!-- markdownlint-disable -->\n\u003Ctable>\n  \u003Ctbody>\n    \u003Ctr>\n      \u003Ctd align=\"center\" valign=\"top\" width=\"14.28%\">\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fcgisky1980\">\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FAi00-X_ai00_server_readme_f77b4f8e7ec4.png\" width=\"100px;\" alt=\"顾真牛\"\u002F>\u003Cbr \u002F>\u003Csub>\u003Cb>顾真牛\u003C\u002Fb>\u003C\u002Fsub>\u003C\u002Fa>\u003Cbr \u002F>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FAi00-X\u002Fai00_server\u002Fcommits?author=cgisky1980\" title=\"文档\">📖\u003C\u002Fa> \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FAi00-X\u002Fai00_server\u002Fcommits?author=cgisky1980\" title=\"代码\">💻\u003C\u002Fa> \u003Ca href=\"#content-cgisky1980\" title=\"内容\">🖋\u003C\u002Fa> \u003Ca href=\"#design-cgisky1980\" title=\"设计\">🎨\u003C\u002Fa> \u003Ca href=\"#mentoring-cgisky1980\" title=\"指导\">🧑‍🏫\u003C\u002Fa>\u003C\u002Ftd>\n      \u003Ctd align=\"center\" valign=\"top\" width=\"14.28%\">\u003Ca href=\"http:\u002F\u002Fcryscan.github.io\u002Fprofile\">\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FAi00-X_ai00_server_readme_b751c50ac398.png\" width=\"100px;\" alt=\"研究社交\"\u002F>\u003Cbr \u002F>\u003Csub>\u003Cb>研究社交\u003C\u002Fb>\u003C\u002Fsub>\u003C\u002Fa>\u003Cbr \u002F>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FAi00-X\u002Fai00_server\u002Fcommits?author=cryscan\" title=\"代码\">💻\u003C\u002Fa> \u003Ca href=\"#example-cryscan\" title=\"示例\">💡\u003C\u002Fa> \u003Ca href=\"#ideas-cryscan\" title=\"想法、规划与反馈\">🤔\u003C\u002Fa> \u003Ca href=\"#maintenance-cryscan\" title=\"维护\">🚧\u003C\u002Fa> \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FAi00-X\u002Fai00_server\u002Fpulls?q=is%3Apr+reviewed-by%3Acryscan\" title=\"已评审的拉取请求\">👀\u003C\u002Fa> \u003Ca href=\"#platform-cryscan\" title=\"打包\u002F移植到新平台\">📦\u003C\u002Fa>\u003C\u002Ftd>\n      \u003Ctd align=\"center\" valign=\"top\" width=\"14.28%\">\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FjosStorer\">\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FAi00-X_ai00_server_readme_5add8cdaa667.png\" width=\"100px;\" alt=\"josc146\"\u002F>\u003Cbr \u002F>\u003Csub>\u003Cb>josc146\u003C\u002Fb>\u003C\u002Fsub>\u003C\u002Fa>\u003Cbr \u002F>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FAi00-X\u002Fai00_server\u002Fissues?q=author%3AjosStorer\" title=\"错误报告\">🐛\u003C\u002Fa> \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FAi00-X\u002Fai00_server\u002Fcommits?author=josStorer\" title=\"代码\">💻\u003C\u002Fa> \u003Ca href=\"#ideas-josStorer\" title=\"想法、规划与反馈\">🤔\u003C\u002Fa> \u003Ca href=\"#tool-josStorer\" title=\"工具\">🔧\u003C\u002Fa>\u003C\u002Ftd>\n      \u003Ctd align=\"center\" valign=\"top\" width=\"14.28%\">\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fl15y\">\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FAi00-X_ai00_server_readme_a7772544e884.png\" width=\"100px;\" alt=\"l15y\"\u002F>\u003Cbr \u002F>\u003Csub>\u003Cb>l15y\u003C\u002Fb>\u003C\u002Fsub>\u003C\u002Fa>\u003Cbr \u002F>\u003Ca href=\"#tool-l15y\" title=\"工具\">🔧\u003C\u002Fa> \u003Ca href=\"#plugin-l15y\" title=\"插件\u002F实用库\">🔌\u003C\u002Fa> \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FAi00-X\u002Fai00_server\u002Fcommits?author=l15y\" title=\"代码\">💻\u003C\u002Fa>\u003C\u002Ftd>\n      \u003Ctd align=\"center\" valign=\"top\" width=\"14.28%\">\u003Ca href=\"https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Fcahyawirawan\u002F\">\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FAi00-X_ai00_server_readme_5a6eacf72847.png\" width=\"100px;\" alt=\"Cahya Wirawan\"\u002F>\u003Cbr \u002F>\u003Csub>\u003Cb>Cahya Wirawan\u003C\u002Fb>\u003C\u002Fsub>\u003C\u002Fa>\u003Cbr \u002F>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FAi00-X\u002Fai00_server\u002Fissues?q=author%3Acahya-wirawan\" title=\"错误报告\">🐛\u003C\u002Fa>\u003C\u002Ftd>\n      \u003Ctd align=\"center\" valign=\"top\" width=\"14.28%\">\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fyuunnn-w\">\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FAi00-X_ai00_server_readme_8a66fec9c488.png\" width=\"100px;\" alt=\"yuunnn_w\"\u002F>\u003Cbr \u002F>\u003Csub>\u003Cb>yuunnn_w\u003C\u002Fb>\u003C\u002Fsub>\u003C\u002Fa>\u003Cbr \u002F>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FAi00-X\u002Fai00_server\u002Fcommits?author=yuunnn-w\" title=\"文档\">📖\u003C\u002Fa> \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FAi00-X\u002Fai00_server\u002Fcommits?author=yuunnn-w\" title=\"测试\">⚠️\u003C\u002Fa>\u003C\u002Ftd>\n      \u003Ctd align=\"center\" valign=\"top\" width=\"14.28%\">\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Flongzou\">\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FAi00-X_ai00_server_readme_0692911cc8f7.png\" width=\"100px;\" alt=\"longzou\"\u002F>\u003Cbr \u002F>\u003Csub>\u003Cb>longzou\u003C\u002Fb>\u003C\u002Fsub>\u003C\u002Fa>\u003Cbr \u002F>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FAi00-X\u002Fai00_server\u002Fcommits?author=longzou\" title=\"代码\">💻\u003C\u002Fa> \u003Ca href=\"#security-longzou\" title=\"安全\">🛡️\u003C\u002Fa>\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd align=\"center\" valign=\"top\" width=\"14.28%\">\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fshoumenchougou\">\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FAi00-X_ai00_server_readme_cb472b1ce3bd.png\" width=\"100px;\" alt=\"luoqiqi\"\u002F>\u003Cbr \u002F>\u003Csub>\u003Cb>luoqiqi\u003C\u002Fb>\u003C\u002Fsub>\u003C\u002Fa>\u003Cbr \u002F>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FAi00-X\u002Fai00_server\u002Fcommits?author=shoumenchougou\" title=\"文档\">📖\u003C\u002Fa>\u003C\u002Ftd>\n    \u003C\u002Ftr>\n  \u003C\u002Ftbody>\n\u003C\u002Ftable>\n\n\u003C!-- markdownlint-restore -->\n\u003C!-- prettier-ignore-end -->\n\n\u003C!-- ALL-CONTRIBUTORS-LIST:END -->\n\n\n## 星标数量随时间变化\n\n[![星标数量随时间变化](https:\u002F\u002Fstarchart.cc\u002Fcgisky1980\u002Fai00_rwkv_server.svg)](https:\u002F\u002Fstarchart.cc\u002Fcgisky1980\u002Fai00_rwkv_server)","# AI00 RWKV Server 快速上手指南\n\nAI00 RWKV Server 是一个基于 `web-rwkv` 推理引擎的高性能 API 服务器，专为 `RWKV` 语言模型设计。它支持 Vulkan 加速，无需 CUDA 或 PyTorch 环境，可在 AMD 显卡、核显及所有支持 Vulkan 的 GPU 上运行，并完美兼容 OpenAI ChatGPT API 接口。\n\n## 环境准备\n\n*   **操作系统**：Windows \u002F Linux \u002F macOS\n*   **硬件要求**：支持 **Vulkan** 的 GPU（包括 NVIDIA、AMD 显卡及集成显卡）。无需专用 N 卡。\n*   **前置依赖**：\n    *   **方案 A（推荐）**：无需安装任何开发环境，直接下载预编译包即可运行。\n    *   **方案 B（源码编译）**：需安装 [Rust](https:\u002F\u002Fwww.rust-lang.org\u002F) (版本 1.78.0+)。\n    *   **模型转换（可选）**：若需将 `.pth` 模型转为 `.st` 格式，需安装 Python 及 `torch`, `safetensors` 库，或直接使用发布的 `converter` 工具。\n\n## 安装步骤\n\n### 方法一：下载预编译包（推荐）\n\n1.  **下载程序**\n    访问 [Release 页面](https:\u002F\u002Fgithub.com\u002Fcgisky1980\u002Fai00_rwkv_server\u002Freleases) 下载最新版本的压缩包并解压。\n\n2.  **准备模型**\n    *   下载 Safetensors 格式 (`.st`) 的 RWKV 模型（推荐从 HuggingFace 下载，国内用户可使用镜像站）：\n        *   [RWKV V5 模型](https:\u002F\u002Fhuggingface.co\u002Fcgisky\u002FAI00_RWKV_V5)\n        *   [RWKV V6 模型](https:\u002F\u002Fhuggingface.co\u002Fcgisky\u002Fai00_rwkv_x060)\n        *   [RWKV V7 模型](https:\u002F\u002Fhuggingface.co\u002Fcgisky\u002FRWKV-x070-Ai00)\n    *   将下载的模型文件放入项目目录下的 `assets\u002Fmodels\u002F` 文件夹中。\n    *   *示例路径*：`assets\u002Fmodels\u002FRWKV-x060-World-3B-v2-20240228-ctx4096.st`\n\n3.  **配置模型（可选）**\n    编辑 `assets\u002Fconfigs\u002FConfig.toml` 文件，修改 `model` 字段为你放置的模型文件名。\n\n4.  **启动服务**\n    在终端进入程序目录，运行：\n    ```bash\n    .\u002Fai00_rwkv_server\n    ```\n    *(Windows 用户直接双击 `ai00_rwkv_server.exe`)*\n\n### 方法二：源码编译\n\n1.  **克隆仓库**\n    ```bash\n    git clone https:\u002F\u002Fgithub.com\u002Fcgisky1980\u002Fai00_rwkv_server.git\n    cd ai00_rwkv_server\n    ```\n\n2.  **准备模型**\n    同“方法一”，将 `.st` 模型文件放入 `assets\u002Fmodels\u002F` 目录。\n\n3.  **编译并运行**\n    ```bash\n    cargo build --release\n    cargo run --release\n    ```\n\n### 附：模型格式转换\n\n如果你只有 `.pth` 格式的模型，需要转换为 `.st` 格式：\n\n*   **使用 Python 脚本**：\n    ```bash\n    python assets\u002Fscripts\u002Fconvert_safetensors.py --input \u002Fpath\u002Fto\u002Fmodel.pth --output \u002Fpath\u002Fto\u002Fmodel.st\n    ```\n*   **或使用内置转换器（无需 Python）**：\n    在 Release 页面下载 `converter` 可执行文件，或在源码模式下运行：\n    ```bash\n    cargo run --release --package converter -- --input \u002Fpath\u002Fto\u002Fmodel.pth --output \u002Fpath\u002Fto\u002Fmodel.st\n    ```\n\n## 基本使用\n\n启动成功后，服务默认监听在 `65530` 端口。\n\n### 1. 使用 WebUI\n打开浏览器访问：\n*   HTTP: http:\u002F\u002Flocalhost:65530\n*   HTTPS (若开启 TLS): https:\u002F\u002Flocalhost:65530\n\n界面支持聊天 (Chat)、文本续写 (Continuation) 等功能。\n\n### 2. 调用 API (Python 示例)\n该服务器完全兼容 OpenAI API 格式。以下是一个最简单的调用示例：\n\n```python\nimport openai\n\n# 配置 API 地址指向本地服务\nopenai.api_base = \"http:\u002F\u002F127.0.0.1:65530\u002Fapi\u002Foai\"\nopenai.api_key = \"JUSTSECRET_KEY\"  # 密钥可随意填写，服务端默认不校验\n\nresponse = openai.ChatCompletion.create(\n    model=\"model\",  # 模型名称，对应配置文件中的设置\n    messages=[\n        {\"role\": \"system\", \"content\": \"You are a helpful assistant.\"},\n        {\"role\": \"user\", \"content\": \"你好，请介绍一下你自己。\"}\n    ],\n    max_tokens=512,\n    temperature=0.7\n)\n\nprint(response.choices[0].message['content'])\n```\n\n### 3. 高级参数说明\n除了标准的 OpenAI 参数外，AI00 还支持特有参数（如 `half_life` 控制上下文衰减），可通过 `set_params` 或直接传入 API 请求体中使用。详细 API 文档可访问：http:\u002F\u002Flocalhost:65530\u002Fapi-docs","某初创团队希望在老旧的办公电脑上部署一套内部知识库问答系统，但团队成员仅配备 AMD 显卡和集成显卡，缺乏昂贵的 NVIDIA 专业卡。\n\n### 没有 ai00_server 时\n- **硬件门槛高**：主流大模型推理强依赖 CUDA 生态，导致团队手中的 AMD 显卡和核显完全无法加速，必须额外采购昂贵的 NVIDIA 显卡。\n- **环境部署繁琐**：需要安装庞大的 PyTorch、配置复杂的 CUDA 版本及驱动，经常因版本冲突导致环境搭建失败，耗时数天。\n- **资源占用过大**：传统运行时内存占用极高，在配置有限的旧电脑上运行缓慢甚至频繁崩溃，无法支撑并发请求。\n- **开发适配成本高**：若要接入现有的 ChatGPT 兼容应用，需自行编写额外的适配层代码，增加了开发维护负担。\n\n### 使用 ai00_server 后\n- **硬件全面解放**：基于 Vulkan 架构，直接利用现有的 AMD 显卡或集成显卡实现并行加速，无需任何 NVIDIA 硬件即可流畅运行。\n- **开箱即用**：无需安装 PyTorch 或 CUDA，下载编译好的可执行文件并放入模型即可启动，将部署时间从几天缩短至几分钟。\n- **轻量高效**：紧凑的 Rust 运行时大幅降低内存占用，在低配设备上也能稳定支持多用户并发问答，响应速度显著提升。\n- **无缝集成**：原生兼容 OpenAI API 接口，现有应用无需修改任何代码即可直接对接，立即实现聊天机器人和知识库检索功能。\n\nai00_server 通过打破对特定硬件和沉重环境的依赖，让低成本设备也能轻松承载高性能的本地大模型服务。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FAi00-X_ai00_server_2c0e3bfe.png","Ai00-X","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002FAi00-X_871f851a.png","",null,"https:\u002F\u002Fgithub.com\u002FAi00-X",[79,83],{"name":80,"color":81,"percentage":82},"Rust","#dea584",91.6,{"name":84,"color":85,"percentage":86},"Python","#3572A5",8.4,609,73,"2026-04-15T10:30:56","MIT","Windows, Linux, macOS","非必需 NVIDIA；支持所有支持 Vulkan 的 GPU（包括 AMD 显卡和集成显卡）；无需 CUDA","未说明",{"notes":95,"python":96,"dependencies":97},"核心服务基于 Rust 编译为独立可执行文件，无需安装 PyTorch 或 CUDA 运行时。仅需在运行模型转换脚本（将 .pth 转为 .st 格式）时才需要 Python 环境及 torch、safetensors 库。模型文件需单独下载并放置于 assets\u002Fmodels\u002F 目录。","可选（仅用于模型转换脚本）",[98,99,100],"Rust 1.78.0+","torch (可选，仅用于模型转换)","safetensors (可选，仅用于模型转换)",[13,14,15,35,52],[103,104,105,106,107,108,109,110,111,112],"ai","chatgpt","chatgpt-api","llm","openai","openai-api","rwkv","aiagents","embed","rag","2026-03-27T02:49:30.150509","2026-04-16T08:12:33.703745",[116,121,126,131,136,141,146],{"id":117,"question_zh":118,"answer_zh":119,"source_url":120},35625,"运行模型时出现 404 Not Found 错误或无法启动，可能是什么原因？","这通常是因为显存不足导致模型加载失败。例如，RTX 2060 等显存较小的显卡暂时无法运行 7B 参数量的模型。建议尝试使用更小的模型（如 3B），或者等待量化工作完成后再尝试大模型。此外，请确保命令行和 GPU 信息正确，核显用户需确认 Vulkan 支持是否正常。","https:\u002F\u002Fgithub.com\u002FAi00-X\u002Fai00_server\u002Fissues\u002F12",{"id":122,"question_zh":123,"answer_zh":124,"source_url":125},35626,"生成的文本在约 1000 tokens 后开始变得混乱或无意义，如何解决？","这是由于缺乏 Alpha Decay（惩罚衰减）机制导致的。当生成大量 tokens 后，高频 token 的惩罚值过高会被忽略，从而导致生成质量下降。解决方案是在 Sampler 配置中添加 `penalty_decay` 参数（默认值可设为 0.95），或者降低 `frequency_penalty` 以推迟问题出现的时间。该问题已在后续版本中通过更新 `web-rwkv` 修复。","https:\u002F\u002Fgithub.com\u002FAi00-X\u002Fai00_server\u002Fissues\u002F34",{"id":127,"question_zh":128,"answer_zh":129,"source_url":130},35627,"如何增加单次推理的 Token 数量限制（例如达到 100K-1M）？","后端单个请求的默认限制曾是 4k，但该限制已被移除。现在您可以在 GUI 中设置更高的 Num Tokens，或者通过修改 YAML 配置文件进行调整。如果您需要自行修改 UI 代码，请注意源码不在压缩的 JS 文件中，需查看未混淆的源代码。","https:\u002F\u002Fgithub.com\u002FAi00-X\u002Fai00_server\u002Fissues\u002F134",{"id":132,"question_zh":133,"answer_zh":134,"source_url":135},35628,"在 Ubuntu 24.04 上启动时报错 'load runtime failed: No such file or directory' 怎么办？","这是一个已知的兼容性问题，尽管日志显示 'No such file or directory' 或 'No such device' 错误，但实际上服务可能已经正常启动并可以使用。您可以尝试访问 WebUI (http:\u002F\u002Flocalhost:65530) 确认是否能正常加载模型和运行。如果 WebUI 能识别设备（如 Intel UHD Graphics 或 AMD Radeon）并正常运行，则可以忽略该报错继续使用该版本。","https:\u002F\u002Fgithub.com\u002FAi00-X\u002Fai00_server\u002Fissues\u002F143",{"id":137,"question_zh":138,"answer_zh":139,"source_url":140},35629,"升级到新版本（如 0.3.24）后，RWKV V4 模型输出乱码，而 V5\u002FV6 正常，如何解决？","这是 `web-rwkv` v0.6.34 版本引入的加载问题，导致 RWKV V4 模型损坏。维护者已在最新的 `web-rwkv` 主分支中修复了此问题，并将同步到 Ai00 服务器。临时解决方案是改用 RWKV V5 或 V6 版本的模型，直到官方发布包含修复的新版本。","https:\u002F\u002Fgithub.com\u002FAi00-X\u002Fai00_server\u002Fissues\u002F93",{"id":142,"question_zh":143,"answer_zh":144,"source_url":145},35630,"如何通过 API 动态加载模型以及配置量化参数？","可以向 `\u002Fload` 接口发送 POST 请求来加载模型。请求体需包含以下字段：`path` (模型路径), `quant` (需要量化的层列表), `token_chunk_size` (并行处理的最大 token 数), `head_chunk_size` (头矩阵分割的块大小), `max_runtime_batch` (最大活跃批次数), `max_batch` (GPU 缓存的状态数), 以及 `embed_layer` (作为嵌入输出的反向层数)。此外，所有 API 路径现已统一添加 `\u002Fapi\u002F` 前缀以避免冲突。","https:\u002F\u002Fgithub.com\u002FAi00-X\u002Fai00_server\u002Fissues\u002F40",{"id":147,"question_zh":148,"answer_zh":149,"source_url":145},35631,"如何在推理过程中切换聊天窗口或会话？","在旧版本中，推理未完成时无法切换聊天窗口，用户只能打开多个标签页并行测试。新版本已通过后端 Batch Inference 支持和前端改进解决了此问题，允许在不中断当前推理的情况下管理多个会话。请确保使用最新版本的服务器和前端代码以获得此功能。",[151,156,161,166,171,176,181,186,191,196,201,205,209,213,218,223,228,233,238,242],{"id":152,"version":153,"summary_zh":154,"released_at":155},280853,"v0.6.2","## 变更内容\n* 由 @cryscan 在 https:\u002F\u002Fgithub.com\u002FAi00-X\u002Fai00_server\u002Fpull\u002F164 中将 `web-rwkv` 更新至 v0.10.17\n\n\n**完整变更日志**: https:\u002F\u002Fgithub.com\u002FAi00-X\u002Fai00_server\u002Fcompare\u002Fv0.6.1...v0.6.2","2025-10-20T16:28:38",{"id":157,"version":158,"summary_zh":159,"released_at":160},280854,"v0.6.1","## 变更内容\n* 文档：更新“LoRA微调教程”链接，由 @dingusxp 在 https:\u002F\u002Fgithub.com\u002FAi00-X\u002Fai00_server\u002Fpull\u002F161 中完成\n* 文档：更新“state tuning”官方教程链接，由 @dingusxp 在 https:\u002F\u002Fgithub.com\u002FAi00-X\u002Fai00_server\u002Fpull\u002F162 中完成\n* 更新依赖项并将版本号提升至 v0.6.1，由 @cryscan 在 https:\u002F\u002Fgithub.com\u002FAi00-X\u002Fai00_server\u002Fpull\u002F163 中完成\n\n## 新贡献者\n* @dingusxp 在 https:\u002F\u002Fgithub.com\u002FAi00-X\u002Fai00_server\u002Fpull\u002F161 中完成了首次贡献\n\n**完整变更日志**：https:\u002F\u002Fgithub.com\u002FAi00-X\u002Fai00_server\u002Fcompare\u002Fv0.6.0...v0.6.1","2025-09-14T12:03:56",{"id":162,"version":163,"summary_zh":164,"released_at":165},280855,"v0.6.0","## 变更内容\n* 运行时重构，由 @cryscan 在 https:\u002F\u002Fgithub.com\u002FAi00-X\u002Fai00_server\u002Fpull\u002F156 中完成\n* 聊天模板，由 @cryscan 在 https:\u002F\u002Fgithub.com\u002FAi00-X\u002Fai00_server\u002Fpull\u002F157 中完成\n* 输入状态管理，由 @cryscan 在 https:\u002F\u002Fgithub.com\u002FAi00-X\u002Fai00_server\u002Fpull\u002F158 中完成\n\n\n**完整变更日志**: https:\u002F\u002Fgithub.com\u002FAi00-X\u002Fai00_server\u002Fcompare\u002Fv0.5.14...v0.6.0","2025-03-06T10:47:25",{"id":167,"version":168,"summary_zh":169,"released_at":170},280856,"v0.5.14","## 变更内容\n* 添加校准选择功能。由 @cryscan 在 https:\u002F\u002Fgithub.com\u002FAi00-X\u002Fai00_server\u002Fpull\u002F154 中实现。\n\n\n**完整变更日志**: https:\u002F\u002Fgithub.com\u002FAi00-X\u002Fai00_server\u002Fcompare\u002Fv0.5.13...v0.5.14","2025-02-14T17:11:15",{"id":172,"version":173,"summary_zh":174,"released_at":175},280857,"v0.5.13","## 变更内容\n* 当生成的令牌无意义时，优雅地停止。由 @cryscan 在 https:\u002F\u002Fgithub.com\u002FAi00-X\u002Fai00_server\u002Fpull\u002F153 中提出\n\n\n**完整变更日志**: https:\u002F\u002Fgithub.com\u002FAi00-X\u002Fai00_server\u002Fcompare\u002Fv0.5.12...v0.5.13","2025-02-09T18:31:21",{"id":177,"version":178,"summary_zh":179,"released_at":180},280858,"v0.5.12","## 变更内容\n* 由 @cgisky1980 在 https:\u002F\u002Fgithub.com\u002FAi00-X\u002Fai00_server\u002Fpull\u002F151 中提交的 json2kbnf\n\n\n**完整变更日志**: https:\u002F\u002Fgithub.com\u002FAi00-X\u002Fai00_server\u002Fcompare\u002Fv0.5.11...v0.5.12","2025-01-10T03:19:41",{"id":182,"version":183,"summary_zh":184,"released_at":185},280859,"v0.5.11","## 变更内容\n* 由 @emmanuel-ferdman 在 https:\u002F\u002Fgithub.com\u002FAi00-X\u002Fai00_server\u002Fpull\u002F147 中更新了 `Config.toml` 参考文档\n* 由 @shoumenchougou 在 https:\u002F\u002Fgithub.com\u002FAi00-X\u002Fai00_server\u002Fpull\u002F148 中更新了 Ai00 文档\n* 文档：由 @allcontributors 在 https:\u002F\u002Fgithub.com\u002FAi00-X\u002Fai00_server\u002Fpull\u002F149 中将 shoumenchougou 添加为文档贡献者\n* 支持 v7.，由 @cryscan 在 https:\u002F\u002Fgithub.com\u002FAi00-X\u002Fai00_server\u002Fpull\u002F150 中实现\n\n## 新贡献者\n* @emmanuel-ferdman 在 https:\u002F\u002Fgithub.com\u002FAi00-X\u002Fai00_server\u002Fpull\u002F147 中完成了首次贡献\n\n**完整变更日志**：https:\u002F\u002Fgithub.com\u002FAi00-X\u002Fai00_server\u002Fcompare\u002Fv0.5.9...v0.5.11","2024-12-15T11:06:09",{"id":187,"version":188,"summary_zh":189,"released_at":190},280860,"v0.5.9","## 变更内容\n* 由 @shiroko98 在 https:\u002F\u002Fgithub.com\u002FAi00-X\u002Fai00_server\u002Fpull\u002F145 中更新了工具角色\n* 由 @cryscan 在 https:\u002F\u002Fgithub.com\u002FAi00-X\u002Fai00_server\u002Fpull\u002F146 中更新了依赖并添加了图标\n\n\n**完整变更日志**: https:\u002F\u002Fgithub.com\u002FAi00-X\u002Fai00_server\u002Fcompare\u002Fv0.5.8...v0.5.9","2024-11-09T17:19:07",{"id":192,"version":193,"summary_zh":194,"released_at":195},280861,"v0.5.8","## 变更内容\n* 新增：macOS arm64 支持，由 @zrll12 在 https:\u002F\u002Fgithub.com\u002FAi00-X\u002Fai00_server\u002Fpull\u002F142 中实现。\n* 启动时加载模型失败时进行柔性降级处理，由 @cryscan 在 https:\u002F\u002Fgithub.com\u002FAi00-X\u002Fai00_server\u002Fpull\u002F144 中实现。\n\n## 新贡献者\n* @zrll12 在 https:\u002F\u002Fgithub.com\u002FAi00-X\u002Fai00_server\u002Fpull\u002F142 中完成了首次贡献。\n\n**完整变更日志**：https:\u002F\u002Fgithub.com\u002FAi00-X\u002Fai00_server\u002Fcompare\u002Fv0.5.7...v0.5.8","2024-09-10T13:02:17",{"id":197,"version":198,"summary_zh":199,"released_at":200},280862,"v0.5.7","## 变更内容\n* 更新依赖项。由 @cryscan 在 https:\u002F\u002Fgithub.com\u002FAi00-X\u002Fai00_server\u002Fpull\u002F140 中完成。\n* 在 Windows 上动态链接 ONNX Runtime。由 @cryscan 在 https:\u002F\u002Fgithub.com\u002FAi00-X\u002Fai00_server\u002Fpull\u002F141 中完成。\n\n\n**完整变更日志**: https:\u002F\u002Fgithub.com\u002FAi00-X\u002Fai00_server\u002Fcompare\u002Fv0.5.6...v0.5.7","2024-08-31T12:11:50",{"id":202,"version":203,"summary_zh":76,"released_at":204},280863,"v0.5.6","2024-08-17T14:44:44",{"id":206,"version":207,"summary_zh":76,"released_at":208},280864,"v0.5.5","2024-08-11T12:48:27",{"id":210,"version":211,"summary_zh":76,"released_at":212},280865,"v0.5.4","2024-07-27T11:49:58",{"id":214,"version":215,"summary_zh":216,"released_at":217},280866,"v0.5.3","## What's Changed\r\n* Switch to Koishi's BNF (KBNF) implementation by @cryscan in https:\u002F\u002Fgithub.com\u002FAi00-X\u002Fai00_server\u002Fpull\u002F132\r\n* Fix streaming end with `delta: {}`. by @cryscan in https:\u002F\u002Fgithub.com\u002FAi00-X\u002Fai00_server\u002Fpull\u002F133\r\n\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002FAi00-X\u002Fai00_server\u002Fcompare\u002Fv0.5.2...v0.5.3","2024-06-21T17:23:26",{"id":219,"version":220,"summary_zh":221,"released_at":222},280867,"v0.5.2","## What's Changed\r\n* `Choose` API by @cryscan in https:\u002F\u002Fgithub.com\u002FAi00-X\u002Fai00_server\u002Fpull\u002F126\r\n* OAI APIs support states. by @cryscan in https:\u002F\u002Fgithub.com\u002FAi00-X\u002Fai00_server\u002Fpull\u002F127\r\n* Rework cache and inference loop such that it also includes outputs. by @cryscan in https:\u002F\u002Fgithub.com\u002FAi00-X\u002Fai00_server\u002Fpull\u002F128\r\n* Api-doc-improvement by @cryscan in https:\u002F\u002Fgithub.com\u002FAi00-X\u002Fai00_server\u002Fpull\u002F129\r\n* Implement speculative caching. by @cryscan in https:\u002F\u002Fgithub.com\u002FAi00-X\u002Fai00_server\u002Fpull\u002F130\r\n* api 区分为 admin 和 api by @cgisky1980 in https:\u002F\u002Fgithub.com\u002FAi00-X\u002Fai00_server\u002Fpull\u002F131\r\n\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002FAi00-X\u002Fai00_server\u002Fcompare\u002Fv0.5.1...v0.5.2","2024-06-12T18:00:28",{"id":224,"version":225,"summary_zh":226,"released_at":227},280868,"v0.5.1","## ❣What's Changed⁉\r\n\r\n✅ Support for new sampler :  Typical !❗\r\n\r\n---\r\n* Sampling refactor by @cryscan in https:\u002F\u002Fgithub.com\u002FAi00-X\u002Fai00_server\u002Fpull\u002F119\r\n* Bump vite from 5.1.6 to 5.2.11 by @dependabot in https:\u002F\u002Fgithub.com\u002FAi00-X\u002Fai00_server\u002Fpull\u002F121\r\n* fix doc typo by @shoumenchougou in https:\u002F\u002Fgithub.com\u002FAi00-X\u002Fai00_server\u002Fpull\u002F123\r\n* UI & docs by @cgisky1980 in https:\u002F\u002Fgithub.com\u002FAi00-X\u002Fai00_server\u002Fpull\u002F124\r\n* Docs by @cryscan in https:\u002F\u002Fgithub.com\u002FAi00-X\u002Fai00_server\u002Fpull\u002F125\r\n\r\n## New Contributors\r\n* @shoumenchougou made their first contribution in https:\u002F\u002Fgithub.com\u002FAi00-X\u002Fai00_server\u002Fpull\u002F122\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002FAi00-X\u002Fai00_server\u002Fcompare\u002Fv0.5.0...v0.5.1","2024-05-24T16:09:48",{"id":229,"version":230,"summary_zh":231,"released_at":232},280869,"v0.5.0","## What's Changed\r\n* Split the project into core and server. by @cryscan in https:\u002F\u002Fgithub.com\u002FAi00-X\u002Fai00_server\u002Fpull\u002F117\r\n* Move `converter` into a package. by @cryscan in https:\u002F\u002Fgithub.com\u002FAi00-X\u002Fai00_server\u002Fpull\u002F118\r\n\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002FAi00-X\u002Fai00_server\u002Fcompare\u002Fv0.4.9...v0.5.0","2024-05-21T16:23:54",{"id":234,"version":235,"summary_zh":236,"released_at":237},280870,"v0.4.9","## 🙄What's Changed ⁉\r\n1. Dynamically load initial state and LoRA in WebUI.\r\n2. BNF support in WebUI \"Writing\" section (scroll down the left penal).\r\n3. Export static quantization models as prefab format in the WebUI.\r\n\r\n### What is BNF?\r\nBNF forces the model to output in your desired format (e.g., JSON, markdown with specified fields).\r\n\r\n## 📢Ai00 Naming Convention for Models:✨🔆\r\nAi00 now recognizes different types of model files using the convention present here.\r\n\r\n### 1. ✅File Extensions\r\n - Base models: `.st`\r\n - Initial states:` .state`\r\n - LoRA: `.lora`\r\n\r\n### 2. 💘Model Naming Convention\r\n[name][-(Version number, e.g., x060)][-(World version number, e.g., w021)][-(Model parameters, e.g., 3B)].[Extension (st\\state\\lora\\prefab)]\r\n\r\n#### For example:\r\n `x060-w021-3B.st`\r\n  `x060-w021-3B.prefab`\r\n  `example-x060-3B.lora`\r\n  `example2-x060-3B.state`\r\n\r\n## 👽BNF Example\r\nHere is an example BNF for JSON with fields `name` and `age`:\r\n```bnf\r\n\u003Cstart> ::= \u003Cjson_object>\r\n\u003Cjson_object> ::= \"{\" \u003Cobject_members> \"}\"\r\n\u003Cobject_members> ::= \u003Cjson_member> | \u003Cjson_member> \", \" \u003Cobject_members>\r\n\u003Cjson_member> ::= \u003Cjson_key> \": \" \u003Cjson_value>\r\n\u003Cjson_key> ::= '\"' \"name\" '\"' | '\"' \"age\" '\"' | '\"' \"job\" '\"'\r\n\u003Cjson_value> ::= \u003Cjson_string> | \u003Cjson_number>\r\n\u003Cjson_string>::='\"'\u003Ccontent>'\"'\r\n\u003Ccontent>::=\u003Cexcept!([escaped_literals])>|\u003Cexcept!([escaped_literals])>\u003Ccontent>|'\\\\\"'\u003Ccontent>|'\\\\\"'\r\n\u003Cescaped_literals>::='\\t'|'\\n'|'\\r'|'\"'\r\n\u003Cjson_number> ::= \u003Cpositive_digit>\u003Cdigits>|'0'\r\n\u003Cdigits>::=\u003Cdigit>|\u003Cdigit>\u003Cdigits>\r\n\u003Cdigit>::='0'|\u003Cpositive_digit>\r\n\u003Cpositive_digit>::=\"1\"|\"2\"|\"3\"|\"4\"|\"5\"|\"6\"|\"7\"|\"8\"|\"9\"\r\n```\r\n\r\n\u003Cimg width=\"1914\" alt=\"1\" src=\"https:\u002F\u002Fgithub.com\u002FAi00-X\u002Fai00_server\u002Fassets\u002F16053640\u002Feb7d9f3e-8117-4311-a364-05b48de8c79c\">\r\n\r\n* Cgisky1980 patch 1 by @cgisky1980 in https:\u002F\u002Fgithub.com\u002FAi00-X\u002Fai00_server\u002Fpull\u002F116\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002FAi00-X\u002Fai00_server\u002Fcompare\u002Fv0.4.8...v0.4.9","2024-05-15T01:11:33",{"id":239,"version":240,"summary_zh":76,"released_at":241},280871,"v0.4.8","2024-05-10T17:32:56",{"id":243,"version":244,"summary_zh":245,"released_at":246},280872,"v0.4.7","## 📢What's Changed\r\n**Dynamic init states by @cryscan in https:\u002F\u002Fgithub.com\u002FAi00-X\u002Fai00_server\u002Fpull\u002F115\r\n\r\n- Implement multi initial state.\r\n\r\n- Update `web-rwkv` to v0.8.6\r\n\r\n- Report init state info in `info` API.\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002FAi00-X\u002Fai00_server\u002Fcompare\u002Fv0.4.6...v0.4.7","2024-05-08T17:35:09"]