ChatGPT-API的充值及接入应用

5/8/2023 ChatGPT-APIChatGPT接入应用代理请求APICloudflare-Worker

# 1. ChatGPT API的开通与使用

# 1.1 开通ChatGPT API

# 1.1.1 申请ChatGPT API密钥

首先需要准备一个ChatGPT账号,如何申请ChatGPT账号详见我的另一篇博客:ChatGPT智能问答AI使用指南 (opens new window)

登录账号,点击Create new secret key按钮即可创建,生成的密钥要保存好且不要泄露。

申请地址:https://platform.openai.com/account/api-keys (opens new window)

申请ChatGPT-API密钥

# 1.1.2 ChatGPT API的计费

账号注册后,官方会免费赠送18美刀的额度(有效期至2023年4月1日),可供我们白嫖。

ChatGPT-API免费额度

下图是ChatGPT-API的计费(这个官方会不断的进行调整),最新的详见:https://openai.com/pricing (opens new window)

ChatGPT-API的计费

# 1.1.3 官方Token数计算工具

一个简单的英文单词是一个token,一个复杂的英文单词可能包含了2~4个token,一个中文是 1~3 个token。

我们可以使用 OpenAI 官方的 Tokenizer 工具来计算 Token 数。https://platform.openai.com/tokenizer (opens new window)

Tokenizer计算Token

# 1.2 ChatGPT API的充值

# 1.2.1 充值流程概述及前提准备

由于ChatGPT不支持国内用户充值,类似于VISA双币信用卡也是不能用的。所以ChatGPT API充值对于国内用户是非常麻烦的,注册门槛说实话有点高,总结起来其实就下面4个步骤:

ChatGPT充值流程

要完成上述4个步骤,你需要提前准备好:

  • 能正常访问ChatGPT的科学上网条件(建议要选美国或者欧洲的代理节点)
  • 注册1个可用的ChatGPT账号
  • 注册1个海外Apple ID(欧易、Depay在国区Apple商店是搜不到的)
  • 注册1个虚拟交易平台,建议选欧易
  • 申请1张虚拟信用卡,建议选Depay

科学上网条件、注册美区Apple ID详见我的另一篇博客:使用QuantumultX实现翻墙、广告屏蔽及脚本调用 (opens new window)

注:Depay挺坑的,5.7发了个升级维护公告,直至5.31才恢复充值卡片,虽然现在又可以使用了,但并不可靠。

Depay系统升级维护公告   2023-05-07
1、最近美国银行系统加强了对数字货币的风险管理。因此,Depay体系下的银行账户也受到了
严格的风险管理,银行入账速度受到影响,造成卡账户资金不足引起消费功能中断,我们正在努力跟银行沟通以恢复正常速度。
2、在恢复到正常速度之前,我们将关闭新用户注册和开卡、关闭卡片充值功能;期问消费可能也会因为银行入账速度导致中断;
3、为减轻您的不便,我们将临时降低卡片提现费用和USDT/USD的兑换汇率。您可以在任何时问正常提现USDT。对于由此给您带来的不便,我们深感抱歉。
Depay teams
1
2
3
4
5
6

另注:Depay的虚拟信用卡,也只有部分号段可以在OpenAI绑定成功,有些号段是绑定不了的。OpenAI用不了的话,充值额度可以绑定支付宝供日常消费使用。绑定不成功的话,可以等过一段时间再试试,我一开始也是绑定不上,后来突然可以了。

# 1.2.2 注册欧易账号并购买USDT

因为Depay不接受人民币直接充值,所以我们必须借助交易所平台,来完成人民币—USDT—USD美元的兑换过程。USDT是虚拟货币泰达币,跟USD美元锚定的,背后有大而不倒的金融机构担保,只要USD在它就在,相对比较安全,但是不要去炒币哈。

USDT是什么

打开 欧易官网 (opens new window) 注册账号——海外Apple商店下载欧易——App首页——我要买币——快捷买币——选USDT——购买23USDT左右(大概¥160),支持支付宝、微信或者银行卡购买。

