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

Apifox 增强 AI 接口调试功能:自动合并 SSE 响应、展示DeepSeek思考过程

在现代的API接口调试中,效率和精确性对于开发者和测试人员来说至关重要。Apifox,作为一款功能强大的API管理和调试工具,近年来不断提升其用户体验和智能化功能。最近,Apifox 推出了增强版的AI接口调试功能,其中包括自动合并SSE(Server-Sent Events)响应和展示DeepSeek思考过程的功能。这些新功能为开发者和测试人员提供了更高效、直观的调试体验,让接口调试更轻松。

常见 AI 大模型的 API 都支持流式输出,以便让用户可以实时看到 AI 的回复,而无需长时间等待。AI 流式输出一般遵循 SSE(Server-Sent Events)格式。

Apifox 是国内最早支持调试 SSE 接口的工具。随着越来越多的开发者在项目中使用 AI 接口,Apifox 进一步增强了 SSE 调试功能,对 AI 接口做了专门的优化。

现在,只要你在 Apifox 中发起 HTTP 请求,符合 OpenAI、Gemini、Claude 等 AI 常见格式的流式响应就会自动合并为可读文本,实时以自然语言呈现响应。不仅如此,对于一些特定的 AI 推理模型,如 DeepSeek R1,Apifox 还能展示在生成答案前的思考过程

图片

下面我们就进一步介绍这一全新功能的使用方法,在开始之前,请将 Apifox 更新至最新版(≥2.6.49),一起开启全新体验

 下载 Apifox 最新版 

图片

三步开启 AI 接口流式调试

图片

图片

 

新建接口

将 Apifox 更新到最新版本后,将其打开并新建一个 HTTP 项目,在项目中新建接口。

你可以填写任一 AI 模型的接口地址,并配置相应的 API Key。比如 DeepSeek 的 API,你可以将下面的 cURL 导入到 Apifox,注意stream字段的值需要为true

curl https://api.deepseek.com/chat/completions \-H "Content-Type: application/json" \-H "Authorization: Bearer {{API_KEY}}" \-d '{"model": "deepseek-chat","messages": [{"role": "system", "content": "你是一位诗人"},{"role": "user", "content": "写一首关于春天的诗"},{"role": "assistant", "content": "春风拂面柳丝长..."},{"role": "user", "content": "请继续补充第二、三和四段"}],"stream": true      }'

图片

💡 也可以参考这篇推文:如何使用 Apifox 一键调用 DeepSeek API

图片

 

发送请求

发送请求后,Apifox 会自动识别接口返回的Content-Type是否包含text/event-stream。如果包含,系统会自动将响应解析为 SSE 事件并进行流式输出。

图片

图片

 

查看实时响应

在「时间线」视图中,你将看到实时滚动的流式响应内容。事件流会自动合并成可读文本,直观地呈现在响应面板中。

图片

图片

自动合并流式响应

图片

 

Apifox 内置了对主流 AI 模型的支持,可以自动识别并合并以下格式的流式响应:

  • 兼容 OpenAI API 格式的响应(DeepSeek 等绝大多数 AI 模型的 API 都兼容该格式)

  • 兼容 Gemini API 格式的响应

  • 兼容 Claude API 格式的响应

只要你调用的 AI 模型返回格式与以上任意一种格式相匹配,Apifox 都会自动将消息片段合并为完整的回复内容。

对于某些 AI 推理模型,如 DeepSeek R1,Apifox 还支持在「时间线」中展示模型的思考过程,帮助你更直观地了解 AI 的推理过程。

图片

图片

自定义合并规则

图片

如果自动合并功能未能正常工作,说明 SSE 返回的响应格式不在内置支持列表中,对此 Apifox 提供了两种自定义合并规则的方法,可以根据实际情况采取以下措施:

图片

 

配置 JSONPath 提取规则

当 SSE 返回的事件内容是 JSON 格式,但不符合 OpenAI、Gemini、Claude 等内置的识别规则时,你可以手动配置 JSONPath 来提取所需内容。例如下面的原始 SSE 响应:

data: {"choices":[{"index":0,"message":{"role":"assistant","content":"你"},"logprobs":null,"finish_reason":"stop"}]}data: {"choices":[{"index":0,"message":{"role":"assistant","content":"好"},"logprobs":null,"finish_reason":"stop"}]}

