Skip to content

Latest commit

 

History

History
168 lines (121 loc) · 4.97 KB

File metadata and controls

168 lines (121 loc) · 4.97 KB

English

AIL — AI 工作流语言

只有一条规则:@ = AI 执行。没有 @ = 代码运行。

result = @ask("summarize: {text}")   # AI 执行
words  = len(text.split())           # 确定性 Python
flag   = @judge("is this complete: {result}")  # AI 返回 bool

version license


问题

想让 AI 按你设计的逻辑执行,只有两种选择,但都不够用:

  • 自然语言 — 灵活,但描述一个完整的执行逻辑需要大量文字,而且 AI 会自行填补你没说清楚的部分
  • 伪代码 — 更精确,但覆盖不了完整的执行逻辑:没有重试、没有基于 AI 判断的分支、没有并行调用、没有降级处理

结果:你花更多时间写提示词,AI 还是会误解意图。

解决方案

AIL 是专门为这个问题设计的新语言。一条规则,一个符号:

@  →  AI 执行   (语义操作,非确定性)
   →  代码运行  (确定性,Python 兼容)

像思考一样写逻辑。@ask@judge@validate — 用极少的文字表达完整的执行意图。AIL 附带一份写给 AI 的 guide,粘贴到任何模型里,它就能立刻读懂和生成 AIL。

kzl 是运行 AIL 的 Python 框架。接入你自己的 agent,注册工具,agent 就会按照 AIL 逻辑执行。纯 Python,没有新概念——会 Python 就能上手。

其他一切都是标准 Python 语法——循环、函数、类型、异常处理。没有新范式需要学习。


快速示例

重试直到质量通过:

retry max=3:
    report = @ask(generate_report)
    @validate(report, "必须包含结论、数据和来源")

循环直到 AI 判断完成:

loop max=10 until @judge("以下内容不再有待解决的问题:{output}"):
    output = @ask(solve_issues)

并行 AI 调用:

tech, biz, ux = parallel:
    tech = @ask("从技术角度分析:{content}")
    biz  = @ask("从商业角度分析:{content}")
    ux   = @ask("从用户角度分析:{content}")

summary = @ask("综合三个角度给出最终结论:{tech} {biz} {ux}")

结构化提取:

type QueryInfo:
    intent:     str
    keywords:   list[str]
    multi_step: bool

info = @extract(analysis, type=QueryInfo)

多轮对话:

with context(system="你是一个任务规划专家") as ctx:
    issues = @ask(analyze)      # AI 能看到前面的内容
    output = @ask(solve)        # AI 能看到 issues
    ctx.reset()                 # 清空历史

@ 操作速查

操作 返回值 说明
@ask(prompt) str 执行任务
@judge("条件") bool 是/否判断
@pick("说明", options=[...]) 选项类型 从选项中选择
@plan("目标") list[str] 将目标拆解为步骤
@extract(text, type=T) T 提取结构化数据
@eval(content, "标准") float 打分 0~1
@validate(content, "条件") — / 异常 断言或重试
@act("说明") str AI 自主选择工具执行
@ask_user("提示") str 向用户提问,阻塞等待
@confirm("描述") — / 异常 请求用户确认
@show("内容") 展示给用户,不阻塞

内置可靠性机制

try:
    retry max=3:
        timeout 20s:
            result = @ask(generate)
        @validate(result, "必须完整")
fallback:
    result = @ask(basic_fallback)

retrytimeouttry/fallback 可以自由组合。


工具、Skill 和插件

use tool  vector_search(query: str, top_k: int) -> list[Document]   # 确定性函数
use skill rag_agent(query: str) -> (str, list[str])                 # 带 AI 操作的子 Agent
use plugin database as db                                            # 带持久状态的外部服务

docs   = vector_search("深度学习", top_k=10)   # 像普通函数一样调用
answer, citations = rag_agent(query=user_input)
users  = db.query("SELECT * FROM users")

记忆系统

memory.save(result, key="last_answer", tags=["history"])
pref    = memory.get("user_preference")
related = memory.search("RAG 相关讨论", top_k=3)

完整示例

完整的 RAG Agent 示例见 examples/ail/rag_agent.ail,更多示例在 examples/


文档

语言规范(面向 AI) docs/ail/for-AI-v1.0.md
用户文档 — 中文 docs/ail/for-humans-v1.0.md
用户文档 — English docs/ail/for-humans-en-v1.0.md
Python SDK 产品文档 docs/kzl/product-spec-v1.0.md
Python SDK kzl/
AIL 示例 examples/ail/
kzl 示例 examples/kzl/

License

MIT