欧易购买USDT

注意事项:

[1] 欧易的注册需要实名认证,交易方式是直接给某个微信或支付宝账号转账,转账后等待一段时间对方会交付USDT虚拟货币,我的是安全到账了。

[2] 欧易的提币交易有手续费(与提币网络有关,USDT-TRC20的手续费为1USDT),而且新注册的账号刚买完的USDT是被冻结状态的(需要等待一段时间才可提现,我这里是要等一周),等待期间换算USD的比例也会波动,以及后续Depay的手续费(标准卡是1USD),因此相对于ChatGPT Plus所需的20美刀,这里就多充值了大约3美刀的虚拟货币。

欧易USDT提币

# 1.2.3 注册Depay并开卡充值USD

Step1:海外Apple商店下载Depay——开信用卡——Depay 分标准卡、高级卡、白金卡和黑金卡,我这里选择了0元的标准卡。

  • 标准卡:开卡 0 USD,月费 2 USD,充值手续费 1.35%(最低 1USD)
  • 高级卡:开卡 10 USD,月费 1 USD,充值手续费 1.2%
  • 白金卡:开卡 50 USD,月费 0 元,充值手续费 1%
  • 黑金卡:需要邀请 20 个人开卡,无开卡费用,月费 0 USD,手续费 0.8%

注意事项:开卡过程需要实名认证,提交完信息后会进行审核,等待大约5-10min后会审核完成(审核失败了话,可多试几次,可能是录制喊数字的视频不清晰)

Step2:打开Depay,找到钱包——USDT——充币——复制你的充值地址,确认屏幕上显示主网是TRC20,充值地址千万不要复制错。

Depay充值USDT

Step3:打开欧易,找到首页——资产——提币——USDT——链上提币——提币地址填Depay钱包里的充值地址,提币网络选TRC20(千万不能选错,否则到不了账)

欧易链上提币

Step4:欧易提现到Depay成功后,点击Depay钱包——实时兑换,将所有的USDT都兑换成USD美元,点击Depay首页的充值,将兑换的美元存入卡中,到此,Depay充值大功告成。

Depay充值信用卡

# 1.2.4 ChatGPT API充值及开通服务

我们已经在上述步骤中拥有了一张属于自己的Depay虚拟信用卡(相当于借记卡,不可透支),并且往里面充了20多美刀,下面开始充值。

登录账号,打开 https://platform.openai.com/account/billing/overview (opens new window),点击“Set up paid account”按钮,填写信息设置付费账户。

ChatGPT设置付费账户

开通过程需要注意以下事项:

  • 科学上网,尽量用美国或者欧洲IP(要使用没被封禁的IP,不能用就换到能用为止)

  • 浏览器开启无痕模式(避免缓存问题)

  • 账单地址用 美国地址生成器 (opens new window) 生成(理论上可以随便填,建议用生成一个免税州的地址信息)

    美国免税州:阿拉斯加州(Alaska)部分区域、特拉华州(Delaware)、蒙大拿州(Montana)、新罕布什尔州(New Hampshire)和俄勒冈州(Oregon)。
    
    1

ChatGPT-API充值成功

# 1.3 Python调用ChatGPT API

# 1.3.1 旧版本调用示例

以下是在2023.2.11使用ChatGPT官方API的示例,最新的请自行查阅最新的官方API文档及相关资料。

官方API文档:https://platform.openai.com/docs/api-reference/introduction (opens new window)

依赖安装:新版本的依赖库已经不兼容如下写法了

$ pip install openai==0.28
1

调用示例:

# -*- coding: utf-8 -*-

import openai

openai.api_key = "your_api_key"
response = openai.Completion.create(
  model="text-davinci-003",
  prompt="解释一下量子力学",
  temperature=0.7,
  max_tokens=2048,
  top_p=1,
  frequency_penalty=0,
  presence_penalty=0
)
print(response)
print(response["choices"][0]["text"])
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

