快速开发一个 ChatGPT 应用的保姆级教程

2023-05-16

本文转自 GitHub,原文:https://github.com/easychen/openai-gpt-dev-notes-for-cn-developer,版权归原作者所有。欢迎投稿,投稿请添加微信好友:cloud-native-yang

最近都在问,于是写个文档。本文希望用尽可能少的内容,讲清楚开发一个 OpenAI/GPT 应用必然用到的知识。

欢迎 PR 补充。

ChatGPT & OpenAI 的关系

ChatGPT 是 OpenAI 推出的应用,使用的是最新的模型;而 OpenAI 开放接口的模型是 gpt-3.5-turbo ,这个模型比 ChatGPT 应用要笨。但 ChatGPT 用的最新模型没有接口,只能通过无头浏览器等方式来使用(不稳定)。

更新:目前已经开放了 gpt-4 ,当前尚未提供图片输入接口,使用方式和 gpt-3.5-turbo 一致,只需要将 model 参数更换为 gpt-4 ,注意 gpt-4 的 max tokens 为 8k (gpt-4-32k 为 32k),Token 价格是 3.5 的 15~30 倍。

OpenAI API 接口能做什么

能做的事情很多,可以查看官方文档[1],但这个文档中国网络目前无法访问。

1fb1e6fbeee2790c69b54e105f7b6c9b.png

具体来讲,OpenAI 所有的可用的接口都在里边,包括语音识别和图片生成。但真正智能的其实只有 gpt-3.5-turbo,因此刚开始不用看其他内容。

目前大家看到的绝大部分 GPT 类应用都是由 gpt-3.5-turbo 模型的 chat completions 对话补全接口实现的。

61d67cd41aa0ea49828a436d31c967a2.png

chat completions 接口如何使用?

可以通过很多方式来使用,比如使用官方 SDK,第三方项目,但其实只需要一个 HTTP 请求就可以。以下是官方文档给出的例子:

curl https://api.openai.com/v1/chat/completions \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  -d '{
  "model": "gpt-3.5-turbo",
  "messages": [{"role": "user", "content": "Hello!"}]
}'

从里边可以看到,需要的信息有:

① 请求地址:https://api.openai.com/v1/chat/completions 这个地址目前在国内大部分地区已经无法访问了,后边会讲解决办法

② 最常用的接口参数包括:

  1. model: 必填,建议使用 gpt-3.5-turbo,便宜。计费后边会讲。

  2. messages: AI 进行提问的问题或信息。

  3. max_tokens: 选填,指定生成回答的最大 Token 数。

  4. stream: 选填,是否按流的方式发送内容。

其中 messages 的格式为:{"role","content"}。一般用 user 发送用户问题;system 发送给模型提示信息。

例如:

[
  {"role": "system", "content": "You are a helpful assistant that translates English to French."},
  {"role": "user", "content": "Translate the following English text to French: {text}"}
]

知道了这些基本就可以跑通 GPT 流程了,其他 role 可以稍后优化时来做。

Stream 参数

这里单独说一下 stream 参数,当它设置为 true 时,API 会以 SSE( Server Side Event )方式返回内容。

SSE 本质上还是 HTTP 协议,只不过它是一个长链接,先输出一个 header("Content-Type: text/event-stream") , 然后持续不断地输出内容直到完成。如果不是做实时聊天,建议直接 false 掉。

需要注意的是,开启 stream 后,将不会返回 usage 信息,这对精准计费有影响

