如何使用VLLM进行openai/gpt-oss系列推理与支持工具调用

OpenAI时隔6年再次推出开源模型gpt-oss系列,本次gpt-oss系列包含两个模型gpt-oss-120b与gpt-oss-20b。由于模型原生支持一种新的量化技术MXFP4,所以模型的部署所需的显存也显著的降低。

  • openai/gpt-oss-20b 只需要大概16GB的显存
  • openai/gpt-oss-120b 需要大概>=60GB的显存

这让本地部署成为可能,接下来跟着我一起看一下如何在本地使用vllm对gpt-oss-20b进行推理并且支持工具调用吧!

显卡信息

NVIDIA H20 96G VRAM

环境准备

安装uv

pip install uv

创建虚拟环境

uv venv --python 3.12 --seed
source .venv/bin/activate

安装依赖

uv pip install --pre vllm==0.10.1+gptoss \--extra-index-url https://wheels.vllm.ai/gpt-oss/ \--extra-index-url https://download.pytorch.org/whl/nightly/cu128 \--index-strategy unsafe-best-match

下载模型

安装modelscope

pip install modelscope

下载gpt-oss-20b

modelscope download --model 'openai-mirror/gpt-oss-20b' --exclude 'metal/*'

vllm服务

准备vllm 服务配置

model:  /data/.cache/modelscope/models/openai-mirror/gpt-oss-20b
served_model_name: gpt-oss
host: 0.0.0.0
port: 8000
tensor-parallel-size: 1
gpu-memory-utilization: 0.9
api-key: yor-api-key
disable-fastapi-docs: true

注意model这一行需要找到你自己的modelscope模型下载到本机的地址,或者在下载模型时使用--local_dir 指定下载路径。

你可以使用以下命令找到你的模型地址

modelscope scan-cache

api-key改成你想要设置的api-key

将文件保存成 gpt-oss-config.yml

启动服务

vllm serve --config gpt-oss-config.yml

工具调用

工具调用可以使用openai python sdk调用

使用openai python sdk

pip install openai
import json
from openai import OpenAI
from openai.types.responses import ResponseFunctionToolCallclient = OpenAI(base_url="http://{你的vllm服务器地址}/v1",api_key="{vllm服务设置的api-key}",
)# 定义工具
tools = [{"type": "function","name": "get_weather","description": "Get current weather in a given city","parameters": {"type": "object","properties": {"city": {"type": "string"}},"required": ["city"],},}
]messages = [{"role": "user", "content": "上海现在天气怎么样?"}]def fetch_response(messages):response = client.responses.create(model="gpt-oss",input=messages,tools=tools,)return response# 工具函数
def get_weather(city: str):return f"The weather in {city} is sunny."response = fetch_response(messages)
for item in response.output:if isinstance(item, ResponseFunctionToolCall):print(f"正在调用工具: `{item.name}` 参数 {item.arguments}")messages.append(item.model_dump())tool_result = get_weather(**json.loads(item.arguments))messages.append({"type": "function_call_output","call_id": item.call_id,"output": tool_result,})response = fetch_response(messages)print(response.output_text)

将以上的python代码保存成tool_use.py文件并运行:

uv run tool_use.py

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/93025.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/93025.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SVN 查看历史信息

SVN 查看历史信息 引言 Subversion(简称SVN)是一个开源的版本控制系统,广泛应用于软件开发中。查看SVN的历史信息对于了解代码变更、追踪问题来源以及理解项目发展历程具有重要意义。本文将详细介绍如何在SVN中查看历史信息。 SVN历史信息概述…

vue+flask山西非遗文化遗产图谱可视化系统

文章结尾部分有CSDN官方提供的学长 联系方式名片 文章结尾部分有CSDN官方提供的学长 联系方式名片 关注B站,有好处!编号:F068 项目介绍: 本系统主要实现了以下功能: 非遗项目知识图谱可视化 非遗项目可视化关键词分析 …

Jetson NX Python环境搭建:使用APT轻松安装NumPy, scikit-learn, OpenCV

引言 在NVIDIA Jetson NX等ARM架构的嵌入式AI板子上搭建Python开发环境,特别是安装像NumPy、OpenCV这样包含C/C底层代码的科学计算库时,经常会遇到编译失败、耗时过长或依赖冲突等问题。这些问题尤其在通过pip从源代码编译安装时更为突出,例如…

Spring Boot项目中线程池的全面教程

一、线程池基础概念与重要性1.1 为什么需要线程池在Spring Boot应用中,线程池是一种至关重要的并发编程工具,它通过​​复用线程资源​​显著提升系统性能。主要优势包括:​​减少开销​​:避免频繁创建和销毁线程带来的性能损耗​…

机器学习第八课之K-means聚类算法

目录 简介 一、K-means 的核心思想 二、K-means 聚类的工作流程 1. 确定聚类数量 K 2.初始化 K 个簇中心 3.簇分配:将数据点分配到最近的簇 4.更新簇中心:重新计算每个簇的中心 5.判断是否收敛 6.输出聚类结果 三、聚类效果评价方式 四、k-…

【P21】OpenCV Python——RGB和BGR,HSV和HSL颜色空间,及VScode中报错问题解决

