\n\n### 最新文章\n\n- 2026年成为计算机视觉工程师的路线图 使用OpenAI Agents SDK在Python中构建首个AI代理 7个高级Python设计模式供数据科学家使用 公司在说他们想要“AI经验”时实际意味着什么 2026年你应该尝试的5个免费AI编码代理 如何使用ijson在Python中处理大型JSON文件\n\n## 热门文章\n\n- 5个开发者必备的Docker容器\n\n- AI代理技能的5个最佳GitHub仓库\n\n- 7个可替代付费订阅的开源AI工具\n\n- 2026年你应该尝试的5个免费AI编码代理\n\n- AI软件克隆的兴起:为什么REA和ArtCraft正在病毒式传播\n\n- 2026年可使用的5个免费LLM API提供商\n\n- 使用Scikit-LLM进行命名实体识别\n\n- Google开源Harness²:无需重新训练的自我改进AI代理\n\n- 5个适合LLM推理工程的有趣项目\n\n- Claude Haiku 5.5:新功能及如何用于快速、低成本的AI工作流\n\n#content_wrapper end\n\n© 2026\n\nGuiding Tech Media\n\n|\n\n关于\n\n联系我们\n\n广告合作\n\n隐私政策\n\n服务条款\n\n发布于2026年10月26日\n\nblank\n\n不,谢谢!\n\n/.main_wrapper\n\n\n\nnoptimize\n\n/noptimize","speakable":{"@type":"SpeakableSpecification","cssSelector":["[data-speakable='summary']","[data-speakable='takeaways']"]},"author":{"@type":"Organization","name":"KDnuggets","url":"https://www.kdnuggets.com"},"publisher":{"@type":"Organization","name":"traeai","url":"https://www.traeai.com","logo":{"@type":"ImageObject","url":"https://www.traeai.com/icon.svg"},"sameAs":["https://github.com/cq0206/traeai"]},"mainEntityOfPage":"https://www.traeai.com/articles/e5b46acc-344e-4203-b12d-5e764ab794b0"},{"@type":"WebSite","@id":"https://www.traeai.com/#website","url":"https://www.traeai.com","name":"traeai","description":"traeai 为开发者、研究员和内容团队筛选高质量 AI 技术内容,提供摘要、评分、趋势雷达与知识库产出。","inLanguage":["zh-CN","en"],"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://www.traeai.com/?q={search_term_string}"},"query-input":"required name=search_term_string"}},{"@type":"BreadcrumbList","@id":"https://www.traeai.com/articles/e5b46acc-344e-4203-b12d-5e764ab794b0#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"首页","item":"https://www.traeai.com/"},{"@type":"ListItem","position":2,"name":"文章","item":"https://www.traeai.com/brief"},{"@type":"ListItem","position":3,"name":"KDnuggets","item":"https://www.traeai.com/sources"},{"@type":"ListItem","position":4,"name":"Building Your First AI Agent in Python with the OpenAI Agents SDK","item":"https://www.traeai.com/articles/e5b46acc-344e-4203-b12d-5e764ab794b0"}]}]}
KDnuggets

Building Your First AI Agent in Python with the OpenAI Agents SDK

6.9内容质量

TL;DR · AI 摘要

Building Your First AI Agent in Python with the OpenAI Agents SDK - KDnuggets publ: 26-Oct, 2026 - Blog Top Posts About...

核心要点

  • 主题聚焦:Building Your First AI Agent in Python with the
  • 来源:KDnuggets,建议结合原文判断细节。
  • AI 分析暂不可用,本条为保底评分与摘要。
#AI#编程#前端#后端#云计算
打开原文

使用OpenAI Agents SDK在Python中构建你的第一个AI代理 - KDnuggets

publ: 2026年10月26日

  • 博客热门文章
  • 主题 AI 职业建议 计算机视觉 数据工程 数据科学 语言模型 机器学习 MLOps NLP 编程 Python SQL
  • 数据集
  • 活动
  • 资源 快速参考指南 推荐 技术简报
  • 广告

订阅时事通讯

#header end

/ad_wrapper

使用OpenAI Agents SDK在Python中构建你的第一个AI代理

使用OpenAI Agents SDK在Python中构建你的第一个AI代理,通过一个简单的端到端工作流添加网络搜索、Python工具、对话记忆和追踪功能。

作者:

Abid Ali Awan,KDnuggets助理编辑,2026年10月26日,Python

<div class="addthis_native_toolbox"></div>

现在用Python构建AI代理比以往任何时候都更容易。通过OpenAI Agents SDK,你可以创建代理、连接工具、维护对话状态,并运行多步骤工作流,而无需从头开始构建自己的工具调用循环。

在本教程中,我们将构建一个实用的研究代理,该代理可以搜索网络、调用自定义Python函数、记住之前的对话,并决定何时使用每种功能。

什么是AI代理?

