最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python調(diào)用OpenAI?Agents?SDK打造一個(gè)多智能體系統(tǒng)

 更新時(shí)間:2026年04月21日 08:30:56   作者:Halcyon.平安  
還在手搓Agent通信邏輯嗎,OpenAI官方SDK讓你用純Python代碼構(gòu)建生產(chǎn)級(jí)多智能體系統(tǒng),本文從零到一,基于Python調(diào)用OpenAI?Agents?SDK打造你的第一個(gè)多智能體系統(tǒng),需要的朋友可以參考下

引言

2025年初,OpenAI發(fā)布了 Agents SDKopenai-agents),一個(gè)專為Python開發(fā)者設(shè)計(jì)的多智能體框架。與LangGraph的圖抽象、CrewAI的角色編排不同,Agents SDK走了一條更直覺的路線:純Python、零DSL、開箱即用。

截至目前,該SDK在GitHub上已獲得超過 23,000 Stars,版本迭代至 v0.14.2,成為2026年增長(zhǎng)最快的Agent框架之一。

本文將帶你從零開始,用Agents SDK構(gòu)建一個(gè)完整的智能購物助手——包含路由分診、專家協(xié)作、安全護(hù)欄、運(yùn)行追蹤等完整功能。

一、核心架構(gòu)概覽

Agents SDK 的九大核心概念

在開始編碼之前,先理解SDK的設(shè)計(jì)哲學(xué)。Agents SDK圍繞9個(gè)核心概念構(gòu)建:

三種多智能體編排模式

SDK提供了三種編排多Agent的模式,適用于不同場(chǎng)景:

模式適用場(chǎng)景特點(diǎn)控制權(quán)
Manager需要匯總多個(gè)Agent結(jié)果中心化協(xié)調(diào)Manager持有
Handoff專家應(yīng)直接面對(duì)用戶去中心化交接轉(zhuǎn)移給專家
Code Orchestration確定性流程控制Python代碼編排開發(fā)者控制

二、環(huán)境搭建

安裝SDK

# 創(chuàng)建虛擬環(huán)境
python -m venv .venv
source .venv/bin/activate  # Windows: .venv\Scripts\activate
# 安裝 Agents SDK
pip install openai-agents
# 驗(yàn)證安裝
python -c "import agents; print(agents.__version__)"
# 輸出: 0.14.2

配置API Key

import os
# 方式1: 環(huán)境變量
os.environ["OPENAI_API_KEY"] = "sk-your-api-key-here"
# 方式2: .env 文件(推薦)
# 在項(xiàng)目根目錄創(chuàng)建 .env 文件:
# OPENAI_API_KEY=sk-your-api-key-here

最簡(jiǎn)示例:Hello Agent

在深入復(fù)雜場(chǎng)景之前,先跑通最簡(jiǎn)單的例子:

import asyncio
from agents import Agent, Runner

async def main():
    # 創(chuàng)建一個(gè)Agent —— 就這么簡(jiǎn)單
    agent = Agent(
        name="Haiku Master",
        instructions="你只使用俳句格式回答問題。俳句是5-7-5音節(jié)的三行詩。",
    )

    # 運(yùn)行Agent
    result = await Runner.run(agent, "用Python寫遞歸是什么感覺?")
    print(result.final_output)
    # 輸出:
    # 函數(shù)調(diào)自身,
    # 分解問題為小塊,
    # 無盡由設(shè)計(jì)。

if __name__ == "__main__":
    asyncio.run(main)

Agent執(zhí)行循環(huán):Runner.run() 啟動(dòng)后,SDK會(huì)執(zhí)行一個(gè)循環(huán)——調(diào)用LLM、處理工具調(diào)用、處理交接,直到LLM產(chǎn)生最終輸出或達(dá)到最大輪次。

三、實(shí)戰(zhàn):構(gòu)建智能購物助手

現(xiàn)在進(jìn)入正題。我們將構(gòu)建一個(gè)包含以下功能的智能購物助手:

