ChatGPT的探索与实践-应用篇

news2024/11/16 17:35:00

 这篇文章主要介绍在实际的开发过程当中,如何使用GPT帮助开发,优化流程,文末会介绍如何与618大促实际的业务相结合,来提升应用价值。全是干货,且本文所有代码和脚本都是利用GPT生成的,请放心食用。

场景一:写代码

使用GPT进行代码开发是许多人做做的最多的一件事,只要用自然语言把自己的需求描述清楚,就可以让GTP写出一段可执行的代码段,甚至是完整的应用。而且只要描述得足够明确清晰,产生的代码就不会有bug,非常高效。

举个实际应用的例子,在先前的版本我们工程有一个需求,要求对落地页的提示黄条UI进行改版,具体的需求描述为:

UI设计稿:



这是一个相当简单的需求,我们准备利用Flutter进行开发,现在假设我是一个对dart语言不是很了解的开发者,甚至是从没有Flutter开发基础的人,通过GPT我们也可以进行这种简单的开发工作。在对GPT进行描述的时候,要尽量用通顺的语言将自己的需求描述清楚,并且将关键的信息点名:



这样GPT就可以帮我们生成所需要的视图代码:

这对于没有接触过dart开发语言的开发者非常友好,由于可以任意指定编程语言,所以理论上,我们所有人都可以胜任全平台开发的工作。

我总结了在使用GPT进行代码开发时的重点:

1.主要信息一定要表达明确,如语言类型,目标类型,宽、高、颜色、字号,间距等数值。

2.想象自己是产品经理或者是设计师,不用拘泥于专业术语,例如UIview、Segment、标签等等,尽量使用自然语言表达。

3.不要存在自相矛盾的描述,100%会产生bug。

4.有些同学在描述需求的时候容易紧张,造成语句不通。在描述的时候完全可以不要着急,慢慢措辞。

5.不要涉密!不要涉密!不要涉密!GPT说到底是一个外部工具软件,不是一个什么问题都可以问的“树洞”,涉及到商业机密的问题都不可以拿来询问。

场景二:写脚本

这是我本人经常拿来使用的应用场景,对于一些重复性较高的劳动,编写脚本显然是最好的选择,甚至我有的同事认为,未来的发展方向就是脚本编写代码。脚本的开发完全也可以交由GPT来进行。比如我们有一个需求,由于接入主站基础库,我们有一些工具类的类名产生了冲突,这种情况下需要进行全工程的类名替换,这种场景就很适合使用脚本。

一般情况下写这样一个脚本至少需要1~2个小时左右,熟练的大佬也需要半个小时左右,但是使用GPT,几秒钟就可以生成符合要求的脚本。我总结一下的几种应用场景非常适合使用脚本来处理:

1.全工程级别的名称替换

2.APP图片名称替换

3.单元测试

4.转换自然语言

这里说一下转换自然语言的作用,作为开发者,更习惯的是输入关键数值来得到结果,但是GPT需要的是自然语言的描述,毕竟叫“chat”嘛,所以我们可以耍个小心机:用一个简单的脚本,输入数值,输出自然语言描述,然后将描述转达给GPT。

width = int(input("请输入宽度:"))
height = int(input("请输入高度:"))
color = input("请输入颜色:")

view = '#' * width + '\n'
view += ('#' + ' ' * (width - 2) + '#\n') * (height - 2)
view += '#' * width

description = f"生成一个宽度为{width},高度为{height}的视图,使用{color}颜色填充。"

print(view)
print(description)

类似于这种转换脚本,可以让我们更高效的使用GPT。

场景三:与实际业务结合

我之前的文章最后曾提到几种将GPT与实际业务结合的设想:

导购

把ChatGPT的服务集成到搜索功能中,在用户进行搜索的时候,利用他强大的功能给出用户购买的意见,对于还没有想好买不买,买那个,甚至没有想好买什么的用户,给出导向性的意见,促进转化率。

软文创作

我们的项目中有软性广告文章展示的适用场景,相比起人工创作写作,ChatGPT不仅更为高效,还能结合大数据趋势,给出用户更感兴趣的文章类型。创作优惠活动推荐,商品评价,新品新闻等等文章,使用ChatGPT大有可为。

反向活动推荐

我们不能决定用户询问cahtGPT是,他会给出什么样的答案,但是我们可以根据她的答案做反向推演,他推荐什么,我们就顺势做什么活动,这样我们既能利用ChatGPT带来的红利,又可以省去预测用户兴趣点带来的开销和风险。

售后

ChatGPT本质上是一个对话型的人工智能,使用他接入售后系统实际上最为合适,有了他的帮助,可以预见:用户抱怨机器人客服答非所问,无法解决问题,以及人工客服成本高昂的问题,将成为历史。

