咱们好,我是老三,最近几个月关于ChatGPT的信息能够说是铺天盖地。

“王炸,ChatGPT……”

“xxx震慑发布……”

“真的要失业了,xxx来袭……”

“普通如何运用ChatGPT……”

……

不过老三前一阵比较忙,对ChatGPT的运用根本只限于一些简略的问答,比如:

关于ChatGPT的一些随笔

能够说是掉队到家了,刚好公司组织了对ChatGPT的一些讨论和实践,趁这个时机赶忙补补课。

快速上手

作为一般的后端开发人员,要运用ChatGPT,其实首要仍是是调用openai的接口,先跟着官方文档(platform.openai.com/docs/quicks…),快速开始。

简介

  • completions接口:platform.openai.com/docs/api-re…

这个接口是openai核心接口,输入里有个参数prompt,能够简略理解为问,呼应里有个参数completion,能够简略理解为答。

关于ChatGPT的一些随笔

创立运用

官方给了Node.js和Python的Demo,没有关系,反正无非是接口调用,用什么都能够。

由于我本地装备了Python的环境,所以就跟着官方的Python Demo走一走。

拉取项目

Python环境的创立这儿就不多说了,直接把官方的Demo拉下来。

git clone https://github.com/openai/openai-quickstart-python.git

增加API Key

首要需求在这个地址:platform.openai.com/account/api… 增加一个api-key.

关于ChatGPT的一些随笔

在.env文件里增加装备OPENAI_API_KEY:

关于ChatGPT的一些随笔

运转

  • 安装依靠
python -m venv venv
. venv/bin/activate
pip install -r requirements.txt
  • 运转项目
flask run
  • 访问http://localhost:5000

关于ChatGPT的一些随笔

简略看下官方Demo,官方供给了Python包:

import openai

官方还供给了node.js的包,社区也贡献了一些其他言语的包(platform.openai.com/docs/librar…):

  • Java:github.com/TheoKanning…
  • Go:github.com/sashabarano…

……

Python Demo里便是直接用封装的办法调用:

response = openai.Completion.create(
            model="text-davinci-003",
            prompt=generate_prompt(animal),
            temperature=0.6,
        )

不用官方和社区封装的包,直接http调用也能够。

当然openai也不是免费的,以gpt-3.5-turbo为例,费用是0.002/1Ktokens,也便是大约0.002 / 1K tokens,也便是大约0.002 / 750个词,详细费用能够看看:openai.com/pricing,注册送了18,大约能答不到1000个问题吧。

常见API

在快速开始里用了Completion API,接下来再看看常见的API。

模型

Model(模型)是openai的核心,有一系列不同功能不同版别的模型。

关于ChatGPT的一些随笔

Playground

在前面,咱们跑了官方的Demo,其实还有一个更简略方便的方式,官方供给了一个好用的Playground,有点像开发版的chatGPT,能够直接指定不同的模型不同的参数,调用不同的api:

关于ChatGPT的一些随笔

还能够直接检查代码,支撑python、node.js、curl。

关于ChatGPT的一些随笔

接下来看看openai的内容处理,首要包括三种:Text completionCode completionImage generation,别离针对文本、代码和图片。

内容处理API

调用API仍是用Python,由于官方给了Demo,Python跑起来也比较轻便。

接着用官方的实例,open-ai需求升级到最新版别:

关于ChatGPT的一些随笔

Completion

  • Completions:platform.openai.com/docs/api-re…

这个是比较早,用的比较多的接口,不支撑gpt-3.5和gpt-4模型的模型。

参数 类型 阐明
model string 必填,指定功能模型
prompt string 或 array 提示语
max_tokens integer 默认值 16,The maximum number of tokens to generate in the completion.
temperature number 默认值 1,采样精度,取值范围为 0~2,较高的值(如 0.8)将使输出更加随机,而较低的值(例如 0.2)将使其更加相关
top_p number 默认值 1,采样精度的另一种表明方式,如 0.1 表明更相关的 10% 的内容,请不要和 temperature 同时运用(2 选 1)
n integer 默认值 1,回来内容的条数
stream boolean 默认值 false,是否流式输出内容
echo boolean 默认值 false,是否回显 prompt 内容
stop string 或 array 默认值 null,Up to 4 sequences where the API will stop generating further tokens. The returned text will not contain the stop sequence.
  • Python请求