Step 1: 定義共享上下文

所有Agent共享同一個(gè)上下文對(duì)象,用于傳遞狀態(tài):

from pydantic import BaseModel

class ShoppingContext(BaseModel):
    """購物助手的共享上下文"""
    customer_id: str | None = None
    customer_name: str | None = None
    order_id: str | None = None
    cart_items: list[str] = []
    is_premium_user: bool = False

Step 2: 定義工具(Tools)

工具是Agent的"手"——讓它能與外部世界交互:

import random
from agents import RunContextWrapper, function_tool

# ===== 商品相關(guān)工具 =====

@function_tool
async def search_products(query: str) -> str:
    """搜索商品。query是搜索關(guān)鍵詞。"""
    # 實(shí)際項(xiàng)目中這里連接搜索引擎或數(shù)據(jù)庫
    mock_products = {
        "手機(jī)": "iPhone 16 Pro (¥8,999), Samsung S26 (¥6,999), Xiaomi 16 (¥3,499)",
        "筆記本": "MacBook Pro M5 (¥14,999), ThinkPad X1 (¥9,999), Surface Laptop (¥8,999)",
        "耳機(jī)": "AirPods Pro 3 (¥1,899), Sony WH-1000XM6 (¥2,499), Bose QC Ultra (¥2,299)",
    }
    for keyword, products in mock_products.items():
        if keyword in query:
            return f"找到以下商品: {products}"
    return f"未找到與 '{query}' 相關(guān)的商品,試試其他關(guān)鍵詞?"


@function_tool
async def get_product_detail(product_name: str) -> str:
    """獲取商品詳情。product_name是商品名稱。"""
    details = {
        "iPhone 16 Pro": "A20芯片 | 6.3英寸 | 4800萬像素 | 256GB起 | 電池續(xù)航30小時(shí)",
        "MacBook Pro M5": "M5芯片 | 16英寸 | 36GB內(nèi)存 | 512GB SSD | 續(xù)航24小時(shí)",
    }
    return details.get(product_name, f"商品 '{product_name}' 詳情: 評(píng)分4.8 | 月銷10000+ | 好評(píng)率98%")


@function_tool
async def add_to_cart(
    context: RunContextWrapper[ShoppingContext],
    product_name: str,
    quantity: int = 1
) -> str:
    """將商品加入購物車。"""
    context.context.cart_items.append(f"{product_name} x{quantity}")
    return (f"已將 {product_name} x{quantity} 加入購物車。"
            f"當(dāng)前購物車: {', '.join(context.context.cart_items)}")


# ===== 訂單相關(guān)工具 =====

@function_tool
async def check_order_status(
    context: RunContextWrapper[ShoppingContext],
    order_id: str
) -> str:
    """查詢訂單狀態(tài)。order_id是訂單號(hào)。"""
    context.context.order_id = order_id
    statuses = ["已發(fā)貨", "運(yùn)輸中", "派送中", "已簽收"]
    status = random.choice(statuses)
    return f"訂單 {order_id} 狀態(tài): {status}。預(yù)計(jì)到達(dá): 明天下午。"


@function_tool
async def process_refund(
    context: RunContextWrapper[ShoppingContext],
    order_id: str,
    reason: str
) -> str:
    """處理退款。order_id是訂單號(hào),reason是退款原因。"""
    if context.context.is_premium_user:
        return f"VIP用戶優(yōu)先退款已提交!訂單 {order_id},原因: {reason}。退款將在1-2個(gè)工作日內(nèi)到賬。"
    return f"退款已提交!訂單 {order_id},原因: {reason}。退款將在3-5個(gè)工作日內(nèi)到賬。"


@function_tool
async def track_package(order_id: str) -> str:
    """追蹤包裹物流。"""
    locations = ["北京分揀中心", "上海轉(zhuǎn)運(yùn)站", "杭州配送站", "客戶所在城市"]
    location = random.choice(locations)
    return f"訂單 {order_id} 最新位置: {location}。更新時(shí)間: 10分鐘前。"

