@aid-framework/generator-py-fastapi
Python 目标为 AID 框架它将IR编译为
FastAPI 服务,其行为居住在 aid-runtime-python, (中文(简体) ),
他们的提示和工具处理者生活在 business/ 分级编译器从不触及.
app.spec.yaml ──aid gen──▶ app/generated/ (compiler)
app/business/ (you)
安装
npm install --save-dev @aid-framework/generator-py-fastapi
要求节点.js 24或更新. 在实践中你把它拉进来
@aid-framework/cli,这也是节点.
用这个
宣布目标,然后生成:
project:
name: support-copilot
targets:
- py-fastapi
npx aid gen
py-fastapi: 16 created, 0 updated, 0 unchanged, 0 kept
没有 --target, (中文(简体) ), aid gen 发布第一个目标 spec 声明, 因此一个 Python 唯一的项目从不用命名
它自己的目标.
发出什么
| 路径 | 目录 |
|---|---|
app/generated/__init__.py | 软件包标记 |
app/generated/deps.py | FastAPI 应用对象和依赖线 |
app/generated/requests.py | 每条HTTP服务管道请求模型 |
app/generated/schemas.py | 源自IR的活性模型 types |
app/generated/gateway/models.py | ModelSpec 来自IR的值和被标注的别名 |
app/generated/observability.py | 跟踪器设置 |
app/generated/contracts/ | 每个业务单元必须满足的协议 |
app/generated/pipelines/ | 每个管道一个模块:步骤接线,作为普通的合成码 |
app/generated/prompts/ | IR提示的登记结果 |
app/generated/tools/ | 工具定义和发送 |
app/generated/evals/ | Eval 数据集和门阈值 |
app/generated/routes/ | 管道的HTTP路线 http 触发 |
app/business/, (中文(简体) ), app/business/prompts/, (中文(简体) ), app/business/tools/ | 你的接缝——曾经创造过,但从未触碰过 |
精确文件集遵循 spec: 宣告没有检索器的 spec 释放出没有检索模块的 spec, 以及 spec 没有 HTTP 触发器, 没有发射路径 .
为它服务
生成器拥有路径;应用程序决定挂载什么以及如何运行. 这个切入点是
手写—— app/main.py数字 :
from fastapi import FastAPI
from app.generated.routes.answer_ticket import answer_ticket_router
app = FastAPI(title="support-copilot", version="0.1.0")
app.include_router(answer_ticket_router)
pip install aid-runtime-python "fastapi>=0.115,<1" "uvicorn>=0.30,<1"
uvicorn app.main:app --reload
deps.py 提供 build_deps() 财务报告和审定财务报表 get_deps() ——网关全过程集装箱,即时登记
和工具执行器。 它不创建 ASGI 应用程序 : 安装是您的, 所以再生不能带走它 .
发电机从不写 main.py 或一个 pyproject.toml,因为包装和安装是应用
裁决而不是具体内容.
能力
清单宣布了这个目标能达到的目标 以及IR capability 门拒绝需要的光谱
其它东西:
http-trigger, json-schema, streaming, tool-calling, otel,
embeddings, rerank, guardrails, agents, cursor-memory
它发出反对 活泼 用于结构化产出和 otel-genai 用于追踪.
宣布一种能力并不是声称该部分的每个字段都是可以表示的。 声明此目标 不能在代代相传时拒绝荣誉,而不能默默放弃.
这个 business/ 连接
里面的东西 generated/ 替换在下一个 aid gen。 。 。 . business/ 只有在缺失且是
永不再写——这就是提示,工具处理器和域逻辑归属的地方.
app/generated/contracts/ 是两者之间的合同:它宣布每个业务单元必须提供什么,所以
缺少或错误命名的处理器是编辑器中的类型错误,而不是生产中的例外.
决定主义
鉴于相同的IR,此生成器输出字节同同同的输出——没有时间戳,没有绝对路径,没有主机
名称。 这就是为什么 generated/ 可调和的金色文件测试是有意义的,它由
发电机本身的测试 而不是通过常规.
程序使用
import { PACKAGE, TARGET, manifest, plan } from '@aid-framework/generator-py-fastapi';
import type { Generator } from '@aid-framework/generator-sdk';
发电机满足了 Generator 合同来源
@aid-framework/generator-sdk数字 : plan(ir) 纯洁
财务报告和审定财务报表 emit(plan) 返回文件集,由 SDK 提供所有再生安全.
相关软件包
aid-runtime-python—— 输出代码导入的运行时间@aid-framework/runtime—— TypeScript 运行时间@aid-framework/generator-ts-vercel- 那个 类型脚本目标@aid-framework/cli—— 说aid
许可证
阿帕奇 - 2.0。由 AID 框架生成的代码是 不受该许可证的限制.