{"id":"chatcmpl-6s3hNohxOliHi8zR7m5UTrLm4cWWc","object":"chat.completion.chunk","created":1678341949,"model":"gpt-3.5-turbo-0301","choices":[{"delta":{"content":"我"},"index":0,"finish_reason":null}]}
{"id":"chatcmpl-6s3hNohxOliHi8zR7m5UTrLm4cWWc","object":"chat.completion.chunk","created":1678341949,"model":"gpt-3.5-turbo-0301","choices":[{"delta":{"content":"没有"},"index":0,"finish_reason":null}]}
{"id":"chatcmpl-6s3hNohxOliHi8zR7m5UTrLm4cWWc","object":"chat.completion.chunk","created":1678341949,"model":"gpt-3.5-turbo-0301","choices":[{"delta":{"content":"当前"},"index":0,"finish_reason":null}]}
{"id":"chatcmpl-6s3hNohxOliHi8zR7m5UTrLm4cWWc","object":"chat.completion.chunk","created":1678341949,"model":"gpt-3.5-turbo-0301","choices":[{"delta":{"content":"日期"},"index":0,"finish_reason":null}]}
{"id":"chatcmpl-6s3hNohxOliHi8zR7m5UTrLm4cWWc","object":"chat.completion.chunk","created":1678341949,"model":"gpt-3.5-turbo-0301","choices":[{"delta":{"content":"的"},"index":0,"finish_reason":null}]}
{"id":"chatcmpl-6s3hNohxOliHi8zR7m5UTrLm4cWWc","object":"chat.completion.chunk","created":1678341949,"model":"gpt-3.5-turbo-0301","choices":[{"delta":{"content":"实"},"index":0,"finish_reason":null}]}
{"id":"chatcmpl-6s3hNohxOliHi8zR7m5UTrLm4cWWc","object":"chat.completion.chunk","created":1678341949,"model":"gpt-3.5-turbo-0301","choices":[{"delta":{"content":"时"},"index":0,"finish_reason":null}]}
{"id":"chatcmpl-6s3hNohxOliHi8zR7m5UTrLm4cWWc","object":"chat.completion.chunk","created":1678341949,"model":"gpt-3.5-turbo-0301","choices":[{"delta":{"content":"信息"},"index":0,"finish_reason":null}]}

其他参数

接口的其他参数可以看官方文档[2],访问不了的同学可以看我做的截图。

41f9e91a3124790bd34be100970255f1.png 08564a004998b67a1cc6f9c4e0d48523.png

Chat completions 接口如何计费?

chat completions 接口按 token 计费,有一个专门的算法来计算 token。输入和输出全部都会计入到 token 里边,在 chat completions 接口的 usage 里边会有具体消耗的 token 数。

如果你要自己计算,可以用这个在线表单[3],程序计算可以看看这两个项目:

  1. https://github.com/dqbd/tiktokenizer

  2. https://github.com/openai/tiktoken

除了 gpt-3.5-turbo 模型的 chat completions 接口,还有 text-davinci-003 模型的 text completions 接口可以用,但是价格更贵,效果更差 🤣

你可以在 👉https://openai.com/pricing 查询到价格,以下是 3 月中旬的定价

ModelUsage
gpt-3.5-turbo (ChatGPT)$0.002 / 1K tokens
Davinci (InstructGPT)$0.0200 / 1K tokens
Ada (InstructGPT)$0.0004 / 1K tokens
Babbage (InstructGPT)$0.0005 / 1K tokens
Curie (InstructGPT)$0.0020 / 1K tokens

chat completions 接口能做什么 ①

虽然 chat completions 看起来像是一个聊天接口,但接口设计上并没有为聊天优化,因为这个接口是记不住上下文的。

为了让对话具有连续性,我们每次请求需要带上上次的聊天记录。有多种方式解决这个问题,一个是直接在 messages 参数中加上聊天记录。其中,GPT 返回的内容用 assistant role。

[
     {"role": "system", "content": "You are a helpful assistant."},
     {"role": "user", "content": "Who won the world series in 2020?"},
     {"role": "assistant", "content": "The Los Angeles Dodgers won the World Series in 2020."},
     {"role": "user", "content": "Where was it played?"}
 ]

