本文是Agent 365的逐属性摄取流程所使用的规范属性规范。 Agent 365 接收的每一个区间——无论是由 Microsoft OpenTelemetry 发行版、已弃用的 Agent 365 可观测性 SDK 发送,还是通过直接 OTel 发送——都必须符合该标准。 每个条目都列出了该属性适用的操作类型,是否为强制操作,高级查找查询中值的字段名称(如果有的话),以及跳过时的影响。
如果你使用 SDK 或发行版,SDK 会为你输出这些属性。 “选择值”部分只适用于你需要覆盖默认值时。 如果你使用直接的OTel路径,所有属性都是手动输出的。 关于如何将它们组装成请求,请参见 集成指南。
Attribute table
所有值都发送为 stringValue - 令牌计数必须为 "42" (not 42);端口计数必须为 "443" (not 443)。
传奇行动。IAs = invoke_agent, ET = execute_tool, CH, = chatOM, = output_messagesAll = 适用于所有操作。
Required legend.
- M: mandatory.
- M*1:仅对具身代理强制(代理拥有自己的Entra 智能体 ID用户账户)。
- M*2:仅在客服人员间电话中强制使用。
-
M*3:仅非根跨必须使用。 根
invoke_agent没有父本。 - O*4:可选,仅在显示状态为错误时才有意义。
- O: optional.
- 不:不要发射。 特工365自动生成。
“RawEventData 字段” 列中指定了一个 JSON 键 CloudAppEvents.RawEventData ,在 验证采集 中,规范的高级狩猎查询会解析它。 空白单元表示该属性今天没有被暴露 CloudAppEvents 。 你仍然应该根据“必需”栏发出它,因为 Agent 365 使用它来进行摄取、父级解析以及 Microsoft Defender 的代理活动视图。 不过,现在你不能直接从 Microsoft Defender 高级狩猎系统查询它。
Note
Agent 365 自动填充静态记录字段(Id, , RecordTypeWorkload, UserType, Version)以及生成的请求和响应 ID。
| Attribute | Applies to | Required | RawEventData field | 如果缺少注释/影响 |
|---|---|---|---|---|
gen_ai.operation.name |
All | M | Operation |
invoke_agent, execute_tool, chat, output_messages之一。 如果缺失或未被识别,Span会下降。 |
microsoft.tenant.id |
All | M | OrganizationId |
网址 {tenantId} 是权威的。 如果你设置了这个值但它不同意,请求会被拒绝(403)。 |
gen_ai.agent.id |
All | M |
TargetAgentId (IA); AgentId (ET,CH) |
通话应用的 应用。 必须匹配URL {agentId} 和认证应用。 错配返回403。 |
gen_ai.agent.name |
All | M |
TargetAgentName (IA); AgentName (ET,CH) |
如果缺少,Defender 和 admin center 会显示原始的 GUID,而不是名字。 |
microsoft.a365.agent.blueprint.id |
All | M |
TargetAgentBlueprintID (IA); AgentBlueprintId (ET,CH) |
蓝图是 应用的。 对于没有蓝图的标准Entra应用,可以重复使用代理的appId。 否则管理中心的蓝图汇总会崩溃。 |
gen_ai.agent.description |
All | O | -- | 管理中心的详细查看中,代理是空白的。 |
gen_ai.agent.type |
All | O |
PlatformTargetAgentType (IA); PlatformAgentType (ET); CopilotEventData.PlatformAgentType (CH) |
一个身份 系统标签,配合 microsoft.a365.agent.platform.id 代理没有Entra注册时的标签。 自由形式文本;选择一个唯一标识你身份系统的值。 当代理有Entra注册时,可以省略。 365号特工自动分类。 不要使用Microsoft保留值(参见选择值)。 |
microsoft.a365.agent.platform.id |
All | O |
PlatformTargetAgentId (IA,也为顶层 AlternateId); PlatformAgentId (ET,CH) |
代理人在你非Entra身份系统中的唯一ID。 Free-form text. 集合为 gen_ai.agent.type。 当代理有Entra注册时,可以省略。 参见 “选取价值”。 |
gen_ai.conversation.id |
All | M |
ConversationId (IA,ET); CopilotEventData.ConversationId / CopilotEventData.ThreadId (CH) |
运行时的主连接键。 没有它,运行不会出现在 Defender 代理活动视图或管理中心。 |
microsoft.channel.name |
All | M |
ChannelName (IA,ET) |
特工奔跑的表面。 使用简短的小写令牌。 目前 Defender 和 Admin Center 过滤器使用的标准值为 msteams 和 outlook。 自定义字符串(例如 web, <your-product-name>)是可以接受的,但在内置的通道滤波器中不支持枢轴。 每个跨度都用同样的数值。 参见 “选取价值”。 |
microsoft.channel.link |
All | O | -- | Channel deep-link. |
microsoft.session.id |
All | O | SessionIdentity |
如果缺少会话,转轴会是空白的。 |
microsoft.session.description |
All | O | -- | Session description. |
microsoft.conversation.item.link |
All | O | -- | 信息深度链接。 |
correlation.id |
All | O | -- | Cross-service tracing. 今天高级狩猎中没有出现。 |
operation.source |
All | O |
InvokeSource (IA) |
SDK或发送遥测数据的服务标识符。 可能是资源属性。 |
client.address |
IA、ET、CH | M |
ClientIP (IA,ET) |
Caller IP. 基于IP的调查如果是空白会被屏蔽。 |
server.address |
IA、ET、CH | M |
ServerAddress (IA,ET) |
端点是你的服务呼叫的。 |
server.port |
IA、ET、CH | M |
ServerPort (IA) |
字符串编码(例如 "443")。 |
user.id |
IA | M | UserKey |
Microsoft Entra 用户调用者的对象 ID。 没有这个,“谁在操控这个特工”就是空白的。 |
user.email |
IA | O | UserId |
来电者的UPN频道。 |
user.name |
IA | O | -- | 显示来电者的姓名。 |
gen_ai.input.messages |
IA, CH | M | -- | 请求有效载荷(JSON字符串)。 捕获用于下游分析,但尚未在高级狩猎中浮出水面。 |
gen_ai.output.messages |
IA、CH、OM | M | -- | 响应负载(JSON 字符串)。 |
gen_ai.execution.type |
IA | O | -- | 其中HumanToAgent一个,Agent2Agent,。 EventToAgent |
microsoft.a365.agent.thought.process |
IA, CH | O | -- | 自由文本推理或思路链。 |
gen_ai.author.app.id |
OM | O | -- | Microsoft Entra 应用 ID 是作者或创建代理的应用程序。 |
gen_ai.tool.name |
ET | M | ToolName |
Tool name. 如果缺少,Defender工具使用视图为空白。 |
gen_ai.tool.type |
ET | M | ToolType |
其中function一个 , Power Platform Connector, MCP Server, APIKnowledge Sourcebing_groundingcode_interpreter。 file_search |
gen_ai.tool.call.id |
ET | M | ToolId |
本次工具调用的标识符。 |
gen_ai.tool.call.arguments |
ET | M | -- | 工具参数(JSON字符串)。 被捕获但尚未在高级狩猎中浮出水面。 |
gen_ai.tool.call.result |
ET | M | -- | 工具结果(JSON字符串)。 |
gen_ai.tool.description |
ET | O | ToolDescription |
Tool description. |
gen_ai.tool.server.name |
ET | O | -- | 工具服务器主机名。 为MCP工具设置此属性。 |
gen_ai.request.model |
CH | M | -- | 型号名称(例如, gpt-4o)。 被捕获但尚未在高级狩猎中浮出水面。 |
gen_ai.provider.name |
CH | M | -- | 提供程序名称(例如,openai)。 |
gen_ai.usage.input_tokens |
CH | O | -- | 输入令牌计数,字符串编码。 |
gen_ai.usage.output_tokens |
CH | O | -- | 输出令牌计数,字符串编码。 |
gen_ai.response.finish_reasons |
CH | O | -- | Finish reasons. |
microsoft.a365.caller.agent.id |
IA | M*2 |
AgentId (IA) |
致电 代理AppId。 特工对特工的必备条件。 |
microsoft.a365.caller.agent.name |
IA | M*2 |
AgentName (IA) |
呼叫代理显示名称。 |
microsoft.a365.caller.agent.blueprint.id |
IA | M*2 | AgentBlueprintId |
正在联系代理人的蓝图 AppId。 具备A2A的必修条件。 |
microsoft.a365.caller.agent.user.id |
IA | M*2 | -- | 呼叫客服用户ID。 |
microsoft.a365.caller.agent.user.email |
IA | M*2 | -- | 呼叫UPN特工。 |
microsoft.a365.caller.agent.platform.id |
IA | N/A | -- | 保留给非Entra备用ID。 |
gen_ai.caller.agent.type |
IA | N/A | -- | 365号特工自动分类。 |
microsoft.agent.user.id |
IA、ET、CH | M*1 |
TargetAgentUserKey (IA); UserKey (ET,CH) |
Microsoft Entra 代理自身用户账户的对象 ID。 AI队友和实体特工必备。 |
microsoft.agent.user.email |
IA、ET、CH | O*1 |
UserId (ET,CH) |
代理用户账户的UPN。 |
span.SpanId |
All | M | OpId |
OTel SDK 会发出这个。 |
span.ParentSpanId |
All | M*3 | ParentId |
仅对非根跨要求;根 invoke_agent 部没有。 |
span.StartTimeUnixNano |
All | M | 顶层 TimeGenerated (也在 CreationTimeRawEventData) |
Unix 时代的纳米作为字符串。 |
span.EndTimeUnixNano |
All | M |
CompletionTime (IA,ET); CopilotEventData.CompletionTime (CH) |
如果缺少,持续时间无法计算。 |
span.Status.Message |
All | O*4 |
ErrorMessage (IA,ET); CopilotEventData.ErrorMessage (CH) |
失败运行的根本原因如果缺失则为空。 |
span.Status.Code |
All | O*4 |
ErrorType (IA); CopilotEventData.ErrorType (CH) |
如果缺少错误类别,则为空白。 |
Note
Agent 365 接受你发出的多个属性,如工具参数和结果、模型参数以及通道深度链接。 下游的 Microsoft Defender 视图使用这些属性,但 Agent 365 尚未将它们作为 CloudAppEvents.RawEventData JSON 密钥公开。 根据“必需”栏设置。 未来发布时可能会加入狩猎载荷。
Important
在(IA)记录中invoke_agent,AgentId、、AgentNameAgentBlueprintId和字段描述呼叫代理,而非被调用代理。 Agent 365 通过 microsoft.a365.caller.agent.* 属性填充它们。 当人工调用你的代理时,省略这些属性,AgentId所以 和 AgentBlueprintId 显示为全零的 GUID(00000000-0000-0000-0000-000000000000),在AgentName审计记录和 Microsoft Purview 中都是空的。 全零值是人类发起运行时的预期值。 要识别调用的代理,使用 TargetAgentId、 TargetAgentName和 TargetAgentBlueprintID。
当你没有自然的明暗时选择
一些必需属性描述了你的代理架构中可能不存在的概念。 如果没有自然值,可以设置以下数值。
不要让必须填写的字段空着。 甚至全零的GUID也能隐藏你的运行,避免面对客户的体验。 此规则仅适用于强制属性。 在人工发起的运行中,这不适用于呼叫代理属性,因为在那种情况下,记录上通常会全部为AgentIdinvoke_agent零。
| 问题/情景 | Field(s) | 设置什么 |
|---|---|---|
| 我的经纪人是标准Entra应用注册(不是基于Entra 智能体 ID蓝图构建的)。 | gen_ai.agent.id |
Entra 应用的 appId。 |
| ↑ 同样的情景 | microsoft.a365.agent.blueprint.id |
重复使用与 gen_ai.agent.id (代理的 appId)相同的值。 该模式要求非空值;当没有蓝图时,重用代理AppId是安全的默认选择。 |
| 我的特工是基于Entra 智能体 ID蓝图构建的——一个或多个特工身份都是基于同一蓝图铸造的。 | gen_ai.agent.id |
代理身份的 appId(实例 appId,不是蓝图的)。 |
| ↑ 同样的情景 | microsoft.a365.agent.blueprint.id |
蓝图是 应用的。 所有从同一蓝图铸造的实例共享此值。 |
| 来电者是人类用户,不是其他代理。 | 全部 microsoft.a365.caller.agent.* 与 gen_ai.caller.agent.* 属性 |
Omit. 只有在特工对特工的情境下才是强制的。 在记录中invoke_agent,呼叫者显示AgentIdAgentBlueprintId的GUID全为零。 用 TargetAgentId 来识别你的代理人。 |
| 在代理对代理中:呼叫代理是一个标准的Entra应用(没有蓝图)。 | microsoft.a365.caller.agent.blueprint.id |
重复使用呼叫代理的 appId。 |
| 我的代理 不是AI团队成员 ——它在租户里没有自己的用户账户。 | 所有 microsoft.agent.user.* 属性 |
Omit. 只有当客服拥有自己的Entra 智能体 ID用户账户时,才是强制的。 |
| 我的经纪人对“会谈”除了单次运行之外,完全没有概念。 | microsoft.session.id |
可选——省略。 如果你想让每次运行都独立一个会话,可以设置为每个运行一个GUID。 |
| 我的经纪人完全没有对话的概念(一次性、无状态)。 | gen_ai.conversation.id |
每次运行都生成一个新的GUID。 该场地为必修;跳过它会移除 Defender 代理活动视图和 Microsoft 365 管理中心 的运行。 |
| 呼叫方没有IP(例如,自动定时触发器)。 | client.address |
使用你控制的稳定占位符(例如)。 "0.0.0.0" 该场地为必修;空值则移除基于IP的调查枢轴的运行。 |
| 代理在过程中运行;没有单独的“服务器”被调用。 | server.address / server.port |
使用运行该代理的机器的主机名(例如) myagent.example.com和终端监听的端口。 即使没有单独的下游服务,也必须这样做。 |
我的 chat span 没有模型代币使用。 |
gen_ai.usage.input_tokens / gen_ai.usage.output_tokens |
可选——省略。 如果你有近似计数,可以发送为 stringValue。 |
| 我的跨度没有任何可报告的错误。 |
span.Status.Message、span.Status.Code |
将OTel状态 OK 设置为(数字代码1),并省略该消息。 管道仅在状态为 Error时才会查询这些字段。 |
| 我的代理使用 非Entra身份系统 (代理没有Entra注册)。 |
microsoft.a365.agent.platform.id 和 gen_ai.agent.type |
每个跨度都设置好。
platform.id 是代理在 你 身份系统中的唯一ID; agent.type 是一个简短标签,用于标识该身份系统。 两者都是自由形式文字——选择适合你系统的内容。
不要使用Microsoft保留的类型值:CustomBuiltAgentsUsingSDK,CopilotStudio,Foundry,DeclarativeAgent,Custom(这些值保留给内部Microsoft曲面)。 你认证的呼叫应用仍然需要Entra注册才能使用这些路由——备用ID对描述的是 目标 代理,而不是呼叫者。 |
我应该投入 microsoft.channel.name什么价值? |
microsoft.channel.name |
特工奔跑的表面。 Defender 和 admin center 会从字面字符串中筛选密钥,所以使用短小、稳定、小写的标记。 如今,规范值为 msteams 和 outlook;常见的面向客户的表面也使用 web、 office、 sharepoint或 <your-product-name>。 选一个数值并坚持使用——工具无法将msteams和Microsoft Teams调和为同一通道。 |
我应该设置吗 gen_ai.agent.type? |
gen_ai.agent.type |
只有当你也在设置 microsoft.a365.agent.platform.id (比如你的代理人没有Entra注册)时才会这样。 两人告诉365号特工该特工来自哪个身份系统。 选择一个能独特识别 你 身份体系的简短标签。
不要使用CustomBuiltAgentsUsingSDK、CopilotStudio、Foundry、DeclarativeAgent或Custom——这些数值保留给内部Microsoft使用。 对于Entra注册代理人,请省略该字段;365号特工补填了它。 |
我应该在跨度上设置什么OTLP kind ? |
span.kind |
使用整数枚举值,而非原始枚举字符串 - 1 (), (INTERNAL), 2 (), SERVER3CLIENT4()。 PRODUCER5CONSUMER Agent 365 接受这些选项,且不会从 kind中推导出客户可见的行为,因此 1 (INTERNAL)是每个区间的安全默认。 如果你想让“kind”反映呼声形状, INTERNAL forinvoke_agent / output_messagesCLIENT和forchat / execute_tool是合理的。 |