Step 3: 定義安全護(hù)欄(Guardrails)

護(hù)欄是Agent的"安全帶"——防止越界行為:

from pydantic import BaseModel, Field
from agents import (
    GuardrailFunctionOutput, InputGuardrailTripwireTriggered,
    RunContextWrapper, TResponseInputItem, Agent, Runner,
    input_guardrail,
)

# ===== 輸入護(hù)欄: 檢查是否為購物相關(guān)問題 =====

class RelevanceCheck(BaseModel):
    is_shopping_related: bool = Field(description="是否與購物/商品/訂單相關(guān)")
    reasoning: str = Field(description="判斷理由")

guardrail_agent = Agent(
    name="Relevance Guard",
    instructions="""判斷用戶輸入是否與以下領(lǐng)域相關(guān):
    - 商品搜索與推薦
    - 訂單查詢與物流
    - 退款與售后
    - 購物咨詢
    如果完全無關(guān),標(biāo)記為不相關(guān)。""",
    output_type=RelevanceCheck,
)

@input_guardrail
async def shopping_relevance_guardrail(
    ctx: RunContextWrapper[None],
    agent: Agent,
    input: str | list[TResponseInputItem]
) -> GuardrailFunctionOutput:
    """確保Agent只處理購物相關(guān)問題"""
    result = await Runner.run(guardrail_agent, input, context=ctx.context)
    check = result.final_output_as(RelevanceCheck)
    return GuardrailFunctionOutput(
        output_info=check.model_dump(),
        tripwire_triggered=not check.is_shopping_related,
    )

Step 4: 創(chuàng)建三個(gè)核心Agent

from agents import Agent, handoff
from agents.extensions.handoff_prompt import RECOMMENDED_PROMPT_PREFIX

# ===== Agent 1: 商品專家 =====

product_agent = Agent[ShoppingContext](
    name="Product Specialist",
    handoff_description="處理商品搜索、推薦、詳情查詢和加購。",
    instructions=f"""{RECOMMENDED_PROMPT_PREFIX}
你是一個(gè)熱情的商品專家,名叫小商。

## 你的職責(zé)
- 幫助用戶搜索和推薦商品
- 提供商品詳細(xì)信息
- 協(xié)助用戶將商品加入購物車

## 工作流程
1. 理解用戶的購物需求
2. 使用 search_products 搜索相關(guān)商品
3. 如果用戶想了解某個(gè)商品,使用 get_product_detail
4. 如果用戶決定購買,使用 add_to_cart

## 規(guī)則
- 推薦時(shí)優(yōu)先考慮性價(jià)比
- 如果用戶的需求超出了商品范圍(如查訂單、退款),交接給訂單專家
- 保持友好專業(yè)的語氣
""",
    tools=[search_products, get_product_detail, add_to_cart],
)

# ===== Agent 2: 訂單專家 =====

order_agent = Agent[ShoppingContext](
    name="Order Specialist",
    handoff_description="處理訂單查詢、物流追蹤和退款處理。",
    instructions=f"""{RECOMMENDED_PROMPT_PREFIX}
你是一個(gè)耐心的訂單專家,名叫小單。

## 你的職責(zé)
- 查詢訂單狀態(tài)
- 追蹤包裹物流
- 處理退款請(qǐng)求

## 工作流程
1. 確認(rèn)用戶的訂單號(hào)(如果沒有,先詢問)
2. 根據(jù)需求使用對(duì)應(yīng)工具:
   - 查狀態(tài) → check_order_status
   - 查物流 → track_package
   - 退款 → process_refund

## 規(guī)則
- 處理退款時(shí)務(wù)必確認(rèn)訂單號(hào)和退款原因
- VIP用戶享有優(yōu)先退款
- 如果用戶想繼續(xù)購物,交接給商品專家
- 保持耐心和同理心
""",
    tools=[check_order_status, track_package, process_refund],
)

