Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >无服务器实现openai接口反向代理和额度查询

无服务器实现openai接口反向代理和额度查询

作者头像
若海
发布于 2023-05-03 03:02:22
发布于 2023-05-03 03:02:22
3.2K00
代码可运行
举报
文章被收录于专栏:云原生拾遗云原生拾遗
运行总次数:0
代码可运行

使用Cloudflare代理openai接口,并实现简单查询额度。

实现接口代理

  • 将代码部署到Cloudflare的worker平台(其他支持worker的平台也可)
  • 替换自己代码中的api.openai.com为你自己的worker域名,例如 your.worker.domain

查询使用情况

  • 访问地址 https://your.worker.domain}/usage/{sk-key} 即可

Worker 代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// code from https://www.rehiy.com/post/500

async function openai_get(api, key) {
    const resp = await fetch('https://api.openai.com/v1' + api, {
        method: 'GET',
        headers: {
            Authorization: 'Bearer ' + key,
        },
    });
    return resp.json();
}

async function openai_usage(key) {
    const today = new Date();
    const start_date = today.getFullYear() + '-' + (today.getMonth() + 1) + '-1'
    const end_date = today.getFullYear() + '-' + (today.getMonth() + 1) + '-' + today.getDate()

    const subscription = await openai_get('/dashboard/billing/subscription', key);
    const usage = await openai_get(`/dashboard/billing/usage?start_date=${start_date}&end_date=${end_date}`, key);

    return new Response(JSON.stringify({
        access_until: (new Date(subscription.access_until * 1000)).toISOString(),
        hard_limit_usd: subscription.hard_limit_usd,
        total_usage: usage.total_usage
    }));
}

async function openai_proxy(request) {
    const url = new URL(request.url);
    const auth = request.headers.get('Authorization');
    const backend = request.url.replace(url.host, 'api.openai.com');
    const payload = {
        method: request.method,
        headers: {
            Authorization: auth,
        },
    };

    if (request.body) {
        payload.body = await request.text();
        payload.headers['Content-Type'] = 'application/json';
    }

    return fetch(backend, payload);
}

