欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

快速打造你的OpenAI/GPT应用的步骤

最编程 2024-01-21 16:02:48
...

本文正在参加 ✍???? 技术视角深入 ChatGPT 征文活动

ChatGPT 与 OpenAI:两者的关系

ChatGPT 是 OpenAI 推出的应用,它使用的是最新的模型。OpenAI 作为一家人工智能领域的知名企业,一直在致力于推进人工智能技术的发展和应用。而 ChatGPT 作为 OpenAI 推出的一款应用,为用户提供了基于语言理解的自然语言交互服务,它的出现也标志着 OpenAI 在人工智能应用领域的又一次突破。

然而,需要注意的是,OpenAI 开放接口的模型是 gpt-3.5-turbo,这个模型相对于 ChatGPT 使用的最新模型而言,存在一些不足之处。虽然 gpt-3.5-turbo 已经具有很高的语言理解能力,但相对于最新的模型而言还有一些提升的空间。因此,如果需要使用更为智能化、精准化的自然语言交互服务,建议选择使用 ChatGPT 应用。

需要说明的是,由于 ChatGPT 使用的最新模型没有开放接口,因此它只能通过无头浏览器等方式来使用,这也导致了它的使用相对不稳定。但是,随着技术的不断进步和完善,相信 ChatGPT 将会在未来得到更好的应用和发展。

除了 ChatGPT 应用之外,OpenAI 还在不断探索和推进人工智能技术的发展,也在持续地开发出更多的应用和产品,以满足不同用户的需求。相信在未来,我们将会看到更多更加智能化和便捷化的人工智能应用和服务。

OpenAI API 接口的应用范围

OpenAI API 接口提供了丰富的应用功能,包括自然语言处理语音识别图片生成等方面。具体的使用方法和说明可以查看官方文档platform.openai.com/docs)。需要注意的是,由于一些原因,目前该文档在中国网络中无法访问。

然而,需要明确的是,OpenAI API 接口中真正智能的模型是 gpt-3.5-turbo。该模型具有非常高的自然语言处理能力,可以实现多种不同的应用,比如对话补全、文本自动摘要、文本翻译等。近年来,众多应用和产品已经开始将 gpt-3.5-turbo 应用到实际生产中,包括各类智能客服、智能问答、智能写作等应用场景。

需要说明的是,除了 gpt-3.5-turbo 之外,OpenAI API 还提供了其他的接口和模型,如语音识别和图片生成。这些接口和模型也可以应用到不同的场景中,满足用户的不同需求。但是相对于 gpt-3.5-turbo,这些模型的智能化程度可能要稍低一些,因此在选择接口和模型时需要根据具体需求进行选择。

总的来说,OpenAI API 接口提供了丰富的应用功能,可以帮助用户在不同场景下实现自然语言处理、语音识别、图片生成等多种应用需求。相信随着技术的不断进步和完善,OpenAI API 将会在未来得到更好的发展和应用。

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!"}]
}'

除了基本的使用方法外,还有一些细节需要注意,以保证 GPT 的使用效果更佳。

1. model选择

在选择使用哪个 model 的时候,需要考虑两个因素:计费和效果。目前官方文档提供的 model 有 gpt, gpt-2, gpt-3gpt-3.5-turbo 四种。其中,gpt 是最便宜的,但是效果最差;gpt-3.5-turbo 则是最贵的,但是效果最好。在选择时,需要根据实际需求进行权衡。

2. messages的构造

在构造 messages 的时候,需要注意以下几点:

  • messages 的长度不能超过 2048 字节。
  • 在一次请求中,可以传递多条 message,每条 message 的 role 不能相同,即不能有两个 user 或两个 system
  • 对于 user 的 message,需要注意语言和表达方式,以便 GPT 能够更好地理解问题。

3. max_tokens的选择

max_tokens生成回答的最大长度。在实际使用中,需要根据具体需求选择合适的长度。如果长度过长,会导致生成的回答不够准确;如果长度过短,会导致回答内容不够完整。

4. 请求地址的选择

由于种种原因,OpenAI 的 API 目前在中国大部分地区已经无法访问。解决这个问题的方法可以是使用国内的 API 中转服务,或者使用 VPN 等工具进行访问。

Stream 参数

补充一下关于 SSE 的信息,SSE 是一种非常有用的网络传输协议,能够允许服务器主动向客户端推送数据。这种方式可以实现实时性很高的应用,例如实时聊天、股票行情推送等。

使用 SSE 时,客户端与服务器之间建立一个持久化的连接,服务器可以随时向客户端发送数据,客户端也可以随时向服务器发送请求。与传统的 HTTP 请求不同,SSE 中的请求不会被关闭,而是保持打开状态,直到客户端主动关闭连接或服务器关闭连接。

因此,当我们需要实现实时性较高的应用时,SSE 是一个非常好的选择。而对于 ChatGPT 这样的实时聊天应用,使用 SSE 是非常必要的。

其他参数

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

Chat completions 接口如何计费?

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

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

  1. github.com/dqbd/tiktok…
  2. github.com/openai/tikt…

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

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

Model Usage
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 看起来像是一个聊天接口,但接口设计上并没有为聊天优化,因为这个接口是记不住上下文的。

为了让对话具有连续性,我们每次请求需要带上上次的聊天记录。你可以使用这个第三方库,它可以自动帮你发送聊天记录(通过指定对话的parentMessageId)实现:

  1. github.com/transitive-…

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

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

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

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

注册OpenAI

  1. 准备一个海外的网络
  2. 准备一个海外手机号来接收验证短信,可以用海外虚拟号码

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

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

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

访问OpenAI API

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

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

相对来说,我觉得腾讯云香港可能稳定点。

需要注意的是,部分API代理不支持SSE,因此不能实时返回内容。当然,有同学说腾讯云的 ApiGateway 直接就能代理,但我测试了下没成功。

通过第三方接口访问

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

主要的优点:

  1. 基本兼容原有接口,只需要改下 API endpoint 和 Key
  2. 支持国内卡充值,开发者可以让用户自己自行购买点数并创建Forward Key
  3. 接口国内直接可以访问,无需架设代理

缺点:

  1. 不支持 stream 参数,因此只能一次性返回内容
  2. 不支持微信充值,价格比官方略高

推荐阅读