开源模型应用落地-OpenAI Agents SDK-集成Qwen3-8B(一)
一、前言
在人工智能技术迅猛发展的今天,OpenAI Agents SDK 为开发者提供了一个强大的工具集,用于构建基于 Python 的智能代理应用。这些代理可以执行从简单任务到复杂决策的一系列操作,极大地提升了应用程序的智能化水平。
通过 OpenAI Agents SDK,可以利用 Python 编程语言的优势,创建能够与环境交互、做出决策并自主执行任务的智能系统。本文将引导您了解如何使用 OpenAI Agents SDK 来开发智能代理,探索其在不同应用场景下的潜力,并展示如何借助这一工具集实现您的创意想法。
二、术语介绍
2.1.OpenAI Agents SDK
OpenAI Agents SDK 是一个轻量级但功能强大的框架,用于构建多智能体工作流。它不依赖于特定提供商,支持 OpenAI 的 Responses 和 Chat Completions API,以及其他 100 多种大语言模型(LLMs)。
核心概念:
- Agents(代理) :配置了指令、工具、安全限制和交接机制的大型语言模型(LLMs)。
- Handoffs(交接) :用于在不同代理之间转移控制权的一种专用工具调用。
- Guardrails(安全限制) :可配置的安全检查机制,用于验证输入和输出内容。
- Tracing(追踪) :内置的运行追踪功能,允许您查看、调试并优化您的工作流。
2.2.Qwen3-8B
是阿里巴巴开源的新一代通义千问模型(Qwen3)家族中的一款中型密集模型(Dense Model),参数量为8B(80亿),属于该系列中适用于通用场景的核心版本之一。
以下是其核心特性及技术亮点:
1. 模型架构与定位
通义千问3-8B属于全尺寸矩阵覆盖的密集模型,采用传统Transformer架构,专为平衡性能与部署成本设计。其定位是满足中高复杂度任务需求,例如复杂文本生成、多轮对话、代码编写等,同时保持较低的硬件资源占用。
2. 性能表现
- 跨代性能提升:相比前代Qwen2.5系列,3-8B以更小参数量实现性能突破。例如,其32B版本可跨级超越Qwen2.5-72B的性能,而8B模型在数学、代码生成等基准测试中表现接近更高参数量的MoE模型。
- 混合推理能力:支持“快思考”与“慢思考”两种模式。对简单问题(如信息查询)可快速响应;对复杂问题(如数学证明、逻辑推理)可自动激活深度思考模式,动态分配计算资源,优化算力消耗。
3. 应用场景与部署优势
- 端侧部署:适用于电脑、汽车等端侧设备,官方推荐使用RTX 4060显卡(16GB显存)即可流畅运行,满足本地化部署需求。
- 开发友好性:作为开源模型(Apache 2.0协议),开发者可免费商用,并可通过阿里云百炼API或Hugging Face等平台直接调用。其工具调用能力(Function Calling)和原生支持的MCP协议,进一步简化了智能体(Agent)开发流程。
- 多语言支持:覆盖119种语言,适用于全球化应用场景,如多语言客服、跨国数据分析等。
三、前置条件
3.1.基础环境及前置条件
1. 操作系统:无限
3.2.QWen3-8B环境安装
参见:
开源模型应用落地-qwen模型小试-Qwen3-8B-推理加速-vLLM(一)https://charles.blog.csdn.net/article/details/147718340?spm=1011.2415.3001.5331
开源模型应用落地-qwen模型小试-Qwen3-8B-推理加速-vLLM-Docker(二)https://charles.blog.csdn.net/article/details/147719905?spm=1011.2415.3001.5331
3.3.添加依赖
conda create --name openai-agents-test python=3.10conda activate openai-agents-testpip install openai-agents -i https://pypi.tuna.tsinghua.edu.cn/simple
四、技术实现
4.1.示例一 - OpenAIChatCompletionsModel
# -*- coding:utf-8 -*-import asynciofrom openai import AsyncOpenAIfrom agents import OpenAIChatCompletionsModel, Agent, Runner, set_tracing_disabledDEFAULT_IP=\'127.0.0.1\'DEFAULT_PORT=9000openai_api_key = \"EMPTY\"openai_api_base = f\"http://{DEFAULT_IP}:{DEFAULT_PORT}/v1\"external_client = AsyncOpenAI(base_url=openai_api_base, api_key=openai_api_key)model = \'/data/model/Qwen3-8B\'set_tracing_disabled(True)ai_model = OpenAIChatCompletionsModel( model=model, openai_client=external_client)agent = Agent( name=\"assistant\", instructions=\"你是一个乐于助人的助手\", model=ai_model)async def main(): input_items = [] while True: user_input = input(\"请输入问题:\").strip() if user_input.lower() in [\"exit\", \"quit\", \"bye\"]: print(\"对话结束\") break if not user_input: continue input_items.append( {\"content\": user_input, \"role\": \"user\"}) result = await Runner.run(agent, input=input_items) print(\"AI回复:\", result.final_output) input_items = result.to_input_list()if __name__ == \"__main__\": asyncio.run(main())
调用:
直接在pycharm中运行
4.2.示例二 - OpenAIProvider
# -*- coding:utf-8 -*-import asynciofrom openai import AsyncOpenAIfrom agents import OpenAIChatCompletionsModel, Agent, Runner, set_tracing_disabled, OpenAIProvider, RunConfigDEFAULT_IP=\'127.0.0.1\'DEFAULT_PORT=9000openai_api_key = \"EMPTY\"openai_api_base = f\"http://{DEFAULT_IP}:{DEFAULT_PORT}/v1\"external_client = AsyncOpenAI(base_url=openai_api_base, api_key=openai_api_key)model = \'/data/model/Qwen3-8B\'ai_model = OpenAIChatCompletionsModel( model=model, openai_client=external_client)PROVIDER = OpenAIProvider(openai_client=external_client,use_responses=False)set_tracing_disabled(True)agent = Agent( name=\"assistant\", instructions=\"你是一个乐于助人的助手\", model=model)async def main(): input_items = [] while True: user_input = input(\"请输入问题:\").strip() if user_input.lower() in [\"exit\", \"quit\", \"bye\"]: print(\"对话结束\") break if not user_input: continue input_items.append( {\"content\": user_input, \"role\": \"user\"}) result = await Runner.run(agent, input=input_items,run_config=RunConfig(model_provider=PROVIDER)) print(\"AI回复:\", result.final_output) input_items = result.to_input_list()if __name__ == \"__main__\": asyncio.run(main())
调用:
直接在pycharm中运行
4.3.示例三 - CustomModelProvider
# -*- coding:utf-8 -*-import asynciofrom openai import AsyncOpenAIfrom agents import OpenAIChatCompletionsModel, Agent, Runner, set_tracing_disabled, RunConfig, ModelProvider, ModelDEFAULT_IP=\'127.0.0.1\'DEFAULT_PORT=9000openai_api_key = \"EMPTY\"openai_api_base = f\"http://{DEFAULT_IP}:{DEFAULT_PORT}/v1\"external_client = AsyncOpenAI(base_url=openai_api_base, api_key=openai_api_key)model = \'/data/model/Qwen3-8B\'class CustomModelProvider(ModelProvider): def get_model(self, model_name: str | None) -> Model: return OpenAIChatCompletionsModel(model=model_name , openai_client=external_client)PROVIDER = CustomModelProvider()set_tracing_disabled(True)agent = Agent( name=\"assistant\", instructions=\"你是一个乐于助人的助手\", model=model)async def main(): input_items = [] while True: user_input = input(\"请输入问题:\").strip() if user_input.lower() in [\"exit\", \"quit\", \"bye\"]: print(\"对话结束\") break if not user_input: continue input_items.append({\"content\": user_input, \"role\": \"user\"}) result = await Runner.run(agent, input=input_items,run_config=RunConfig(model_provider=PROVIDER)) print(\"AI回复:\", result.final_output) input_items = result.to_input_list()if __name__ == \"__main__\": asyncio.run(main())
调用:
直接在pycharm中运行
五、附带说明
5.1.set_tracing_disabled的作用
禁用内置的追踪(Tracing)功能。通过调用该函数并传入 True
,可以完全关闭代理(Agent)运行过程中的追踪记录,从而避免生成和上传相关的跟踪数据。
5.2.多轮对话
代码input_items = result.to_input_list()中,to_input_list
的作用是创建一个新的输入列表,将原始输入与生成的所有新项合并。
示例:
对话一:
USER:hi
AI: 嗨!👋 今天过得怎么样呀?有什么想聊的吗?😊
input_items: [{\'content\': \'hi\', \'role\': \'user\'}, {\'id\': \'__fake_id__\', \'content\': [{\'annotations\': [], \'text\': \'\\n\\n嗨!👋 今天过得怎么样呀?有什么想聊的吗?😊\', \'type\': \'output_text\'}], \'role\': \'assistant\', \'status\': \'completed\', \'type\': \'message\'}]
对话二:
USER:你是谁?
AI: 你好呀!我是通义千问,是阿里巴巴集团旗下的通义实验室研发的超大规模语言模型。我能够帮助你进行各种语言理解和生成任务,比如回答问题、创作文字、编程、逻辑推理等。我的目标是成为你身边的智能助手,提供全方位的帮助和支持。😊 有什么我可以帮你的吗?
input_items: [{\'content\': \'hi\', \'role\': \'user\'}, {\'id\': \'__fake_id__\', \'content\': [{\'annotations\': [], \'text\': \'\\n\\n嗨!👋 今天过得怎么样呀?有什么想聊的吗?😊\', \'type\': \'output_text\'}], \'role\': \'assistant\', \'status\': \'completed\', \'type\': \'message\'}, {\'content\': \'你是谁?\', \'role\': \'user\'}, {\'id\': \'__fake_id__\', \'content\': [{\'annotations\': [], \'text\': \'\\n\\n你好呀!我是通义千问,是阿里巴巴集团旗下的通义实验室研发的超大规模语言模型。我能够帮助你进行各种语言理解和生成任务,比如回答问题、创作文字、编程、逻辑推理等。我的目标是成为你身边的智能助手,提供全方位的帮助和支持。😊 有什么我可以帮你的吗?\', \'type\': \'output_text\'}], \'role\': \'assistant\', \'status\': \'completed\', \'type\': \'message\'}]
5.3.使用第三方模型API
替换key,url和model名称即可