另一个方式是使用第三方库,比如 chatgpt-api,它可以自动帮你发送聊天记录(通过指定对话的 parentMessageId 实现):

  1. 👉https://github.com/transitive-bullshit/chatgpt-api

d7bd1383631913b92b3d7c12573ae442.png

在加上对话记录后,chat completions 接口就可以制作一个看起来有智能的聊天应用了。

如果你要在国内运营聊天机器人之类的话,请记得将内容通过文本内容审核接口进行审核,否则很可能导致被封。

chat completions 接口能做什么 ②

其实除了对话,GPT 有很强的内容总结归纳能力,另外由于它能理解内容结构,同时本身又是语言模型,因此对结构化翻译很擅长。

比如,我经常用它翻译 JSON 和 Markdown,大部分情况下效果很好。在自用体验很好的情况下,我们可以将其制作为应用。

6c0da96df6c8a1e44ec9d6975c77accc.png

应用开发非常简单,我只用一天时间开发了AiBox[4],按基本的 web 应用开发就可以,重点说几个细节:

  1. 提示词:直接把提示词以 system 的 role 提交就可以。

  2. Key 问题:开发者的 Key 肯定是不够用的,因此一般会让使用者填写自己的 Key。但是国内用户没有海外手机号,无法申请 key; 申请下来 API 直接访问也不通,解决方案有几种,后边专门讲

  3. Token 计算和限制问题:如果使用者用自己的 Key,为了提升体验,我们可以提供一个 Token 计算,让用户知道自己的会花多少钱。另外如果你没有用第三方那个库来分拆,那么一次请求的内容不要超过 max_tokens 的限制。这个值一般是 4096。

国内是否可以上线运营 GPT 相关业务?

就目前而言,我了解到的情况是大部分企业没有收到明确禁止运营 GPT 相关业务的通知,但在国内运营要做好内容安全,比如对接口返回的内容再过一层内容审核。否则如果在应用中出现违规内容被举报,就会被封禁。

但这是一个随时可能变化的情况,我们准备了一个 issue[5]供大家反馈。

如何解决国内用户无法注册 OpenAI 账号、无法访问 OpenAI 接口的问题?

两个思路,一个是绕道海外去注册,通过代理使用服务;另一个是直接使用第三方代理 API 服务。前者可以暂时解决当前的问题;后者更方便省心。

注册 OpenAI

  1. 准备一个海外的网络

  2. 准备一个海外手机号来接收验证短信,可以用 海外虚拟号码[6]

注册完成后,进入API 页面[7] 创建 Key,然后就可以使用了。

这个方案目前可行,是因为 OpenAI 给每个新用户提供了 18 美金的免费额度。但是一旦不再提供,就会面临充值的问题。目前 OpenAI 不接受中国信用卡,因此还必须准备一个海外信用卡。也就是说,要长久稳定的使用,必须有海外信用卡。

以前有财付通的海外虚拟信用卡,后来服务下线了。最近看了下,很多 500RMB 起,还只支持电商网站,感觉不太靠谱 🤣

访问 OpenAI API

3 月 3 日开始,国内大部分网络不再能直接访问 OpenAI 接口。

6bc06c20bf7771473ad3758e0bfc644f.png

因此你需要架设代理来访问 OpenAI 接口。你可以将整个服务器代理到海外网络,或者只是简单的通过 Cloudflare 或者 腾讯云函数来部署 API 代理。

如果你准备使用腾讯云函数,教程可以看这里[8]

f25ba18fe509c132cd15e3314e7319ae.png

需要注意的是,腾讯云 API 代理会将长连接内容一次性返回,因此流式体验不明显。当然,有同学说腾讯云的 ApiGateway 直接就能代理,但我测试了下没成功。

通过第三方接口访问

如果你搞不定海外手机号和信用卡,或者自己不想架设代理,那么可以考虑用像API2D[9]这样的第三方代理 API。