标准的大型语言模型(LLM)应用程序通常遵循一个简单的流程:

提示 — 模型 — 响应

模型接收提示,生成答案,然后停止。

AI代理增加了工具和执行循环:

用户 — 代理 — 如果需要 — 工具 — 代理 — 最终响应

代理不再只是生成文本,而是可以决定是否需要先采取行动,例如搜索网络、调用Python函数或从记忆中检索信息。

通过OpenAI Agents SDK,Runner会自动管理这个过程。它向模型发送请求,执行任何请求的工具,将结果传回代理,并继续执行直到代理生成最终答案。

这种能够推理、使用工具并在多步骤中继续工作的能力,使代理区别于基本的LLM应用程序。

设置项目

在构建代理之前,让我们创建一个干净的Python环境并安装所需的一切。

使用uv创建Python项目:

code
mkdir first-ai-agent
cd first-ai-agent

uv init
uv add openai-agents

或者使用pip安装包:

code
pip install openai-agents

设置你的OpenAI API密钥:

code
export OPENAI_API_KEY="your-api-key"

在Windows上,export命令在Git Bash中有效。在命令提示符或PowerShell中,你可以使用:

code
setx OPENAI_API_KEY "your-api-key"

构建你的第一个代理

现在我们可以将几行Python代码转换为一个代理,该代理决定何时需要从网络获取最新信息。

创建main.py:

code
from agents import Agent, Runner, WebSearchTool

agent = Agent(
    name="Research Assistant",
    instructions=(
        "You are a concise research assistant. "
        "Use web search when current information is required."
    ),
    tools=[WebSearchTool()],
)

result = Runner.run_sync(
    agent,
    "What are the latest developments in Python?"
)

print(result.final_output)

运行它:

code
uv run main.py

输出:

code
截至 **2026 年 9 月 14 日**,主要的 Python 开发进展如下:
- **Python 3.14 是最新的稳定功能系列**;最新维护版本是 **3.14.7**。它新增了官方支持的多线程构建、延迟注解评估、模板字符串字面量(`t""`)等功能。
- **Python 3.15 即将发布**:最终版本计划于 **2026 年 10 月 1 日** 发布。

对于新项目,**Python 3.14.7** 目前是默认的最安全选择。

WebSearchTool() 是一个托管的 OpenAI 工具,因此模型可以自行决定何时需要当前信息,而无需你手动调用搜索 API。

例如,我们的运行流程正确识别了 Python 3.14.7 作为当前稳定版本。

添加你自己的 Python 工具

网络搜索很有用,但当代理还能与你自己的 Python 代码交互时,其能力会显著提升。

添加一个计算工具:

code
from agents.decorators import tool

@tool
def calculate_total(
    price: float,
    quantity: int
) -> float:
    """计算订单总成本。"""

    return price * quantity

然后将其交给代理:

code
agent = Agent(
    name="Assistant",
    instructions="协助研究和计算。",
    tools=[
        WebSearchTool(),
        calculate_total,
    ],
)

进行测试:

code
result = Runner.run_sync(
    agent,
    "我需要 14 个每小时 2.49 美元的 GPU,"
    "每小时总成本是多少?"
)

print(result.final_output)
code
14 个 GPU × 2.49 美元/小时 = **每小时 34.86 美元**。

SDK 会自动使用函数名称、参数、类型提示和文档字符串来创建模型可理解的工具模式。你无需手动定义 JSON 模式或编写工具调用循环。

提示:编写清晰的文档字符串,因为它们能帮助模型理解工具的功能及其使用场景。

添加对话记忆

一个实用的代理不应在下一条消息到达时忘记所有内容,因此让我们为其添加对话记忆。

为了让代理具备对话能力,添加一个会话:

code
from agents import SQLiteSession

session = SQLiteSession(
    "user_1",
    "conversations.db"
)

然后将其传递给每次运行:

code
while True:
    message = input("你: ")

    if message.lower() in {"exit", "quit"}:
        break

    result = Runner.run_sync(
        agent,
        message,
        session=session,
    )

    print("代理:", result.final_output)

现在尝试:

第二次请求会自动接收之前的对话内容,因此代理能理解“最新版本”所指的内容。

由于我们使用了基于文件的 SQLite 数据库,重启程序后历史记录也可以持久化保存。

对于更大规模的应用,SDK 还提供了针对 Redis、SQLAlchemy 和 MongoDB 等系统的会话后端。

完整代理的工作原理

到目前为止,所有组件都已整合:

代理决定采取什么行动,Runner 执行代理循环和任何请求的工具,会话则在请求之间保留对话历史。

以下是完整的 main.py 文件:

code
import os
import sys

from agents import Agent, Runner, SQLiteSession, WebSearchTool
from agents.decorators import tool

@tool
def calculate_total(
    price: float,
    quantity: int
) -> float:
    """Calculate the total cost of an order."""

    return price * quantity

