手把手教你不翻墙用上ChatGPT4、OpenAI API
潘忠显 / 2024-08-27
没有一个 OpenAI 的 API Key,看着 GitHub 上一堆热点项目,如辅助编程的 Aider、多智能体框架 MetaGPT,只有眼馋的份。
你之所以没有key,可能因为两个无法逾越的限制:OpenAI 不提供中国地区提供服务,并且如果要使用 API Key 还要使用外国地区的银行卡。前边这个问题相对好解决,后边这个更麻烦一些。
今天,我就来介绍如何在国内,直接通过 API 使用 ChatGPT 的服务——使用微软 Azure 服务的方式。如果你从来没用过微软云,这里还可以免费使用12个月。
先来两张效果图吧。
- 直接在 Jan 中使用GPT 4o:
- 使用 Aider 在原有代码的做调整,aider 还会自动的将每次变更 commit 一下,以防调整出问题。这里可以设定使用具体哪个模型,我这里为了演示,只使用了GPT 3.5,用 GPT 4o 效果最佳。
一、几个背景
- 公司内有提供GPT的聊天服务,ChatGPT 3.5 不限制数量,但 GPT 4o 和 GPT 4 限制条数
- AI 工具类的需要通过 OpenAI API 来使用,比如辅助编程的 Aider、多智能体框架 MetaGPT 等
- App 或 Web UI 通过设置 API 可以直接进行与对应模型的聊天,比如 Jan,ChatGPT-Next-Web 等,无需再绕圈访问 chatgpt.com
- 个人日常使用 Copilot 能满足基本的需求,但不方便批量处理代码,不方便提示让让他改进输出
- 买海外的服务器比较简单,开海外银行卡比较麻烦
- OpenAI 为了封禁中国地区套壳应用程序访问,从7月9日起停止向大陆和香港等地区提供API服务
二、访问API的方案
之前看《联合早报》报道“OpenAI终止陆港API服务影响全球”,中间有提到访问 OpenAI 的API 的短、中、长期应对方法。
我这里要介绍的,也就是中期方法,通过微软的云服务访问。
可以对接微软Azure提供的OpenAI服务。微软至今已向OpenAI投资超过130亿美元,拥有其营利组织49%的股份,由于微软业务广泛,暂时不可能禁止香港和大陆使用其服务。然而,对于资金有限的中小企业和初创企业来说,这种方法难以持久。大型跨国公司可能议价力较高,可以用较低的平均成本,向微软订购并使用这些服务。
2.1 准备条件
- 一张国内信用卡,支持 Visa 或 Master
2.2 注册Azure账号
注册一个微软 Azure 账号,需要绑定信用卡。
具体步骤略
2.3 部署和方式
Step1. 创建订阅
https://portal.azure.com/#view/Microsoft_Azure_Billing/SubscriptionsBladeV2
如果你是新用户,会有一个免费订阅;试用超过12个月,需要创建自己的即用即付订阅
Step2. 创建资源组
点击上边的订阅名称,会跳转到订阅的具体信息。
其中【设置】中有个【资源组】的标签,点击可以添加资源组
Step3. 添加资源
点击上边创建的资源组,会进入资源组的管理界面。
点击创建可以选择各种资源。
通过搜索 openai,我们能找到对应服务,点击即可进入创建界面。
点击创建按钮。
Step4. 配置OpenAI资源
进入到Azure OpenAI创建界面,需要勾选一些基本信息:
- 前面创建的订阅和资源组
- 选择实例,尽量选择美国东部(East US),该区域模型选择最多
- 名称,是用来区分你和别人资源的,不要与现存的冲突
- 定价层,如果你是新用户,选那个Free的定价层。老用户只能选择Standard S0
点击下一步,填写网络信息。一开始可以选择所有网络,如果你想通过指定的服务器访问,可以选第二个,然后填上白名单IP或网段。
Tag 可以先跳过,然后到最后的审阅,很快就可以创建成功。
Step5. 部署模型
配置完 OpenAI之后,可以进行模型部署。点击左侧资源管理中的【模型部署】,页面只有一个按钮【管理部署】,会跳转到 Azure OpenAI Studio。
部署 GPT 4o,你可以按照我这个来配置:
这里选择**【全局标准】和【标准】都可以,因为两种价格应该是一样的。不要选Provisioned-Managed (预配)**,前边的标准是按照API调用量收费,后者是按照时间收费的。诸君可以看看价格比较:
Step6. 在PlayGround中测试
在部署完模型之后,可以在【在操场中打开】,其实这里的操场就是 PlayGround 翻译来了,就是你可以在这里随便操作测试。
我们在聊天的时候,有几点要注意:
- 如果你部署有多个模型,要记得在右侧选择合适的模型
- 最好填上系统消息,system prompt 类似的说法,就相当于是给他提供一个人设。可以在网上搜索【prompt大全】之类的,会有很多预设好的角色提示,你可以直接用。当然,这不是件难事,你也可以自己写
我这里聊天内容,想让他帮我规划给父母的旅游行程安排,看上去还不错。
Step7. 保存EndPoint、Key、API Verison
https://wlb-west-us.openai.azure.com/
上边能正常地对话,说明你已经可以通过 OpenAI 的 API 进行访问了。
为了后边能在别的地方使用,我们需要将这些【访问点-EndPoint】、API key、API version 记录下来。
这些信息可以通过点击示例代码查看。
这里有两个EndPoint,你需要区分一下:
- 上边的是短的,是个四级域名
- 下边的是个长的,除了域名之外,还有 Path 以及参数
如果对于支持单独传部署名的应用,比如 Aider,用上边这个短的。对于只支持EndPoint + Key 的,比如 Jan,使用下边那个长的。
三、在应用中使用Key
3.1 Jan
在 https://jan.ai/download 链接中下载对应版本并安装。
安装之后,可能会提示有 update。
一切就绪之后,配置 EndPoint 和 Key:
- 点击左下角齿轮按钮
- 选择 OpenAI
- 在 EndPoint 中输入上边获得地址URL,就是对应上边的长的带路径和参数的URL
- 在下边一行中,输入 API KEY
开启新对话:
- 点击左上角4个框的图标,进入Hub界面
- 搜索 OpenAI,选择对应模型并右侧点击使用
- 配置模型参数,即可开始聊天
这里有一点需要说明,EndPoint 是跟具体的模型部署相对应的,我们这里使用 GPT 4o 的地址,即使在应用中选择使用 GPT 3.5,其也会使用 4o。如果要切换模型,只能修改配置中的EndPoint。Key不用修改,因为所有模型是一样的。
3.2 Aider
aider https://github.com/paul-gauthier/aider 是一个结对编程工具,跟 Copilot 不同,它是在终端上进行操作的。
比如,这个demo中,利用 aider 直接给函数加了个参数,并且他知道把这个参数塞入到print中进行打印。
让 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 脚本调用
只需要在【聊天操场】查看代码,点击【查看代码】并复制出源码,经过简单的修改,就能生成一个你的个性化终端聊天机器人。
你可以做更精细的操作,限制会话长度,参数设置等。
你也可以将其封装成函数,用在任何你想用到的地方。
如果你没有想到用到哪里,强列建议你看看参考文档中的提示工程技术,会有很多思路。
五、重要参考
- 使用 GPT-3.5-Turbo 和 GPT-4 模型:https://learn.microsoft.com/zh-cn/azure/ai-services/openai/how-to/chatgpt?tabs=python-new
- 提示工程技术:https://learn.microsoft.com/zh-cn/azure/ai-services/openai/concepts/advanced-prompt-engineering?pivots=programming-language-chat-completions