import os
import openai
openai.api_key = os.getenv("OPENAI_API_KEY")
​
response=openai.Completion.create(
  model="text-davinci-003",
  prompt="Hello World",
  max_tokens=512,
  temperature=0
)
  • 呼应
{
  "choices": [
    {
      "finish_reason": "stop",
      "index": 0,
      "logprobs": null,
      "text": "\n\nMy name is John and I am new to this website. I am interested in learning more about programming and computer science."
    }
  ],
  "created": 1679751379,
  "id": "cmpl-6xyM7jPbvSSO7umjVk8HkrRfJVoHZ",
  "model": "text-davinci-003",
  "object": "text_completion",
  "usage": {
    "completion_tokens": 26,
    "prompt_tokens": 2,
    "total_tokens": 28
  }
}

能够看到已经回复了,咱们要是想持续怎样办呢?也便是类似chatGPT里接着会话——那就需求把整个上下文传过去。

关于ChatGPT的一些随笔

比如上面一个,我希望它能持续答复:

import os
import openai
openai.api_key = os.getenv("OPENAI_API_KEY")
​
prompt_context=["Hello World","\n\nMy name is John and I am new to this website. I am interested in learning more about programming and computer science.","Any more?"]
​
response=openai.Completion.create(
  model="text-davinci-003",
  prompt=prompt_context,
  max_tokens=1024,
  temperature=0
)
  • 呼应:能够看到接着持续答复了
{
  "choices": [
    {
      "finish_reason": "stop",
      "index": 0,
      "logprobs": null,
      "text": "\n\nMy name is John and I am new to this website. I am interested in learning more about programming and computer science."
    },
    {
      "finish_reason": "stop",
      "index": 1,
      "logprobs": null,
      "text": " I have some basic knowledge of HTML and CSS, but I am looking to expand my knowledge and learn more about other programming languages. I am also interested in learning more about web development and design."
    },
    {
      "finish_reason": "stop",
      "index": 2,
      "logprobs": null,
      "text": "\n\n-Making sure to get enough sleep\n-Eating a balanced diet\n-Drinking plenty of water\n-Exercising regularly\n-Managing stress\n-Limiting alcohol and caffeine intake\n-Practicing relaxation techniques\n-Spending time outdoors\n-Connecting with friends and family\n-Engaging in creative activities\n-Volunteering in the community\n-Practicing mindfulness and meditation"
    }
  ],
  "created": 1679751585,
  "id": "cmpl-6xyPRzgmrTskbfQ85l5MdmIdUU6iZ",
  "model": "text-davinci-003",
  "object": "text_completion",
  "usage": {
    "completion_tokens": 149,
    "prompt_tokens": 31,
    "total_tokens": 180
  }
}

当然prompt传的越多,网络耗费,以及耗费都越多,那怎样削减上下文传递呢?

关于ChatGPT的一些随笔

详细完结,感兴趣的也能够再问问ChatGPT。

Chat

  • Chat:platform.openai.com/docs/api-re…

2023 年 3 月 1 日新增接口,运用的是最新的 GPT-3.5 模型和 GPT-4 模型。与 Completion API 不同,ChatCompletion API 更适合用于实时的、多轮的对话。

import os
import openai
openai.api_key = os.getenv("OPENAI_API_KEY")
chat = openai.ChatCompletion.create(
  model="gpt-3.5-turbo",
  messages=[
    {"role": "system", "content": "You are a assistant of shein,you can help user to resolve problems."},
    {"role": "user", "content": "How can I refund my order?"},
  ]
)
  • 呼应:
{
  "choices": [
    {
      "finish_reason": "stop",
      "index": 0,
      "message": {
        "content": "To initiate a refund for your Shein order, you can follow these steps:\n\n1. Log in to your Shein account.\n2. Go to your order history and find the order you want to refund.\n3. Click on the "Return" button and select the item(s) you want to return.\n4. Choose the reason for the return and add any pictures or comments if necessary.\n5. Submit the return request and wait for Shein to send you a confirmation email.\n6. Pack and send your items back to Shein according to the instructions provided in the email.\n7. Once Shein receives and processes your return, your refund will be issued to your original payment method within 7-14 business days.\n\nNote: Make sure to check Shein's return policy before initiating a refund to ensure that your item is eligible for return.",
        "role": "assistant"
      }
    }
  ],
  "created": 1679876980,
  "id": "chatcmpl-6yV1wSwqM09Aqb6QvFENUvuvC4ehW",
  "model": "gpt-3.5-turbo-0301",
  "object": "chat.completion",
  "usage": {
    "completion_tokens": 171,
    "prompt_tokens": 36,
    "total_tokens": 207
  }
}

