当前位置: 首页 > article >正文

OpenAI SDK 智能体 (Agentic AI) 的 handoff (任务转交) 和 as_tool(智能体即工具) 的使用

本文为Agentic AI所需的大 模型 API调用 的一些API示范注重于使用SCNet以及DeepSeek的基于OpenAI 以及 OpenAI SDK 的 API调用。本文为公益类代码由DeepSeek辅助生成经过实例测试。有关SCNet和DeepSeek API的调用见原文https://blog.csdn.net/YucongCai/article/details/159774133在OpenAI Agents SDK 和目前主流的Agentic AI系统在多Agents 的情况下常常会遇到任务交接或权限交接的需求这就是 handoff 的目的。在OpenAI SDK 中agent 在定义之初或之后可以指定一个或几个handoff agents以此让agent将任务在特定状态将任务和权限装交给被指定的agent。例如 agent a 的 handoff 如果被指定为 agent b和 agent c那么agent a就可以在满足条件时根据定义将任务转交给agent b 或agent c中的一个agent而收到任务的agent 就会接替agent a去尝试完成任务同时获取agent a的权限。要注意一个agent只能将其任务和权限handoff 给一个agent。而且权限在这里指的是agent a所控制的任务状态和workflowagents 可以使用的工具仍被各自定义不会被自动转接。可以理解成一个员工将任务交给了另一个员工但员工各自仍是独立的个体而guardrail等系统设定是独立定义的。而OpenAI SDK的 agent(s) astool是另一个概念。在OpenAI SDK中agent可以通过 as_tool function 被转化为工具以此被其他其它agents调用。需要注意的是一个agent仅可将任务handoff给一个agent然而一个agent可以同时使用多个agents as_tool 并行使用。接下来本文会展示两组源代码读者可以此测试相关性能。Agentic AI的SDK仍处于发展阶段相关概念比代码本身更为重要。其实有需求的读者可以根据需求自主编写代码处理history/sessionagents handoffas_tool 等只不过使用OpenAI SDK相对而言方便一些对于简单系统可以降低成本。handoffimport asyncio import os from dotenv import load_dotenv from openai import AsyncOpenAI from agents import ( Agent, Runner, OpenAIChatCompletionsModel, set_tracing_disabled ) # --- Setup --- load_dotenv(overrideTrue) set_tracing_disabled(True) # optional: disable OpenAI tracing client AsyncOpenAI( api_keyos.getenv(DEEPSEEK_API_KEY), base_urlhttps://api.deepseek.com/v1 ) model OpenAIChatCompletionsModel( modeldeepseek-chat, openai_clientclient ) # --- Specialist agents --- billing_agent Agent( namebilling_agent, instructionsYou are a billing expert. Answer questions about invoices, payments, and charges., modelmodel ) refund_agent Agent( namerefund_agent, instructionsYou are a refund expert. Handle all refund requests and policy questions., modelmodel ) # --- Triage agent (handoff, no session) --- triage_agent Agent( nametriage_agent, instructions( You are a customer service triage agent. If the user asks about a bill or payment, hand off to billing_agent. If they ask for a refund, hand off to refund_agent. ), handoffs[billing_agent, refund_agent], modelmodel ) # --- Run without any session --- async def main(): # This will automatically hand off to billing_agent result await Runner.run( triage_agent, I was charged twice for my last subscription. Can you help? # no session parameter → no history persistence ) print(result.final_output) if __name__ __main__: # asyncio.run(main()) await main()as_tool (并行的示例)import asyncio import os from dotenv import load_dotenv from openai import AsyncOpenAI from agents import ( Agent, Runner, SQLiteSession, OpenAIChatCompletionsModel, set_tracing_disabled, ModelSettings # needed for parallel tool calls ) # -------------------- Environment SDK Setup -------------------- load_dotenv(overrideTrue) set_tracing_disabled(True) # disable OpenAI tracing (optional) # 1. Configure DeepSeek client (OpenAI‑compatible) client AsyncOpenAI( api_keyos.getenv(DEEPSEEK_API_KEY), base_urlhttps://api.deepseek.com/v1 ) # 2. Model wrapper – DeepSeek supports tool calling model OpenAIChatCompletionsModel( modeldeepseek-chat, openai_clientclient ) # -------------------- Define Specialist Agents -------------------- billing_agent Agent( namebilling_agent, instructionsYou are a billing expert. Answer questions about invoices, payments, and charges., modelmodel ) refund_agent Agent( namerefund_agent, instructionsYou are a refund expert. Handle all refund requests and policy questions., modelmodel ) # -------------------- Triage Agent (Handoff) -------------------- triage_agent Agent( nametriage_agent, instructions( You are a customer service triage agent. If the user asks about a bill or payment, hand off to billing_agent. If they ask for a refund, hand off to refund_agent. ), handoffs[billing_agent, refund_agent], modelmodel ) # -------------------- Agents for Parallel Tool Calls -------------------- # These will be wrapped as tools and called in parallel by the manager finance_agent Agent( nameFinance_Analyst, instructionsAnalyze the financial health of a given company (revenue, profit, debt)., modelmodel ) market_agent Agent( nameMarket_Analyst, instructionsAnalyze the market position and key competitors of a given company., modelmodel ) # Wrap them as tools finance_tool finance_agent.as_tool( tool_nameget_financial_analysis, tool_descriptionGet a financial analysis of a company. ) market_tool market_agent.as_tool( tool_nameget_market_analysis, tool_descriptionGet a market analysis of a company. ) # Manager agent that calls both tools in parallel manager_agent Agent( nameResearch_Manager, instructions( You are a research manager. For any company, you MUST call BOTH get_financial_analysis and get_market_analysis in parallel to provide a complete report. ), tools[finance_tool, market_tool], modelmodel, model_settingsModelSettings(parallel_tool_callsTrue) # enables LLM‑driven parallelism ) # -------------------- Optional: Session for multi‑turn -------------------- session SQLiteSession(demo_user, conversations.db) # -------------------- Main Async Runner -------------------- async def main(): print( Demo 1: Handoff (triage → billing) \n) result_handoff await Runner.run( triage_agent, I was charged twice for my last subscription. Can you help?, sessionsession # optional, keeps conversation history ) print(fHandoff result:\n{result_handoff.final_output}\n) print( Demo 2: Agent‑as‑Tool (parallel calls) \n) result_parallel await Runner.run( manager_agent, Give me a full analysis of Tesla (TSLA)., sessionsession ) print(fParallel tools result:\n{result_parallel.final_output}\n) if __name__ __main__: await main()我在找工作HR或项目合作请联系yucongcai_businessoutlook.com与科研相关的请联系yucongcai_researchoutlook.com

