GitHub_Trending/ai/aici:革命性AI控制器接口,实时约束大语言模型输出

【免费下载链接】aici 【免费下载链接】aici 项目地址: https://gitcode.com/GitHub_Trending/ai/aici

你还在为大语言模型(LLM)输出格式混乱而烦恼吗?还在反复调整提示词却收效甚微吗?GitHub_Trending/ai/aici项目带来了全新的解决方案。通过革命性的AI控制器接口(Artificial Intelligence Controller Interface, AICI),开发者可以实时约束和引导LLM的生成过程,无需依赖复杂的提示工程。读完本文,你将了解如何利用AICI构建自定义控制器,精确控制AI输出,实现从"猜AI心思"到"AI听我指挥"的转变。

AICI是什么:重新定义AI输出控制

AICI是微软研究院开发的原型系统,它在LLM推理引擎和控制器之间建立标准化接口,允许开发者通过代码实时干预token生成过程。与传统提示工程相比,AICI将控制权交还给开发者,实现更可靠、更精确的输出约束。

AICI的核心优势在于:

  • 灵活性:支持多种编程语言编写控制器,包括Rust、Python、JavaScript等
  • 安全性:控制器运行在Wasm沙箱中,无法访问文件系统或网络
  • 高性能:Wasm模块编译为本地代码,与LLM推理引擎并行运行,几乎不增加额外开销

AICI的架构设计使其能够与多种LLM后端集成,包括rLLM、llama.cpp、vLLM等。下图展示了AICI runtime与各组件的关系:

mermaid

核心组件:构建你的AI控制中心

AICI项目包含多个关键组件,共同构成完整的AI输出控制系统:

1. AICI Runtime(aicirt)

AICI运行时是系统的核心,负责管理控制器的生命周期和与LLM引擎的通信。它通过共享内存与rLLM服务器交互,实现低延迟的token级控制。

源代码路径:aicirt/src/main.rs

2. 控制器模块

项目提供多种控制器实现,满足不同场景需求:

3. rLLM推理引擎

rLLM是AICI配套的LLM推理服务器,提供两个后端:

  • rllm-cuda:基于libtorch和CUDA,适用于NVIDIA GPU
  • rllm-llamacpp:基于llama.cpp,支持CPU和GPU推理

代码路径:rllm/

快速上手:5分钟实现LLM输出控制

下面通过一个简单示例,展示如何使用AICI控制LLM生成一个包含5个条目的车辆列表。

环境准备

首先安装必要依赖:

# Ubuntu/Debian系统
sudo apt-get install --assume-yes --no-install-recommends \
    build-essential cmake ccache pkg-config libssl-dev libclang-dev clang llvm-dev git-lfs

# 安装Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

# 添加Wasm目标
rustup target add wasm32-wasi

# 安装Python依赖
pip install pytest pytest-forked ujson posix_ipc numpy requests

启动rLLM服务器和AICI Runtime

cd rllm/rllm-llamacpp
./server.sh phi2

这条命令会下载Phi-2模型并启动rLLM服务器,默认监听4242端口。你可以通过访问http://127.0.0.1:4242/v1/models验证服务器是否正常运行。

编写控制脚本

创建Python文件list-of-five.py,实现精确控制LLM生成5项列表:

import pyaici.server as aici

async def main():
    # 简单提示,无需复杂指令
    prompt = "What are the most popular types of vehicles?\n"
    await aici.FixedTokens(prompt)
    
    # 标记当前位置,用于后续提取生成结果
    marker = aici.Label()
    
    # 强制生成5个列表项
    for i in range(1,6):
        await aici.FixedTokens(f"{i}.")  # 固定列表编号
        await aici.gen_text(stop_at = "\n")  # 生成列表内容,遇到换行停止
    
    await aici.FixedTokens("\n")
    
    # 保存生成结果
    aici.set_var("result", marker.text_since())

aici.start(main())

运行控制脚本

./aici.sh run list-of-five.py

执行后,你将看到类似以下输出:

[Response] What are the most popular types of vehicles?
1. Cars
2. Motorcycles
3. Bicycles
4. Trucks
5. Boats

Storage: {'result': '1. Cars\n2. Motorcycles\n3. Bicycles\n4. Trucks\n5. Boats\n\n'}

即使提示词非常简单,AICI仍能确保输出符合精确格式要求,生成正好5个列表项,无需担心模型"画蛇添足"。

深入了解:AICI工作原理

AICI的核心创新在于将控制器与LLM推理引擎解耦,同时保持低延迟通信。下图展示了AICI的工作流程:

mermaid

AICI Runtime与LLM引擎通过共享内存通信,控制器在CPU上并行运行,利用GPU生成token的间隙完成约束计算。这种设计确保控制逻辑不会成为性能瓶颈。

性能测试表明,AICI的控制逻辑执行时间远小于GPU生成token的时间:

  • C语言语法约束:约2.0ms
  • 正则表达式约束:约0.3ms
  • 子字符串约束:约0.2ms

这些时间都在GPU生成单个token所需的20-50ms窗口内,因此不会增加总体生成时间。

实用指南:AICI应用场景与最佳实践

适用场景

AICI特别适合以下场景:

  • 格式化输出:生成JSON、XML等结构化数据
  • 内容过滤:确保输出符合特定安全准则
  • 多轮对话管理:控制对话流程和状态
  • 代码生成:确保生成代码符合语法规范

进阶示例

1. JSON格式强制

使用PyCtrl确保LLM输出有效的JSON:

import pyaici.server as aici

async def main():
    await aici.FixedTokens("Generate a JSON object with user info:\n")
    
    # 使用JSON模式约束
    await aici.gen_json_schema({
        "type": "object",
        "properties": {
            "name": {"type": "string"},
            "age": {"type": "number"},
            "hobbies": {"type": "array", "items": {"type": "string"}}
        }
    })
    
    aici.set_var("result", aici.get_text())

aici.start(main())
2. 代码语法检查

利用AICI的语法检查功能确保生成有效Python代码:

import pyaici.server as aici

async def main():
    await aici.FixedTokens("Generate a Python function to add two numbers:\n")
    
    # 使用Python语法约束
    await aici.gen_grammar("python")
    
    aici.set_var("code", aici.get_text())

aici.start(main())

性能优化建议

  1. 选择合适的控制器:性能敏感场景使用Rust控制器,快速开发使用Python/JavaScript
  2. 批量处理:尽量在单次控制逻辑中处理多个token约束
  3. 避免复杂计算:控制逻辑应在20ms内完成,避免复杂算法
  4. 利用并行性:AICI支持多序列并行处理,充分利用CPU核心

总结与展望

AICI项目通过创新的控制器接口,彻底改变了我们与大语言模型交互的方式。它将LLM从一个"黑盒生成器"转变为可控的"AI协处理器",使开发者能够通过代码精确控制输出。

目前AICI仍处于原型阶段,但已展现出巨大潜力。未来发展方向包括:

  • 更多控制器类型和约束模板
  • 增强的多模型协作能力
  • 更完善的调试和监控工具
  • 与主流AI框架的深度集成

想要了解更多细节,可以查阅以下资源:

AICI代表了LLM应用开发的新范式,如果你厌倦了反复调整提示词,不妨尝试这种更直接、更可靠的AI控制方式。立即克隆仓库开始体验:

git clone https://gitcode.com/GitHub_Trending/ai/aici.git
cd aici

让AI输出从此"听话"起来!

【免费下载链接】aici 【免费下载链接】aici 项目地址: https://gitcode.com/GitHub_Trending/ai/aici

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