export default {
    async fetch(request) {
        if (request.method === 'OPTIONS') {
            const corsHeaders = {
                'Access-Control-Allow-Origin': '*',
                'Access-Control-Allow-Methods': 'OPTIONS',
                'Access-Control-Allow-Headers': '*',
            };
            return new Response(null, { headers: corsHeaders });
        }

        const url = new URL(request.url);

        if (url.pathname.startsWith('/usage/')) {
            const res = url.pathname.match(/^\/usage\/(.+)$/)
            return openai_usage(res[1]);
        }

        return openai_proxy(request);
    }
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023年05月01日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
手把手做一个公众号GPT智能客服(六)GPT 调用
一般情况下注册的新用户会赠送一定美金的使用量,现在大多数是5美金,chatgpt 根据模型不同,按照使用的token数进行收费
Maynor
2023/10/10
5760
手把手做一个公众号GPT智能客服(六)GPT 调用
在hexo-next配置gitalk
打开github,点击右上角的图片,选择Settings,然后在左边栏最下方找到Developer settings并点击,然后在左边栏找到OAuth Apps选中点击,主页面右上角有new OAuth App 点击创建新OAuth Apps,输入必要参数,记录ID,创建密码,记得复制,然后转到blog\themes\next下的_config.yml文件修改其中的配置,转到cloudflare配置worker,然后就大功告成了,不过光听我讲没用,看图更容易理解,所以请一步一步按图片示意做:
姓王者
2024/10/31
1040
在hexo-next配置gitalk
基于划词翻译和 Azure OpenAI 实现 ChatGPT 在线翻译功能
作为技术人员平时经常会翻看一些技术文档,而对应技术社区来说很多文档都是英文的,那毫无疑问翻译工具是少不了的。了不起常用的一个翻译工具叫划词翻译,是一个 Chrome 插件,日常看英文文档的遇到不懂的单词或者句子直接选中,然后点击一下图标就可以实现自动翻译。
Java极客技术
2023/09/02
6580
基于划词翻译和 Azure OpenAI 实现 ChatGPT 在线翻译功能
免费使用cloudflare搭建OpenAI的接口代理
由于GFW以及OpenAI官方的封禁,我们在国内服务器是访问不通OpenAI的官方接口的
唯一Chat
2023/07/21
4.3K1
免费使用cloudflare搭建OpenAI的接口代理
使用Cloudflare Worker为jsDelivr搭建反向代理服务
在2021年12月20日,jsDelivr在中国大陆地区的ICP备案被吊销,且随后的服务在中国大陆地区极不稳定,严重拖慢了网页的速度。
pai233
2022/04/25
2.8K0
使用Cloudflare Worker为jsDelivr搭建反向代理服务
使用Java在国内不访问国外网站调用Chatgpt API实现问答对话
OpenAI开放的api接口调用很简单,只要用post请求就可以了。但是因为地区限制,国内无法直接使用这个方法。但我们可以通过Cloudflare来进行套壳转发请求来完成国内对openai的访问。
I Teach You 我教你
2023/07/18
1.5K0
使用Java在国内不访问国外网站调用Chatgpt API实现问答对话
Gitalk-基于Github项目issue的评论系统在博客系统中实践
描述: 我想对于所有使用hexo、Hugo或者WordPress自建博客的博主来说GitTalk应该不陌生,GitTalk通过Github的OpenAPI以及issues功能实现社区评论确实还是很方便的,除开对国内访问速度较慢就没啥毛病,但是考虑到新手朋友此处还是简单介绍一下。
全栈工程师修炼指南
2022/09/29
1.9K0
Gitalk-基于Github项目issue的评论系统在博客系统中实践
图床 CDN CNAME 接入 Cloudflare SaaS 实现分流
不记得是什么时候开始有了一个这样的闪念,然后就去搜索了一下。 结果发现网上的教程都比较老旧。其中讲得比较多的是通过 CloudFlare for SaaS 接入 CNAME,但是都支持普通的域名,并不能接入 R2 或者 Worker。
eallion
2023/10/18
2.5K2
图床 CDN CNAME 接入 Cloudflare SaaS 实现分流
无服务器部署ChatGPT聊天界面
使用Cloudflare部署Ai聊天前端界面,无需置备服务器,只要一个可以接入cloudflare的域名即可。
半夜喝可乐
2024/09/30
1250
【玩转 EdgeOne】使用EdgeOne边缘函数搭建域名注册查询API
突然心血来潮,想注册个4位的.cn域名,但一个个查显然是不可能的事情,于是萌生了写一个查询域名是否已注册的API的想法。
HuoYun
2023/10/31
4160
有关跨域请求的一些记录
最近做一个玩的东西需要用到天气API,便从今天头条首页抓了一个想自己用。https://www.toutiao.com/stream/widget/local_weather/data/,可当我高高兴兴的引入JQuery并打算发起请求
yumusb
2020/04/22
1.9K0
利用CF Works 免费搭建 Docker 镜像加速服务
前段时间好多公开dockehrub镜像站不维护了,作为docker重度使用者拉镜像真是难了,网上好多教程都出了利用Cloudflare Workers 搭建 Docker Hub镜像加速服务,所以自己也搭建了一个,由于每天有次数限制所以不对外分享了,提供教程给大家自己搭建吧。
Lcry
2024/07/17
1.7K0
利用CF Works 免费搭建 Docker 镜像加速服务
Cloudflare Workers学习笔记,Cloudflare Workers 是什么?
开发文档:https://developers.cloudflare.com/workers/
房东的狗丶
2023/04/24
3.1K0
用cloudflare搭建免费的个人短链接平台
短链接又称短网址、短码,意思就是形式上比较短的网址。短链接服务,可以通过将一个普通的冗长的网址缩短生成一个新的较短的网址,便于分享传播。
六月河
2022/09/26
4.7K0
用cloudflare搭建免费的个人短链接平台
利用cloudflare workers 加速 docker 访问
1.部署教程 进入CF,点击左侧菜单的,workers 和 pages。点击新建 新建workers,我们先正常保存,然后部署。部署成功之后,我们此时再修改代码。要输入代码如下,整体复制粘贴即可,无需更改任何代码。
huolong
2024/12/25
4200
【教程】几行代码轻松利用 Cloudflare Worker 搭建镜像网站!
博主小俊之前教大家使用 CF-Worker-Dir 在 Cloudflare Worker 上免费搭建导航网站,也简单的介绍了一下 CloudFlare Worker 是 CloudFlare 提供的无服务器应用程序,有免费版,可以用来测试 JS 脚本。今天再教大家一种新的关于 CloudFlare Worker 的玩法 - 利用 Cloudflare Worker 搭建镜像网站!
huofo
2022/02/28
12.2K0
【教程】几行代码轻松利用 Cloudflare Worker 搭建镜像网站!
使用EdgeOne边缘函数搭建无服务器AI绘图站
AI绘画需要强大的数据和算力支持,只有经过良好训练的算法和数据集才能创造出卓越作品。然而,这对于想探索AI绘画的人来说门槛较高。直到我发现了腾讯云的AI绘图产品,开通送500张,用完后购买1000张也不到30,使用一圈后觉得还挺不错的。以前自己用sd搭建费时费钱,折腾环境和锻炼的耗时不说,高峰期任务量大服务器性能不足、低谷期没任务服务器在那干费钱。现在好多了,直接可以不用GPU服务器一台轻量搞定,不管高峰低谷出图时间都很稳定,而且灵活性增加成本大大降低。
kr
2023/07/05
55.8K1
使用EdgeOne边缘函数搭建无服务器AI绘图站
Next.js 实战 (十):中间件的魅力,打造更快更安全的应用
在 Next.js 中,中间件(Middleware)是一种用于处理每个传入请求的功能。它允许你在请求到达页面之前对其进行修改或响应。
白雾茫茫丶
2025/01/21
2200
Next.js 实战 (十):中间件的魅力,打造更快更安全的应用
使用Cf Workers搭建反代加速器
近期经常因为学习一些内容,经常克隆一些仓库,但是服务器上克隆github的速度确实有点不理想,恰好朋友颢天出了一篇文章,感觉很实用,于是我尝试部署了一下,速度确实有所提升,于是在此分享给大家!
柳神
2024/05/30
1.3K0
使用Cf Workers搭建反代加速器
利用cloudflareWorkers制作Google镜像站
cloudflare官网: https://www.cloudflare.com/
2020/08/19
2.9K0
利用cloudflareWorkers制作Google镜像站
推荐阅读
相关推荐
手把手做一个公众号GPT智能客服(六)GPT 调用
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验