def main() -> None:
    if not os.environ.get("OPENAI_API_KEY"):
        sys.exit(
            "Error: set the OPENAI_API_KEY environment variable first."
        )

    agent = Agent(
        name="Assistant",
        instructions="""
        Help the user with research and calculations.
        Use the available tools when necessary.
        """,
        tools=[
            WebSearchTool(),
            calculate_total,
        ],
    )

    session = SQLiteSession(
        "user_1",
        "conversations.db"
    )

    try:
        while True:
            try:
                message = input("You: ")
            except (EOFError, KeyboardInterrupt):
                print()
                break

            command = message.strip().lower()

            if command in {"exit", "quit"}:
                break

            if not command:
                continue

            try:
                result = Runner.run_sync(
                    agent,
                    message,
                    session=session,
                )
            except Exception as exc:
                print(
                    f"Agent error "
                    f"({type(exc).__name__}): {exc}"
                )
                continue

            print("Agent:", result.final_output)

    finally:
        session.close()

if __name__ == "__main__":
    main()

这为我们提供了一个小型但完整的会话代理,具备网络搜索功能、自定义的 Python 工具、持久化记忆、基本的错误处理以及连续的聊天界面。

Agents SDK 默认启用了追踪功能,这在工作流程变得更加复杂时特别有用。追踪功能可让您检查模型调用、工具使用、交接和其他代理运行期间的步骤。

您可以在 OpenAI 仪表板中查看这些追踪信息,以了解代理是如何得出答案的、选择了哪些工具以及问题发生在哪里。这使得追踪在调试工具调用行为和改进代理指令方面特别有用。

最后的想法

构建第一个 AI 代理更多是赋予模型执行有用操作的能力,而不是创建一个复杂的自主系统。

在本指南中,我们从一个简单的代理开始,添加了网络搜索功能,连接了一个自定义的 Python 工具,引入了持久化的对话记忆,并最终在包含追踪和错误处理的完整应用程序中整合了所有内容。

这个基础已经足够构建出令人惊讶的强大工作流程。从这里开始,随着应用程序的增长,您可以逐步添加 API、MCP 服务器、防护措施、交接、更多专用工具和额外的代理。

模式保持不变:为代理提供合适的工具,让它决定何时使用这些工具,而 Agents SDK 则处理执行循环。

从小规模开始,先让一个工作流程变得有用,只有在真正需要更多复杂性时才进行扩展。

Abid Ali Awan(@1abidaliawan)是一位认证的数据科学家,热爱构建机器学习模型。目前,他专注于内容创作,并撰写关于机器学习和数据科学技术的博客文章。Abid拥有技术管理硕士学位和电信工程学士学位。他的愿景是为有心理疾病困扰的学生构建一个基于图神经网络的AI产品。

有关此主题的更多内容

  • 使用Claude Agent SDK入门
  • 构建和部署首个自主代理的7个步骤
  • 将OpenAI Codex转化为强大AI编码代理的5个技巧
  • 使用Docker Agent构建AI代理
  • 构建强大AI代理的5大代理技能市场
  • 使用代理开发工具包构建生产级AI代理

<hr class="grey-line"><br> <div><h3>我们推荐的5门免费课程</h3><br> </div>

WordPress的Mailchimp插件v4.14.1 - https://wordpress.org/plugins/mailchimp-for-wp/

/ WordPress的Mailchimp插件

您可以从这里开始编辑。

如果评论已关闭。

<= 上一篇

下一篇 =>

#content end

<script type="text/javascript">kda_sid_write(kda_sid_n);</script>

最新文章

  • 2026年成为计算机视觉工程师的路线图 使用OpenAI Agents SDK在Python中构建首个AI代理 7个高级Python设计模式供数据科学家使用 公司在说他们想要“AI经验”时实际意味着什么 2026年你应该尝试的5个免费AI编码代理 如何使用ijson在Python中处理大型JSON文件

热门文章

  • 5个开发者必备的Docker容器
  • AI代理技能的5个最佳GitHub仓库
  • 7个可替代付费订阅的开源AI工具
  • 2026年你应该尝试的5个免费AI编码代理
  • AI软件克隆的兴起:为什么REA和ArtCraft正在病毒式传播
  • 2026年可使用的5个免费LLM API提供商
  • 使用Scikit-LLM进行命名实体识别
  • Google开源Harness²:无需重新训练的自我改进AI代理
  • 5个适合LLM推理工程的有趣项目
  • Claude Haiku 5.5:新功能及如何用于快速、低成本的AI工作流

#content_wrapper end

© 2026

Guiding Tech Media

|

关于

联系我们

广告合作

隐私政策

服务条款

发布于2026年10月26日

blank

不,谢谢!

/.main_wrapper

<script defer type="text/javascript" src="https://s7.addthis.com/js/300/addthis_widget.js#pubid=gpsaddthis"></script>

noptimize

/noptimize