ChatCompletion支撑三种人物:

  • user:用户,提出问题或者输入内容的人
  • assint:谈天机器人,依据GTP3等模型的的机器人,能够答复用户的问题或者会话。
  • system:运用程序,负责处理用户输入,然后传递给谈天机器人,或者接收谈天机器人的答复,展示给用户。运用程序也能够负责处理其他任务,例如将用户输入保存到数据库中。

实践运用中,能够通过system指定指定 chatGPT 的功能定位,在 assistant 中传 chatGPT 答复的消息就完结了上下文。

Images

OpenAI的图片接口,支撑通过描绘生图,和以图生图:

  • Images(通过描绘生成图):platform.openai.com/docs/api-re…
参数 阐明
prompt 图片描绘,必填
n 需求生成的图片数量,取值 1-10,默认值 1
size 图片大小,取值只能为 256×256、512×512、1024×1024,默认值 1024×1024
response_format 回来图片数据类型,取值 url 或 b64_json,默认值 url
import os
import openai
openai.api_key = os.getenv("OPENAI_API_KEY")
response=openai.Image.create(
  prompt="A beautiful young and generous Chinese girl",
  n=1,
  size="1024x1024"
)
  • 呼应
{
  "created": 1679877722,
  "data": [
    {
      "url": "https://oaidalleapiprodscus.blob.core.windows.net/private/org-ZPdLSXE667sQLqeMtNJSlY4u/user-CdRYPYeBIHN8eGFIq87eroQN/img-sSV6B5nOzOpRre41J73guwu6.png?st=2023-03-26T23%3A42%3A02Z&se=2023-03-27T01%3A42%3A02Z&sp=r&sv=2021-08-06&sr=b&rscd=inline&rsct=image/png&skoid=6aaadede-4fb3-4698-a8f6-684d7786b067&sktid=a48cca56-e6da-484e-a814-9c849652bcb3&skt=2023-03-26T20%3A06%3A23Z&ske=2023-03-27T20%3A06%3A23Z&sks=b&skv=2021-08-06&sig=EphBdwHcs4p5x3F5su8r9NvG8mGRKx4cOkCjbBWekGA%3D"
    }
  ]
}

咱们看看生成的图怎样样?

关于ChatGPT的一些随笔

我滴妈,哕……

  • Create image variationBeta(以图生图):platform.openai.com/docs/api-re…

从某竞品网站下了一张好看的模特图:

关于ChatGPT的一些随笔

图片需求裁剪和压缩一下,图片长宽需求1:1,是png文件,而且小于4M。

import os
import openai
openai.api_key = os.getenv("OPENAI_API_KEY")
response=openai.Image.create_variation(
  image=open("apis/model.png", "rb"),
  n=1,
  size="1024x1024"
)
print(response)
  • 呼应
{
  "created": 1679878760,
  "data": [
    {
      "url": "?st=2023-03-26T23%3A59%3A20Z&se=2023-03-27T01%3A59%3A20Z&sp=r&sv=2021-08-06&sr=b&rscd=inline&rsct=image/png&skoid=6aaadede-4fb3-4698-a8f6-684d7786b067&sktid=a48cca56-e6da-484e-a814-9c849652bcb3&skt=2023-03-26T14%3A21%3A52Z&ske=2023-03-27T14%3A21%3A52Z&sks=b&skv=2021-08-06&sig=YR39Y3sxD7kqnoJcVqEqKxc9bBi//nsn3X0SOtX/wI4%3D"
    }
  ]
}

看看生成的图片,

关于ChatGPT的一些随笔

啊这。。。

当然chatGPT也支撑对现有图的修正。

  • Create image edit(以图修图可修正):platform.openai.com/docs/api-re…)