对于这个 JSON 结构,要提取content字段的内容,正确的 JSONPath 配置应是:

$.choices[0].message.content

这个 JSONPath 表达式的含义是:

  • $表示 JSON 的根节点

  • choices[0]表示选择 choices 数组的第一个元素

  • message.content表示在该元素下 message 对象的 content 属性

这个配置将提取出内容:

你好

图片

 

自定义脚本

对于非 JSON 格式的 SSE 消息,可以在 Apifox 的「后置操作」中编写自定义脚本。你可以定义如何处理每个事件片段,无论是文本、XML 还是其它格式的数据,这种方法都能帮助你灵活地处理响应内容。

例如某个 AI 接口返回的 SSE 消息是纯文本格式,而不是 JSON 数据。每个事件片段可能只是一些简单的文本行,例如:

data: 你
data: 好

在 Apifox 中,你可以编写如下自定义脚本来处理这些文本数据:

// 获取返回的 SSE 事件流内容
const sseContent = pm.response.text();// 假设每行文本代表一个事件片段,我们可以简单地按行分割并处理
const eventLines = sseContent.split('\n');// 存储合并后的事件内容
let mergedContent = '';// 处理每个事件片段,去除空行并合并
eventLines.forEach(line => {if (line.trim()) {// 提取 'data: ' 后面的内容并合并let eventData = line.replace(/^data:\s*/, '');mergedContent += eventData;}
});// 将结果显示在 body 的 "Visualize" 标签页
pm.visualizer.set(mergedContent);
// 最后,将合并后的数据输出
console.log("合并后的事件流:", mergedContent);

这个脚本将会把每个事件片段按行分割,将处理后的内容显示在 body 的「Visualize」标签页,并打印到控制台。你可以根据实际需要进一步修改处理逻辑,进行更复杂的文本解析。

🚧 注意
无论选择哪种方式,都建议先仔细分析 API 的响应格式,以确保正确配置合并规则。

图片

 

在现代的API接口调试中,效率和精确性对于开发者和测试人员来说至关重要。Apifox,作为一款功能强大的API管理和调试工具,近年来不断提升其用户体验和智能化功能。最近,Apifox 推出了增强版的AI接口调试功能,其中包括自动合并SSE(Server-Sent Events)响应和展示DeepSeek思考过程的功能。这些新功能为开发者和测试人员提供了更高效、直观的调试体验,让接口调试更轻松。

Apifox 的全新 SSE 调试功能,尤其是在流式响应的自动合并和 AI 推理过程的实时可视化方面,为 AI 模型调试提供了极大的便利。你不仅可以更加高效地调试 AI 接口,还能更深入地了解模型的推理过程。更新你的 Apifox,现在就去试试吧!

相关文章:

Apifox 增强 AI 接口调试功能:自动合并 SSE 响应、展示DeepSeek思考过程

在现代的API接口调试中,效率和精确性对于开发者和测试人员来说至关重要。Apifox,作为一款功能强大的API管理和调试工具,近年来不断提升其用户体验和智能化功能。最近,Apifox 推出了增强版的AI接口调试功能,其中包括自动…...

【电机控制】42步进电机+arduino:WHEELTEC_MS42DDC

轮趣科技 42步进电机arduino:WHEELTEC_MS42DDC 接线方式: WHEELTEC_MS42DDC有两个接口, 一端接口连接配套的DC电源,另外一端只需要用三根线,一根负极连接ardino 的GND,然后把该端口的tx和rx连接到arduino的rx和tx,下…...

使用LangChain构建第一个ReAct Agent

使用LangChain构建第一个ReAct Agent 准备环境 使用Anaconda 安装python 3.10 安装langchain、langchain_openai、langchain_community (安装命令 pip install XXX) 申请DeepSeek API:https://platform.deepseek.com/api_keys(也…...

萝卜头笔作文赏析

在遥远的无寻王国,有这么一支小小的笔诞生了,人们见它又短又小,于是就给它取名叫萝卜头笔。萝卜头笔渐渐长大了,除了身子变粗些,其他什么都没变。一天,萝卜头笔来到了深山老林,那里枝叶繁茂&…...

RT-Thread+STM32L475VET6——USB鼠标模拟

文章目录 前言一、板载资源二、具体步骤1.配置icm20608传感器2.打开CubeMX进行USB配置3. 配置USB3.1 打开USB驱动3.2 声明USB3.3 剪切stm32xxxx_hal_msp.c中的void HAL_PCD_MspInit(PCD_HandleTypeDef* hpcd)和void HAL_PCD_MspDeInit(PCD_HandleTypeDef* hpcd)函数至board.c3.…...

rust 安全性

Rust 是 静态类型(statically typed) 语言, 也就是说在编译时就必须知道所有变量的类型, 这一点将贯穿整个章节。 C/C的安全问题 内存的不正确访问引发的内存安全问题 由于多个变量指向同一块内存区域导致的数据一致性问题 由于…...

大模型驱动的围术期质控系统全面解析与应用探索

目录 一、引言 1.1 研究背景与意义 1.2 研究目的与方法 1.3 研究创新点 二、大模型技术与围术期管理概述 2.1 大模型技术原理与发展现状 2.2 围术期管理流程与挑战 三、大模型在术前的应用 3.1 病历内涵质控 3.2 智能医学问答与知识查询 3.3 疾病风险预测与评估 3.…...

中兴B863AV3.2-T/B863AV3.1-T2/B863AV3.1-T2K_电信高安_S905L3A-B_安卓9.0_线刷固件包

中兴B863AV3.2-T/B863AV3.1-T2/B863AV3.1-T2K_电信高安_S905L3A-B_安卓9.0_线刷固件包 B863AV3.2-T B863AV3.1-T2 已知可通刷贵州、江苏、贵州、北京、河南、陕西等省份。 线刷方法:(新手参考借鉴一下) 1、准备好一…...

Android Binder机制

Binder是IPC(进程间通信)的一种机制,它允许不同的应用或系统服务在不同的进程中安全地交换数据。Binder的核心原理是基于客户端-服务器模型(C/S架构)。 一、Binder的定义 1. Binder是Android中的一个类,它继承了IBind…...

【算法】初等数论

初等数论 模 取余,遵循尽可能让商向0靠近的原则,结果的正负和左操作数相同 取模,遵循尽可能让商向负无穷靠近的原则,结果的正负和右操作数相同 7/(-3)-2.3,产生了两个商-2和-3,取…...

Spring Boot3+Vue2极速整合:10分钟搭建DeepSeek AI对话系统

前言 在生成式AI技术蓬勃发展的今天,大语言模型已成为企业智能化转型和个人效率提升的核心驱动力。作为国产大模型的优秀代表,DeepSeek凭借其卓越的中文语义理解能力和开发者友好的API生态,正在成为构建本土化AI应用的首选平台。 本文将以S…...

Spring事务原理 二

在上一篇博文《Spring事务原理 一》中,我们熟悉了Spring声明式事务的AOP原理,以及事务执行的大体流程。 本文中,介绍了Spring事务的核心组件、传播行为的源码实现。下一篇中,我们将结合案例,来讲解实战中有关事务的易…...

JVM预热

阿里电商平台每年的各种大促活动,对于Java技术来说,其中重要一个操作环节就是预热操作。 目录 预热是什么?为什么要预热? java 程序不预热和预热的调用对比 预热是什么? 预热是指,在 JVM 启动后&#xff0…...

基于flask+vue框架的的医院预约挂号系统i1616(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。

系统程序文件列表 项目功能:用户,医生,科室信息,就诊信息,医院概况,挂号信息,诊断信息,取消挂号 开题报告内容 基于FlaskVue框架的医院预约挂号系统开题报告 一、研究背景与意义 随着医疗技术的不断进步和人们健康意识的日益增强,医院就诊量逐年增加。传统的现场…...

DeepSeek掘金——SpringBoot 调用 DeepSeek API 快速实现应用开发

Spring Boot 实现 DeepSeek API 调用 1. 项目依赖 在 pom.xml 中添加以下依赖: <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-webflux</artifactId></dependency>&l…...

easelog(1)基础C++日志功能实现

EaseLog(1)基础C日志功能实现 Author: Once Day Date: 2025年2月22日 一位热衷于Linux学习和开发的菜鸟&#xff0c;试图谱写一场冒险之旅&#xff0c;也许终点只是一场白日梦… 漫漫长路&#xff0c;有人对你微笑过嘛… 注&#xff1a;本简易日志组件代码实现参考了Google …...

epoll_event的概念和使用案例

epoll_event 是 Linux 下 epoll I/O 多路复用机制的核心数据结构&#xff0c;用于描述文件描述符&#xff08;File Descriptor, FD&#xff09;上发生的事件及其关联的用户数据。通过 epoll&#xff0c;可以高效地监控多个文件描述符的状态变化&#xff08;如可读、可写、错误等…...

Leetcode2506:统计相似字符串对的数目

题目描述&#xff1a; 给你一个下标从 0 开始的字符串数组 words 。 如果两个字符串由相同的字符组成&#xff0c;则认为这两个字符串 相似 。 例如&#xff0c;"abca" 和 "cba" 相似&#xff0c;因为它们都由字符 a、b、c 组成。然而&#xff0c;"…...

蓝桥月赛 之 26场

文章目录 好汤圆灯笼猜谜元宵分配摆放汤圆 好汤圆 好汤圆 思路分析&#xff1a;由于2025能够被15整除&#xff0c;所以我们直接输出对应的答案即可 import os import sys# 请在此输入您的代码print(2025//15)灯笼猜谜 灯笼猜谜 思路分析&#xff1a;首先呢&#xff0c;我就考…...

机器学习面试八股文——决战金三银四

大家好&#xff0c;这里是好评笔记&#xff0c;公主 号&#xff1a;Goodnote&#xff0c;专栏文章私信限时Free。本笔记的任务是解读机器学习实践/面试过程中可能会用到的知识点&#xff0c;内容通俗易懂&#xff0c;入门、实习和校招轻松搞定。 公主号合集地址 点击进入优惠地…...

uniapp 对接腾讯云IM群组成员管理(增删改查)

UniApp 实战&#xff1a;腾讯云IM群组成员管理&#xff08;增删改查&#xff09; 一、前言 在社交类App开发中&#xff0c;群组成员管理是核心功能之一。本文将基于UniApp框架&#xff0c;结合腾讯云IM SDK&#xff0c;详细讲解如何实现群组成员的增删改查全流程。 权限校验…...

【OSG学习笔记】Day 18: 碰撞检测与物理交互

物理引擎&#xff08;Physics Engine&#xff09; 物理引擎 是一种通过计算机模拟物理规律&#xff08;如力学、碰撞、重力、流体动力学等&#xff09;的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互&#xff0c;广泛应用于 游戏开发、动画制作、虚…...

K8S认证|CKS题库+答案| 11. AppArmor

目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作&#xff1a; 1&#xff09;、切换集群 2&#xff09;、切换节点 3&#xff09;、切换到 apparmor 的目录 4&#xff09;、执行 apparmor 策略模块 5&#xff09;、修改 pod 文件 6&#xff09;、…...

Python:操作 Excel 折叠

💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...

Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具

文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...

将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?

Otsu 是一种自动阈值化方法&#xff0c;用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理&#xff0c;能够自动确定一个阈值&#xff0c;将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...

【论文笔记】若干矿井粉尘检测算法概述

总的来说&#xff0c;传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度&#xff0c;通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...

【论文阅读28】-CNN-BiLSTM-Attention-(2024)

本文把滑坡位移序列拆开、筛优质因子&#xff0c;再用 CNN-BiLSTM-Attention 来动态预测每个子序列&#xff0c;最后重构出总位移&#xff0c;预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵&#xff08;S…...

精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南

精益数据分析&#xff08;97/126&#xff09;&#xff1a;邮件营销与用户参与度的关键指标优化指南 在数字化营销时代&#xff0c;邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天&#xff0c;我们将深入解析邮件打开率、网站可用性、页面参与时…...

《C++ 模板》

目录 函数模板 类模板 非类型模板参数 模板特化 函数模板特化 类模板的特化 模板&#xff0c;就像一个模具&#xff0c;里面可以将不同类型的材料做成一个形状&#xff0c;其分为函数模板和类模板。 函数模板 函数模板可以简化函数重载的代码。格式&#xff1a;templa…...