阿尼玛 ADK
生产多剂AI系统的TypeScript框架——先作计划,由事件源出,提供者不可知. 建造并用于生产 阿尼玛 运行临床和业务代理工作流程.
联合国 adk.animahealth.com (中文(简体) ) ——可运行的docs:站点上的每一个代码单元格都会执行您浏览器中运出的数据包.
ADK是一个库,而不是一个平台:除了你选择的数据库之外,没有基础设施依赖(或者没有——内存和SQLite后端不需要什么). 每个层都是独立的有用.
- 一个会话分类账. 代理人所做的一切只是一个附加事件的历史;所有状态都源于它. 时光之行,为所欲为,而稽核也来得免费.
- 特工停止问. 工具可以产生:运行暂停,会话会持续为一行,一个人类(或另一个系统)恢复它——几分钟或几天后.
- 模特儿看你的选择. 上下文渲染器是分类账和快取之间唯一的桥梁,因此完全审计与小上下文共存.
- 决定性测试. 测试包只用脚本转折来取代模型——工具真的执行,状态真的写——所以代理测试运行时没有API键.
- 子路径背后的供应商. OpenAI、双子座、克洛德(通过Vertex)和Eurrouter是后方的可选整合
@animahealth/adk/openai还有朋友 导入核心拉出其中任何一个.
安装
npm install @animahealth/adk
节点 22. zod 是需要的对等点(npm和pnpm自动安装).
ADK从3.25.76接受Zod 3经典,从4.6.5接受Zod 4经典;a
现有的 Zod 3 应用程序不需要迁移到 Zod 4 。 可选后端
声明可选的对等方——只为您使用的东西安装(例如)
better-sqlite3 sQLite 会话商店).
第一跑——无 API 密钥
真正的代理环绕一个脚本模型转弯。 工具执行,状态写出,分类账累积;只有模型被脚本所玩.
import { getLastAssistantText, runTest, user, model, mockAgent } from '@animahealth/adk/testing'
const greeter = mockAgent('greeter')
const result = await runTest(greeter, [user('hi'), model('Hello! Ask me anything.')])
console.log(getLastAssistantText(result.events)) // Hello! Ask me anything.
console.log(result.events.map((e) => e.type))
// [ 'user', 'invocation_start', 'model_start', 'assistant', ... ]
快速启动——直播
export OPENAI_API_KEY=sk-...
import { z } from 'zod'
import { adk } from '@animahealth/adk'
import { openai } from '@animahealth/adk/openai'
const app = adk()
const calculator = app.tool({
name: 'calculate',
description: 'Evaluate a mathematical expression',
schema: z.object({
expression: z.string().describe('Math expression to evaluate'),
}),
execute: (ctx) => {
const sanitized = ctx.args.expression.replace(/[^\d\s+\-*/().eE%]/g, '')
const result = Function(`"use strict"; return (${sanitized})`)()
return { result }
},
})
const assistant = app.agent({
name: 'math_assistant',
model: openai('gpt-5.6-luna'),
context: [
app.context.system(`You are helpful, use the calculator tool for arithmetic.`),
app.context.history(),
],
tools: [calculator],
})
const result = await app.run(assistant, 'What is 134 divided by 4?')
console.log(result.output.text) // 134 divided by 4 is 33.5.
双子舰身后 @animahealth/adk/gemini (AI Studio或Vertex)和克洛德后面 @animahealth/adk/claude (Vertex AI) (英语). 提供商的设置生活在每一个子路径的被打入的配置中.
Eurrouter号后舰 @animahealth/adk/eurouter 用于Depseek、Kimi和GLM等主机模型。 见 提供者指南 用于证书、路由和不需要密钥的本地示例.
评价
文本和语音案例可共享一个评价和一个CLI切入点:
async function main() {
process.exitCode = await app.evaluate.cli([...textCases, ...voiceCases], {
concurrency: 4,
})
}
void main()
调用条目脚本 list,或 run --case <name> --repeat 3 --output ./runs。 。 。 .
CLI写着JSON 写着"脱口而出","诊断""脱口而出","报告"和"案件证据"
运行目录。 解析 stdout 时使用无声包脚本 。 仅成功退出
当每一个选定的执行通过。 正常的进口仍然在CLI之前运行,所以保持安静.
使用 app.evaluate(cases, options) 同一个混合套房,没有命令行处理.
语音专用钩子、度量衡和房间配置 options.voice。 。 。 .
见 混合语音示例。 。 。 .
对于本地语音与ADK后端工具, GPT 现场语音处理器 文档 openai.live(...) 与 app.handler.voice(...),键入结果钩, 和记录持续.
对于没有结构信号的语音, 法官的衡量标准 文档 app.evaluate.judge(...),用于文本和语音案件,以及何时使用状态或事件衡量标准.
完成和持续执行
app.run() 立即开始执行。 等待它返回结果;运行期限或
run.abort() 立即拒绝. run.settled 总是在 ADK 执行和清理后完成
完成并缓冲其分类账事件。 在承诺或关闭会话库前使用:
const run = app.run(assistant, { session, timeout: 30_000 })
try {
return await run
} finally {
run.abort()
await run.settled
await app.sessions.commit(session)
}
完成既不成功,也不持久。 认可工具、其复试链、内线儿童
运行和产卵/分出的工作在完成之前仍属其所有。 一种工具可以超过自身的超时;
超时收件保持权威性 settled 等待基础工作。 工具或钩子
永远无法完成的 settled 待定。 取消的申请承诺不在合同范围之内.
根跑取消在等待钩后防止新的模型/工具入场. ctx.run当地
发售超时和代理的期限政策保留其现有行为;当地发售超时
本身不取消孩子或保证其最终引用事件。 取消前面的根运行
整个行动都停止了 断流迭代取消; handler.turn
提供了同样的单独的完成障碍,包括其持久性工作.
盒子里的东西
| 入境点 | 表面 |
|---|---|
@animahealth/adk | 应用程序:代理、步骤、序列/平行/移动、工具、生成工具、管弦(run编号 :spawn编号 :dispatch编号 :transfer, (中文(简体) ), app.ask, (中文(简体) ), fanout),上下文渲染器,会话和已键入的状态范围,内存,结构化输出,并带有一个允许解析器,钩子,错误处理器 turnMCP/REST/AG-UI处理器 |
/openai • 妇女 /gemini • 妇女 /claude • 妇女 /eurouter | 模型提供者配置和适配器 |
/stores/sqlite • 妇女 /stores/postgres • 妇女 /stores/dynamodb | 持久会话存储在1后 SessionStore 合同(核心中的母舰) |
/voyage • 妇女 /qdrant | 嵌入器和已服务的向量后端pgvector, (中文(简体) ), sqliteVec,以及 inMemoryIndex (核心中舰只) |
/testing | 确定性测试包: runTest, (中文(简体) ), mockAgent, (中文(简体) ), MockAdapter,匹配者 |
/eval | 成套评价、衡量标准、报告、模拟 |
/voice | LiveKit 语音处理器和实时模型 |
/web | 网络工具:搜索、获取、截图 |
/agui • 妇女 /terminal | AG-UI 协议适配器和交互式终端 UI |
稳定
ADK为前1.0并倾向于一个清晰的API而不是相容化名. 两级:
- 核心 主入口和上面的每一个子路径 更改是故意提出的,并记录在 变化。 。 。 .
- 实验 —— 说
/workflow(动态多代理工作流程和Claude-Code兼容工作流程文件加载器),/agents/coding财务报告和审定财务报表/agents/coding/claude-code(提供工作空间的编码代理),以及/executors(Docker/Modal工作空间执行器). 任何发布都可以修改或删除这些内容,而不设折旧周期; 将您的版本绑定 .
实验地表只能通过自己的亚道才能被达到,从不通过主入门——一个建起的门执行.
测试
pnpm install
pnpm run test
该套房运行时没有API密钥,也没有数据库. 每个有文件记录的会话存储器和矢量后端也运行一个共享的合规套件,以对应真实的服务容器 中情局 合同索赔不断得到证明,而不是断言.
捐款、担保、许可证
此寄存器是 ADK 开发主机的连续输出快照 捐款额 如何处理问题和拉动请求流(短版本:问题是正门,接受的公关在保存您的作者身份的情况下导入)。 报告脆弱性 警卫而不是公共问题.
麻省理工学院 安尼玛健康.