用于在实现 Agnost AI 分析的数据摄入。包含 API 参考、Python 与 TypeScript SDK 指南及 AI 追踪代码示例。
不可知数据摄入是一项面向实际任务的技能,主要用于综合指南, 用于将数据输入A不可知AI , 用于分析、监测和洞察;覆盖用于跟踪AI交互和MCP SDK fo的谈话 SDK。
从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;
若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
将数据摄取至 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 数据摄取前,请严格遵循以下优先级顺序:
references/ 目录下的详细 API 文档| 使用场景 | 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/v1/capture-session |
POST | 创建新对话/会话 |
/api/v1/capture-event |
POST | 在会话内记录事件 |
当构建需追踪用户交互、输入输出及性能指标的 AI 应用、聊天机器人或智能体时,请使用 Conversation SDK。
# 安装
pip install agnost
# 或
uv add agnost
# 基础初始化
import agnost
# 使用组织 ID(来自仪表板)初始化
agnost.init("your-org-id")
// 安装
npm install agnostai
// 或
pnpm add agnostai
// 基础初始化
import * as agnost from "agnostai";
// 使用组织 ID(来自仪表板)初始化
agnost.init("your-org-id");
init(org_id, config?) — 初始化 SDK必须在调用任何追踪方法前执行。
import agnost
# 基础初始化
agnost.init("your-org-id")
# 带配置初始化
agnost.init(
"your-org-id",
endpoint="https://api.agnost.ai", # 自定义端点(可选)
debug=True # 启用调试日志
)
import * as agnost from "agnostai";
// 基础初始化
agnost.init("your-org-id");
// 带配置初始化
agnost.init("your-org-id", {
endpoint: "https://api.agnost.ai", // 自定义端点(可选)
debug: true // 启用调试日志
});
begin() + end() — 追踪交互(推荐方式)采用 begin/end 模式可实现自动延迟计算,并使代码更清晰。
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
)
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) 表示成功
track() — 单次调用追踪适用于所有数据已就绪、无需 begin/end 分阶段处理的场景。
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}
)
identify() — 用户信息增强将用户元数据与用户 ID 关联,以支持更丰富的分析能力。
import agnost
agnost.init("your-org-id")
agnost.identify("user_123", {
"name": "John Doe",
"email": "john@example.com",
"plan": "premium",
"company": "Acme Inc"
})
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"
});
flush() 与 shutdown() — 资源管理import agnost # 手动刷新待发送事件 agnost.flush() # 清洁关闭(自动刷新并关闭连接) agnost.shutdown()
import * as agnost from "agnostai"; // 手动刷新待发送事件 await agnost.flush(); // 清洁关闭(自动刷新并关闭连接) await agnost.shutdown();
使用 begin() 时,您将获得一个 Interaction 对象,其提供如下方法:
| 方法 | 说明 |
|---|---|
set_input(text) / setInput(text) |
设置或更新输入文本 |
set_property(key, value) / setProperty(key, value) |
添加单个自定义属性 |
set_properties(dict) / setProperties(obj) |
批量添加多个自定义属性 |
end(output, success?, latency?) |
完成并发送事件 |
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)
针对 Model Context Protocol(MCP)服务器的追踪,请使用 MCP SDK。
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()
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);
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)
}
适用于无需 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 对"
}
}
agnost.init(
"your-org-id",
endpoint="https://api.agnost.ai", # API 端点
debug=False # 启用调试日志
)
interface ConversationConfig {
endpoint?: string; // API 端点(默认:https://api.agnost.ai)
debug?: boolean; // 启用调试日志(默认:false)
}
agnost.init("your-org-id", { endpoint: "...", debug: true });
from agnost_mcp import track, config
track(server, "your-org-id", config(
endpoint="https://api.agnost.ai",
disable_input=False, # 不追踪输入参数
disable_output=False # 不追踪输出结果
))
import { trackMCP, createConfig } from "agnost";
const cfg = createConfig({
endpoint: "https://api.agnost.ai",
disableInput: false,
disableOutput: false
});
trackMCP(server, "your-org-id", cfg);
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 // 可选:用户识别函数
}
# 在应用启动时执行
import agnost
agnost.init("your-org-id")
# 自动计算处理耗时 interaction = agnost.begin(user_id="u1", agent_name="agent") # ... 处理中 ... interaction.end(output=result)
# 同一聊天会话中的全部事件
conversation_id = f"chat_{session_id}"
interaction = agnost.begin(
user_id="u1",
conversation_id=conversation_id,
agent_name="chatbot"
)
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)
import atexit import agnost atexit.register(agnost.shutdown)
当您遇到以下任一情况时,应启用本技能:
references/python-sdk.mdreferences/typescript-sdk.mdreferences/api-reference.md相关专题
热门下载
相关下载
精品课程
共6课时 | 54.7万人学习
共89课时 | 134.1万人学习
共49课时 | 82.5万人学习
最新文章