import os
import openai
openai.api_key = os.getenv("OPENAI_API_KEY")
response=openai.Image.create_edit(
  image=open("apis/model.png", "rb"),
  mask=open("apis/model.png", "rb"),
  prompt="Generate a female model who is equally beautiful, hotter, but with different looks and clothes",
  n=2,
  size="1024x1024"
)
print(response)
  • 呼应:
{
  "created": 1680363981,
  "data": [
    {
      "url": "?st=2023-04-01T14%3A46%3A21Z&se=2023-04-01T16%3A46%3A21Z&sp=r&sv=2021-08-06&sr=b&rscd=inline&rsct=image/png&skoid=6aaadede-4fb3-4698-a8f6-684d7786b067&sktid=a48cca56-e6da-484e-a814-9c849652bcb3&skt=2023-04-01T08%3A48%3A23Z&ske=2023-04-02T08%3A48%3A23Z&sks=b&skv=2021-08-06&sig=ajPilUO%2BzBNQDtFDHrEyK2/njZQrZsaTyV7wjQRFRJM%3D"
    }
  ]
}

虽然,但是,这个api我尝试了好几个prompt,给我吐回的都是原图。

全体上来讲,chatGPT的Images API仍是没有文本问答那么好用,而且比较贵,尺寸 1024×1024 像素的图一张收费 0.02 美元,大约人民币 0.13 元左右。

Audio

chatGPT还支撑语音辨认

  • Audio:platform.openai.com/docs/api-re…
import os
import openai
openai.api_key = os.getenv("OPENAI_API_KEY")
audio_file = open("apis/audio.mp3", "rb")
transcript = openai.Audio.transcribe("whisper-1", audio_file)
print(transcript)

我一开始用了一段中英稠浊的言语,成果呼应:

{
  "text": "Java\u662f\u8fd9\u4e2a\u4e16\u754c\u4e0a\u6700\u597d\u7684\u8bed\u8a00 \u4f46\u662f\u6211\u7528Python"
}

乱码了,赶忙问下chatGPT:

关于ChatGPT的一些随笔

嗯,这次翻车了,接连尝试了五六个答复,都没能处理乱码的问题,看样子OpenAI确对中文言语输入不太友爱。

改成英文语音输入的成果:

{
  "text": "Jawa is the best language in the world, but I use Python."
}

英文的语音辨认仍是比较精确的,当然,语音辨认早就不是什么问题了。

总体上来看,OpenAI的文本处理能力仍是十分强壮的,图画处理还有待进步,不过以OpenAI的迭代速度,以及全世界用户的不断”投喂“,信任新模型”远超Midjourney“绝对不是一句废话。

一些考虑

能够用OpenAI干什么?

怎样运用OpenAI,或者说怎样运用AI呢?

先从作业看起吧,我是做跨境电商业务的,我问了一下ChatGPT,看看它的答复:

跨境电商能够运用 OpenAI 来协助改善客户体会、进步销售量和降低成本。以下是一些或许的运用:

  1. 在线客服:运用 OpenAI 的谈天机器人来供给 24/7 的在线客服服务,协助处理客户的问题和疑虑,进步客户满意度和忠诚度。
  2. 智能引荐:运用 OpenAI 的引荐系统来依据客户的历史购买记录和行为数据,引荐最符合客户需求的产品,进步销售量和客户满意度。
  3. 自然言语处理:运用 OpenAI 的自然言语处理技能来剖析客户的谈论和评价,了解客户对产品和服务的观点,协助改善产品和服务。
  4. 欺诈检测:运用 OpenAI 的机器学习和深度学习技能来检测或许的欺诈买卖和订单,进步安全性和信誉度。
  5. 言语翻译:运用 OpenAI 的自然言语处理和机器翻译技能来进行跨言语沟通,协助拓展跨境电商业务。

总归,OpenAI 能够为跨境电商供给智能化的处理方案,然后进步客户体会、销售量和利润。

能够看一下,这儿面包括客服、引荐、内容、翻译、风控等等……

有一些正在被我的搭档完结,有些乃至已经投产。

那么我仍是一个程序员,详细点Java程序员,我能够怎样运用OpenAI呢?

作为一个Java程序员,你能够运用OpenAI来进步作业效率,以下是一些主张:

  1. 自然言语处理:OpenAI供给了自然言语处理API,你能够运用它来处理文本数据。例如,你能够运用OpenAI的API来创立主动化答复常见问题的程序。
  2. 代码主动完结:OpenAI的代码主动完结功能能够协助你快速编写代码。你能够运用Java SDK来调用OpenAI的代码主动完结API,然后进步编程效率。
  3. 数据剖析:OpenAI的言语模型能够剖析许多的数据,你能够运用它来进行数据剖析。例如,你能够运用OpenAI的API来剖析用户谈论数据,然后了解用户的反应。
  4. 智能帮手:你能够运用OpenAI的言语模型来创立智能帮手,协助你完结一些重复性的任务。例如,你能够运用OpenAI的API来创立一个智能帮手,主动完结一些常见的数据处理任务。

