首页 > 其他分享 >简单小巧的OpenAI API访问:一键部署,轻松上手

简单小巧的OpenAI API访问:一键部署,轻松上手

时间:2024-12-26 13:57:53浏览次数:5  
标签:代理服务 temp app 一键 API OpenAI Docker

在现代开发中,代理服务常常是不可或缺的一部分。无论是为了跨域请求、隐藏真实API地址,还是为了实现负载均衡,代理服务都能发挥重要作用。今天,我将向大家介绍一个简单小巧的OpenAI Proxy项目,它不仅易于上手,还使用了最新的Bun运行时,让你的开发体验更加流畅。

快速上手

如果你已经熟悉Docker,或者想直接使用这个项目而不需要深入了解其内部实现,那么你可以通过一行命令快速启动代理服务:

sudo docker run -d -p 9017:9017 aiql/openai-proxy-docker:latest

如果你对项目的源码感兴趣,或者想进一步自定义和扩展功能,可以直接访问项目的GitHub仓库:

https://github.com/AI-QL/openai-proxy-docker

接下来,我们将详细介绍这个简单小巧的OpenAI Proxy项目,以及如何通过Docker快速部署和使用它。

项目简介

这个OpenAI Proxy Docker项目基于Express和http-proxy-middleware,旨在为OpenAI的API提供一个简单的代理服务。通过这个项目,你可以轻松地将OpenAI的API请求转发到你的本地服务器,并且可以自定义请求和响应的头部信息。

项目的主要特点包括:

  • 简单易用:只需几行代码即可完成代理服务的配置。
  • 灵活配置:支持通过环境变量动态设置目标URL和端口。
  • 安全优化:自动移除不必要的请求头部信息,增强安全性。
  • 跨域支持:自动添加跨域头部信息,方便前端开发。

准备

在开始使用这个OpenAI Proxy项目之前,你需要准备一个可以访问OpenAI API的云服务环境。由于OpenAI的API服务需要访问境外网络,因此推荐使用以下云服务提供商的境外实例:

  1. 腾讯云境外轻量应用服务器:腾讯云提供了性价比高的境外轻量应用服务器,适合快速部署和运行代理服务。你可以选择硅谷、新加坡或其他境外区域的服务器。
  2. 阿里云境外服务器:阿里云的境外服务器也是一个不错的选择,提供稳定的网络连接和灵活的配置选项。
  3. 其他云服务提供商:如果你已经有其他云服务提供商的境外实例,也可以直接使用。

项目代码

以下是项目的主要代码部分:

const express = require('express')
const { createProxyMiddleware } = require('http-proxy-middleware');
const app = express()
const port = process.env.PORT || 9017
const target = process.env.TARGET || 'https://api.openai.com'

app.use('/', createProxyMiddleware({
    target: target,
    changeOrigin: true,
    on: {
        proxyReq: (proxyReq, req, res) => {
          /* handle proxyReq */
          proxyReq.removeHeader('x-forwarded-for');
          proxyReq.removeHeader('x-real-ip');
        },
        proxyRes: (proxyRes, req, res) => {
          /* handle proxyRes */
          proxyRes.headers['Access-Control-Allow-Origin'] = '*';
          proxyRes.headers['Access-Control-Allow-Headers'] = 'Origin, X-Requested-With, Content-Type, Accept, Authorization';
        },
        error: (err, req, res) => {
          /* handle error */
        },
      },
}));

app.listen(port, () => {
    console.log(`Proxy agent started: http://localhost:${port}`)
})

Docker镜像

为了方便部署,项目还提供了Dockerfile,使用了最新的Bun运行时。Bun是一个快速、现代的JavaScript运行时,能够显著提升Node.js应用的性能。

以下是Dockerfile的内容:

# use the official Bun image
# see all versions at https://hub.docker.com/r/oven/bun/tags
FROM oven/bun:slim AS base
WORKDIR /usr/src/app

# install dependencies into temp directory
# this will cache them and speed up future builds
FROM base AS install
RUN mkdir -p /temp/dev
COPY package.json package-lock.json /temp/dev/
RUN cd /temp/dev && bun install --frozen-lockfile

# install with --production (exclude devDependencies)
RUN mkdir -p /temp/prod
COPY package.json package-lock.json /temp/prod/
RUN cd /temp/prod && bun install --frozen-lockfile --production

# copy node_modules from temp directory
# then copy all (non-ignored) project files into the image
FROM base AS prerelease
COPY --from=install /temp/dev/node_modules node_modules
COPY . .

# [optional] tests & build
ENV NODE_ENV=production

# copy production dependencies and source code into final image
FROM base AS release
COPY --from=install /temp/prod/node_modules node_modules
COPY --from=prerelease /usr/src/app/app.js .
COPY --from=prerelease /usr/src/app/package.json .

# run the app
USER bun
ENTRYPOINT [ "bun", "run", "app.js" ]

一键部署

通过Docker,你可以轻松地将这个项目部署到任何支持Docker的环境中。只需一行命令,即可启动代理服务:

sudo docker run -d -p 9017:9017 aiql/openai-proxy-docker:latest

这条命令将会在后台运行一个Docker容器,并将本地的9017端口映射到容器的9017端口。你可以通过http://你的IP地址:9017访问代理服务。

更多场景

这个OpenAI Proxy Docker项目不仅仅局限于代理OpenAI的API,它还可以轻松扩展到其他场景。例如,你可以将其用于代理Nvidia NIM API,或者为其他第三方服务提供代理支持。通过简单的配置修改,你可以将目标URL指向任何你需要的API服务。