主要的优点:

  1. 基本兼容原有接口,只需要改下 API endpoint 和 Key

  2. 接口国内直接可以访问,无需架设代理

  3. 支持微信和国内卡充值,提供最小 0.5 美金 /3.5 人民币的测试档位,GitHub 注册还有 50 点免费额度试用

  4. 添加 moderation 参数,可以返回内容审核结果,省事

  5. 推荐可以获得点数,这里是我的 推荐链接[10]

缺点:

  1. 不支持 stream 参数,已经支持 stream

  2. 目前只支持 chat 和 embeddings 接口

  3. 价格比官方略高,大概 1.5 倍,当然这个包含了流量中转的成本

利益相关:api2d 这个产品是作者加拿大的朋友做的,而且作为早期用户一直在重度使用

如何避免 OpenAI 封禁账号 API 权限

最近得到反馈,很多架设香港代理的账号收到了邮件被禁用了权限。经过群里大家的讨论,总结的经验如下:

  1. 不要使用 OpenAI 不服务地区的代理

  2. 虚拟海外手机号更可能导致账号被封

  3. 绑定信用卡可以大幅提升账号存活率

如何知道 OpenAI 接口状态

OpenAI 官方提供了一个状态页[11],虽然小故障不怎么显示,但大面积宕机时能看到公告。

1e86b8908eb56bc6da71c9e2b04c0d61.png

引用链接

[1]

官方文档: https://platform.openai.com/docs

[2]

官方文档: https://platform.openai.com/docs/api-reference/chat

[3]

在线表单: https://tiktokenizer.vercel.app

[4]

AiBox: https://ai.ftqq.com/

[5]

一个 issue: https://github.com/easychen/openai-api-proxy/issues/11

[6]

海外虚拟号码: https://sms-activate.org/?ref=4207095

[7]

API 页面: https://openai.com/api/

[8]

教程可以看这里: https://github.com/easychen/openai-api-proxy/blob/master/FUNC.md

[9]

API2D: https://api2d.com

[10]

推荐链接: https://api2d.com/r/186008

[11]

状态页: https://status.openai.com/

80b9266d1d562392c8dc31d28ab44f46.gif

9a244c2e663d925b9cad3caf1284565e.png

你可能还喜欢

点击下方图片即可阅读

续集来了!我让 GPT-4 用 Laf 三分钟写了个完整的待办事项 App

2023-03-21

b3c6db5bc6621117610b22eb0117f6b2.jpeg

我用 Laf 三分钟写个 ChatGPT,Laf 创始人:明天来上班!

2023-03-14

c53013213c5b7482e059b297ed613cb3.jpeg

三分钟拥有自己的 ChatGPT (从开发到上线)

2023-03-12

6877ba22e024d5994a82cc3f3a361f7e.jpeg

810fdca89420e7ca4d9a557008237f25.gif

云原生是一种信仰 🤘

关注公众号

后台回复◉sealos◉获取以 kubernetes 为内核的云操作系统发行版,在云桌面中管理 Kubernetes 集群生命周期,运行分布式应用程序!

8325caab98d3e8460aa54861997acbd0.gif

c33d6a98c78e131ded8d87141f9bdb15.gif

点击 "阅读原文" 获取更好的阅读体验!

发现朋友圈变“安静”了吗?

98d74c17fb9b404b6ed7342df289f94a.gif

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

