用于在实现 Agnost AI 分析的数据摄入。包含 API 参考、Python 与 TypeScript SDK 指南及 AI 追踪代码示例。
不可知数据摄入
功能概述
不可知数据摄入是一项面向实际任务的技能,主要用于综合指南, 用于将数据输入A不可知AI , 用于分析、监测和洞察;覆盖用于跟踪AI交互和MCP SDK fo的谈话 SDK。
核心要点
- 它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
- 使用时应结合输入条件选择合适的执行方式,核对必要参数、依赖环境与输出内容,并按原始要求处理异常情况。
- 该技能适合需要稳定复用相关能力的场景,可作为自动化工作流的一部分,也便于后续检查、调整和扩展。
使用与执行
从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;
结果检查与注意事项
若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
Agnost 数据摄取
将数据摄取至 Agnost AI 以支持分析、监控与洞察的完整指南。涵盖用于追踪 AI 交互的 Conversation SDK,以及用于 Model Context Protocol(MCP)服务器分析的 MCP SDK。
官方文档: https://docs.agnost.ai
API 端点:https://api.agnost.ai
仪表板: https://app.agnost.ai
重要提示:如何应用本技能
在实施 Agnost 数据摄取前,请严格遵循以下优先级顺序:
- 明确使用场景:是对话追踪(AI 聊天机器人、智能体),还是 MCP 服务器分析
- 查阅 SDK 参考文档:参考
references/目录下的详细 API 文档 - 复用提供的代码示例:将其作为开发起点
- 引用参考资料:在解释实现细节时注明对应参考来源
快速参考
SDK 包
| 使用场景 | Python | TypeScript/Node.js | Go |
|---|---|---|---|
| 对话/AI 追踪 | pip install agnost |
npm install agnostai |
N/A |
| MCP 服务器分析 | pip install agnost-mcp |
npm install agnost |
go get github.com/agnostai/agnost-go |
API 端点
| 端点 | 方法 | 说明 |
|---|---|---|
/api/v1/capture-session |
POST | 创建新对话/会话 |
/api/v1/capture-event |
POST | 在会话内记录事件 |
Conversation SDK(AI 应用推荐)
当构建需追踪用户交互、输入输出及性能指标的 AI 应用、聊天机器人或智能体时,请使用 Conversation SDK。
Python 安装与初始化
# 安装
pip install agnost
# 或
uv add agnost
# 基础初始化
import agnost
# 使用组织 ID(来自仪表板)初始化
agnost.init("your-org-id")
TypeScript/Node.js 安装与初始化
// 安装
npm install agnostai
// 或
pnpm add agnostai
// 基础初始化
import * as agnost from "agnostai";
// 使用组织 ID(来自仪表板)初始化
agnost.init("your-org-id");
核心方法
1. init(org_id, config?) — 初始化 SDK
必须在调用任何追踪方法前执行。
Python
import agnost
# 基础初始化
agnost.init("your-org-id")
# 带配置初始化
agnost.init(
"your-org-id",
endpoint="https://api.agnost.ai", # 自定义端点(可选)
debug=True # 启用调试日志
)
TypeScript
import * as agnost from "agnostai";
// 基础初始化
agnost.init("your-org-id");
// 带配置初始化
agnost.init("your-org-id", {
endpoint: "https://api.agnost.ai", // 自定义端点(可选)
debug: true // 启用调试日志
});
2. begin() + end() — 追踪交互(推荐方式)
采用 begin/end 模式可实现自动延迟计算,并使代码更清晰。
Python
import agnost
agnost.init("your-org-id")
# 开始追踪一次交互
interaction = agnost.begin(
user_id="user_123",
agent_name="weather-agent",
input="What's the weather in NYC?",
conversation_id="conv_456", # 可选:用于聚合相关事件
properties={"model": "gpt-4"} # 可选:自定义元数据
)
# ... 此处执行您的 AI 处理逻辑 ...
response = call_your_ai_model(interaction.input)
# 完成交互(延迟自动计算)
interaction.end(
output=response,
success=True # 若调用失败则设为 False
)
TypeScript
import * as agnost from "agnostai";
agnost.init("your-org-id");
// 开始追踪一次交互
const interaction = agnost.begin({
userId: "user_123",
agentName: "weather-agent",
input: "What's the weather in NYC?",
conversationId: "conv_456", // 可选:用于聚合相关事件
properties: { model: "gpt-4" } // 可选:自定义元数据
});
// ... 此处执行您的 AI 处理逻辑 ...
const response = await callYourAIModel(interaction.input);
// 完成交互(延迟自动计算)
interaction.end(response); // 或 interaction.end(response, true) 表示成功
3. track() — 单次调用追踪
适用于所有数据已就绪、无需 begin/end 分阶段处理的场景。
Python
import agnost
agnost.init("your-org-id")
agnost.track(
user_id="user_123",
input="What's the weather?",
output="The weather is sunny with 72°F.",
agent_name="weather-agent",
conversation_id="conv_456", # 可选
success=True,
latency=150, # 毫秒
properties={"model": "gpt-4", "tokens": 42}
)
4. identify() — 用户信息增强
将用户元数据与用户 ID 关联,以支持更丰富的分析能力。
Python
import agnost
agnost.init("your-org-id")
agnost.identify("user_123", {
"name": "John Doe",
"email": "john@example.com",
"plan": "premium",
"company": "Acme Inc"
})
TypeScript
import * as agnost from "agnostai";
agnost.init("your-org-id");
agnost.identify("user_123", {
name: "John Doe",
email: "john@example.com",
plan: "premium",
company: "Acme Inc"
});
5. flush() 与 shutdown() — 资源管理
Python
import agnost # 手动刷新待发送事件 agnost.flush() # 清洁关闭(自动刷新并关闭连接) agnost.shutdown()
TypeScript
import * as agnost from "agnostai"; // 手动刷新待发送事件 await agnost.flush(); // 清洁关闭(自动刷新并关闭连接) await agnost.shutdown();
Interaction 对象方法
使用 begin() 时,您将获得一个 Interaction 对象,其提供如下方法:
| 方法 | 说明 |
|---|---|
set_input(text) / setInput(text) |
设置或更新输入文本 |
set_property(key, value) / setProperty(key, value) |
添加单个自定义属性 |
set_properties(dict) / setProperties(obj) |
批量添加多个自定义属性 |
end(output, success?, latency?) |
完成并发送事件 |
示例:动态构建输入(Python)
interaction = agnost.begin(
user_id="user_123",
agent_name="my-agent"
)
# 从多个来源组合输入
interaction.set_input("Combined user query: " + user_input)
interaction.set_property("source", "chat-widget")
interaction.set_properties({"model": "gpt-4", "version": "v2"})
# 处理并完成
response = process_query(interaction.input)
interaction.end(output=response)
MCP 服务器分析
针对 Model Context Protocol(MCP)服务器的追踪,请使用 MCP SDK。
Python(FastMCP)
from mcp.server.fastmcp import FastMCP
from agnost_mcp import track, config
# 创建 FastMCP 服务器
mcp = FastMCP("my-mcp-server")
# 添加您的工具
@mcp.tool()
def my_tool(param: str) -> str:
return f"Result: {param}"
# 启用追踪
track(mcp, "your-org-id", config(
endpoint="https://api.agnost.ai",
disable_input=False, # 追踪输入参数
disable_output=False # 追踪输出结果
))
# 启动服务器
mcp.run()
TypeScript(MCP SDK)
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { trackMCP } from "agnost";
// 创建 MCP 服务器
const server = new Server({
name: "my-mcp-server",
version: "1.0.0"
}, {
capabilities: { tools: {} }
});
// 启用追踪
trackMCP(server, "your-org-id", {
endpoint: "https://api.agnost.ai",
disableInput: false,
disableOutput: false
});
// 启动服务器
const transport = new StdioServerTransport();
await server.connect(transport);
Go(mcp-go)
package main
import (
"github.com/agnostai/agnost-go/agnost"
"github.com/mark3labs/mcp-go/server"
)
func main() {
s := server.NewMCPServer("my-server", "1.0.0")
// 添加工具...
// 启用追踪
agnost.Track(s, "your-org-id", &agnost.Config{
DisableInput: false,
DisableOutput: false,
BatchSize: 10,
LogLevel: "info",
})
server.ServeStdio(s)
}
API 参考(直连 HTTP)
适用于无需 SDK、需直接调用 API 的场景。
创建会话
curl -X POST https://api.agnost.ai/api/v1/capture-session
-H "Content-Type: application/json"
-H "X-Org-Id: your-org-id"
-d '{
"session_id": "unique-session-id",
"client_config": "my-app",
"connection_type": "http",
"ip": "",
"user_data": {
"user_id": "user_123",
"email": "user@example.com"
},
"tools": ["tool1", "tool2"]
}'
捕获事件
curl -X POST https://api.agnost.ai/api/v1/capture-event
-H "Content-Type: application/json"
-H "X-Org-Id: your-org-id"
-d '{
"session_id": "unique-session-id",
"primitive_type": "tool",
"primitive_name": "weather_lookup",
"latency": 150,
"success": true,
"args": "{"city": "NYC"}",
"result": "{"temp": 72}",
"metadata": {
"model": "gpt-4",
"tokens": "42"
}
}'
数据结构
会话请求
{
"session_id": "字符串(UUID 或自定义 ID)",
"client_config": "字符串(应用标识符)",
"connection_type": "字符串(http/stdio/sse)",
"ip": "字符串(可选)",
"user_data": {
"user_id": "字符串",
"...": "任意其他用户字段"
},
"tools": ["数组", "包含", "工具", "名称"]
}
事件请求
{
"session_id": "字符串(须匹配已有会话)",
"primitive_type": "字符串(tool/resource/prompt)",
"primitive_name": "字符串(原始操作名称)",
"latency": "整数(毫秒)",
"success": "布尔值",
"args": "字符串(JSON 编码的输入)",
"result": "字符串(JSON 编码的输出)",
"checkpoints": [
{
"name": "字符串",
"timestamp": "整数(距开始时间的毫秒数)",
"metadata": {}
}
],
"metadata": {
"key": "value 对"
}
}
配置选项
Python Conversation SDK
agnost.init(
"your-org-id",
endpoint="https://api.agnost.ai", # API 端点
debug=False # 启用调试日志
)
TypeScript Conversation SDK
interface ConversationConfig {
endpoint?: string; // API 端点(默认:https://api.agnost.ai)
debug?: boolean; // 启用调试日志(默认:false)
}
agnost.init("your-org-id", { endpoint: "...", debug: true });
Python MCP SDK(FastMCP)
from agnost_mcp import track, config
track(server, "your-org-id", config(
endpoint="https://api.agnost.ai",
disable_input=False, # 不追踪输入参数
disable_output=False # 不追踪输出结果
))
TypeScript MCP SDK
import { trackMCP, createConfig } from "agnost";
const cfg = createConfig({
endpoint: "https://api.agnost.ai",
disableInput: false,
disableOutput: false
});
trackMCP(server, "your-org-id", cfg);
Go MCP SDK
type Config struct {
Endpoint string // 默认:"https://api.agnost.ai"
DisableInput bool // 默认:false
DisableOutput bool // 默认:false
BatchSize int // 默认:5
MaxRetries int // 默认:3
RetryDelay time.Duration // 默认:1s
RequestTimeout time.Duration // 默认:5s
LogLevel string // "debug", "info", "warning", "error"
Identify IdentifyFunc // 可选:用户识别函数
}
最佳实践
1. 总是在应用启动时尽早初始化
# 在应用启动时执行
import agnost
agnost.init("your-org-id")
2. 使用 begin/end 获取准确延迟
# 自动计算处理耗时 interaction = agnost.begin(user_id="u1", agent_name="agent") # ... 处理中 ... interaction.end(output=result)
3. 使用 conversation_id 聚合相关事件
# 同一聊天会话中的全部事件
conversation_id = f"chat_{session_id}"
interaction = agnost.begin(
user_id="u1",
conversation_id=conversation_id,
agent_name="chatbot"
)
4. 健壮地处理错误
interaction = agnost.begin(user_id="u1", agent_name="agent")
try:
result = process_request()
interaction.end(output=result, success=True)
except Exception as e:
interaction.end(output=str(e), success=False)
5. 清洁关闭
import atexit import agnost atexit.register(agnost.shutdown)
适用场景
当您遇到以下任一情况时,应启用本技能:
- Agnost 数据摄取的实现
- AI 对话追踪功能的搭建
- MCP 服务器分析的集成
- 事件/会话捕获 API 的使用
- SDK 初始化相关问题
- 延迟追踪需求
- 用户身份识别与信息增强
附加资源
- Python SDK 参考文档:
references/python-sdk.md - TypeScript SDK 参考文档:
references/typescript-sdk.md - API 参考文档:
references/api-reference.md - 仪表板: https://app.agnost.ai
- Discord 社区: https://discord.gg/agnost
热门AI工具
相关专题
Vite项目打包部署专题汇集生产构建、产物预览、输出目录、资源路径、Nginx与GitHub Pages部署及常见白屏和路由404问题的已审核文章,帮助读者完成上线流程。
0
2026.10.28
Vite搭配Vue.js专题汇集创建Vue 3项目、配置开发环境、路径别名、Vue插件、代理、多环境构建与调试的已审核文章,帮助读者完成从初始化到日常开发的配置。
0
2026.10.28
Vite项目目录专题汇集入口文件、src源码、public静态资源、路径别名、项目根目录和构建输出目录相关的已审核文章,帮助读者理解各文件夹的用途与引用方式。
0
2026.10.28
本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。
0
2026.10.22
本专题介绍Gradle Wrapper的基本作用,涵盖文件组成、生成方法、版本配置和任务调用,帮助你理解项目如何使用指定的Gradle版本,减少不同开发环境带来的构建差异。
0
2026.10.22
本专题整理Golangci-lint常用Linters的用途与配置方法,覆盖错误处理、无效代码、安全、复杂度、命名和依赖检查,帮助项目合理选规则。
0
2026.10.22
本专题介绍Gradle Java项目构建方法,涵盖Java插件配置、依赖声明、源码编译、测试执行和打包检查,帮助你理解各阶段的任务关系,逐步完成项目构建。
0
2026.10.22
本专题汇总PHP常见时间戳漏洞,包括2038年溢出、时区漂移、时间戳伪造、重放攻击、时间盲注与日志审计失效等,并给出升级64位环境、使用 DateTimeImmutable、统一UTC、严格超时校验、预处理绑定、hash_equals 比对等修复方案,帮助开发者快速排查和加固时间相关代码。
0
2026.10.22
本专题聚焦Golangci-lint YAML配置文件,讲清运行参数、规则启停、目录排除、问题过滤及严重级别设置,便于团队统一检查标准。
0
2026.10.22
热门下载
相关下载
精品课程
共6课时 | 12.1万人学习
共79课时 | 161.6万人学习
共6课时 | 54.7万人学习
最新文章