使用cloudflare实现访问LLM-API

一直在找调用第三方 LLM-API 的方法,看到有人用 cloudflare 实现,就尝试了一下,果然成功了。 突然发现,cloudflare 的功能真是个好东西,功能远超于本文所述。

1 相关网站

2 创建 worker

图1  创建 worker - 1

图1 创建 worker - 1

图2  创建 worker - 2

图2 创建 worker - 2

下面的命名是自动生成的,您可以根据自己的需要随意命名。
图3  命名 worker 并发布

图3 命名 worker 并发布

图4  worker 发布成功!全球发布!!

图4 worker 发布成功!全球发布!!

访问:https://worker-cold-bar-b423.tanbushi.workers.dev。成功!

下面测试自定义域名,确保能成功访问LLM的API。点击需要设定自定义域名的 worker,见下图:
图5  修改 worker 的自定义域名 - 1

图5 修改 worker 的自定义域名 - 1

图6  修改 worker 的自定义域名 - 2

图6 修改 worker 的自定义域名 - 2

图7  修改 worker 的自定义域名 - 3

图7 修改 worker 的自定义域名 - 3

点击上图 Add Custom Domain 按钮后,进入“初始化中”的提示…
图8  自定义域名初始化中

图8 自定义域名初始化中

可能要几分钟后,变成绿色 active 就可以了
图9  自定义域名添加成功!

图9 自定义域名添加成功!

访问:https://worker-cold-bar-b423.airs.ltd ,成功!

3 编写 worker 代码,实现LLM的API调用

在 Github 上找到一个开源项目,https://github.com/ultrasev/llmproxy,感谢!

打开 /api/llm_api_proxy.js,复制该文件所有代码,覆盖 worker.js 文件后,点击右上角的 deploy 按钮发布。

图10  参考 api 代理的代码

图10 参考 api 代理的代码

提示,点击“保持并发布”
图11  保存并发布

图11 保存并发布

4 本地调用 LLMAPI 的代码

参考上述代码仓库里的 /tests/test_cf_worker.py 文件,在本地编辑 test_gemini.py ,测试 谷歌的 gemini 模型。gemini 每天10万token,测试完全够用了。

图12  参考调用 API 的 python 代码

图12 参考调用 API 的 python 代码

本地目录结构如下图:
图13  本地测试代码文件目录结构

图13 本地测试代码文件目录结构

dotenv.py 文件内容如下:

import os
# 定义一个函数,用于读取环境变量
def load_dotenv():
    os.environ.setdefault("GEMINI_API_KEY", "your-gemini-api-key")

test-gemini.py 文件内容如下:

import asyncio
import os
from openai import AsyncOpenAI
from dotenv import load_dotenv
load_dotenv() # 加载环境变量

# 生成请求的函数
async def make_request(api_key: str,
                       model: str,
                       supplier: str):
    BASE_URL = "https://worker-cold-bar-b423.airs.ltd/"
    client = AsyncOpenAI(base_url=BASE_URL, api_key=api_key)
    response = await client.chat.completions.create(
        model=model,
        messages=[
            {"role": "system", "content": "你是tanbushi的分身。"},
            {"role": "user", "content": "你是谁?"}
        ],
        extra_headers={"supplier": supplier},
    )
    return response.choices[0].message.content

# 发起测试的函数
async def test():
    response =  await make_request(
        api_key=os.environ["GEMINI_API_KEY"],
        model="gemini-1.5-pro-latest",
        supplier="gemini"
    )
    print(response)

# 注意下面的调用方式,用 asyncio.run(test())
asyncio.run(test())

5 测试调用

在本地的命令行窗口或终端窗口,进入 test-gemini 目录,运行:

python test-gemini.py

得到回复如下:
图14  gemini 回复了!

图14 gemini 回复了!

成功!

扩展:您可以将上面用到的 gemini-api-key,在本地的python文件里,换成其他的 LLM-API-KEY,如:chatgpt、千问等。

  • 15
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

tanbushi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值