P21 1 RGB和BGR2 HSV和HSL,YUV2.1 HSV2.1. 色调H2.1.2 饱和度S2.1.3 明度V2.2 HSL2.3 YUV3 颜色空间转换实战4 VScode中报错问题5 Windows 下 VScode 路径格式(VScode很强大,路径格式写法自由多样)RGB/BGR人眼识别的颜色 &#xf…

.NET 应用程序 Linux下守护进程脚本编写

下面的脚本是生产可用,可靠的sh脚本,用于监控 .NET 应用程序并自动重启。假如你打包发布到Linux的程序名称为MyAspDemo;推荐打包模式为框架依赖:需要在Linux上安装对应的donet版本;1.在Linux下新建一个文件&#xff0c…

图论理论部分

旅游完回来继续学习。 先来看一下图论的理论部分,然后稍微做一下DFS的题目。 图的基本概念 二维坐标中,两点可以连成线,多个点连成的线就构成了图。 当然图也可以就一个节点,甚至没有节点(空图) 图的种…

WebSocket集群方案解析与实现

一、WebSocket集群核心挑战 1.1 关键问题分析 #mermaid-svg-gzRCTMr7wiVCokct {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-gzRCTMr7wiVCokct .error-icon{fill:#552222;}#mermaid-svg-gzRCTMr7wiVCokct .error-t…

使用dify搭建hr简历助手-上传简历-对接飞书ai表格

一、需求背景 hr在招聘平台获取简历后,想整理到简历库,在线管理和维护,及其不方便,所以用dify搭建一个简历上传助手,并且能保存到线上表格,方便维护和查看。 先看下最终的效果我们的工作流即可自动获取文件…

《算法导论》第 22 章 - 基本的图算法

大家好!今天我们来深入学习《算法导论》第 22 章的基本图算法。图论是计算机科学中的重要基础,这些基本算法是解决很多复杂问题的基石。本文将结合代码实现,帮助大家更好地理解和应用这些算法。思维导图22.1 图的表示在计算机中,图…

基于PROFINET的西门子PLC通讯:S7-200与S7-1200在自动化仓储中的协同应用

一.行业痛点与解决方案传统仓储物流系统中,采用西门子SMARTS7-200PLC(如CPUSR20、SR30等型号)的设备往往面临三大通讯难题:一是无法直接接入以太网网络,导致多PLC间的数据交互需要通过复杂的串口级联实现,响…

redis实现秒杀超卖问题的解决方案:(仅限于单体项目)

秒杀实现通过乐观锁控制超卖问题通过悲观锁控制每个用户只能下一单,避免用户多次点击,发送的多次下单请求(即多个线程)都成功,避免恶意攻击每个请求访问Tomcat时,就会分配一个线程处理请求业务逻辑:注*以下逻辑中报错也…

Go与Python爬虫实战对比:从开发效率到性能瓶颈的深度解析

目录 引言:两种语言,两种哲学 开发效率对比:从框架设计看易用性 Python的"开箱即用" Go的"手动组装" 性能对比:从并发模型看效率差异 理论性能对比 实际测试数据 错误处理对比:从编程范式…

初识c语言————排序方法

今天我们学习的是c语言中的排序方法目录:一.冒泡排序法二.选择排序法下面我们正式学习c语言中的排序方法一.冒泡排序法1.冒泡排序法的过程:将无序的数组通过数组之间的大小比较,排成有序的样子2.例如:5,3,4…

爬虫与数据分析结合案例:中国大学排名爬取与分析全流程

爬虫与数据分析结合案例:中国大学排名爬取与分析全流程 一、案例背景与目标 本案例以高三网中国大学排名(网址:2021中国的大学排名一览表_高三网)为数据源,完成从数据爬取到分析可视化的全流程实践。主要目标包括&am…

行业分享丨SimSolid 在汽车零部件开发中应用的可行性调研及实践

*本文源自汽车行业用户范会超投稿1、背景车型短周期开发背景下,高效的仿真技术显得尤为重要。Altair 推出了多款加速设计/仿真的软件,其中无网格软件 SimSolid 与业务有一定的契合度,有必要论证其在汽车零部件结构分析领域的可行性。2、目标评…

MacOS字体看起来比在 Windows 上更好?

字体控们注意啦!🎉你们有没有发现,同样一段文字,在Mac和Windows上看起来就是不一样?Mac上的字仿佛自带柔光滤镜,圆润又舒适;而Windows上的字则像是精心雕琢的刀锋,锐利且清晰。这背后…

Torch -- 卷积学习day1 -- 卷积层,池化层

目录 一、CNN概述 二、卷积层 1、卷积核 2、卷积计算 3、边缘填充 4、步长 5、多通道卷积计算 6、多卷积核卷积计算 7、特征图大小 8、卷积参数共享 9、局部特征提取 10、卷积层API 三、池化层 1、池化层概述 1.池化层的作用 2.池化层类型 2、池化层计算 3、步…

蓝桥杯---第六届省赛单片机组真题

先出手写的代码&#xff0c;代码分析还需要一段时间&#xff0c;不难&#xff0c;大家认真写。#include <STC15F2K60S2.H> #include "Seg.h" #include "LED.h" #include "Key.h" #include "DS1302.h" #include "DS18B20.h&…