只有一条规则:
@= AI 执行。没有@= 代码运行。
result = @ask("summarize: {text}") # AI 执行
words = len(text.split()) # 确定性 Python
flag = @judge("is this complete: {result}") # AI 返回 bool
想让 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)
retry、timeout、try/fallback 可以自由组合。
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/ |
MIT