# ===== Agent 3: 分診路由 =====

triage_agent = Agent[ShoppingContext](
    name="Shopping Triage",
    instructions=f"""{RECOMMENDED_PROMPT_PREFIX}
你是一個(gè)智能購物助手的接待員。

## 你的職責(zé)
判斷用戶的需求類型,將其路由到正確的專家:
- 商品搜索/推薦/購買 → 商品專家 (Product Specialist)
- 訂單查詢/物流/退款 → 訂單專家 (Order Specialist)

## 規(guī)則
- 簡(jiǎn)單打招呼由你自己回復(fù)
- 無法判斷時(shí),優(yōu)先交給商品專家
- 用一句話簡(jiǎn)單介紹自己后立即路由
""",
    input_guardrails=[shopping_relevance_guardrail],
    handoffs=[
        handoff(agent=product_agent),
        handoff(agent=order_agent),
    ],
)

# 允許專家之間互相交接
product_agent.handoffs.append(handoff(agent=order_agent))
order_agent.handoffs.append(handoff(agent=product_agent))
# 允許專家回到分診
product_agent.handoffs.append(handoff(agent=triage_agent))
order_agent.handoffs.append(handoff(agent=triage_agent))

Step 5: 主循環(huán) + 運(yùn)行追蹤

import uuid
from agents import (
    Runner, trace, HandoffOutputItem, ItemHelpers,
    MessageOutputItem, ToolCallItem, ToolCallOutputItem,
)

async def main():
    current_agent = triage_agent
    input_items: list = []
    context = ShoppingContext(is_premium_user=True)  # 模擬VIP用戶
    conversation_id = uuid.uuid4().hex[:16]

    print("=" * 60)
    print("   歡迎使用智能購物助手!")
    print("   輸入 'quit' / 'exit' / 'bye' 退出")
    print("=" * 60)

    while True:
        user_input = input("\n?? 你: ").strip()
        if not user_input:
            continue
        if user_input.lower() in ("quit", "exit", "bye"):
            print("?? 感謝使用,再見!")
            break

        input_items.append({"content": user_input, "role": "user"})

        try:
            with trace("Shopping Assistant", group_id=conversation_id):
                result = await Runner.run(
                    current_agent,
                    input_items,
                    context=context,
                )

                # 打印詳細(xì)的執(zhí)行過程
                for new_item in result.new_items:
                    agent_name = new_item.agent.name

                    if isinstance(new_item, MessageOutputItem):
                        text = ItemHelpers.text_message_output(new_item)
                        if text:
                            print(f"\n?? [{agent_name}]: {text}")

                    elif isinstance(new_item, HandoffOutputItem):
                        print(f"  ?? [交接] {new_item.source_agent.name} "
                              f"→ {new_item.target_agent.name}")

                    elif isinstance(new_item, ToolCallItem):
                        print(f"  ?? [{agent_name}]: 正在調(diào)用工具...")

                    elif isinstance(new_item, ToolCallOutputItem):
                        print(f"  ?? [工具結(jié)果]: {str(new_item.output)[:100]}...")

                input_items = result.to_input_list()
                current_agent = result.last_agent

        except InputGuardrailTripwireTriggered as e:
            message = "抱歉,我只能幫助處理購物相關(guān)問題(商品、訂單、退款等)。請(qǐng)換個(gè)問題試試?"
            print(f"\n??? [護(hù)欄觸發(fā)]: {message}")
            input_items.append({"role": "assistant", "content": message})


if __name__ == "__main__":
    asyncio.run(main())

運(yùn)行效果演示

============================================================
   歡迎使用智能購物助手!
   輸入 'quit' / 'exit' / 'bye' 退出
============================================================

?? 你: 你好,我想買個(gè)手機(jī)

?? [Shopping Triage]: 你好!我是智能購物助手,馬上為你找商品專家!
  ?? [交接] Shopping Triage → Product Specialist