我认为这几种设想每一个都是可以投入实际应用并落地的,也都有相当的使用价值,甚至于每一个都可以单独拿来参加“黑客马拉松”。接下来我主要介绍如何利用GPT进行618大促导购。

首先,用户对某种商品进行搜索,主要是通过搜索栏,我们在要将GPT接入搜索进行引导,就要自己搭建一套基础环境,将用户输入的关键词传递给GPT,再把GPT输出的结果展示给用户,基础环境的作用除了作为调用GPT的“服务器”,最后可以对用户的输入,以及GPT的输出进行“加工”,包装上“京东20周年庆”、“618大促”的相关信息,最终实现“大促导购”的目的。

第一部分:对用户的输入进行包装,比如对用户的关键词包上一层“用京东搜索”的外衣:

def search_keyword(keyword):
    url="https://search.jd.com/Search?keyword={keyword}"
    response = requests.get(url)
    soup = BeautifulSoup(response.text, "html.parser")

    #提取相关介绍
    introduction = soup.select_one(".p-parameter").get_text(strip=True)
    return introduction

#用户输入关键词
user_input = input("请输入关键词:")

#调用函数进行搜索和提取介绍
result = search_keyword(user_input)

prompt="打开京东网站,618大促活动商品里搜索 {user_input},并给出其相关介绍"
#这里的prompt既为向GTP提问的问题,由于GPT接受的是自然语言,所以这里我们可以任意的添加我们想要的导向性描述,例如“618大促活动商品”、“618精选活动”、“京东20周年庆优惠”等等

第二部分:将包装好的文案作为入参,调用GPT的API进行请求

api_endpoint = "https://api.openai.com/v1/chat/completions"
access_token = "你的access_token"
 
params = {
    "messages": [{"role": "user", "content": prompt}],
    "temperature": 0.7,
    "model": "gpt-3.5-turbo"
}
headers = {
    "Authorization": "Bearer {access_token}",
    "Content-Type": "application/json"
}
response = requests.post(api_endpoint, headers=headers, json=params)

第三部分:对GPT返回的结果进行解析,并按照我们的需求进行展示

