假设一位团队负责人需要为同一类项目问题准备回复草稿。一份简短的 FAQ 记录了启动日期、负责人和任务存放位置,涉及预算的问题则需要明确指出资料缺失。创建 AI Agent 的起点是一项具体工作、一个明确的完成标准,以及一组测试问题。 本文使用虚构样本数据,提供一份原型与一组验收用例供你运行。
简要回答
创建 AI Agent 的过程是界定一项工作及其完成标准,判断这项工作是否需要 Agent,再用无代码工具或代码库把它搭建出来。为它编写指令,提供这项工作所需范围内的知识与工具,设定停止条件,并准备一组包含资料缺失与超出范围的测试问题。
本文的两条示例路线分别使用 Microsoft Copilot Studio 与 Python 的 OpenAI Agents SDK,依据 2026 年 10 月 16 日核对的官方文档。Copilot Studio 未做实际产品操作,也未核对当前版本的应用界面截图。修改后的 Python 示例在 SDK 0.24.0 下通过了本地构建与查找检查,未执行模型调用。文中的测试表给出的是验收标准,不是实测的模型结果。
本文所用的示例工作
示例围绕虚构项目 Project Atlas 展开。团队成员提出问题,Agent 依据三条 FAQ 起草回复,交由项目负责人审阅后再发送。
这个原型不发送任何内容,也不连接客户数据、公开频道或会写入其他系统的工具。后面的配置与验收用例均围绕这项工作。
| 项目 | 示例内容 |
|---|---|
| 输入 | 团队成员的问题,例如「Project Atlas 什么时候启动?」 |
| 知识 | 启动日期为 2026 年 11 月 2 日(周一),项目由运营负责人负责,任务记录在共享项目看板。 |
| 期望输出 | 一条标注「Draft for review」的回复,内容取自 FAQ,不添加其他事实 |
| FAQ 没有答案时 | 草稿说明缺少该信息,并建议向谁询问 |
| 超出范围 | 发送消息、猜测日期或数字、回答其他项目的问题 |
通向可测试原型的七个步骤
两条路线均按以下步骤展开。第 7 步列出需要运行的验收用例,完成前面的配置还不代表原型已通过这些测试。
第 1 步 界定工作、使用者与完成标准
写下谁会使用这个 Agent、会交给它什么,以及希望收到什么。Project Atlas 的使用者是项目负责人,输入是一个问题,交付结果是一段供负责人审阅或修改的简短草稿。
把完成标准写下来,测试时就有对照依据。此处的完成标准是草稿依据 FAQ 作答,在 FAQ 缺少答案时明确说明,并带有「Draft for review」标记。
第 2 步 判断这项工作需要多少复杂度
Anthropic 的工程指南建议从简单方案起步,按工作需要增加复杂度。它把工作流与 Agent 区分开来。工作流的步骤按固定代码路径执行,Agent 则由模型自行决定步骤与工具调用。这组分类供设计参考,不同产品对这两个词的使用方式并不一致。
处理 Project Atlas 的问题时,也能把 FAQ 直接写进提示词,用一次模型调用起草回复。把 FAQ 移入查找工具之后,便有了一个演示工具调用的小型 Agent 示例,由模型决定何时查找资料。若单次调用已经能为实际工作提供合格草稿,沿用这个方案即可。
第 3 步 选择搭建路线并核对前提
选择与团队技能和账号相匹配的路线。下表列出各条路线在动工前需要具备的条件。
| 无代码路线 Copilot Studio | 代码路线 OpenAI Agents SDK(Python) | |
|---|---|---|
| 起点 | 用自然语言描述 Agent,再修改 Copilot Studio 生成的内容 | 安装 openai-agents 包,编写一段简短脚本 |
| 账号前提 | Learn 快速入门介绍 standard harness,适用于独立的 Copilot Studio 订阅;部分 Teams 套餐使用另一条 classic agent 路径 | Python 环境、OpenAI API 账号及密钥、可访问的支持工具调用的模型,以及适用的 API 计费安排 |
| 测试 | Copilot Studio 内的测试聊天面板 | 在本地运行脚本;在可用的前提下通过 trace 查看工具调用 |
| 共享 | 所用许可证需允许发布;试用许可证允许创建与测试,不允许发布 | 部署、工具、状态存储与审批由团队自己的应用承担 |
OpenAI 另外提供可视化画布 Agent Builder。OpenAI 于 2026 年 6 月 3 日宣布将其弃用,其文档载明计划于 2026 年 11 月 30 日关闭,因此本文不使用该产品。
第 4 步 编写指令
指令告诉 Agent 能读什么、要产出什么、资料缺失时如何处理,以及不该做什么。Project Atlas 的指令如下。
依据提供的 FAQ 事实,为 Project Atlas 准备供审阅的文字。遇到缺失的信息,说明缺什么,并建议向 FAQ 中标明的负责人询问;对其他项目的问题予以回绝。说明发送、修改或删除内容的请求超出本原型的范围,并且不声称执行过这些动作。每次回复均标注「Draft for review」。
在 Copilot Studio 中,所引用的 Learn 快速入门使用 standard harness,并要求关闭 New experience。该页还指出,自然语言创建在部分环境中不可用。对于支持该路线的环境,输入一段不超过 1,024 字符的描述,例如「Prepare Project Atlas FAQ reply drafts for the project lead to review.」。
Copilot Studio 随后会生成名称、描述与指令,并建议触发器、知识源与工具。使用者决定是否采用这些建议,建议不会保留到当前会话之外。Agent 创建完成后,将生成的指令修改为上面的文字。
在 SDK 中,把同样的工作要求写入 Agent 的 instructions 字段,并按第 5 步所示加入查找主题。
第 5 步 加入所需范围内的知识与工具
让 Agent 读取这项工作需要的内容,并且不赋予任何会写入别处的权限。Project Atlas 需要读取三条 FAQ 条目,不需要任何发送、修改或删除的工具。
在 Copilot Studio 中,把表中三条虚构 FAQ 条目放入一个本地文本文件。Microsoft 的文件知识指南支持 .txt 文件。操作方式为打开 Agent,从 Overview 或 Knowledge 选择 Add knowledge,上传该文件,填写名称与描述,再选择 Add to agent。此知识源类型要求环境中启用 Dataverse search,若不可用,请管理员开启。
测试之前请一并核对其他知识与工具设置,指令表达的是预期行为,替代不了访问控制。
在 SDK 中,用一个函数工具查找 FAQ 条目。下例沿用 OpenAI Agents SDK 快速入门的写法。
import asyncio
import os
from agents import Agent, MaxTurnsExceeded, Runner, function_tool
# Fictional, non-public sample data for testing.
PROJECT_FAQ = {
"kickoff": "Project Atlas kicks off on Monday, November 2, 2026.",
"owner": "The project owner is the operations lead.",
"tools": "The team tracks tasks in the shared project board.",
}
def read_faq(topic: str) -> str:
return PROJECT_FAQ.get(topic.strip().lower(), "NO_ENTRY")
@function_tool
def lookup_faq(topic: str) -> str:
"""Read a Project Atlas FAQ entry.
Args:
topic: Use kickoff for the start date, owner for the project owner,
or tools for the task location. Other topics return NO_ENTRY.
"""
return read_faq(topic)
agent = Agent(
name="Project FAQ drafter",
model=os.environ["OPENAI_MODEL"],
instructions=(
"Prepare text for review about Project Atlas. Use lookup_faq to get facts. "
"The topics are kickoff (start date), owner (project owner), and tools "
"(task location). Other topics return NO_ENTRY. "
"Answer from tool results without adding facts. For missing information, "
"state what is missing, look up owner, and refer the question there. "
"Decline questions about other projects. For requests to send, edit, "
"or delete content, explain that you prepare drafts for review. "
"Do not claim to perform those actions. "
"Label each response 'Draft for review'."
),
tools=[lookup_faq],
)
async def main() -> None:
try:
result = await Runner.run(
agent,
"When does Project Atlas start, and what is the budget?",
max_turns=8,
)
except MaxTurnsExceeded:
print("Stopped at the turn limit; review before retrying.")
return
print(result.final_output)
if __name__ == "__main__":
asyncio.run(main())将代码保存为 project_faq_agent.py。在 Python 虚拟环境中用 python -m pip install openai-agents==0.24.0 安装已核对的版本。按官方 API 设置指引在本地设置 OPENAI_API_KEY,并把 OPENAI_MODEL 设为你的 API 项目能够访问的支持工具调用的模型标识。之后运行 python project_faq_agent.py。请勿把密钥写入代码、截图或共享文档。
SDK 0.24.0 下的本地检查确认了修改后的脚本能够加载、Agent 与工具能够构建,以及查找对样本条目返回对应内容、对未收录主题返回 NO_ENTRY。这些检查未执行 Runner.run,未向 API 认证,也未测试模型的工具选择与作答。下文的期望输出仍属于待核对的目标。
第 6 步 设定停止条件与检查点
确定 Agent 在哪里停下,以及团队成员在哪里接手。Anthropic 的指南描述了 Agent 在检查点暂停以等待人工反馈,并使用迭代次数上限一类的停止条件。对 Project Atlas 而言,项目负责人先审阅草稿,再自行发送。这项审阅由团队按约定执行,给回复加上草稿标签不会让脚本自动暂停等待批准。
脚本用 max_turns=8 限制模型轮次。当运行超过设定轮数、SDK 抛出 MaxTurnsExceeded 时,脚本输出待审阅提示并停止。这个参数不限制运行时间或费用。
OpenAI 的文档区分了自动 guardrail 与审批中断。审批中断让运行暂停,供团队成员或策略批准或拒绝敏感动作,随后由应用恢复保存的运行;并行 guardrail 则可能在检查尚未结束时便启动工作。本示例没有配置这两项机制,提供的是读取样本数据的查找工具。若你加入带外部影响的工具,请配置它的审批要求,并测试应用如何暂停、存储与恢复运行。
第 7 步 用受控用例测试并迭代
在一组固定的小规模用例上运行 Agent,并把每次结果与完成标准对照。把实际输出记录在期望结果旁边。
| 用例 | 输入 | 期望结果 |
|---|---|---|
| 正常 | 「Project Atlas 什么时候启动?」 | 草稿给出 2026 年 11 月 2 日(周一),并带有审阅标记 |
| 资料缺失 | 「预算多少?」 | 草稿说明 FAQ 中没有预算条目,并建议向 owner 条目指明的运营负责人询问 |
| 混合 | 「什么时候启动?预算多少?」 | 草稿回答启动日期,并标明预算缺失 |
| 超出范围 | 「把我们的启动日期邮件发给客户。」 | 草稿不声称发送过任何内容,并说明它准备的是供审阅的文字 |
在 Copilot Studio 中,于测试聊天面板运行这些问题,再调整指令并重新运行;Learn 快速入门描述的是同一套测试、修改、复测循环。在 SDK 中,逐一替换传给 Runner.run 的输入并查看回答,在可用的前提下用 trace 检查工具调用情况。通过这四个用例,说明原型能够处理它们,无法说明其他分支、权限或现实问题也能得到相同结果。
把原型带入团队工作
原型通过测试用例之后,接下来的问题与团队有关,包括谁负责 Agent 的工作、草稿在哪里交付审阅,以及谁授权带外部影响的动作。本文由 Syfo 发布,本节给出组织这类工作的一种方式。本节为可选内容,不描述如何把 SDK 或 Copilot Studio 的 Agent 接入 Syfo。
Syfo 为团队成员与具名 Agent 提供共享频道,Agent 在任务讨论串中发布进展、来源与交付物。任务看板显示每项任务由哪个 Agent 或哪位成员负责,以及任务状态、关联交付物与下一步动作。团队据此查看任务负责人、进展与待审阅的交付物。
授权一项对外动作与批准一项交付物是两个步骤。对于平台支持、且由团队指定为高风险、不可逆或对外的动作,由团队或获得授权的 Agent 准备 Action Card,有权限的成员审阅后以本人身份提交该动作。其他已授权的工作,由 Agent 在团队的权限与指令范围内执行。
FAQ(问题与回答)
搭建一个 AI Agent 要花多少钱?
费用取决于路线。Copilot Studio 的使用取决于团队的 Microsoft 许可,所用许可证需允许发布。SDK 路线的费用来自 OpenAI API 用量与团队自行承担的托管。规划团队使用之前,请查阅两条路线当前的定价页。
能免费创建 AI Agent 吗?
创建、测试与发布的许可条件需要分别核对。Copilot Studio 试用许可证允许创建 Agent 并在测试聊天面板中测试,但不允许发布。安装 Agents SDK 包与运行模型是两个步骤。模型调用经由 OpenAI API 计费,遵循账号适用的 API 计费安排,安装包本身并不带来免费的模型访问权限。
不写代码能搭建 AI Agent 吗?
Copilot Studio 允许使用者用自然语言描述 Agent、修改生成的指令、加入知识源,并在聊天面板中测试。之后把 Agent 共享给团队成员,则取决于发布权限、渠道访问、认证与组织设置。
搭好之后团队就能用吗?
一个可运行的原型是起点。团队使用还要加上访问权限、部署、维护,以及为 Agent 的输出指定明确的负责人。与实际使用它的成员一起跑更大范围的测试用例,并确定谁审阅草稿、谁批准带外部影响的动作。
资料来源
无代码路线依据 Microsoft Learn 的 Copilot Studio 快速入门与文件知识指南。代码路线依据 OpenAI 的 Agents SDK 指南、Agents SDK 快速入门与 guardrails 与审批指南。API 费用见 API 定价页,其访问权限与计费安排请按你所在项目核对。Agent Builder 的状态依据 OpenAI 的 Agent Builder 页面与弃用清单。
第 2 步与第 6 步的设计原则来自 Anthropic 的 Building effective agents,该文说明其工具示例自 2024 年 12 月起已有变化,本文取其原则,不采用其工具清单。Syfo 的任务记录与指定动作审阅,参见其任务、交付物与审批文档。