?? [Product Specialist]: 你好!我是商品專家小商 ?? 來幫你挑手機(jī)!
  ?? [Product Specialist]: 正在調(diào)用工具...
  ?? [工具結(jié)果]: 找到以下商品: iPhone 16 Pro (¥8,999), Samsung S26 (¥6,999), Xiaomi 16 (¥3,499)...

?? [Product Specialist]: 我為你找到了幾款熱門手機(jī):
- iPhone 16 Pro - ¥8,999
- Samsung S26 - ¥6,999
- Xiaomi 16 - ¥3,499

你預(yù)算大概多少?我可以進(jìn)一步推薦!

?? 你: iPhone 16 Pro 怎么樣?

  ?? [Product Specialist]: 正在調(diào)用工具...
  ?? [工具結(jié)果]: A20芯片 | 6.3英寸 | 4800萬像素 | 256GB起 | 電池續(xù)航30小時(shí)

?? [Product Specialist]: iPhone 16 Pro 是今年的旗艦款,配置非常強(qiáng):
- A20芯片,性能提升40%
- 4800萬像素主攝
- 電池續(xù)航長(zhǎng)達(dá)30小時(shí)

要加入購物車嗎?

?? 你: 好的,加一輛

  ?? [Product Specialist]: 正在調(diào)用工具...
  ?? [工具結(jié)果]: 已將 iPhone 16 Pro x1 加入購物車...
?? [Product Specialist]: 已加入購物車!還需要?jiǎng)e的嗎?或者我可以幫你查一下訂單?

?? 你: 幫我查一下我之前的訂單 20260315001

  ?? [交接] Product Specialist → Order Specialist
  ?? [Order Specialist]: 正在調(diào)用工具...
  ?? [工具結(jié)果]: 訂單 20260315001 狀態(tài): 運(yùn)輸中。預(yù)計(jì)到達(dá): 明天下午。

?? [Order Specialist]: 你的訂單 20260315001 正在運(yùn)輸中,預(yù)計(jì)明天下午就能收到啦!

?? 你: 天氣怎么樣?

??? [護(hù)欄觸發(fā)]: 抱歉,我只能幫助處理購物相關(guān)問題(商品、訂單、退款等)。請(qǐng)換個(gè)問題試試?

四、深入理解:Agent執(zhí)行流程

Runner的執(zhí)行循環(huán)

當(dāng)你調(diào)用 Runner.run() 時(shí),SDK內(nèi)部執(zhí)行如下循環(huán):

護(hù)欄的執(zhí)行時(shí)機(jī)

護(hù)欄不是在所有Agent上都運(yùn)行,而是有明確的邊界:

護(hù)欄類型執(zhí)行時(shí)機(jī)觸發(fā)效果
Input Guardrail鏈中首個(gè)Agent收到輸入時(shí)拋出異常,阻止執(zhí)行
Output Guardrail最終Agent產(chǎn)生輸出時(shí)拋出異常,阻止輸出
Tool Guardrail每次函數(shù)工具調(diào)用時(shí)拒絕內(nèi)容或拋出異常

五、進(jìn)階:Agents as Tools 模式

Handoff模式適合"接力賽"場(chǎng)景,但當(dāng)你需要一個(gè)Agent匯總多個(gè)Agent的結(jié)果時(shí),應(yīng)該使用 Agents as Tools 模式:

# ===== Agents as Tools 模式 =====
# 場(chǎng)景: 內(nèi)容創(chuàng)作流水線 —— 一個(gè)Manager Agent協(xié)調(diào)調(diào)研、寫作、審核

from agents import Agent, Runner, trace

# 專家Agent
researcher = Agent(
    name="Researcher",
    instructions="你是一個(gè)調(diào)研專家。對(duì)給定主題進(jìn)行深度調(diào)研,輸出結(jié)構(gòu)化的調(diào)研報(bào)告。",
)

writer = Agent(
    name="Writer",
    instructions="你是一個(gè)資深技術(shù)寫手?;谡{(diào)研報(bào)告撰寫高質(zhì)量的技術(shù)文章。",
)