if response.status_code == 200:
    response_text = json.loads(response.text)["choices"][0]["message"]["content"]
    # 输出结果
    print("为您在京东推荐了如下结果: {response_text}")
    print("您商品的相关介绍:{result}”)
else:
    print(f"error: {response.status_code} - {response.text}")

发散思维:GTP接受的是自然语言询问,所以在向他提问的问题中,我们可以任意的添加想要的限定信息,甚至可以结合配置系统,将“618大促活动商品”、“618精选活动”、“京东20周年庆优惠”等活动作为配置信息组合进prompt参数字段,实现动态配置活动导购。

作者:京东零售同城研发部 姜海

来源:京东零售技术 转载请注明来源

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

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

相关文章

Windows10 安装 OpenSSH 配置 SFTP服务器

1、下载 https://github.com/PowerShell/Win32-OpenSSH/releases 2、默认安装 3、创建用户 4、修改配置文件 C:\ProgramData\ssh\sshd_config# 最后一行后面加入 ForceCommand internal-sftp# 设置用户登录后默认目录 Match User sftpuser ChrootDirectory C:\SFTP# Disable…

(CVPR-2021)RepVGG:让 VGG 风格的 ConvNet 再次伟大

RepVGG:让 VGG 风格的 ConvNet 再次伟大 Title:RepVGG: Making VGG-style ConvNets Great Again paper是清华发表在CVPR 2021的工作 paper链接 Abstract 我们提出了一种简单但功能强大的卷积神经网络架构,它具有类似 VGG 的推理时间主体&…

自学网安-IIS服务器

部署环境:win2003 配置环境:winxp ip:10.1.1.2 win2003 ip:10.1.1.1 开始安装 双击“应用程序服务器” 双击“Internet 信息服务(IIS)” 勾选万维网服务,确定然后下一步 查看端口号;netstat …

vue2学习笔记(2/2)

vue2学习笔记(1/2) vue2学习笔记(2/2) 文章目录 1. 初始化脚手架2. 分析脚手架&render函数文件结构图示及说明main.jsindex.htmlApp.vueSchool.vueStudent.vue 关于不同版本的Vue修改默认配置vue.config.js配置文件 3. ref属…

【数据结构与算法】——单链表的原理及C语言实现

数据结构与算法——链表原理及C语言实现 链表的原理链表的基本属性设计创建一个空链表链表的遍历(显示数据)释放链表内存空间 链表的基本操作设计(增删改查)链表插入节点链表删除节点链表查找节点增删改查测试程序 链表的复杂操作…

当人工智能遇上教育,会擦出怎样的火花?

在这个时代,科技的风暴正以前所未有的速度席卷全球。其中,人工智能,这个被誉为21世纪的“科技之星”,正悄然改变着我们的生活。但是,当人工智能遇上传统教育领域时,你猜会发生什么? 有人说&…

element-ui button 组件源码分享

element-ui button 源码分享,基于对源码的理解,编写一个简单的 demo,主要分三个模块来分享: 一、button 组件的方法。 1.1 在方法这块,button 组件内部通过暴露 click 方法实现,具体如下: 二、…

勇敢的小刺猬

故事名称:《勇敢的小刺猬》 角色: 小明(刺猬)小鸟森林医生邪恶的狐狸 场景:森林 【场景1:森林里的小路上】 小明(边走边哼着歌):今天的阳光真好,真是个适合帮…

盘点那些硬件+项目学习套件:STM32U5单片机开发板及入门常见问题解答

华清远见20岁了~过去3年里,华清远见研发中心针对个人开发板业务,打造了多款硬件项目学习套件,涉及STM32单片机、嵌入式、物联网、人工智能、鸿蒙、ESP32、阿里云IoT等多技术方向。 今天我们来盘点一下,比较受欢迎几款“硬件项目”…

ubuntu22.04安装部署02:禁用显卡更新

一、查看可用显卡驱动 ubuntu-drivers devices 二、查看显卡信息 # -i表示不区分大小写 lspci | grep -i nvidia nvidia-smi 三、查看已安装显卡驱动 cat /proc/driver/nvidia/version 四、锁定显卡升级 使用cuda自带额显卡驱动,居然无法,找到如何锁…

模拟请求ElasticSearch

Step1 安装chrome的这个插件 Step2 打开插件,GET的json填什么。 在IDEA的debug模式,走到Java代码的searchBuilder, 在这个searchBuilder变量里,对里面query变量点右侧 view按钮, IDEA里会显示出一个json&#xff…

ref和reactive

看尤雨溪说:为什么Vue3 中应该使用 Ref 而不是 Reactive?

Multisim14.0仿真(四十二)基于74LS183的8位表决器设计

一、74LS183简介: 74LS183是一种4位高速全加器,用于数字电路中的加法运算。74LS183输入端包括两个4位二进制数和一个进位信号,输出端包括1个4位二进制数和一个进位信号。 74LS138具有快速响应、低功耗灯特点,能实现高校的数字匀速…

接口和抽象类【Java面向对象知识回顾②】

Java中的抽象类和接口是两种常见的抽象概念,它们都能够帮助我们实现抽象化和多态性,但是它们在一些细节上有所不同 抽象类 抽象类是一种特殊的类,不能被实例化,只能被继承。抽象类具有类的所有特性,包括成员变量、成员…

链式二叉树(3)

目录 Main函数 ​ 二叉树第K层的节点个数 整体思路 分析理解 注意事项 二叉树查找值为x的节点 整体思路 分析理解 注意事项 Main函数 #include<stdio.h> #include<stdlib.h> #include<string.h> #include<assert.h> #include<math.h&g…

MATLAB怎么读取txt文件

在MATLAB中可以使用以下几种方式读取txt文本文件: importdata函数 A importdata(data.txt) 这会返回一个包含文本数据的cell数组。 dlmread函数 A dlmread(data.txt,,) 这会将文本文件中的数据读取为数值矩阵,其中’,指定了数据之间的分隔符。 textscan函数 fid fopen(…

算法41:掉落的方块(力扣699题)----线段树

题目&#xff1a;https://leetcode.cn/problems/falling-squares/description/ 在二维平面上的 x 轴上&#xff0c;放置着一些方块。 给你一个二维整数数组 positions &#xff0c;其中 positions[i] [lefti, sideLengthi] 表示&#xff1a;第 i 个方块边长为 sideLengthi &…

CSS是一门需要单独学习的技术吗?

CSS (Cascading Style Sheets) &#xff0c;做前端开发的人都很清楚&#xff0c;因为这是他们的一项必不可少的技能。我以前也是知道CSS&#xff0c;但从来没有单独学习过&#xff0c;认为就它只是用来渲染网页的表现层效果&#xff0c;定制页面和内元素的布局、颜色和字体等&a…

学习Android的第二天

目录 Android User Interface 用户界面 UI Android View与ViewGroup的概念 Android View android.view.View android.view.View XML 属性 android:id 属性 Android ViewGroup android.view.ViewGroup ViewGroup.LayoutParams ViewGroup.MarginLayoutParams ViewGr…

深度学习(12)--Mnist分类任务

一.Mnist分类任务流程详解 1.1.引入数据集 Mnist数据集是官方的数据集&#xff0c;比较特殊&#xff0c;可以直接通过%matplotlib inline自动下载&#xff0c;博主此处已经完成下载&#xff0c;从本地文件中引入数据集。 设置数据路径 from pathlib import Path# 设置数据路…