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

openai agent实践

rag系列文章目录

文章目录

  • rag系列文章目录
  • 前言
  • 一、openai agent简介
  • 二、openai agent实践
  • 总结


前言

2025开年以来,随着deepseek的爆火,大模型以及应用正在快速的迭代。随着一款大模型agent,即manus,横空出世,openai也紧接着发布了openai agent,下面主要简要介绍下这个agent。

一、openai agent简介

OpenAI Agent SDK 是一个由 OpenAI 发布的框架,旨在帮助开发者构建多代理 AI 应用。它提供代理(Agents)、交接(Handoffs)和防护栏(Guardrails)等基本组件,支持创建复杂的多代理工作流,如客户支持系统或任务路由系统。它轻量级,易于学习,适合快速原型开发和生产环境。

与其他 AI 代理框架(如 LangChain 和 LlamaIndex)相比,OpenAI Agent SDK 有以下不同:

• 多代理协作:特别强调代理之间的交接,适合需要分工的场景,如 triage 代理路由任务。LangChain 和 LlamaIndex 更注重单个代理的功能扩展。
• 简单性:提供少量抽象,学习曲线低,相比 LangChain 的丰富功能更易上手。
• 内置追踪:自带追踪功能,方便调试,LangChain 和 LlamaIndex 可能需额外配置。

二、openai agent实践

1.工具调用
Agent基本的功能就是工具调用,以下是openai agent的工具调用,和langchain的工具调用有类似之处。

import agents
from agents import Agent, Runner, function_tool, handoff, OpenAIChatCompletionsModel

@function_tool
def web_search(query: str) -> str:
    """Simulate a web search for the given query."""
    # In a real application, this would call a web search API
    with agents.custom_span("WebSearch"):  # Add a custom span for tracing this action
        return f"Web search results for '{query}': [Sample result 1, Sample result 2]"

@function_tool
def get_weather(city: str) -> str:
    """Fetch the weather for a given city."""
    # Placeholder for a real API call
    print("---------------------------")
    return f"The weather in {city} is sunny."

2.大模型
大模型是agent的大脑,这里定义大模型的client,在创建agent时可以引用这个client。

from openai import AsyncOpenAI

openai_client = AsyncOpenAI(
    api_key="sk-S",
    base_url="https://ss/v1"
)

3.构建agent
这里构建了一个天气agent,负责处理天气相关的工作。

weather_agent = Agent(
    name="Weather Assistant",
    instructions="Help users with weather queries.",
    model=OpenAIChatCompletionsModel(
        openai_client=openai_client,
        model="gpt-4o-2024-05-13"
    ), tools=[get_weather]
)

4.handoff
openai agent的一大亮点就是多个agent之间的交接,如下所示,有一个专门负责处理天气问题的agent,主agent需要做天气相关的工作时,可以把它交接给天气agent处理,这个agent进行tool调用查询天气情况。

# Create the main support agent with tools and handoff
main_agent = Agent(
    name="SupportAssistant",
    instructions=(
        "You are a customer support assistant. Answer user queries and use the web search tool "
        "when needed. For get weather , hand off to Weather Assistant."
    ),
    tools=[web_search],  # Equip the agent with the web search tool
    handoffs=[handoff(weather_agent)],  # Configure handoff to the specialized agent
    model=OpenAIChatCompletionsModel(
        openai_client=openai_client,
        model="gpt-4o-2024-05-13"
    )
)

5.agent执行
以下是agent开始启动执行的代码,agent的整个执行过程,可以开启日志,详细观察里面的调用过程。

# Enable verbose logging to see detailed output in the console
agents.enable_verbose_stdout_logging()

if __name__ == '__main__':
    # Run the agent synchronously with a sample input and handle exceptions
    try:
        with agents.trace("CustomerSupportQuery"):  # Start a trace to monitor the entire operation
            result = Runner.run_sync(main_agent, "What's the weather in Paris?")
            print("Final Output:", result.final_output)  # Print the agent's response
    except agents.InputGuardrailTripwireTriggered as e:
        print("Input was rejected by guardrail:", e)
    except agents.OutputGuardrailTripwireTriggered as e:
        print("Output was rejected by guardrail:", e)
    except agents.MaxTurnsExceeded:
        print("Agent exceeded maximum turns.")
    except agents.ModelBehaviorError as e:
        print("Model produced an invalid response:", e)
    except agents.AgentsException as e:
        print("An error occurred:", e)

总结

OpenAI Agent是一个轻量级框架,适合构建多代理 AI 应用,强调简单性和协作,没有langchain复杂。虽然很多功能还不是特别成熟完善,但是它在快速发展,相信更多的人后面会使用它。

相关文章:

  • 什么是MCP|工作原理是什么|怎么使用MCP|图解MCP
  • 六十天前端强化训练之第二十七天之Pinia 状态管理全解与购物车实战案例
  • 【Linux】I/O 多路转接:select epoll 技术剖析
  • 安卓 vs iOS 文件系统深度解析:开放自由与封闭安全的终极博弈
  • DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加导出数据功能示例10,TableView15_10带搜索的导出表格示例
  • [DDD架构]不同数据模型DTO、VO、PO、DAO、DO的含义
  • 自动驾驶系统的车辆动力学建模:自行车模型与汽车模型的对比分析
  • Linux:基础IO---文件描述符
  • JavaSE1.0(实战之图书管理系统)
  • FlowMo: 模式搜索+扩散模型提升图像Token化性能
  • 基于Azure Delta Lake和Databricks的安全数据共享(Delta Sharing)
  • C++异常处理完全指南:从原理到实战
  • 操作系统知识点33
  • 31天Python入门——第10天:深入理解值传递·引用传递以及深浅拷贝问题
  • 计算机网络性能优化相关内容详解
  • Bash语言的测试框架
  • 996引擎-接口测试:音效测试NPC
  • 数据结构—树(java实现)
  • Redis安装与配置:从萌新入门到生产环境搭建
  • UML的使用
  • 解放日报:让算力像“水电煤”赋能千行百业
  • 解放日报:抢占科技制高点,赋能新质生产力
  • 青海西宁市城西区副区长于媛媛主动投案,接受审查调查
  • 邮储银行一季度净赚超252亿降逾2%,营收微降
  • 准80后湖北省财政厅副厅长徐晶华已调任襄阳市副市长
  • 书业观察|一本书的颜值革命:从毛边皮面到爆火的刷边书