Nginx实现ChatGPT API代理

news/2025/2/22 16:02:53/

文章目录

  • 一、前言说明
  • 二、前置准备
  • 三、nginx配置
  • 三、代理域名用途

一、前言说明

  1. 本篇文章可以直接用于公司生产级的使用,所需要的资源直接改为公司级的即可平替使用
  2. 文章均已通过实践应用,保证文章准确性,但因不同环境的不同可能效果不一致可以评论区评论
  3. 本文主要实现代理 https://api.openai.com 的调用,可以无需魔法调用OpenAI ChatGpt

注意:文章以生产级的流程进行配置,技术难度:二颗星,前置技术掌握:四颗星

文章不涉及到OpenAI账号注册、key生成的内容,如果这些方面遇到问题可以评论区留言

后续会分享如何用Java搭建生产级的AI智能助手,以及公司产品如何接入AI与业务结合

二、前置准备

  1. 国外服务器:能ping通 api.openai.com,建议美国的服务器
    • tip:如果有外币卡,可以申请azure云服务器,有免费试用,谷歌云也有
  2. 代理域名:根据自己的需要,使用服务器IP也行,如果是生产级建议域名,否则如果切换服务器就需要改调用的地方
    • 域名需要提前在DNS服务里面修改域名指向国外服务器地址
  3. SSL证书:配置https,可以参考之前发布的文章:https://juejin.cn/post/6987196734560534565
    • 阿里云可以申请免费的SSl证书

三、nginx配置

以下为nginx核心配置,只需要更改对应<注释内容>为自己的即可,别的nginx优化配置按照需求来

http {server {listen       80;server_name  <替换为自己的域名>;rewrite ^(.*)$ https://$host$1 permanent;}server {listen 443 ssl;server_name <替换为自己的域名>;ssl_certificate "<替换为自己的证书路径>.pem";ssl_certificate_key "<替换为自己的证书路径>.key";ssl_session_cache shared:le_nginx_SSL:1m;ssl_session_timeout 1440m;ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;ssl_prefer_server_ciphers on;ssl_ciphers TLS13-AES-256-GCM-SHA384:TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-128-GCM-SHA256:TLS13-AES-128-CCM-8-SHA256:TLS13-AES-128-CCM-SHA256:EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+ECDSA+AES128:EECDH+aRSA+AES128:RSA+AES128:EECDH+ECDSA+AES256:EECDH+aRSA+AES256:RSA+AES256:EECDH+ECDSA+3DES:EECDH+aRSA+3DES:RSA+3DES:!MD5;location / {proxy_pass  https://api.openai.com/;proxy_ssl_server_name on;proxy_set_header Host api.openai.com;proxy_set_header Connection '';proxy_http_version 1.1;chunked_transfer_encoding off;proxy_buffering off;proxy_cache off;proxy_set_header X-Forwarded-For $remote_addr;proxy_set_header X-Forwarded-Proto $scheme;}}
}
  • 配置完成后重启nginx,然后 ping 自己的域名 检查代理是否正常

三、代理域名用途

  1. 配置完成域名代理后,所有与OpenAI ChatPT交互的地方从此不再需要魔法
  2. 例如:LangChain模型训练、ChatGPT服务接入等等

http://www.ppmy.cn/news/82675.html

相关文章

PyTorch学习笔记

1.item() → number 方法: item() 返回一个数 只能用于只包含一个元素的张量。对于其他的张量&#xff0c;请查看方法tolist(). 该操作是不可微分的,即不可求导. (译者注:返回的结果是普通Python数据类型, 自然不能调用backward()方法来进行梯度的反向传播) Example: 例子:>…

Spring Boot 配置文件

文章目录 1.配置文件作用2.配置文件的格式3.properties 配置文件3.1 properties 基本语法3.2 读取配置文件3.3 properties 优缺点分析 4. yml 配置文件的说明4.1 yml 基本语法4.2 yml 进阶配置1) 配置不同的数据类型2) 配置对象 5. propertise VS yml6.设置不同的配置环境6.1 创…

oracle:NLSSORT函数简介及使用方法

oracle&#xff1a;NLSSORT函数简介及使用方法 在Oracle数据库中&#xff0c;NLSSORT函数是一个用于排序和比较非英语字符的重要函数。本文将对NLSSORT函数进行简要概述&#xff0c;并介绍其使用方法。 什么是NLSSORT函数&#xff1f; NLSSORT函数是Oracle数据库中的一个函数…

【STC8】热启动串口指令下载

前言 在目标开发板没有装载自动下载电路的时候&#xff0c;往往需要冷启动&#xff0c;也就是需要手动开关电源&#xff0c;来达到单片机复位下载。当然还有一种方法是热启动&#xff0c;通过串口接收到自定义的指令后&#xff0c;软件执行复位下载。这就是本文介绍的内容。 材…

Flutter 局部刷新

flutter的局部刷新的几种方式 第一种 &#xff1a;使用 GlobalKey 父组件中声明 GlobalKey<_局部刷新对象类型State> textKey GlobalKey(); textKey.currentState.局部刷新的方法(); 第二种 使用&#xff1a;StatefulBuilder 第三种 使用 StreamBuilder Stream…

【Leetcode】697. 数组的度

[哈希表] Given a non-empty array of non-negative integers nums, the degree of this array is defined as the maximum frequency of any one of its elements. Your task is to find the smallest possible length of a (contiguous) subarray of nums, that has the sa…

python 3的urllib库介绍

Python 3中的urllib模块可以用来处理URL&#xff0c;包括下载和上传文件、创建和读取cookie、访问Web API等。在本文中&#xff0c;我们将详细介绍urllib库中最常用的四个模块&#xff1a;urllib.request、urllib.parse、urllib.error和urllib.robotparser。 一、urllib.reque…

【C++学习第九讲】C++ 整型介绍

文章目录 一、理论1.1 总述1.2 char类型1.3 short类型1.4 int类型1.5 long类型1.6 long long类型 二、代码示例三、细节问题3.1 查看每个整型的位数3.2 sizeof 函数3.3 limits 头文件 一、理论 1.1 总述 在 C 中&#xff0c;整型&#xff08;Integer&#xff09;是一种基本的…