总的来说,OpenAI供给了许多的API和工具,能够协助Java程序员进步作业效率。你能够依据自己的需求挑选合适的API,并运用Java SDK来完结对OpenAI的调用。

这儿面有一些能力,信任许多朋友更加了解,现在日常开发,能够不用搜索引擎,而是直接向ChatGPT发问。

问答帮手、代码生成插件、SQL帮手……现在,这些也都有搭档进行了完结。

大约都是怎样完结的呢?

其实这些运用,这些运用的关键,便是在于正确地向ChatGPT发问,有这么一条“公式”:定义人物+明确任务+约束输出 = better prompt

例如,我现在希望OpenAI作为一个产品谈论审核员:

  • 你是一个跨境电商的产品谈论审核员,你需求对用户的谈论进行审核,你需求辨认不同言语的谈论,用户谈论中不能呈现暴力、色情、政治等负面要素,你需求对谈论进行打分,60分以上是合格谈论,60分以下是不合格谈论,用户谈论越活跃分数越高,你还要给出给用户打分的原因,你的答复只能用json格局{“score”:30,”reason”:”Violence”},score表明评分,reason表明原因,除此之外,你不应该答复任何内容

然后再输入一个谈论:

  • 这个产品是在太垃圾了

它的呼应:

{
"score": 40,
"reason": "Negative sentiment"
}

开发的时分,便是要先把上下文给传过去:

chat = openai.ChatCompletion.create(
  model="gpt-3.5-turbo-0301",
  messages=[
    {"role": "system", "content": "你是一个跨境电商的产品谈论审核员,你需求对用户的谈论进行审核,你需求辨认不同言语的谈论,用户谈论中不能呈现暴力、色情、政治等负面要素,你需求对谈论进行打分,60分以上是合格谈论,60分以下是不合格谈论,用户谈论越活跃分数越高,你还要给出给用户打分的原因,你的答复只能用json格局{"score":30,"reason":"Violence"},score表明评分,reason表明原因,除此之外,你不应该答复任何内容"},
    {"role": "system", "content": "OK"},
    {"role": "user", "content": "什么烂东西,浪费钱"}
  ]
)

是不是还挺简略的。

除此之外,有条件的还能够对OpenAI的模型进行微调,进步模型的功能。

咱们会被筛选吗?

坦白讲,咱们都拥抱OpenAI好久,我真实掉队了。

现在关于OpenAI的运用,其实首要仍是集中在AIGC方面,我首要搞的是付出开发,是买卖类的,想了好久也没想出什么运用。

随后问了ChatGPT一个问题:“接入Alipay付出”:

关于ChatGPT的一些随笔

看完,我直接缄默沉静,代码虽然有些不太合理的当地,但是估计再调一调就能直接用了。

这就引入了一个问题,AIGC时代来临,程序员会不会被筛选?——很有或许。

咱们今日为ChatGPT欢呼,也许明日就会被它给驱赶。

36氪给李彦宏做了一个专访[3],咱们看看其中的一段:

36氪:今日很多人在发问:AI会不会让打工人没有作业?OpenAI的创始人Sam Altman说,许多的人一定会失业,所以OpenAI会按需收费,给没有作业的人补贴。这其实是有点悲惨的,他自己说也有点可怕,你觉得这个作业会产生吗?这个问题你怎样看。

李彦宏: 今日没有马车夫这样的作业,由于呈现了轿车。但是今日世界上存在的作业时机跟100年前比较,不仅是多了,而且多了许多倍。

我没有那么悲观,我是达观的。不管有多少作业被替代,这仅仅整个图景的一部分。另外一部分是,存在咱们现在乃至无法想象的更多新时机。我做一个斗胆猜测,十年以后,全世界有50%作业会是提示词工程(prompt engineering),不会写提示词(prompt)的人会被筛选。

我乃至在想一个问题——AI会不会筛选AI工程师呢?

关于ChatGPT的一些随笔

所以,试着成为一名AI工程师?


参阅:

[1]. platform.openai.com/

[2].www.zhihu.com/question/57…

[3].36kr.com/p/218441426…