内容类型
理解 Agent Client Protocol 中的内容块
内容块代表在 Agent Client Protocol 中流动的可显示信息。它们提供了一种结构化的方式来处理各种面向用户的内容——无论是来自语言模型的文本、用于分析的图像,还是用于上下文的嵌入资源。
内容块出现在:
- 通过
session/prompt发送的用户提示中 - 通过
session/update通知作为消息更新或流式分块报告的语言模型输出中 - 工具调用的进度更新和结果中,包括流式工具调用内容分块
内容类型
Agent Client Protocol 使用与 Model Context Protocol (MCP) 相同的 ContentBlock 结构。
此设计选择使 Agent 能够无缝转发 MCP 工具输出的内容而无需转换。
当接收方可以保留或通用显示时,内容块 type 值可以是自定义或未来变体。自定义内容块类型 必须 以 _ 开头。未知的非下划线内容块类型保留给未来的 ACP 变体。
文本内容
纯文本消息构成大多数交互的基础。
{
"type": "text",
"text": "What's the weather like today?"
}
所有 Agent 必须 在提示中包含时支持文本内容块。
| 字段 | 类型 | 必需 | 描述 |
|---|---|---|---|
text | string | 是 | 要显示的文本内容 |
annotations | Annotations | - | 可选元数据,关于内容应如何使用或显示。 |
图像内容
可以包含图像以提供视觉上下文或分析。
{
"type": "image",
"mimeType": "image/png",
"data": "iVBORw0KGgoAAAANSUhEUgAAAAEAAAAB..."
}
在提示中包含时需要 image 提示能力。
| 字段 | 类型 | 必需 | 描述 |
|---|---|---|---|
data | string | 是 | Base64 编码的图像数据 |
mimeType | string | 是 | 图像的 MIME 类型(例如 “image/png”、“image/jpeg”) |
uri | string | - | 可选的图像来源 URI 引用 |
annotations | Annotations | - | 可选元数据,关于内容应如何使用或显示。 |
音频内容
用于转录或分析的音频数据。
{
"type": "audio",
"mimeType": "audio/wav",
"data": "UklGRiQAAABXQVZFZm10IBAAAAABAAEAQB8AAAB..."
}
在提示中包含时需要 audio 提示能力。
| 字段 | 类型 | 必需 | 描述 |
|---|---|---|---|
data | string | 是 | Base64 编码的音频数据 |
mimeType | string | 是 | 音频的 MIME 类型(例如 “audio/wav”、“audio/mp3”) |
annotations | Annotations | - | 可选元数据,关于内容应如何使用或显示。 |
嵌入资源
直接嵌入消息中的完整资源内容。
{
"type": "resource",
"resource": {
"uri": "file:///home/user/script.py",
"mimeType": "text/x-python",
"text": "def hello():\n print('Hello, world!')"
}
}
这是在提示中包含上下文的首选方式,例如使用 @-提及来引用文件或其他资源。通过将内容直接嵌入请求中,客户端可以包含 Agent 可能无法直接访问的来源的上下文。在提示中包含时需要 embeddedContext 提示能力。
| 字段 | 类型 | 必需 | 描述 |
|---|---|---|---|
resource | EmbeddedResourceResource | 是 | 嵌入的资源内容,可以是: |
| 字段 | 类型 | 必需 | 描述 |
|---|---|---|---|
uri | string | 是 | 标识资源的 URI |
text | string | 是 | 资源的文本内容 |
mimeType | string | - | 可选的文本内容 MIME 类型 |
| 字段 | 类型 | 必需 | 描述 |
|---|---|---|---|
uri | string | 是 | 标识资源的 URI |
blob | string | 是 | Base64 编码的二进制数据 |
mimeType | string | - | 可选的 blob MIME 类型 |
| 字段 | 类型 | 必需 | 描述 |
|---|---|---|---|
annotations | Annotations | - | 可选元数据,关于内容应如何使用或显示。 |
资源链接
对 Agent 可访问资源的引用。
{
"type": "resource_link",
"uri": "file:///home/user/document.pdf",
"name": "document.pdf",
"mimeType": "application/pdf",
"icons": [
{
"src": "https://example.com/icons/pdf.png",
"mimeType": "image/png",
"sizes": ["48x48"]
}
],
"size": 1024000
}
| 字段 | 类型 | 必需 | 描述 |
|---|---|---|---|
uri | string | 是 | 资源的 URI |
name | string | 是 | 资源的人类可读名称 |
mimeType | string | - | 资源的 MIME 类型 |
title | string | - | 可选的资源显示标题 |
description | string | - | 可选的资源内容描述 |
icons | Icon[] | - | 可选的客户端可为此资源显示的图标。每个图标需要 src URI,并可包含 mimeType、sizes 和 theme。 |
size | integer | - | 可选的资源大小(字节) |
annotations | Annotations | - | 可选元数据,关于内容应如何使用或显示。 |