reviewer = Agent(
    name="Reviewer",
    instructions="""你是一個(gè)嚴(yán)格的審核編輯。從以下維度審核文章:
    1. 技術(shù)準(zhǔn)確性 (0-10)
    2. 可讀性 (0-10)
    3. 完整性 (0-10)
    輸出JSON格式的評(píng)分和修改建議。""",
    output_type=dict,  # 結(jié)構(gòu)化輸出
)

# Manager Agent —— 把專家當(dāng)作工具使用
manager = Agent(
    name="Content Manager",
    instructions="""你是一個(gè)內(nèi)容管理Agent,負(fù)責(zé)協(xié)調(diào)一篇文章的創(chuàng)作。
    工作流程:
    1. 先用 research 工具調(diào)研主題
    2. 再用 write 工具基于調(diào)研結(jié)果撰寫文章
    3. 最后用 review 工具審核文章質(zhì)量
    4. 如果評(píng)分低于8分,根據(jù)意見修改后重新審核
    """,
    tools=[
        researcher.as_tool(
            tool_name="research",
            tool_description="對(duì)指定主題進(jìn)行深度調(diào)研,返回調(diào)研報(bào)告"
        ),
        writer.as_tool(
            tool_name="write",
            tool_description="基于調(diào)研報(bào)告撰寫技術(shù)文章"
        ),
        reviewer.as_tool(
            tool_name="review",
            tool_description="審核文章質(zhì)量,返回評(píng)分和修改建議"
        ),
    ],
)

async def create_article(topic: str) -> str:
    with trace("Content Creation Pipeline"):
        result = await Runner.run(
            manager,
            f"請(qǐng)創(chuàng)作一篇關(guān)于 '{topic}' 的技術(shù)文章"
        )
    return result.final_output

兩種模式的對(duì)比

特性HandoffAgents as Tools
用戶交互專家直接面對(duì)用戶只與Manager交互
上下文完整傳遞工具輸入/輸出
適合場(chǎng)景客服、路由內(nèi)容創(chuàng)作、分析
復(fù)雜度

六、Tracing:調(diào)試與監(jiān)控

SDK內(nèi)置了完整的Tracing系統(tǒng),可以追蹤每一次Agent運(yùn)行、工具調(diào)用、交接和護(hù)欄檢查:

from agents import Agent, Runner, trace

# 方式1: 自動(dòng)Tracing(默認(rèn)開啟)
result = await Runner.run(agent, "Hello")
# 自動(dòng)在 OpenAI Dashboard 中創(chuàng)建 trace

# 方式2: 手動(dòng)創(chuàng)建 trace(跨多個(gè) run)
with trace("復(fù)雜工作流", group_id="session-123"):
    result1 = await Runner.run(agent1, "步驟1")
    result2 = await Runner.run(agent2, f"基于上一步: {result1.final_output}")
    result3 = await Runner.run(agent3, f"最終處理: {result2.final_output}")

# 方式3: 關(guān)閉 Tracing
from agents import set_tracing_disabled
set_tracing_disabled(True)

集成外部監(jiān)控

# 集成 LangSmith / Weights & Biases / MLflow 等
from agents import add_trace_processor

# 方式1: 添加自定義處理器(保留OpenAI后端)
add_trace_processor(my_custom_processor)

# 方式2: 完全替換處理器
from agents import set_trace_processors
set_trace_processors([langsmith_processor, wandb_processor])

長(zhǎng)時(shí)間運(yùn)行的任務(wù)

from agents import Runner, trace, flush_traces

async def background_agent_task(prompt: str):
    try:
        with trace("background_task"):
            result = await Runner.run(agent, prompt)
        return result.final_output
    finally:
        # 確保在Celery/FastAPI等場(chǎng)景中刷新trace
        flush_traces()

七、與其他框架的對(duì)比