快速开发一个 ChatGPT 应用的保姆级教程 的相关文章

  • 二分查找模板分析

    模板说明 xff1a 你在网上看到的 99 的二分查找问题会归结于这 3 个模板中的一个 有些问题可以使用多个模板来实现 xff0c 但是当你做更多的练习时 xff0c 你会注意到一些模板比其他模板更适合某些问题 注意 xff1a 模板和它
  • 使用SMPL进行pose and shape estimation常用数据集关节点信息

    1 SMPL模型关节点名称 self j names 61 0 39 Pelvis 39 1 39 L Hip 39 2 39 R Hip 39 3 39 Spine1 39 4 39 L Knee 39 5 39 R Knee 39 6
  • 研究生生涯的一些经验和感悟

    研究生生涯的一些经验和感悟 引言 写这篇博客前 xff0c 我不禁要感慨一下互联网分享所带来的好处 我这里讲的分享主要是指知识 技术和个人思想的分享 网络新闻媒体更多是传播一些资讯 xff0c 而这些资讯一般不涉及深入的技术 xff0c 深
  • U-SEM体验模型——让游戏交互设计的维度更加清晰

    U SEM体验模型 让游戏交互设计的维度更加清晰 U SEM体验模型 让游戏交互设计的维度更加清晰游戏交互设计的定位游戏交互设计的场景游戏对玩家输出玩家对游戏输入 游戏交互体验的维度 U SEM体验模型游戏交互的复杂度游戏交互设计的应用 游
  • ROS中geometry_msgs消息类型

    Point 点 float64 x xff0c float64 y xff0c float64 z Point32 float32 x xff0c float32 y xff0c float32 z 一般使用Point xff0c 大规模点
  • TTY 到底是个什么玩意?

    先来回答一道面试题 xff1a 我们知道在终端中有一些常用的快捷键 xff0c Ctrl 43 E 可以移动到行尾 xff0c Ctrl 43 W 可以删除一个单词 xff0c Ctrl 43 B 可以向前移动一个字母 xff0c 按上键可
  • ftp命令大全详解

    来熟悉熟悉ftp命令 xff0c 对于服务器之间的文件传输太有用啦 xff0c 不会怎么能行呢 xff01 先来看看基础的命令 xff0c 包括了连接 xff0c 列出列表 xff0c 下载 xff0c 上传 xff0c 断开这最基础的命令
  • TCP/IP,Linux中使用信号量控制运行中的进程,使用signal函数绑定信号量和处理函数,替换信号量默认功能,信号量会打断sleep的休眠状态

    TCP IP xff0c Linux中使用信号量控制运行中的进程 xff0c 绑定信号量和处理函数 xff0c 信号量会打断sleep的休眠状态 一 Linux中使用信号量对进程的调控 xff1a 1 信号量是一个int值 xff0c 由操
  • 几种经典非线性滤波算法简单概括(EKF,UKF,CKF,PF)

    几种经典非线性滤波算法概括 xff08 EKF xff0c UKF xff0c CKF xff0c PF xff09 上一篇文章阐述了Kalman滤波算法 xff0c 该算法是在线性高斯下的最优滤波估计算法 但是在实际控制系统中 xff0c
  • 扩展卡尔曼滤波(EKF)算法详细推导及仿真(Matlab)

    扩展卡尔曼滤波 xff08 EKF xff09 算法详细推导及仿真 xff08 Matlab xff09 扩展卡尔曼滤波算法是解决非线性状态估计问题最为直接的一种处理方法 xff0c 尽管EKF不是最精确的 最优 滤波器 xff0c 但在过
  • uio驱动编写 实例1

    AUTHOR xff1a Joseph Yang 杨红刚 lt eagle rtlinux 64 gmail com gt CONTENT uio驱动编写 实例1 NOTE xff1a linux 3 0 LAST MODIFIED xff
  • raspberry pi pico, 如何在macos平台使用picoprobe,vscode来debug程序

    debugprobe 80元人民币 再买一块pico 刷上debug程序 xff0c 仅要16元 xff0c 当然用便宜的 在mac上的vs code总是遇见问题 单独运行openocd时 xff0c 也有问题 xff0c 出现错误 CMS
  • 1—类、域、方法和实例对象

    Java 是面向对象的高级编程语言 xff0c 类和对象是 Java 程序的构成核心 围绕着 Java 类和 Java 对象 xff0c 有三大基本特性 xff1a 封装是 Java 类的编写规范 继承是类与类之间联系的一种形式 而多态为系
  • 常用数学公式汇总

    常用数学公式汇总 一 基础代数公式 1 平方差公式 xff1a xff08 a xff0b b xff09 xff08 a xff0d b xff09 xff1d a2 xff0d b2 2 完全平方公式 xff1a xff08 a b x
  • Kubernetes--API Server资源隔离

    Kubernetes的一些功能特性也与公有云提供商密切相关 xff0c 例如 xff1a 负载均衡服务 弹性公网IP 存储服务等 xff0c 具体实现也需要与API Server通信 xff0c 也属于运行商内部重点保障的安全区域 此外 x
  • 公式提取方法

    Mathpix Snipping Tool和MathType配合用法 Mathpix Snipping Tool是一个可以提取数学公式的工具 xff0c 当我们写毕业论文或者结课报告或者参加数学建模等比赛的用到的公式 xff0c 可以用这款
  • (学习unix编程)关于文件流与文件描述符的区别

    文件描述符 xff08 就是整数 xff09 用于在一个进程内唯一的标识打开的文件 这假定了内核能够在用户进程的描述符和内核内部使用的机构之间 xff0c 建立一种关联 xff08 深入linux内核架构 xff09 由于唯一标识进程的结构
  • 2000页kubernetes操作手册,内容详细代码清晰,小白也能看懂

    现如今 xff0c Kubernetes业务已成长为新时代的IT基础设施 xff0c 并成为高级运维工程师 架构师 后端开发工程师的必修技术栈 毫无疑问 xff0c Kubernetes是云计算发展演进的一次彻底革命性的突破 xff0c 只
  • Linux安装nodejs和npm

    最近window系统转向linux系统开发 xff0c linux系统的确适合程序员的开发 作为前端安装了nodejs和npm xff0c 遇到了一些坑 xff0c 赶紧记录下来 第一种安装方法 xff1a 安装nodejs xff1a s
  • 查看core dumped的详细错误原因

    什么是Core Dump Core的意思是内存 Dump的意思是扔出来 堆出来 开发和使用Unix程序时 有时程序莫名其妙的down了 却没有任何的提示 有时候会提示core dumped 这时候可以查看一下有没有形如core 进程号的文件

