Jason Pan

手把手教你不翻墙用上ChatGPT4、OpenAI API

潘忠显 / 2024-08-27


没有一个 OpenAI 的 API Key,看着 GitHub 上一堆热点项目,如辅助编程的 Aider、多智能体框架 MetaGPT,只有眼馋的份。

你之所以没有key,可能因为两个无法逾越的限制:OpenAI 不提供中国地区提供服务,并且如果要使用 API Key 还要使用外国地区的银行卡。前边这个问题相对好解决,后边这个更麻烦一些。

今天,我就来介绍如何在国内,直接通过 API 使用 ChatGPT 的服务——使用微软 Azure 服务的方式。如果你从来没用过微软云,这里还可以免费使用12个月

先来两张效果图吧。

  1. 直接在 Jan 中使用GPT 4o:

jan-local

  1. 使用 Aider 在原有代码的做调整,aider 还会自动的将每次变更 commit 一下,以防调整出问题。这里可以设定使用具体哪个模型,我这里为了演示,只使用了GPT 3.5,用 GPT 4o 效果最佳。

aider-local

一、几个背景

二、访问API的方案

之前看《联合早报》报道“OpenAI终止陆港API服务影响全球”,中间有提到访问 OpenAI 的API 的短、中、长期应对方法。

我这里要介绍的,也就是中期方法,通过微软的云服务访问。

可以对接微软Azure提供的OpenAI服务。微软至今已向OpenAI投资超过130亿美元,拥有其营利组织49%的股份,由于微软业务广泛,暂时不可能禁止香港和大陆使用其服务。然而,对于资金有限的中小企业和初创企业来说,这种方法难以持久。大型跨国公司可能议价力较高,可以用较低的平均成本,向微软订购并使用这些服务。

2.1 准备条件

bank-card

2.2 注册Azure账号

注册一个微软 Azure 账号,需要绑定信用卡。

具体步骤略

2.3 部署和方式

Step1. 创建订阅

https://portal.azure.com/#view/Microsoft_Azure_Billing/SubscriptionsBladeV2

如果你是新用户,会有一个免费订阅;试用超过12个月,需要创建自己的即用即付订阅

step-1-create-subscription

Step2. 创建资源组

点击上边的订阅名称,会跳转到订阅的具体信息。

其中【设置】中有个【资源组】的标签,点击可以添加资源组

step-2-create-resource-group

Step3. 添加资源

点击上边创建的资源组,会进入资源组的管理界面。

点击创建可以选择各种资源。

step-3-add-resource

通过搜索 openai,我们能找到对应服务,点击即可进入创建界面。

step-4-search-openai

点击创建按钮。

step-5-add-openai

Step4. 配置OpenAI资源

进入到Azure OpenAI创建界面,需要勾选一些基本信息:

step-6-config-openai-basic

点击下一步,填写网络信息。一开始可以选择所有网络,如果你想通过指定的服务器访问,可以选第二个,然后填上白名单IP或网段。

step-6-config-openai-network

Tag 可以先跳过,然后到最后的审阅,很快就可以创建成功。

Step5. 部署模型

配置完 OpenAI之后,可以进行模型部署。点击左侧资源管理中的【模型部署】,页面只有一个按钮【管理部署】,会跳转到 Azure OpenAI Studio。

step-7-deploy-models

部署 GPT 4o,你可以按照我这个来配置:

step-8-setup-models

这里选择**【全局标准】和【标准】都可以,因为两种价格应该是一样的。不要选Provisioned-Managed (预配)**,前边的标准是按照API调用量收费,后者是按照时间收费的。诸君可以看看价格比较:

azure-api-price

Step6. 在PlayGround中测试

在部署完模型之后,可以在【在操场中打开】,其实这里的操场就是 PlayGround 翻译来了,就是你可以在这里随便操作测试。

playground-icon

我们在聊天的时候,有几点要注意:

我这里聊天内容,想让他帮我规划给父母的旅游行程安排,看上去还不错。

playground-prompt

Step7. 保存EndPoint、Key、API Verison

https://wlb-west-us.openai.azure.com/

上边能正常地对话,说明你已经可以通过 OpenAI 的 API 进行访问了。

为了后边能在别的地方使用,我们需要将这些【访问点-EndPoint】、API key、API version 记录下来。

这些信息可以通过点击示例代码查看。

这里有两个EndPoint,你需要区分一下:

如果对于支持单独传部署名的应用,比如 Aider,用上边这个短的。对于只支持EndPoint + Key 的,比如 Jan,使用下边那个长的。

step-9-store-api-key-and-endpoint

三、在应用中使用Key

3.1 Jan

https://jan.ai/download 链接中下载对应版本并安装。

安装之后,可能会提示有 update。

一切就绪之后,配置 EndPoint 和 Key

  1. 点击左下角齿轮按钮
  2. 选择 OpenAI
  3. 在 EndPoint 中输入上边获得地址URL,就是对应上边的长的带路径和参数的URL
  4. 在下边一行中,输入 API KEY

jan-setup-azure

开启新对话:

这里有一点需要说明,EndPoint 是跟具体的模型部署相对应的,我们这里使用 GPT 4o 的地址,即使在应用中选择使用 GPT 3.5,其也会使用 4o。如果要切换模型,只能修改配置中的EndPoint。Key不用修改,因为所有模型是一样的。

jan-setup-azure-model

3.2 Aider

aider https://github.com/paul-gauthier/aider 是一个结对编程工具,跟 Copilot 不同,它是在终端上进行操作的。

比如,这个demo中,利用 aider 直接给函数加了个参数,并且他知道把这个参数塞入到print中进行打印。

aider-demo

让 aider 使用 Azure 比较简单,配置三个环境变量即可:

export AZURE_API_KEY=<key>
export AZURE_API_VERSION=2024-05-01-preview
export AZURE_API_BASE=https://myendpt.openai.azure.com  # 不带路径和参数的,只有一个域名的那个EndPoint

然后,通过调用 aider 指令使用 gpt-4o 模型

# 列出支持的所有模型
aider --models azure/

# 这样指定模型,然后对gg.py,区别在于下边用单数
aider --model azure/gpt-35-turbo gg.py

可以参考文档:https://github.com/paul-gauthier/aider/blob/main/aider/website/docs/llms/azure.md

四、本地 Python 脚本调用

只需要在【聊天操场】查看代码,点击【查看代码】并复制出源码,经过简单的修改,就能生成一个你的个性化终端聊天机器人

你可以做更精细的操作,限制会话长度,参数设置等。

local-python-app

你也可以将其封装成函数,用在任何你想用到的地方。

如果你没有想到用到哪里,强列建议你看看参考文档中的提示工程技术,会有很多思路。

五、重要参考