維度OpenAI Agents SDKLangGraphCrewAI
學(xué)習(xí)曲線低(純Python)中-高(圖抽象)低-中
護(hù)欄內(nèi)置三重護(hù)欄手動(dòng)實(shí)現(xiàn)有限
Tracing免費(fèi)內(nèi)置需LangSmith有限
Human-in-the-Loop內(nèi)置通過圖中斷基本
LLM支持OpenAI原生,也支持100+任意LLM任意LLM
MCP支持內(nèi)置需集成有限
語音Agent支持不支持不支持
沙盒Agent支持(Docker)不支持不支持
適用場(chǎng)景快速多Agent應(yīng)用復(fù)雜有狀態(tài)工作流快速原型

選擇建議

八、最佳實(shí)踐總結(jié)

DO ?

實(shí)踐說明
使用 RECOMMENDED_PROMPT_PREFIX官方推薦的交接提示前綴,能顯著提升交接質(zhì)量
每個(gè)Agent職責(zé)單一"一個(gè)Agent只做一件事"比"全能Agent"效果好得多
使用結(jié)構(gòu)化輸出用Pydantic模型定義 output_type,提高結(jié)果可靠性
啟用護(hù)欄即使是Demo,也加上輸入護(hù)欄,養(yǎng)成習(xí)慣
使用Tracing調(diào)試多Agent系統(tǒng)沒有Tracing等于盲人摸象
動(dòng)態(tài)指令用回調(diào)函數(shù)代替靜態(tài)字符串,實(shí)現(xiàn)上下文感知的指令

DON’T ?

反模式原因
給Agent太多工具5個(gè)以上的工具會(huì)降低LLM選擇準(zhǔn)確率
過深的交接鏈超過3層交接會(huì)導(dǎo)致上下文丟失
忽略 max_turns必須設(shè)置上限防止無限循環(huán)
在護(hù)欄中使用強(qiáng)模型護(hù)欄用 gpt-4o-mini 即可,省錢且夠用
不處理護(hù)欄異常GuardrailTripwireTriggered 必須被優(yōu)雅處理

結(jié)語

OpenAI Agents SDK用最Pythonic的方式解決了多智能體系統(tǒng)的構(gòu)建問題——沒有DSL,沒有復(fù)雜的圖抽象,只有你熟悉的Python代碼。

它的核心設(shè)計(jì)哲學(xué)可以概括為三點(diǎn):

  1. Agent即配置:一個(gè)字典式的配置對(duì)象就是一個(gè)Agent
  2. Handoff即工具:交接對(duì)LLM來說就是一個(gè)特殊的工具調(diào)用
  3. Guardrails即安全網(wǎng):三重護(hù)欄讓Agent行為可預(yù)測(cè)

2026年,AI Agent不再是實(shí)驗(yàn)室的玩具。選擇合適的框架,從第一個(gè)多智能體系統(tǒng)開始,這是每個(gè)Python開發(fā)者的必修課。

