快速入门
使用 Claude Agent Skills API 创建文档。
学习如何在 10 分钟内借助 Claude API 和 Agent Skills 创建文档。
本教程演示如何利用 Agent Skills 创建一份 PowerPoint 演示文稿。你将学会如何启用技能、发起第一次请求,并获取生成的文件。
前置条件
- Anthropic API key
- 已安装 Python 3.7+ 或 curl
- 具备基本的 API 请求知识
什么是 Agent Skills?
预置 Agent Skills 为 Claude 提供专业能力,可用于创建文档、分析数据和处理文件。Anthropic 在 API 中提供以下技能:
- PowerPoint (pptx):创建与编辑演示文稿
- Excel (xlsx):创建并分析电子表格
- Word (docx):撰写与修改文档
- PDF (pdf):生成 PDF 文档
Note
想创建自定义 Skill? 请参阅 Agent Skills Cookbook,了解如何构建具备领域专长的自定义技能。
第 1 步:列出可用技能
首先,我们使用 Skills API 列出全部 Anthropic 托管的技能:
import anthropic
client = anthropic.Anthropic()
# 列出 Anthropic 托管的技能
skills = client.beta.skills.list(
source="anthropic",
betas=["skills-2025-10-02"]
)
for skill in skills.data:
print(f"{skill.id}: {skill.display_title}")
import Anthropic from '@anthropic-ai/sdk';
const client = new Anthropic();
// 列出 Anthropic 托管的技能
const skills = await client.beta.skills.list({
source: 'anthropic',
betas: ['skills-2025-10-02']
});
for (const skill of skills.data) {
console.log(`${skill.id}: ${skill.display_title}`);
}
curl "https://api.anthropic.com/v1/skills?source=anthropic" \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "anthropic-beta: skills-2025-10-02"
API 返回 pptx
、xlsx
、docx
与 pdf
四个技能的元数据(名称与描述)。Claude 会在启动阶段加载这些信息,这是 渐进式披露 的第一层:Claude 先知道技能存在,但尚未加载完整指令。
第 2 步:创建演示文稿
接下来使用 PowerPoint 技能创建一份可再生能源主题的演示文稿。我们在 Messages API 中通过 container
参数声明技能:
import anthropic
client = anthropic.Anthropic()
# 使用 PowerPoint 技能创建消息
response = client.beta.messages.create(
model="claude-sonnet-4-5-20250929",
max_tokens=4096,
betas=["code-execution-2025-08-25", "skills-2025-10-02"],
container={
"skills": [
{
"type": "anthropic",
"skill_id": "pptx",
"version": "latest"
}
]
},
messages=[{
"role": "user",
"content": "Create a presentation about renewable energy with 5 slides"
}],
tools=[{
"type": "code_execution_20250825",
"name": "code_execution"
}]
)
print(response.content)
import Anthropic from '@anthropic-ai/sdk';
const client = new Anthropic();
// 使用 PowerPoint 技能创建消息
const response = await client.beta.messages.create({
model: 'claude-sonnet-4-5-20250929',
max_tokens: 4096,
betas: ['code-execution-2025-08-25', 'skills-2025-10-02'],
container: {
skills: [
{
type: 'anthropic',
skill_id: 'pptx',
version: 'latest'
}
]
},
messages: [{
role: 'user',
content: 'Create a presentation about renewable energy with 5 slides'
}],
tools: [{
type: 'code_execution_20250825',
name: 'code_execution'
}]
});
console.log(response.content);
curl https://api.anthropic.com/v1/messages \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "anthropic-beta: code-execution-2025-08-25,skills-2025-10-02" \
-H "content-type: application/json" \
-d '{
"model": "claude-sonnet-4-5-20250929",
"max_tokens": 4096,
"container": {
"skills": [
{
"type": "anthropic",
"skill_id": "pptx",
"version": "latest"
}
]
},
"messages": [{
"role": "user",
"content": "Create a presentation about renewable energy with 5 slides"
}],
"tools": [{
"type": "code_execution_20250825",
"name": "code_execution"
}]
}'
重点参数说明:
container.skills
:声明 Claude 可以使用的技能type: "anthropic"
:表示该技能由 Anthropic 托管skill_id: "pptx"
:指定 PowerPoint 技能version: "latest"
:使用最新版本tools
:启用 code execution 工具(使用技能必须启用)- Beta headers:
code-execution-2025-08-25
与skills-2025-10-02
请求发出后,Claude 会识别这是制作演示文稿的任务,从而加载 PowerPoint 技能的完整指令(渐进式披露的第二层),并执行相关代码生成 PPT。
第 3 步:下载生成文件
演示文稿会在代码执行容器中生成并保存为文件。响应中包含一个带 file_id
的文件引用。我们提取该 ID,通过 Files API 下载:
# 从响应中提取 file_id
file_id = None
for block in response.content:
if block.type == 'tool_use' and block.name == 'code_execution':
# 文件 ID 存在于工具输出中
for result_block in block.content:
if hasattr(result_block, 'file_id'):
file_id = result_block.file_id
break
if file_id:
# 下载文件
file_content = client.beta.files.download(
file_id=file_id,
betas=["files-api-2025-04-14"]
)
# 写入磁盘
with open("renewable_energy.pptx", "wb") as f:
file_content.write_to_file(f.name)
print(f"Presentation saved to renewable_energy.pptx")
// 从响应中提取 file_id
let fileId: string | null = null;
for (const block of response.content) {
if (block.type === 'tool_use' && block.name === 'code_execution') {
// 文件 ID 存在于工具输出中
for (const resultBlock of block.content) {
if ('file_id' in resultBlock) {
fileId = resultBlock.file_id;
break;
}
}
}
}
if (fileId) {
// 下载文件
const fileContent = await client.beta.files.download(fileId, {
betas: ['files-api-2025-04-14']
});
// 写入磁盘
const fs = require('fs');
fs.writeFileSync('renewable_energy.pptx', Buffer.from(await fileContent.arrayBuffer()));
console.log('Presentation saved to renewable_energy.pptx');
}
# 使用 jq 从响应中提取 file_id
FILE_ID=$(echo "$RESPONSE" | jq -r '.content[] | select(.type=="tool_use" and .name=="code_execution") | .content[] | select(.file_id) | .file_id')
# 下载文件
curl "https://api.anthropic.com/v1/files/$FILE_ID/content" \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "anthropic-beta: files-api-2025-04-14" \
--output renewable_energy.pptx
echo "Presentation saved to renewable_energy.pptx"
Note
了解更多文件处理细节,请参考 代码执行工具文档。
尝试更多示例
完成第一个文档后,可以继续以下实验:
创建电子表格
response = client.beta.messages.create(
model="claude-sonnet-4-5-20250929",
max_tokens=4096,
betas=["code-execution-2025-08-25", "skills-2025-10-02"],
container={
"skills": [
{
"type": "anthropic",
"skill_id": "xlsx",
"version": "latest"
}
]
},
messages=[{
"role": "user",
"content": "Create a quarterly sales tracking spreadsheet with sample data"
}],
tools=[{
"type": "code_execution_20250825",
"name": "code_execution"
}]
)
const response = await client.beta.messages.create({
model: 'claude-sonnet-4-5-20250929',
max_tokens: 4096,
betas: ['code-execution-2025-08-25', 'skills-2025-10-02'],
container: {
skills: [
{
type: 'anthropic',
skill_id: 'xlsx',
version: 'latest'
}
]
},
messages: [{
role: 'user',
content: 'Create a quarterly sales tracking spreadsheet with sample data'
}],
tools: [{
type: 'code_execution_20250825',
name: 'code_execution'
}]
});
curl https://api.anthropic.com/v1/messages \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "anthropic-beta: code-execution-2025-08-25,skills-2025-10-02" \
-H "content-type: application/json" \
-d '{
"model": "claude-sonnet-4-5-20250929",
"max_tokens": 4096,
"container": {
"skills": [
{
"type": "anthropic",
"skill_id": "xlsx",
"version": "latest"
}
]
},
"messages": [{
"role": "user",
"content": "Create a quarterly sales tracking spreadsheet with sample data"
}],
"tools": [{
"type": "code_execution_20250825",
"name": "code_execution"
}]
}'
创建 Word 文档
response = client.beta.messages.create(
model="claude-sonnet-4-5-20250929",
max_tokens=4096,
betas=["code-execution-2025-08-25", "skills-2025-10-02"],
container={
"skills": [
{
"type": "anthropic",
"skill_id": "docx",
"version": "latest"
}
]
},
messages=[{
"role": "user",
"content": "Write a 2-page report on the benefits of renewable energy"
}],
tools=[{
"type": "code_execution_20250825",
"name": "code_execution"
}]
)
const response = await client.beta.messages.create({
model: 'claude-sonnet-4-5-20250929',
max_tokens: 4096,
betas: ['code-execution-2025-08-25', 'skills-2025-10-02'],
container: {
skills: [
{
type: 'anthropic',
skill_id: 'docx',
version: 'latest'
}
]
},
messages: [{
role: 'user',
content: 'Write a 2-page report on the benefits of renewable energy'
}],
tools: [{
type: 'code_execution_20250825',
name: 'code_execution'
}]
});
curl https://api.anthropic.com/v1/messages \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "anthropic-beta: code-execution-2025-08-25,skills-2025-10-02" \
-H "content-type: application/json" \
-d '{
"model": "claude-sonnet-4-5-20250929",
"max_tokens": 4096,
"container": {
"skills": [
{
"type": "anthropic",
"skill_id": "docx",
"version": "latest"
}
]
},
"messages": [{
"role": "user",
"content": "Write a 2-page report on the benefits of renewable energy"
}],
"tools": [{
"type": "code_execution_20250825",
"name": "code_execution"
}]
}'
生成 PDF
response = client.beta.messages.create(
model="claude-sonnet-4-5-20250929",
max_tokens=4096,
betas=["code-execution-2025-08-25", "skills-2025-10-02"],
container={
"skills": [
{
"type": "anthropic",
"skill_id": "pdf",
"version": "latest"
}
]
},
messages=[{
"role": "user",
"content": "Generate a PDF invoice template"
}],
tools=[{
"type": "code_execution_20250825",
"name": "code_execution"
}]
)
const response = await client.beta.messages.create({
model: 'claude-sonnet-4-5-20250929',
max_tokens: 4096,
betas: ['code-execution-2025-08-25', 'skills-2025-10-02'],
container: {
skills: [
{
type: 'anthropic',
skill_id: 'pdf',
version: 'latest'
}
]
},
messages: [{
role: 'user',
content: 'Generate a PDF invoice template'
}],
tools: [{
type: 'code_execution_20250825',
name: 'code_execution'
}]
});
curl https://api.anthropic.com/v1/messages \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "anthropic-beta: code-execution-2025-08-25,skills-2025-10-02" \
-H "content-type: application/json" \
-d '{
"model": "claude-sonnet-4-5-20250929",
"max_tokens": 4096,
"container": {
"skills": [
{
"type": "anthropic",
"skill_id": "pdf",
"version": "latest"
}
]
},
"messages": [{
"role": "user",
"content": "Generate a PDF invoice template"
}],
"tools": [{
"type": "code_execution_20250825",
"name": "code_execution"
}]
}'
下一步
现在你已经使用过预置 Agent Skills,可以继续: