
本文旨在指导开发者如何正确解析OpenAI API返回的JSON格式响应,并从中提取所需的生成文本内容。通过详细的步骤和代码示例,我们将展示如何使用`JSON.parse()`方法处理API响应,并精确访问`choices[0].text`属性以获取核心文本输出,同时探讨处理多条生成结果的方法及相关注意事项。
在与OpenAI API进行交互时,无论是使用text-d*inci-002还是其他模型,API的响应通常都是一个结构化的JSON对象。理解并正确解析这个JSON结构是高效利用API生成内容的关键。直接对原始字符串进行截取或正则匹配来提取文本是一种不推荐且容易出错的方法,因为它忽略了JSON作为数据交换格式的内在结构。
OpenAI API的成功响应通常包含一个JSON对象,其核心生成文本位于choices数组的第一个元素的text属性中。以下是一个典型的API响应示例:
{
"id": "cmpl-61dshxu43ecbrqir187yilz9mdhsj",
"object": "text_completion",
"created": 1665749707,
"model": "text-d*inci-002",
"choices": [{
"text": "?\n\nthere is no simple answer to these questions. each person's individual experiences and perspectives will shape their understanding of who they are and what life is. in general, however, people often think of themselves as unique individuals with specific talents, interests, and goals. they may also think of life as a journey full of challenges and opportunities for growth.",
"index": 0,
"logprobs": null,
"finish_reason": "stop"
}],
"usage": {
"prompt_tokens": 7,
"completion_tokens": 71,
"total_tokens": 78
}
}从上述结构可以看出,我们感兴趣的生成文本位于choices数组内部,具体路径是choices[0].text。
要从OpenAI API的JSON响应中提取文本,正确的步骤是先将原始响应字符串解析为J*aScript对象,然后通过属性访问来获取所需内容。
当XMLHttpRequest(或fetch等其他HTTP客户端)接收到API响应时,xhr.responseText属性会包含一个JSON格式的字符串。我们需要使用JSON.parse()方法将其转换为一个可操作的J*aScript对象。
Huemint
推荐!用AI自定义和谐配色
105
查看详情
xhr.onreadystatechange = function() {
if (xhr.readyState === 4) { // 确保请求已完成
if (xhr.status === 200) { // 检查HTTP状态码是否为成功
var response = JSON.parse(xhr.responseText);
// 后续操作
} else {
console.error("API请求失败,状态码: " + xhr.status);
console.error("错误信息: " + xhr.responseText);
}
}
};一旦响应字符串被解析为J*aScript对象response,我们就可以通过链式属性访问来获取生成文本:
let generatedText = response.choices[0].text; console.log(generatedText);
这段代码会获取choices数组中的第一个元素(索引为0),然后访问该元素的text属性。
OpenAI API允许您通过在请求中设置n参数来生成多个不同的完成结果。在这种情况下,choices数组将包含多个元素。如果您需要处理所有这些结果,可以遍历choices数组:
xhr.onreadystatechange = function() {
if (xhr.readyState === 4 && xhr.status === 200) {
var response = JSON.parse(xhr.responseText);
if (response.choices && response.choices.length > 0) {
response.choices.forEach((choice, index) => {
console.log(`Choice ${index + 1}:`);
console.log(choice.text);
// 可以在这里对每个生成的文本进行进一步处理
});
} else {
console.log("未找到任何生成文本。");
}
} else if (xhr.readyState === 4) {
console.error("API请求失败,状态码: " + xhr.status);
console.error("错误信息: " + xhr.responseText);
}
};结合上述方法,以下是修正后的完整J*aScript代码示例,用于调用OpenAI API并正确提取生成文本:
let open_ai_response_text; // 用于存储最终提取的文本
async function openai_test() {
var prompt_text = "who am i?";
var prompt_text2 = "what is life?"; // 建议将两个问题合并为一个更清晰的prompt
var url = "https://api.openai.com/v1/engines/text-d*inci-002/completions";
var xhr = new XMLHttpRequest();
xhr.open("POST", url);
xhr.setRequestHeader("Content-Type", "application/json");
// 请替换为您的实际API密钥
xhr.setRequestHeader("Authorization", "Bearer sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");
xhr.onreadystatechange = function() {
if (xhr.readyState === 4) {
if (xhr.status === 200) {
try {
var response = JSON.parse(xhr.responseText);
// 检查 choices 数组是否存在且不为空
if (response.choices && response.choices.length > 0) {
open_ai_response_text = response.choices[0].text;
console.log("提取到的OpenAI响应文本:");
console.log(open_ai_response_text);
// 示例:对提取的文本进行处理(如首字母大写,其他字符小写)
// 注意:API返回的文本可能包含换行符,需要根据实际需求处理
// let processedText = open_ai_response_text.trim(); // 移除首尾空白符
// if (processedText.length > 0) {
// processedText = processedText[0].toUpperCase() + processedText.slice(1).toLowerCase();
// }
// console.log("处理后的文本:");
// console.log(processedText);
} else {
console.warn("OpenAI API响应中未找到生成文本。");
}
} catch (e) {
console.error("解析JSON响应失败:", e);
console.error("原始响应文本:", xhr.responseText);
}
} else {
console.error("OpenAI API请求失败,HTTP状态码:", xhr.status);
console.error("错误详情:", xhr.responseText);
}
}
};
var data = JSON.stringify({ // 使用JSON.stringify将J*aScript对象转换为JSON字符串
"prompt": prompt_text + " " + prompt_text2, // 合并prompt
"temperature": 0.7,
"max_tokens": 256,
"top_p": 1,
"frequency_penalty": 0.75,
"presence_penalty": 0
});
xhr.send(data);
}
// 调用函数以启动API请求
openai_test();正确地从OpenAI API响应中提取生成文本,关键在于理解API返回的是JSON格式数据,并利用JSON.parse()将其转换为可操作的J*aScript对象。随后,通过访问response.choices[0].text即可轻松获取核心生成内容。对于需要处理多个生成结果的场景,遍历choices数组是标准做法。遵循这些指导原则,并结合健壮的错误处理机制,将确保您的应用程序能够稳定、高效地与OpenAI API进行交互。
以上就是从OpenAI API响应中高效提取生成文本的详细内容,更多请关注其它相关文章!
# 第一个
# 木工机械网站优化
# 阳泉短视频seo品牌
# 济宁营销小程序推广
# 苏宁网站优化与推广
# 深圳论坛网站推广效果好
# 专利营销推广模式是什么
# 西乡网站优化价格
# 武威关键词排名公司
# 遂宁seo网站推广
# 小黄鱼营销推广模式
# 错误信息
# 链式
# 所需
# 将其
# 遍历
# javascript
# 转换为
# 多个
# 您的
# 字符
# 状态码
# openai
# 环境变量
# ai
# 后端
# oppo
# app
# go
# json
# js
# java
相关文章:
Lar*el 8 多关键词数据库搜索优化实践
多闪网页版在线观看免费入口_多闪官网访问入口
三星ZFold5多任务卡顿_Samsung ZFold5流畅度提升
Windows10怎么开启夜间模式 Windows10系统设置调整色温与亮度缓解夜间用眼疲劳【教程】
动漫岛观看全网网 动漫岛在线正版动漫入口
C++如何打印当前代码行号与文件名_C++预定义宏FILE与LINE的使用
UC浏览器官网入口2025最新 UC浏览器网页版正式地址
汽水音乐在线版入口_汽水音乐网页播放手册
UC浏览器如何安装插件 UC浏览器添加扩展程序详细教程【进阶】
Mudbox图层蒙版怎么用_Mudbox图层蒙版数字雕刻应用技巧
文心一言怎样用批量生成做多版文案_文心一言用批量生成做多版文案【批量创作】
mysql备份恢复性能优化_mysql备份恢复性能优化方法
Golang如何实现Web接口签名验证_Golang Web接口签名校验开发方法
格力空气能E5故障代码是什么情况_格力空气能E5代码解析与应对措施
mcjs网页版流畅运行 mcjs低配电脑畅玩入口
PHP:从文本中提取带逗号的数字价格教程
HTML转PPT成品工具有哪些?HTML网页转PPT成品工具大全
Win11怎么设置鼠标指针速度_Win11提高鼠标指针精确度选项
抖音隐秘迷城小游戏入口_ 抖音冒险解谜小游戏秒玩
TikTok评论显示延迟如何处理 TikTok评论刷新优化方法
Win10双系统截图高效法 截屏快捷键速记【技巧】
c++中为什么推荐使用using替代typedef_c++现代化类型别名
Composer的 "licenses" 命令如何帮助你遵守开源协议_检查项目依赖的许可证合规性
AO3镜像入口大全 AO3网页版内容访问全集
“在文档元素之后找到了标记”是什么错误? 检查并修复XML中多个根元素的3个方法
AO3最新可访问网址 Archive of Our Own官方在线入口
Python类型检查:优化关联可选属性的Mypy推断策略
整合Supabase认证与Django模型:跨模式迁移的解决方案
C++如何解决segmentation fault_C++段错误调试与原因分析
WooCommerce后台产品编辑页:获取分类ID并实现角色权限控制
Go语言中高效处理x-www-form-urlencoded表单数据
Win10文件资源管理器“此电脑”分组怎么关 Win10恢复经典视图【技巧】
解决Rails应用中内容错位与Turbo警告:meta标签误用导致富文本渲染异常
漫蛙2(台版)官方入口地址 漫蛙2(台版)正版漫画网页端
零跑汽车11月交付量达70327台 实现连续9个月正增长
在Runstone环境中高效处理TasteDive API的JSON数据
聚水潭ERP登录页面入口 聚水潭ERP官网登录界面
Win11文件资源管理器卡顿怎么修 Win11重置资源管理器进程优化响应速度【修复方法】
excel怎么制作工资条 excel快速生成工资条的方法
Lar*el的路由模型绑定怎么用_Lar*el Route Model Binding简化控制器逻辑
Win11怎么关闭触摸屏_Windows 11禁用HID符合标准触摸屏
优化Log4j2控制台输出性能:解决异步日志瓶颈
CSS Flexbox与媒体查询:实现响应式布局中元素的并排与堆叠
Win11怎么查看电脑配置_Win11硬件配置检测工具使用
Yandex免登录网页版地址 Yandex搜索引擎官方访问入口
126邮箱账号注册 电脑版登录入口
如何使用Rector自动化升级旧代码_通过Composer安装和配置Rector进行代码重构
最新韩小圈网页版登录入口_官网在线观看官方链接
Python大型XML文件高效流式解析教程
sublime怎么设置启动时打开的窗口_sublime会话管理与热退出
*请认真填写需求信息,我们会在24小时内与您取得联系。