以上就是Python調(diào)用OpenAI Agents SDK打造一個(gè)多智能體系統(tǒng)的詳細(xì)內(nèi)容,更多關(guān)于Python Agents SDK多智能體系統(tǒng)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python?pywin32實(shí)現(xiàn)word與Excel的處理

    Python?pywin32實(shí)現(xiàn)word與Excel的處理

    這篇文章主要介紹了Python?pywin32實(shí)現(xiàn)word與Excel的處理,pywin32處理Word大多數(shù)用于格式轉(zhuǎn)換,因?yàn)橐话阕x寫操作都可以借助python-docx實(shí)現(xiàn),除非真的有特殊要求,但大部分企業(yè)對(duì)Wrod操作不會(huì)有太多復(fù)雜需求
    2022-08-08
  • 使用pytorch完成kaggle貓狗圖像識(shí)別方式

    使用pytorch完成kaggle貓狗圖像識(shí)別方式

    今天小編就為大家分享一篇使用pytorch完成kaggle貓狗圖像識(shí)別方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • Python Opencv提取圖片中某種顏色組成的圖形的方法

    Python Opencv提取圖片中某種顏色組成的圖形的方法

    這篇文章主要介紹了Python Opencv提取圖片中某種顏色組成的圖形的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • 對(duì)pyqt5多線程正確的開啟姿勢(shì)詳解

    對(duì)pyqt5多線程正確的開啟姿勢(shì)詳解

    今天小編就為大家分享一篇對(duì)pyqt5多線程正確的開啟姿勢(shì)詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-06-06
  • python+mongodb數(shù)據(jù)抓取詳細(xì)介紹

    python+mongodb數(shù)據(jù)抓取詳細(xì)介紹

    這篇文章主要介紹了python+mongodb數(shù)據(jù)抓取詳細(xì)介紹,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-10-10
  • 使用Python開發(fā)一個(gè)Ditto剪貼板數(shù)據(jù)導(dǎo)出工具

    使用Python開發(fā)一個(gè)Ditto剪貼板數(shù)據(jù)導(dǎo)出工具

    在日常工作中,我們經(jīng)常需要處理大量的剪貼板數(shù)據(jù),下面將介紹如何使用Python的wxPython庫開發(fā)一個(gè)圖形化工具,實(shí)現(xiàn)從Ditto數(shù)據(jù)庫中讀取、選擇和導(dǎo)出剪貼板歷史記錄的功能
    2025-08-08
  • Python讀取文件夾下的所有文件實(shí)例代碼

    Python讀取文件夾下的所有文件實(shí)例代碼

    這篇文章主要給大家介紹了關(guān)于Python讀取文件夾下的所有文件的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • Python實(shí)現(xiàn)輕松處理兩行表頭Excel并可視化分析(附完整代碼)

    Python實(shí)現(xiàn)輕松處理兩行表頭Excel并可視化分析(附完整代碼)

    在日常的數(shù)據(jù)處理中,我們經(jīng)常會(huì)遇到多級(jí)表頭的 Excel 文件,本文通過一個(gè)實(shí)際案例,帶你完整了解讀取 Excel ,整理多級(jí)表頭 ,提取庫存,銷量的數(shù)據(jù) ,繪圖可視化的完整步驟吧
    2025-11-11
  • Python?實(shí)現(xiàn)驅(qū)動(dòng)AI機(jī)器人

    Python?實(shí)現(xiàn)驅(qū)動(dòng)AI機(jī)器人

    這篇文章主要介紹了Python?實(shí)現(xiàn)驅(qū)動(dòng)AI機(jī)器人,下文圍繞利用Python?實(shí)現(xiàn)驅(qū)動(dòng)AI機(jī)器人的相關(guān)資料展開內(nèi)容,需要的小伙伴可以參考一下
    2022-02-02
  • Python快速入門之新手必看的常見報(bào)錯(cuò)與修復(fù)指南

    Python快速入門之新手必看的常見報(bào)錯(cuò)與修復(fù)指南

    作為一名初學(xué)者,你可能已經(jīng)被告知Python是目前世界上最流行、最易學(xué)的編程語言之一,本指南旨在幫助零基礎(chǔ)的你,不僅學(xué)會(huì)寫出代碼,更重要的是學(xué)會(huì)讀懂報(bào)錯(cuò),從而建立起解決問題的編程思維
    2025-12-12

最新評(píng)論

华容县| 于田县| 安阳市| 玉屏| 扎赉特旗| 泽库县| 赤峰市| 石渠县| 朝阳区| 财经| 额济纳旗| 南投县| 津南区| 墨竹工卡县| 霍州市| 特克斯县| 怀安县| 三江| 敖汉旗| 米泉市| 竹溪县| 虎林市| 乐都县| 神农架林区| 恩平市| 盘锦市| 东乡族自治县| 中西区| 同心县| 淮滨县| 宾阳县| 拜泉县| 台江县| 大丰市| 都江堰市| 沈丘县| 吕梁市| 湖南省| 玛纳斯县| 周宁县| 曲水县|