ChatGPT 应用开发(一)ChatGPT OpenAI API 免代理调用方式(通过 Cloudflare 的 AI Gateway)

前言

开发 ChatGPT 应用,我觉得最前置的点就是能使用 ChatGPT API 接口。首先我自己要能成功访问,这没问题,会魔法就可以本地调用。

那用户如何调用到我的应用 API 呢,我的理解是通过用户能访问到的中转服务器向 OpenAI 发起访问。所以我需要准备代理。

我现在使用的是 Cloudflare 代理,他们专门开放了一个 AI Gateway 功能,用于在全球各地发起对 OpenAI API 的访问。现在测试阶段好像还是免费的,而且 Cloudflare 每天有10w次免费处理请求的机会。

这里只是我个人的拙见,如果大佬们有更好的方法欢迎批评指正!

如何调用 ChatGPT API

首先我们不急着一步到位。我们先尝试一下自己通过外网的方式调用 ChatGPT API,看能否成功访问。

ChatGPT 账号申请和魔法的部分我就不详细展开了,相信大多数有开发应用需求的同学都已经准备好了。

API 使用需要注册一个自己账号的密钥,往账户里充值一定的起始金额(20$)。官方教程如下:Quickstart tutorial - OpenAI API 如果自己已经可以实现本地运行程序调用 API 的同学这部分可以跳过了。

需要注意的点:

  1. 密钥申请总是出错。这里我是疯狂的尝试注册密钥,刷了可能快几十遍才刷出来。结果第一次成功注册,忘记保存了,顺手把页面关掉了,但是密钥类似 github ssh key,只有注册成功的时候会完整显示,后面就看不到了,所以我又删掉了旧密钥重新刷了很多次。

  2. 自己测试能否成功调用 API,其实也不用测试官方用例哈哈,他那个 token 太多太费钱了,我一般就是只测试个 hello 看有没有回复。

    python 复制代码
    from openai import OpenAI
    client = OpenAI()
    
    completion = client.chat.completions.create(
      model="gpt-3.5-turbo",
      messages=[
        {"role": "user", "content": "hello"}
      ]
    )
    
    print(completion.choices[0].message)

    穷孩子是这样的。

Cloudflare AI Gateway 配置

现在可以使用 ChatGPT API 了,但是应用目标用户不一定能使用(如果你要求用户必须开魔法才能用你的软件,会损失一大批用户的)。我们利用 Cloudflare 代理中转请求。

cloudflare 控制台:https://dash.cloudflare.com/

注册账号后,在左侧可以看到 AI 板块(大家可以忽略掉我的 jingqinggpts.com,那个不用配置,是我自己瞎尝试的hh)。

点击 'AI' - 'AI Gateway' 进行注册。

注册完成后,在 '$UserName API Endpoints' 可以看到 API 使用方法示例。

http 复制代码
curl -X POST https://gateway.ai.cloudflare.com/v1/9f02226921e1ee7cd9adb9c655bb2883/jingqinggpts/openai/chat/completions \
  -H 'Authorization: Bearer XXX' \
  -H 'Content-Type: application/json' \
  -d ' {
      "model": "gpt-3.5-turbo",
      "messages": [
        {
          "role": "user",
          "content": "What is Cloudflare?"
        }
      ]
    }
'

注意,Bearer 后面的 XXX 要改为自己的 API 密钥。

content 里的内容也是可以修改的。

Postman 发送 post 请求调用 API

接下来我们就可以尝试通过发送 http post 请求到 cloudflare 的 AI Gateway Endpoint 调用 API,不用魔法。

postman 是我个人选用的 http 测试应用,当然不只局限于这个,curl 等方法都可以。

配置如下(可以把上面的 curl 语句粘贴到地址栏里,会自动解析地址和 header 部分,json data 需要补充)(注意选择 post 请求):

json 复制代码
[
  {
    "provider": "openai",
    "endpoint": "chat/completions",
    "headers": {
      "authorization": "Bearer XXX",
      "content-type": "application/json"
    },
    "query": {
      "model": "gpt-3.5-turbo",
      "messages": [
        {
          "role": "user",
          "content": "hello"
        }
      ]
    }
  }
]

点击 send 查看有无收到回应。

Python 发送 post 请求调用 API

本质上和上面是一样的,只是 Python 调用了 request 包发送 post 请求。我这里就是给大家提供一下我的调用思路。

python 复制代码
import requests
import json

ALLOWED_PROVIDERS = ["openai", "azure-openai", "huggingface"]

def send_request(python_data):
    # provider = json_request["provider"]
    # if provider not in ALLOWED_PROVIDERS:
    #     raise ValueError(f"Provider '{provider}' is not allowed.")

    url = f"https://gateway.ai.cloudflare.com/v1/9f02226921e1ee7cd9adb9c655bb2883/jingqinggpts"
    headers = {
        'Content-Type': 'application/json',
    }


    response = requests.post(url, json=python_data, headers=headers)
    return response.json()

json_data = """
[
  {
    "provider": "openai",
    "endpoint": "chat/completions",
    "headers": {
      "authorization": "Bearer XXX",
      "content-type": "application/json"
    },
    "query": {
      "model": "gpt-3.5-turbo",
      "messages": [
        {
          "role": "user",
          "content": "hello"
        }
      ]
    }
  }
]
"""

python_data = json.loads(json_data)
print(python_data)

try:
    response = send_request(python_data)
    print(response)
except Exception as e:
    print(f"Error sending request: {e}")
    print(f"Response content: {python_data}")

回应如下:

相关推荐
IT_陈寒2 分钟前
React的setState竟然不是立刻生效的,害我调试半天
前端·人工智能·后端
腾讯云大数据7 分钟前
腾讯云大数据计算智能:从结构化 SQL 到多模态 AI Workload 的融合范式
大数据·人工智能·腾讯云
AI职业加油站35 分钟前
大数据采集工程师:技术栈全景图与实战路径
大数据·人工智能·数据分析
code 旭37 分钟前
不会编程也能做AI 量化交易工具:基于 MCP 协议的自然语言交易思路不会编程也能做AI 量化交易工具:基于 MCP 协议的自然语言交易思路
人工智能·ai·量化交易·mcp
AI服务老曹1 小时前
视觉算法模型管理完整流程:多版本上线、灰度发布与回滚的落地实践
人工智能·docker·音视频
机器之心1 小时前
Anthropic发现Claude「类意识工作台」!神秘J空间藏着没说出口的想法
人工智能·openai
AI实践录1 小时前
大模型架构:理解大模型预测输出文本的底层逻辑
人工智能
Lifangyun_WD1 小时前
昇腾910B vs NVIDIA A100/H100:国产GPU算力租赁选型与迁移实践
人工智能·gpu算力·ai算力·算力租赁·gpu云主机
卡卡罗特AI1 小时前
GPT5.6 今晚全量开发?Codex上线史上最强Coding模型!
人工智能·ai编程
某林2121 小时前
从硬件解耦、3D公差设计到ROS 2柔性导航
人工智能·3d·机器人·ros2·技术复盘