AIUnlimited
🌳

AI基础

🌱
AI 种子

从零开始

🌿
AI 萌芽

打好基础

🌳
AI 枝干

付诸实践

🏕️
AI 树冠

深入探索

🌲
AI 森林

精通AI

🔨

AI精通

✏️
AI 草图

从零开始

🪨
AI 雕刻

打好基础

⚒️
AI 匠心

付诸实践

💎
AI 打磨

深入探索

🏆
AI 杰作

精通AI

📘

AI实战

📖
理解开源模型

开源模型的基础知识和资源

🎯
问题到模型任务

将业务问题转化为模型任务

⚡
跑通第一个模型

30分钟快速看到第一个结果

🔧
微调与评测

微调模型并评估性能

🚀
应用系统

构建实际AI应用系统

🎨
生成式AI

探索AIGC的开源模型

🤖
Agent智能体

学习Agent框架和MCP工具

📐
基础补充

LLM基础知识和评测

🎓

Claude 学院

🤖
Claude 101 入门

用 Claude 学习 AI 基础知识

💻
Claude Code 101 入门

让 Claude 成为你的结对编程伙伴

🤝
Claude Cowork 入门

与 Claude 协作完成复杂项目

⚙️
Claude 平台 101

使用 Claude API 构建应用

实验室

已加载 7 个实验
🧬神经网络沙盒🤖AI 还是人类?🥋提示工程道场🏁算法竞速🧠AI 知识挑战🏗️系统设计画布
🎯模拟面试进入实验室→
🚀

职业发展

🚀
面试发射台

开启你的旅程

🌟
行为面试精通

掌握软技能

💻
技术面试

通过编程轮次

🤖
AI与ML面试

ML面试精通

🏆
Offer与未来

拿下最好的Offer

立即开始
AIUnlimited

AI 教育平台

沪ICP备18025655号-11

学习

  • AI基础
  • AI实战
  • Claude学院
  • 实验室
  • 职业发展

社区

  • 关于
  • 常见问题

支持

  • 服务条款
  • 隐私政策
  • 联系我们
AI & 工程学习计划›⚙️ Claude 平台 101›课程›构建你的第一个托管代理
🏗️
Claude 平台 101 • 高级⏱️ 8 分钟阅读

构建你的第一个托管代理

构建你的第一个 managed agent

如果你已经手动构建了 agent 循环,你就知道是怎么回事:while 循环、停止原因 switch、工具执行。这可以工作,对于许多功能来说它实际上是正确的形式。但有时那个循环会运行很长时间——几分钟,甚至可能几小时——跨多个工具,需要保持状态、写入文件以及在网络中断后恢复工作。在那时,你不想在服务器上运行循环。你想委派它。这就是 managed agents 的用途。

什么是 managed agent?

Managed agent 是在 Anthropic 的基础设施上而不是你的服务器上运行的 agent 循环。你描述一次 agent,给它一个工作环境,然后启动一个会话。Anthropic 运行循环,你只需在其工作时流式传输事件。

Managed agents 对每个 API 账户默认启用——不需要特殊访问权限。

四个原语

有四个原语,它们按顺序出现:

  1. Agent — 角色:模型、系统提示和工具集。这在多次运行中可重用。
  2. Environment — agent 运行的地方:云端或自托管、网络配置等。
  3. Session — agent 在特定环境中的单次运行。会话是工作单元。
  4. Events — 流入和流出的消息:agent 的操作、工具调用、结果、回复。

以下是各部分如何配合:你的应用与会话通信,会话驱动环境内的工作,发生的一切通过事件流流回。

注意这里的转变:你不是在运行 while 循环。你是在发送事件和读取事件。

最小的 managed agent

让我们构建最小的 managed agent,做一些有用的事情:在临时驱动器中创建一个文件,计算其行数并报告回来。

对于工具,我们将使用 agent 工具集 — Anthropic 打包的文件、bash 和网页工具。它们对此任务工作正常,因此我们不必自己定义任何工具。

步骤 1:创建 agent

首先,我们创建 agent。注意 tools 数组中定义的 agent 工具集——这是打包的工具集:

import anthropic

client = anthropic.Anthropic()

agent = client.beta.agents.create(
    name="Line Counter",
    model="claude-opus-5",
    system="You are a helpful agent that completes small file tasks.",
    tools=[
        {"type": "agent_toolset_20260401", "default_config": {"enabled": True}}
    ],
)

记住:agent 是可重用的。创建一次并在多个会话中运行它。

步骤 2:创建环境

接下来,环境。这启动容器模板——云端,无限制网络。这是文件实际写入的沙箱:

environment = client.beta.environments.create(
    name="line-counter-env",
    config={
        "type": "cloud",
        "networking": {"type": "unrestricted"},
    },
)

步骤 3:创建会话

然后我们使用 agent 和环境创建会话,加上可选的标题。会话是工作单元:

session = client.beta.sessions.create(
    agent=agent.id,
    environment_id=environment.id,
    title="Count lines demo",
)

步骤 4:打开流,然后发送启动消息

现在我们打开事件流——注意我们 先 做这个。流只传递它打开后发生的事件,因此始终在发送启动消息之前打开它。然后我们将用户消息发送到实时流中:

with client.beta.sessions.events.stream(session_id=session.id) as stream:
    # 流已打开——现在发送启动
    client.beta.sessions.events.send(
        session_id=session.id,
        events=[
            {
                "type": "user.message",
                "content": [
                    {
                        "type": "text",
                        "text": "Create a file in the temp directory, "
                                "count its lines, and report back.",
                    }
                ],
            }
        ],
    )
第 23 课,共 26 课已完成 0%
←工具使用

讨论

登录 参与讨论

注意是 events — 复数。Events 是此 API 中所有内容流动的方式。

步骤 5:消费流

最后,我们消费流。这个演示中有三种重要的事件类型:

  • agent.message — Claude 的文本
  • agent.tool_use — Claude 选择的工具
  • session.status_idle — agent 完成
    for event in stream:
        if event.type == "agent.message":
            for block in event.content:
                if block.type == "text":
                    print(block.text, end="", flush=True)
        elif event.type == "agent.tool_use":
            print(f"\n[tool] {event.name}")
        elif event.type == "session.status_idle":
            print("\n--- Agent done ---")
            break

运行它,输出是 agent 大声推理——实际文本、它选择的工具和最终答案。所有这些都在 Anthropic 的容器中运行,而不是你的。

权衡

通常对于 agents,我们有自己的循环,必须控制一切。使用 managed agents,你委派那个循环、沙箱和可恢复性——只消费流入的事件流。

在生产应用中,这是长时间运行、文件操作、"为我组织这个" 任务的形式。想象一个文件共享清理:managed agent 读取目标目录结构规范,遍历混乱的传入文件夹,将文件移动到正确的项目文件夹,归档重复项和零字节垃圾,并标记它无法自信放置的内容——所有这些都在一个可以针对数千个文件运行几分钟的会话中。

回顾

  • Managed agents 是为你运行的 agent 循环 — 在 Anthropic 的基础设施上而不是你的服务器上。
  • 流程是:创建 agent、创建环境、创建会话、发送事件、流式传输事件。
  • Agent(模型、系统提示、工具集)在多次运行中可重用;session 是单次运行;events 是所有内容流动的方式。
  • 在发送启动消息 之前 打开事件流——它只传递打开后发生的事件。
  • 注意三种事件:agent.message(文本)、agent.tool_use(工具选择)和 session.status_idle(完成)。
  • 当循环运行太久、做太多或需要在中断后恢复时使用 managed agents。当你想要完全控制时使用手动循环。