GPT3模型调用方式如下,输入主要有7个参数:

  • model:模型名称,text-davinci-003
  • prompt:问题或待补全内容,例如“解释一下量子力学”。
  • temperature:控制结果随机性,0.0表示结果固定,随机性大可以设置为0.9。
  • max_tokens:最大返回字数(包括问题和答案),通常汉字占两个token。假设设置成100,如果prompt问题中有40个汉字,那么返回结果中最多包括10个汉字。
  • top_p:设置为1即可。
  • frequency_penalty:设置为0即可。
  • presence_penalty:设置为0即可。

返回值:

{
  "choices": [
    {
      "finish_reason": "stop",
      "index": 0,
      "logprobs": null,
      "text": "量子力学是物理学的一个分支,它研究粒子在微观尺度上的行为。量子力学描述物质的基本粒子,如电子,质子,中子和原子的行为,以及它们之间的相互作用。它采用经典力学的概念,如力,动能和动量,但也提出了新的概念,如量子状态,波函数和量子干涉。量子力学通过解决方程来描述粒子的性质,其中包括波动方程,Schrödinger方程,Heisenberg不确定性原理和Pauli禁止定律。"
    }
  ],
  "created": 1676122039,
  "id": "cmpl-6ikCNyZzoOPscevgIBZ0RaPHONdzz",
  "model": "text-davinci-003",
  "object": "text_completion",
  "usage": {
    "completion_tokens": 338,
    "prompt_tokens": 15,
    "total_tokens": 353
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

注意事项:

[1] ChatGPT API允许的最大token数量为4097,即max_tokens最大设置为4097减去prompt问题的token数量。

[2] 输入参数可以增加stream,即是否采用控制流的方式输出。如果steam取值为True时,那么返回结果是一个Python generator,需要通过迭代获取结果,读取结果的结束字段为“<|im_end|>”。

# -*- coding: utf-8 -*-

import openai

openai.api_key = "your_api_key"
response = openai.Completion.create(
  model="text-davinci-003",
  prompt="解释一下量子力学",
  temperature=0.7,
  max_tokens=2048,
  stream=True,
  top_p=1,
  frequency_penalty=0,
  presence_penalty=0
)

print(response)
res = ''
for r in response:
    res += r["choices"][0]["text"]
res = res.replace('<|im_end|>', '')
print(res)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

返回值:

<generator object EngineAPIResource.create.<locals>.<genexpr> at 0x122ff6a50>

量子力学是研究物质的微观结构的物理学理论。它用来描述物质的基本粒子,即原子、分子、离子等,及其组成物质的相互作用,以及物质在微观尺度上的性质。量子力学的思想是由普朗克和爱因斯坦在20世纪初提出的,它被认为是20世纪物理学的里程碑。量子力学的思想主要是由量子概念引出,即物质不是连续的物体,而是由粒子构成的。量子力学将物理系统的属性描述为“波函数”,即粒子的状态可以用量子概率的方式表示。量子力学的研究已经在原子物理、分子物理、物质的结构和性质、粒子物理、原子核物理等领域取得了显著成果。
1
2
3

[3] Temperature越高,句子生成的越多样化,反之句子生成越固定。

ChatGPT的Temperature参数

# 1.3.2 新版本调用示例

单线程调用

# -*- coding: utf-8 -*-

import requests


def request_openai_api(api_key, api_url, model_name, prompt, max_tokens):
    """
    按照 OpenAI 官方方式调用 API,可以使用代理API地址。
    :param api_key: API 密钥。
    :param api_url: API URL。
    :param model_name: 模型名称。
    :param prompt: 提供给模型的提示。
    :param max_tokens: 生成的最大令牌数。
    :return: 模型的响应。
    """
    headers = {
        "Authorization": f"Bearer {api_key}",
        "Content-Type": "application/json"
    }

    messages = [
        {
            "role": "user",
            "content": prompt
        }
    ]

    data = {
        "messages": messages,
        "max_tokens": max_tokens,
        "model": model_name
    }

    response = requests.post(api_url, headers=headers, json=data)
    response_json = response.json()
    print(response_json)


if __name__ == '__main__':
    api_url = 'https://api.openai.com/v1/chat/completions'
    api_key = 'your_api_key'
    model_name = 'gpt-3.5-turbo-1106'
    prompt_text = "请问您能提供一些编程建议吗?"
    max_tokens = 1000
    request_openai_api(api_key, api_url, model_name, prompt_text, max_tokens)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45

多线程调用:

# -*- coding: utf-8 -*-

import threading
import requests


def request_openai_api(api_key, api_url, model_name, prompt, max_tokens):
    """
    按照 OpenAI 官方方式调用 API,可以使用代理API地址。
    :param api_key: API 密钥。
    :param api_url: API URL。
    :param model_name: 模型名称。
    :param prompt: 提供给模型的提示。
    :param max_tokens: 生成的最大令牌数。
    :return: 模型的响应。
    """
    headers = {
        "Authorization": f"Bearer {api_key}",
        "Content-Type": "application/json"
    }

    messages = [
        {
            "role": "user",
            "content": prompt
        }
    ]

    data = {
        "messages": messages,
        "max_tokens": max_tokens,
        "model": model_name
    }

    response = requests.post(api_url, headers=headers, json=data)
    response_json = response.json()
    print(response_json)


def threaded_request(api_key, api_url, model_name, prompt, max_tokens, num_threads, total_requests):
    """
    创建并启动多线程以达到指定的数据总量。
    """
    rounds = (total_requests + num_threads - 1) // num_threads  # 计算需要的轮数
    for _ in range(rounds):
        threads = []
        for _ in range(num_threads):
            if total_requests <= 0:
                break  # 如果已经达到请求总量,停止创建新线程
            thread = threading.Thread(target=request_openai_api, args=(api_key, api_url, model_name, prompt, max_tokens))
            thread.start()
            threads.append(thread)
            total_requests -= 1

        for thread in threads:
            thread.join()


if __name__ == '__main__':
    api_url = 'https://api.openai.com/v1/chat/completions'
    api_key = 'your_api_key'
    model_name = 'gpt-3.5-turbo-1106'
    prompt_text = "请问您能提供一些编程建议吗?"
    max_tokens = 1000
    num_threads = 5
    total_requests = 15  # 指定要执行的请求总数
    threaded_request(api_key, api_url, model_name, prompt_text, max_tokens, num_threads, total_requests)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67

# 2. 国内使用OpenAI API的方式

# 2.1 Cloudflare Worker 代理请求 OpenAI API

# 2.1.1 如何配置

OpenAI API 在国内访问非常慢,经常超时,因此可以使用 Cloudflare Worker 将其代理成自己的国内可直连域名,这样就可以直接调用了,速度大大加快。

代理请求到 OpenAI API,配置部署步骤如下:

  • 注册并登录到 Cloudflare 账户
  • 创建一个新的 Cloudflare Worker
  • 将 cloudflare-worker.js 复制并粘贴到 Cloudflare Worker 编辑器中
  • 保存并部署 Cloudflare Worker
  • 在 Worker 详情页 -> Trigger -> Custom Domains 中为这个 Worker 添加一个自定义域名

注意:需要配置一个自己的国内可直连域名,因为直接使用 Cloudflare 的域名,依然无法访问。

cloudflare-worker.js

addEventListener("fetch", (event) => {
  event.respondWith(handleRequest(event.request));
});

async function handleRequest(request) {
  const url = new URL(request.url);
  const fetchAPI = request.url.replace(url.host, 'api.openai.com');
  
  // 部分代理工具,请求由浏览器发起,跨域请求时会先发送一个 preflight 进行检查,也就是 OPTIONS 请求
  // 需要响应该请求,否则后续的 POST 会失败
  const corsHeaders = {
    'Access-Control-Allow-Origin': '*',
    'Access-Control-Allow-Methods': 'OPTIONS',
    'Access-Control-Allow-Headers': '*',
  };
  if (request.method === 'OPTIONS') return new Response(null, { headers: corsHeaders });

  let body;
  if (request.method === 'POST') body = await request.json();

  const authKey = request.headers.get('Authorization');
  if (!authKey) return new Response("Not allowed", { status: 403 });
  
  const payload = {
    method: request.method,
    headers: {
      "Content-Type": "application/json",
      Authorization: authKey,
    },
    body: typeof body === 'object' ? JSON.stringify(body) : '{}',
  };
  // 在 Cloudflare 中,HEAD 和 GET 请求带 body 会报错
  if (['HEAD', 'GET'].includes(request.method)) delete payload.body;

  // 入参中如果包含了 stream=true,则表现形式为流式输出
  const response = await fetch(fetchAPI, payload);
  if (body && body.stream !== true) {
    const results = await response.json();
    return new Response(JSON.stringify(results), {
      status: response.status,
      headers: {
        "Content-Type": "application/json",
      },
    });
  } else {
    return new Response(response.body, {
      status: response.status,
      statusText: response.statusText,
      headers: response.headers,
    });
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52

Cloudflare Worker 免费版限额日调用10w次,对于普通用户是够用了。

Cloudflare-Worker免费版日调用限额

# 2.1.2 如何使用

配置成功之后,我们可以在代码开头加上 OPENAI_API_BASE 的配置,使其调用我们的域名。

import os
os.environ["OPENAI_API_BASE"] = "https://openai.your.domain/v1"
1
2

# 2.2 国内的付费第三方ChatGPT API

如果不会折腾上面这些,也可以直接使用国内的付费第三方ChatGPT API,它的用法与官方ChatGPT API一致,换个域名就能用,费用比较低,国内可以直连。不过这种厂商都是用的黑卡搞的,随时存在跑路风险,不要充值太多。

# 2.2.1 OpenAI-SB

OpenAI-SB 是一个 OpenAI API 反代服务,它可以让用户直接调用 OpenAI 的人工智能 API,而无需自行申请 OpenAI API 的额度。在用户调用 API 时,OpenAI-SB 会将请求转发至自己的账号池中,然后再通过 OpenAI 的官方 API 接口将请求发送至 OpenAI 的服务器进行处理。

OpenAI-SB 的账号池包含多个 OpenAI API 账号,每个账号都具有一定的 API 请求配额。当一个账号的 API 请求配额用完时,OpenAI-SB 会自动切换到另一个账号,以确保 API 的可靠性和稳定性。同时,OpenAI-SB 还具有高并发处理能力,可以在用户高并发请求时,保持 API 响应速度和稳定性。

OpenAI-SB 的官网地址:https://openai-sb.com (opens new window),定价如下:

openai-sb第三方API定价

# 2.2.2 GPTAPI.US

GPTAPI.US这家是使用 one-api 开源项目进行搭建的,官方文档写的非常详细,而且提供Docker镜像,有兴趣的也可以自己搭建。

one-api接入各种渠道API

项目地址:https://github.com/songquanpeng/one-api (opens new window)

one-api项目截图

GPTAPI.US 的官网地址:https://www.gptapi.us (opens new window),定价如下:

GPTAPI.US第三方API定价

# 2.3 使用ChatGPT-Next-Web提供的代理

# 2.3.1 搭建ChatGPT-Next-Web

一键免费部署你的私人 ChatGPT 网页应用,支持 Web / PWA / Linux / Win / MacOS等平台。除此之外,还提供代理接口供国内访问。

我这里直接使用了官方的docker镜像进行一键部署。

$ docker pull yidadaa/chatgpt-next-web
$ docker run -d -p 3000:3000 --name chatgpt-next-web \
   -e OPENAI_API_KEY=your_api_key \
   -e CODE=your_password \
   yidadaa/chatgpt-next-web
1
2
3
4
5

常用参数说明如下,完整参数详见:环境变量-官方文档 (opens new window)

  • OPENAI_API_KEY(必填项):OpanAI 密钥,在 OpanAI 账户页面申请的 API_KEY。
  • CODE(可选):访问密码,可选,可使用逗号隔开多个密码。(警告:如果不填写此项,则任何人都可以直接使用你部署后的网站,可能会导致你的 token 被急速消耗完毕,建议填写此选项)
  • BASE_URL(可选):OpenAI接口代理URL,如果你手动配置了 OpanAI 接口代理,填写此选项。(如遇到SSL证书问题,将BASE_URL的协议设置为 http)

ChatGPT-Next-Web

# 2.3.2 ChatGPT-Next-Web的代理API

ChatGPT-Next-Web如果不设置密码的话,可以提供代理API供国内进行调用(不过这个的调用格式就与OpenAI官方不一致了),以下是调用示例:

# -*- coding: utf-8 -*-

import requests
import json
import time


class CustomGPT:

    def __init__(self, url, model, stream=False):
        self.url = url
        self.model = model
        self.stream = stream

    def _call(self, prompt):
        """
        使用 requests 发送 POST 请求到代理的 ChatGPT-API。
        """
        data = {
            "model": self.model,
            "messages": [{"role": "user", "content": prompt}],
            "stream": self.stream
        }
        headers = {
            'Content-Type': 'application/json',
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36'
        }
        req_count = 0
        while req_count < 5:
            try:
                response = requests.post(self.url, json=data, stream=False, headers=headers, verify=False)
                if response.status_code == 200:
                    r_content = response.content.decode(response.apparent_encoding)
                    r_content = json.loads(r_content)
                    text = r_content['choices'][0]['message']['content']
                    return text
                else:
                    print(f"请求失败,状态码: {response.status_code}, 重试次数: {req_count+1}, 请求内容: {prompt}")
                    time.sleep(2)
                    req_count += 1
            except Exception as e:
                print(f"请求异常, 重试次数: {req_count + 1}, 请求内容: {prompt}; 错误信息: {e}")
                time.sleep(2)
                req_count += 1
        return "请求错误或超出重试次数"


if __name__ == '__main__':
    custom_gpt = CustomGPT(url='http://127.0.0.1:3000/api/openai/v1/chat/completions', model='gpt-3.5-turbo')
    result = custom_gpt._call("解释一下量子计算")
    print(result)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51

# 3. 使用ChatGPT API搭建服务

# 3.1 ChatGPT搭建成Web服务

用 Express 和 Vue3 搭建的 ChatGPT 演示网页。

为了图省事,我这里直接使用了官方的docker镜像进行一键部署。愿意折腾的,可以自己去构建镜像,还有很多参数可以配置,这里我就不介绍了。

$ docker run --name chatgpt-web -d -p 3002:3002 --env OPENAI_API_KEY=your_api_key chenzhaoyu94/chatgpt-web
1

chatgpt-web

# 3.2 ChatGPT桌面版应用程序

项目简介:ChatGPT 桌面应用程序(支持 Mac、Windows 和 Linux),使用 OpenAI API 密钥的方式进行访问。

项目地址:https://github.com/lencx/nofwl (opens new window)

M系芯片MacOS安装ARM版软件包,打开时会遇到“ChatGPT”已损坏,无法打开。你应该把它移到垃圾箱”的报错,执行以下命令即可解决。

$ xattr -cr /Applications/NoFWL.app
1

NoFWL桌面程序

# 3.3 中科院学术版ChatGPT

简目简介:科研工作专用ChatGPT拓展,特别优化学术Paper润色体验,支持自定义快捷按钮,支持markdown表格显示,Tex公式双显示,代码显示功能完善,新增本地Python工程剖析功能/自我剖析功能。

项目地址:https://github.com/binary-husky/chatgpt_academic (opens new window)

功能 描述
一键润色 支持一键润色、一键查找论文语法错误
一键中英互译 一键中英互译
一键代码解释 可以正确显示代码、解释代码
自定义快捷键 支持自定义快捷键
配置代理服务器 支持配置代理服务器
模块化设计 支持自定义高阶的实验性功能
自我程序剖析 [实验性功能] 一键读懂本项目的源代码
程序剖析 [实验性功能] 一键可以剖析其他Python/C++项目
读论文 [实验性功能] 一键解读latex论文全文并生成摘要
批量注释生成 [实验性功能] 一键批量生成函数注释
chat分析报告生成 [实验性功能] 运行后自动生成总结汇报
公式显示 可以同时显示公式的tex形式和渲染形式
图片显示 可以在markdown中显示图片
支持GPT输出的markdown表格 可以输出支持GPT的markdown表格
…… ……

我这里采用docker的方式对服务进行部署。

Step1:拉取代码构建镜像

$ git clone https://github.com/binary-husky/chatgpt_academic.git
$ cd chatgpt_academic
$ docker build -t gpt-academic .
1
2
3

Step2:修改配置文件及主程序源码

  • 修改config.py配置文件:修改API_KEY参数即可(因为我的服务器是境外的,所以不需要设置代理)

  • 修改main.py主程序文件:官方源码的是随机选取Web端口,这里把它设置成固定的端口(例如5000)。

    # 如果WEB_PORT是-1, 则随机选取WEB端口
    # PORT = find_free_port() if WEB_PORT <= 0 else WEB_PORT
    PORT = 5000
    
    1
    2
    3

Step3:创建容器并挂载配置文件。

$ docker run -itd --name chatgpt_academic -p 5000:5000 -v /root/chatgpt_academic/config.py:/gpt/config.py  -v /root/chatgpt_academic/main.py:/gpt/main.py gpt-academic:latest
$ docker logs -f chatgpt_academic --tail 100
1
2

部署成功后可以在控制台种看到如下日志:

chatgpt_academic部署成功

Chrome浏览器打开http://ip:5000地址,即可查看服务。

ChatGPT学术优化

# 3.4 将ChatGPT通过快捷指令接入Siri

可以通过快捷指令的方式将ChatGPT接入Siri。

# 3.5 使用ChatGPT的检索扩展插件

插件描述:可以在 Google 搜索结果的旁边显示 ChatGPT 回答的结果,需要使用自己的ChatGPT API。

项目地址:https://github.com/wong2/chat-gpt-google-extension (opens new window)

Chrome插件商店地址:https://chrome.google.com/webstore/detail/chatgpt-for-google/jgjaeacdkonaoafenlfkkkmbaopkbilf (opens new window)

chat-gpt-google-extension

# 3.6 将ChatGPT接入划词翻译插件

基于 ChatGPT API 的划词翻译浏览器插件和跨平台桌面端应用。它的使用也非常简单,下载插件 / 应用之后,填入你的 OpenAI API Key 就能使用。

特性:1)支持 55 种语言的相互翻译、润色和总结功能。2)支持实时翻译、润色和总结,以最快的速度响应用户。3)支持自定义翻译文本。4)支持一键复制。5)全平台(Windows + macOS + Linux)支持。

openai-translator效果图

# 3.7 使用ChatGPT转换代码

项目描述:使用 ChatGPT 将代码从一种语言翻译成另一种语言。

项目地址:https://github.com/mckaywrigley/ai-code-translator (opens new window)(另附:官方体验地址 (opens new window)

ai-code-translator

# 4. 参考资料

[1] 如何选择充值/提现网络?from 欧易官网 (opens new window)

[2] Depay卡的注册和使用完整指南 from Kerry的学习笔记 (opens new window)

[3] ChatGPT官方API可以抢先体验了 from CSDN (opens new window)

[4] 如何创建ChatGPT API密钥?操作路径和教程 from 云东方 (opens new window)

[5] OpenAI API 速率限制 from OpenAI官网 (opens new window)

[6] 中科院学术专用版 ChatGPT,开源了 from 知乎 (opens new window)

[7] Cloudflare Worker 代理请求 ChatGPT API,支持 Stream 流式输出 from Github (opens new window)

Last Updated: 2/16/2024, 9:14:39 PM