此外,如果你需要为代理服务设置自定义域名,或者进一步定制这个项目,比如添加更多的自定义头部信息、修改错误处理逻辑,或者使用不同的运行时环境,你可以参考项目的源代码并进行相应的修改。

同时,项目的README中也提供了更详细的部署说明,并了解如何将其集成到你的应用中,比如:

  • 使用docker-compose进行部署
  • 一个现成的Demo,可以快速验证代理服务的功能
  • 一个OpenAI API的实时可视化页面,快速了解最新的OpenAPI JSON定义

项目源代码托管在GitHub上,地址为:

https://github.com/AI-QL/openai-proxy-docker

总结

这个OpenAI Proxy Docker项目不仅简单小巧,而且易于上手。通过使用最新的Bun运行时,你可以在保持高性能的同时,享受到现代JavaScript运行时的便利。无论是用于开发环境还是生产环境,这个项目都能为你提供一个可靠的代理服务解决方案。

快来试试吧,只需一行Docker命令,你就可以拥有一个自己的的OpenAI API代理服务!

标签:代理服务,temp,app,一键,API,OpenAI,Docker
From: https://blog.csdn.net/aiqlcom/article/details/144684140

相关文章

  • 如何利用淘宝商品详情API接口搬运商品至自己的电商平台?(电商必看)
    在当今电子商务蓬勃发展的时代,电商平台间的竞争愈发激烈。为了快速丰富商品种类、提升用户体验和增强市场竞争力,许多新兴电商平台选择通过接入淘宝商品详情API接口,将淘宝平台上的优质商品快速搬运到自己的电商平台上。本文将详细介绍如何运用淘宝商品详情API接口,将商品信息搬......
  • 如何运用获得京东商品详情API接口搬运商品到自己的电商平台?(一篇文章全搞定)
    在现代电商领域,商品信息的快速获取和高效搬运是电商平台运营的关键环节之一。京东商品详情API接口作为连接京东商品数据与第三方电商平台的重要桥梁,通过合理利用这一接口,可以实现商品信息的快速搬运和上架,提高运营效率,丰富平台商品种类。本文将详细探讨如何运用京东商品详情AP......
  • 实践出真理一一电商API测试
    ​一定要去用电商api接口:注册登录:获取APIkey测试使用电商API接口可以为企业或个人开发者带来诸多好处,特别是在构建或扩展在线购物平台时。以下是一些关键原因和优势,说明为什么你可能需要考虑使用电商API接口:数据集成与同步:API接口允许你的系统与其他电商平台或数据源......
  • 电商平台常用的api接口(技术必看)
    电商平台常用的API(应用程序编程接口)接口种类繁多,这些接口使得电商平台能够与各种第三方应用、服务以及内部系统进行高效的数据交互和功能调用。以下是一些电商平台常用的API接口及其功能概述:一、商品相关接口获取商品详情接口功能:获取指定商品的详细信息,包括SKU信息、详情......
  • Sealos Devbox 基础教程:使用 Cursor 从零开发一个 One API 替代品
    随着技术的成熟和AI的崛起,很多原本需要团队协作才能完成的工作现在都可以通过自动化和智能化的方式完成。于是乎,单个开发者的能力得到了极大的提升-借助各种工具,一个人就可以完成开发、测试、运维等整条链路上的工作,渡劫飞升成为真正的“全干工程师”。之前我们分享过一些入......
  • 如何使用 Konga 可视化管理 Kong API 网关:完整指南与常见场景实例
    言简意赅的讲解Konga解决的痛点Kong是一个流行的API网关,广泛应用于微服务架构中,为应用提供负载均衡、API管理、身份验证、流量控制等功能。虽然Kong强大且功能丰富,但其管理界面原本基于命令行和配置文件,可能让部分开发者或运维人员感到不便。为了简化管理操作,Konga......
  • 获取淘宝卖家订单API返回值 (电商人必看)
    要获取淘宝卖家订单API的返回值,你需要通过淘宝开放平台(TaobaoOpenPlatform)提供的API接口来实现。这通常涉及以下几个步骤:注册淘宝开放平台账号:首先,你需要在淘宝开放平台注册一个开发者账号。创建应用:在淘宝开放平台创建一个应用,获取AppKey和AppSecret。申请API权限:申......
  • 拼多多根据关键词取商品列表 API 返回值说明
    拼多多提供了根据关键词搜索商品列表的API接口,允许开发者通过关键词来获取相关的商品信息。以下是对该API返回值以及代码示例的详细说明:返回值说明拼多多根据关键词取商品列表的API返回值通常包含以下信息:关键词(keyword):用户搜索的关键词。页码(page):当前返回的商品列表页码。......
  • 如何通过HTTP API插入Doc
    本文介绍如何通过HTTPAPI向Collection中插入Doc。说明插入Doc时若指定id已存在,已存在的Doc不会被覆盖,本次插入Doc操作无效。插入Doc时若不指定id,则在插入过程中会自动生成id,并在返回结果中携带id信息。前提条件已创建Cluster:创建Cluster。已获得API-KEY:API-KEY管......
  • MIT、OpenAI等震撼力作:AI首次自主发现人工生命!人类窥见上帝造物
    就在刚刚,由Transformer八子创立的SakanaAI,联合来自MIT、OpenAI、瑞士AI实验室IDSIA等机构的研究人员,提出了「自动搜索人工生命」的新算法!论文地址:https://arxiv.org/abs/2412.17799言归正传,ALife,即「人工生命」,是一门跨学科研究,旨在通过模拟生命的行为、特性和演化过程来理解......