随机推荐

  • IntelliJ IDEA创建Servlet最新方法 Idea版本2020.2.2以及IntelliJ IDEA创建Servlet 404问题(超详细)

    第一次用IntelliJ IDEA写java代码 xff0c 之前都是用eclipse xff0c 但eclipse太老了 下面为兄弟们奉上IntelliJ IDEA创建Servlet方法 xff0c 写这个的目的也是因为在网上找了很多资料
  • Linux下做C语言/C++开发的一些建议

    相对于Linux下的C C 43 43 开发 xff0c 在windows下的初学者往往容易入门 xff0c 原因是visual studio 这个强大的工具隐藏了很多的细节 xff0c 好多人甚至以为拖拖控件 xff0c 写写消息响应函数
  • Target ‘STM32F4xx‘ uses ARM-Compiler ‘Default Compiler Version 5‘ which is not available.找不到v5版本解决方法

    现在官网上没有v5的版本了 xff0c keil默认安装的是v6的版本 xff0c 如果工程想要运行以前的工程 xff0c 可以设置将工程的编辑器从v5转到v6 xff0c 下面是方法 xff1a 1 使用MDK打开工程 2 选择 Proj
  • 关于imu的介绍

    1 imu时惯性运动丹云 xff0c 包含加速度计和陀螺传感器的组合 它被用来检查加速度和角速度 xff08 IMU传感器 xff0c 你所需要知道的全部 知乎 xff09 虽然时外文翻译的 xff0c 凡是整体风格清晰 2 imu的使用
  • LSTM与GRU

    LSTM 与 GRU 一 综述 LSTM 与 GRU是RNN的变种 xff0c 由于RNN存在梯度消失或梯度爆炸的问题 xff0c 所以RNN很难将信息从较早的时间步传送到后面的时间步 LSTM和GRU引入门 xff08 gate xff0
  • Pytorch 实战RNN

    一 简单实例 span class token comment coding utf8 span span class token keyword import span torch span class token keyword as
  • Pytorch : Dataset和DataLoader

    一 综述 Dataset 对数据进行抽象 xff0c 将数据包装为Dataset类 DataLoader 在 Dataset之上对数据进行进一步处理 xff0c 包括进行乱序处理 xff0c 获取一个batch size的数据等 二 Dat
  • 特征工程

    一 数据读取 1 1 读取CSV文件 1 1 1 原文件内容 1 1 2 读取csv span class token keyword import span csv csv file span class token operator 6
  • 续集来了!我让 GPT-4 用 Laf 三分钟写了个完整的待办事项 App

    书接前文 xff0c 上篇文章我们教大家如何三分钟时间用 Laf 实现一个自己的 ChatGPT 一觉醒来 xff0c GPT 4 已经发布了 xff01 GPT 4 实现了真正的多模态 xff0c 可以把纸笔画的原型直接写出网页代码 读论
  • 代码命名规范

    代码命名规范 现在是2016年12月30日中午12点35分 xff0c 这是我第一次写博客 xff0c 用的是markdown编辑器 xff0c 还不太会用 今天就先简单的写一下 xff0c 看看写出来的效果是什么样的 xff01 xff0
  • 盘点2016

    年年有计划 xff0c 岁岁有复盘 xff0c 今天是2016年的最后一天 我也来回忆一下我的2016年 xff0c 展望一下2017年 记得去年的跨年是和几个朋友在一块儿的过的 xff0c 记得当时玩儿了麻将 xff0c 我输了 xff0
  • easyui combobox动态绑定数据

    1 jsp上的写法 lt input span class hljs keyword class span 61 span class hljs string 34 easyui combobox 34 span id 61 span cl
  • Echarts(二、柱状图(各参数详细描述))

    1 jsp页面 span class hljs tag lt span class hljs title body span gt span span class hljs tag lt span class hljs title div
  • js中级脚本算法

    1区间求值算法挑战 span class hljs function span class hljs keyword function span span class hljs title sumAll span span class hl
  • 自定义封装类PageData

    PageData类 xff0c 它继承了HashMap xff0c 外加实现了Map xff0c 用来自动将前台传递过来的数组参数自动装换成Map对象 PageData的对象 xff0c 这样做的 好处是每次不用手动去解析前台传递的数据了
  • 常用easyUI -icon 图标

    1 样式 代码 xff1a lt DOCTYPE html gt lt html lang 61 34 en 34 gt lt head gt lt meta charset 61 34 UTF 8 34 gt lt title gt Ea
  • vue与后台交互数据(vue-resource)

    需要引入库 xff1a vue resource lt script src 61 34 https cdn jsdelivr net vue resource 1 0 3 vue resource min js 34 gt lt scri
  • 嵌入式开发scp Permission denied

    嵌入式开发过程中 xff0c 遇到scp Permission denied xff0c 将目标文件chmod 777也不起作用 xff0c 其实需要修改ssh的配置 如下 xff1a sudo vim etc ssh ssh config
  • Ubuntu16.04下安装ROS Kinetic并接入某16线激光雷达SDK

    一 搭建ROS Kinetic 1 ROS版本和Ubuntu版本对应关系 xff1a 如上图所示 xff0c Ubuntu16 04对应kinetic xff0c Ubuntu14 04对应indigo xff0c 若在 Ubuntu 14
  • 快速开发一个 ChatGPT 应用的保姆级教程

    本文转自 GitHub xff0c 原文 xff1a https github com easychen openai gpt dev notes for cn developer xff0c 版权归原作者所有 欢迎投稿 xff0c 投稿请