@ 浏览器tack/ai- sdk
一个TypeScript/NodeJS SDK,用于AI应用的可观察性,测试性,以及评价性.
需要节点.js QQ 18.
安装
npm install @browserstack/ai-sdk@beta
快速启动
import { AISDK } from '@browserstack/ai-sdk';
// Initialize the client
const client = new AISDK({
publicKey: 'your-public-key',
secretKey: 'your-secret-key',
});
// Create a trace
const trace = client.trace({
name: 'user_login_flow',
metadata: {
testSuite: 'authentication_tests',
testFile: 'auth.test.js',
},
tags: ['auth', 'critical'],
});
// Create spans
const loginSpan = trace.span({
name: 'navigate_to_login',
input: { url: '/login' }
});
loginSpan.end({
output: { pageLoaded: true, loadTime: 250 }
});
// Create events
trace.event({
name: 'assertion_check',
metadata: {
assertion: 'Login button should be visible',
passed: true,
expected: 'button visible',
actual: 'button visible'
}
});
// Cleanup
await client.flushAsync();
await client.shutdownAsync();
自动仪器
自动跟踪 LLM 调用而不修改代码 :
node --require @browserstack/ai-sdk/instrument app.js
配置
客户端可以使用环境变量或构建器选项进行配置:
环境变量
AISDK_PUBLIC_KEY=your_public_key
AISDK_SECRET_KEY=your_secret_key
内存和后压
SDK在你的通话和成功发送之间 持有追踪数据. 当摄取缓慢或失败时,所持有的数据以字节预算为界—— 一旦预算达到 SDK 留下最古老的痕迹而不是增长 直到过程被杀死.
| 变量 | 默认 | 它控制着什么 |
|---|---|---|
AISDK_MAX_HELD_BYTES | 104857600 (100甲基溴) | 整个队列和飞行请求中的总估计字节. 需要换个记忆天花板时 换一个把手. |
AISDK_MAX_QUEUE_SIZE | 1000 | 交货前持有的物品。 独立封顶——以捆绑者为准先取胜. |
AISDK_MAX_SOCKETS | 30 | 连接池大小 . |
AISDK_BATCH_SIZE | 15 | 每项请求的项目. |
AISDK_BATCH_TIMEOUT_MS | 5000 | 最长时间的部分批次等待 才被发送. |
AISDK_MAX_RETRIES | 3 | 尝试失败后进行报复,所以 总尝试4次。 。 。 . |
AISDK_REQUEST_TIMEOUT_MS | 30000 | 请求超时. 0 完全禁用它 . |
放大你的容器. AISDK_MAX_HELD_BYTES 限制 SDK 的 跟踪有效载荷
字节,而不是过程。 期望真正的RSS大约 1.8x 预算 a 包括:
持续失败负载测试针对100 MB 默认值的平分为~180 MB.
在您申请的足迹上至少2x的预算.
一半的预算用于飞行请求 一半用于排队 所以 短暂的减速被吸收而不是放出: 排队的项目仍然可以交付 当终点恢复时,飞行中点被固定,直到返回 结束.
设置普通字节数 . 后缀没有解析—— AISDK_MAX_HELD_BYTES=100MB
读作 100 字节,而不是100兆字节,以及 1e6 读作1。 以下数值
64 KB 被拒绝使用 [CONFIG_REJECTED] 线条并使用默认值.
扩展属性限制
OpenTeleometry 默认为每段128个属性, 一个请求的广告
许多工具(或长的代理循环)可以接近. SDK提高这个上限
改为 10000 默认情况下——对无限制生产者的后援,而不是
负载后卫.
| 变量 | 它控制着什么 |
|---|---|
OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT | 设定为数字, 使用您自己的跨度属性计数限制, 而不是 SDK 的默认值 . |
OTEL_ATTRIBUTE_COUNT_LIMIT | 相同的覆被; OpenTeleometry 的通称(非 span- specific)变量, 当上面的一个未设置时读取 . |
读取日志
四行默认打印, 无 AISDK_DEBUG因为他们的意思是追踪
数据正在被丢弃。 每分每分每分每分每分每分每分每分每分每分每分每分每分每分每分每分每分每分
suppressed=N 为了它所代表的事件.
| 线条 | 含义 | 怎么办 |
|---|---|---|
[BUDGET_SHED] | 字节预算已经达到;最古老的痕迹已经消失. | 摄取不相续. 首先检查终点健康——增加预算只会拖延. |
[QUEUE_OVERFLOW] | 物品上限已经达到. | 提升 AISDK_MAX_QUEUE_SIZE,或者检查终点健康. |
[INFLIGHT_CAP] | 由于飞行中的字节在天花板上,所以调度暂停. | 正常后压. 持续的外观意味着摄入量退化. |
[DROP] | 有一批货物在用完复试后被丢弃. | 交货从未确认。 数据可能已经到达服务器 X-Batch-Id 让摄取去除再试的批量——所以把这当作未经证实的,而不是某些损失. |
其他一切,包括按要求进行的诊断 AISDK_DEBUG=true。 。 。 .
构造选项
const client = new AISDK({
publicKey: 'your_public_key',
secretKey: 'your_secret_key',
environment: 'production',
flushAt: 20,
flushInterval: 10000,
});