相关文章:

OpenAI SDK 智能体 (Agentic AI) 的 handoff (任务转交) 和 as_tool(智能体即工具) 的使用

本文为Agentic AI所需的大 模型 API调用 的一些API示范,注重于使用SCNet以及DeepSeek的基于OpenAI 以及 OpenAI SDK 的 API调用。本文为公益类代码,由DeepSeek辅助生成,经过实例测试。 有关SCNet和DeepSeek API的调用,见原文 ht…...

一文搞懂Autosar DEM中的DTC生命周期:从检测到老化的完整流程解析

Autosar DEM中DTC生命周期的深度解析:从故障检测到智能老化的全流程实战指南 在汽车电子系统的故障诊断领域,DTC(Diagnostic Trouble Code)就像车辆的"健康体检报告",而Autosar DEM(Diagnostic …...

CentOS7.9下Ollama安装避坑指南:从Python3.8升级到Docker部署全流程

CentOS7.9下Ollama部署实战:从Python升级到容器化避坑全记录 当你在生产环境遇到CentOS7.9这样的"老将"系统时,部署现代AI工具链往往像在古董电脑上跑最新游戏——各种兼容性问题接踵而至。最近我在为一家金融机构升级他们的机器学习平台时就…...

Harness到底是什么?

一、大白话定义:理解Harness的底层隐喻 Harness本义为马具、缰绳,映射到AI领域,它不属于全新算法或大模型,而是包裹在原生大模型外层,用于管控智能体全链路运行的工程闭环体系。 可以用通俗逻辑对照: 原…...

如何在Windows和Linux上快速免费解锁VMware的macOS虚拟机支持

如何在Windows和Linux上快速免费解锁VMware的macOS虚拟机支持 【免费下载链接】unlocker VMware Workstation macOS 项目地址: https://gitcode.com/gh_mirrors/unloc/unlocker 想在VMware中运行macOS虚拟机吗?VMware解锁工具是您的终极解决方案&#xff01…...

**元宇宙社交新范式:基于Rust 构建去中心化虚拟身份系统**在元宇宙浪潮

元宇宙社交新范式:基于 Rust 构建去中心化虚拟身份系统 在元宇宙浪潮席卷全球的今天,社交不再是简单的文字与图像传递,而是沉浸式、可交互、可验证的身份空间构建。传统社交平台依赖中心化服务器认证用户身份,存在隐私泄露、数据孤…...

Qwen3-TTS-12Hz-1.7B-Base效果展示:俄语文学朗诵与科技文献朗读对比

Qwen3-TTS-12Hz-1.7B-Base效果展示:俄语文学朗诵与科技文献朗读对比 声音克隆:Qwen3-TTS-12Hz-1.7B-Base 1. 多语言语音合成的突破 Qwen3-TTS-12Hz-1.7B-Base是一个支持10种主要语言的语音合成模型,包括中文、英文、日文、韩文、德文、法文、…...

如何轻松管理跨平台游戏模组:XXMI Launcher终极指南

如何轻松管理跨平台游戏模组:XXMI Launcher终极指南 【免费下载链接】XXMI-Launcher Modding platform for GI, HSR, WW and ZZZ 项目地址: https://gitcode.com/gh_mirrors/xx/XXMI-Launcher 如果你正在寻找一个简单、高效且功能强大的游戏模组管理解决方案…...

如何彻底移除Windows Defender:完整权限修复与系统优化指南

如何彻底移除Windows Defender:完整权限修复与系统优化指南 【免费下载链接】windows-defender-remover A tool which is uses to remove Windows Defender in Windows 8.x, Windows 10 (every version) and Windows 11. 项目地址: https://gitcode.com/gh_mirror…...

SeqGPT-560M零样本NLP实战:从Prompt设计到结果解析的完整链路

SeqGPT-560M零样本NLP实战:从Prompt设计到结果解析的完整链路 你是不是也遇到过这样的场景?拿到一堆文本数据,想快速把它们分个类,或者从里面提取出关键信息,比如人名、公司名、事件。传统方法要么需要写一堆复杂的规…...

Stable Yogi Leather-Dress-Collection 模型蒸馏与轻量化部署探索

Stable Yogi Leather-Dress-Collection 模型蒸馏与轻量化部署探索 想不想在手机或者树莓派这样的小设备上,也能跑起来 Stable Yogi 这样的图片生成模型,让它为你设计皮革裙装?这听起来有点天方夜谭,毕竟这类模型动辄几十GB&#…...

Flutter结合高德API实现智能周边搜索与动态展示

1. 环境准备与基础配置 在开始Flutter与高德地图API的集成前,我们需要先搭建好开发环境。我推荐使用Flutter 2.5版本,这个版本对地图插件的兼容性更好。安装完Flutter SDK后,记得在pubspec.yaml中添加以下关键依赖: dependencie…...

三步搞定B站视频转文字:从链接到文字稿的智能转换方案

三步搞定B站视频转文字:从链接到文字稿的智能转换方案 【免费下载链接】bili2text Bilibili视频转文字,一步到位,输入链接即可使用 项目地址: https://gitcode.com/gh_mirrors/bi/bili2text 还在为观看B站视频时无法快速记录重点内容而…...

2026年,高端车主寻高性价比底盘整备,哪家修理厂能一次性搞定?

在汽车的日常使用中,底盘问题是让众多车主头疼的一大难题。尤其是高端车主,既希望解决底盘问题,又想追求高性价比的解决方案。那么在2026年,哪家修理厂能满足高端车主对底盘整备高性价比的需求呢?今天就为大家详细介绍…...

如何快速实现WPS与Zotero无缝集成:终极学术写作效率指南

如何快速实现WPS与Zotero无缝集成:终极学术写作效率指南 【免费下载链接】WPS-Zotero An add-on for WPS Writer to integrate with Zotero. 项目地址: https://gitcode.com/gh_mirrors/wp/WPS-Zotero WPS-Zotero插件是专为学术工作者设计的革命性工具&#…...

GEO 是否必须懂技术才能做:能力结构、分工方式与实际门槛拆解

结论先放前面:不用先会写代码,但要能分清哪些问题属于内容口径,哪些问题属于技术边界。 如果把 GEO 当成纯技术项目,一上来就找 API、爬虫、结构化数据,容易漏掉业务答案本身。 如果把 GEO 当成纯内容项目,…...

Qwen3-0.6B-FP8快速上手:无需conda环境直接运行开源大模型

Qwen3-0.6B-FP8快速上手:无需conda环境直接运行开源大模型 想体验最新的大语言模型,但被复杂的Python环境、CUDA版本和依赖冲突劝退?今天,我来带你体验一个完全不同的方式——直接运行一个开箱即用的Web界面,让你在几…...

Qwen3-ForcedAligner-0.6B实战案例:为有声书文本生成逐句播放控制时间轴

Qwen3-ForcedAligner-0.6B实战案例:为有声书文本生成逐句播放控制时间轴 1. 项目背景与需求场景 有声书制作过程中,一个常见但繁琐的任务是为音频内容生成精确的时间轴信息。传统方法需要人工反复听录音,手动标记每个句子或词语的开始和结束…...

Diablo Edit2:终极暗黑破坏神II角色存档编辑器完全指南

Diablo Edit2:终极暗黑破坏神II角色存档编辑器完全指南 【免费下载链接】diablo_edit Diablo II Character editor. 项目地址: https://gitcode.com/gh_mirrors/di/diablo_edit 还在为暗黑破坏神II中刷装备的痛苦而烦恼吗?Diablo Edit2为你提供了…...

二分查找进阶:旋转排序数组的两道经典题深度解析

目录 一、搜索旋转排序数组(LeetCode 33・中等) 题目描述 解题思路 Java 代码实现(标准二分版) 复杂度分析 核心知识点总结 二、寻找旋转排序数组中的最小值(LeetCode 153・中等) 题目描述 解题思…...

JL杰理AC696N开发板常见问题FAQ-问题6:为什么提示“key 不匹配”?杰理的蓝牙芯片的key是什么?以及该如何添加key? 杰理key文件原理?

引言做杰理蓝牙音频系列芯片开发,第一次编译下载时,可能会遇到一个报错提示:“KEY不匹配”。很多新手一脸懵:key是什么?为什么要加?怎么加?其实这是杰理芯片的一套软件授权保护机制。本文以JL杰…...

MySQL Explain 输出结果与执行逻辑分析

MySQL Explain 输出结果与执行逻辑分析是数据库性能优化的核心工具之一。通过Explain命令,开发者可以深入理解SQL语句的执行计划,从而发现潜在的性能瓶颈并优化查询效率。无论是初学者还是资深DBA,掌握Explain的输出解读技巧都至关重要。本文…...

终极指南:Tectonic引擎中的现代字体处理技术详解

终极指南:Tectonic引擎中的现代字体处理技术详解 【免费下载链接】tectonic A modernized, complete, self-contained TeX/LaTeX engine, powered by XeTeX and TeXLive. 项目地址: https://gitcode.com/gh_mirrors/te/tectonic Tectonic作为一款现代化的TeX…...

lil_tea c++ style guide巢

一、中间件是啥?咱用“餐厅”打个比方 想象一下,你的FastAPI应用是个高级餐厅。 ?? 顾客(客户端请求)来到门口。- 迎宾(CORS中间件):先看你是不是从允许的街区(域名)来…...

PhotoshopCClinux部署实战:企业环境批量安装的10个最佳实践技巧

PhotoshopCClinux部署实战:企业环境批量安装的10个最佳实践技巧 【免费下载链接】photoshopCClinux Photoshop CC v19 installer for Gnu/Linux 项目地址: https://gitcode.com/gh_mirrors/ph/photoshopCClinux 在企业环境中高效部署Photoshop CC v19到多台L…...

GPU加速MediaPipe TouchDesigner插件终极指南:从零构建实时视觉交互

GPU加速MediaPipe TouchDesigner插件终极指南:从零构建实时视觉交互 【免费下载链接】mediapipe-touchdesigner GPU Accelerated MediaPipe Plugin for TouchDesigner 项目地址: https://gitcode.com/gh_mirrors/me/mediapipe-touchdesigner MediaPipe Touch…...

M2LOrder模型Node.js环境配置与项目脚手架生成指南

M2LOrder模型Node.js环境配置与项目脚手架生成指南 你是不是也遇到过这种情况?想用Node.js快速启动一个新项目,特别是想集成像M2LOrder这样的AI模型,结果光是环境配置就折腾了半天。装Node版本不对,依赖冲突,项目结构…...

终极Virtual Kubelet性能优化指南:10个实用调优策略提升大规模容器部署效率

终极Virtual Kubelet性能优化指南:10个实用调优策略提升大规模容器部署效率 【免费下载链接】virtual-kubelet Virtual Kubelet is an open source Kubernetes kubelet implementation. 项目地址: https://gitcode.com/gh_mirrors/vi/virtual-kubelet Virtua…...

Zotero PDF预览插件:告别窗口切换,让文献管理效率提升300%

Zotero PDF预览插件:告别窗口切换,让文献管理效率提升300% 【免费下载链接】zotero-pdf-preview Preview Zotero attachments in the library view. 项目地址: https://gitcode.com/gh_mirrors/zo/zotero-pdf-preview 你是否曾在文献海洋中迷失方…...

King Phisher插件开发教程:扩展你的钓鱼工具包功能

King Phisher插件开发教程:扩展你的钓鱼工具包功能 【免费下载链接】king-phisher Phishing Campaign Toolkit 项目地址: https://gitcode.com/gh_mirrors/ki/king-phisher King Phisher是一款功能强大的钓鱼活动工具包,从1.3.0版本开始引入了插件…...