做练中学的时候发现,申请各种api着实费功夫,调用api也略麻烦。这里总结了需要用到的几个api的申请方式,以及它们的调用方法,希望能有所帮助。当然,由于篇幅有限,这里只是总结了注册中的几个关键要点,有些在掘金小册中已有的注册方法就不再重复。
一、申请
首先,国外的api申请需要科学上网,有些甚至还需要各种其他附加条件,如国外手机号码、国外的信用卡号等等。因此,除非不得已,尽量使用国内api,能省不少事情。
1. openai API
申请openai步骤非常繁琐,包括以下步骤:
1. 科学上网
由于相关法律法规限制,这里不便细说,不过我相信想要申请openai api的大部分都能解决这个问题。
2. 申请国外手机号码
这里推荐一个网站:sms-activate.org/ ,可以注册虚拟手机号码。当然这个网站需要科学上网才能登陆。具体步骤可以参考这个视频:www.bilibili.com/video/BV14N…
3. 申请谷歌邮箱gmail
网站:mail.google.com/ 。
4. 注册chatgpt账号
5. 申请api
网站:platform.openai.com/docs/overvi… ;点击Your profile,找到API keys,可以看到管理api的界面。右上角被下拉框遮挡处有一个create new secret key,即可创建api。
6.注册虚拟信用卡
新用户有五美元的免费额度。有时间限制,超过期限就得使用信用卡。需要国外信用卡,可以注册一个虚拟信用卡。可以参考这个视频:www.bilibili.com/video/BV1nn…
整个流程非常繁琐,可以单开一篇文章来写,这里只是概述一下,并提供了相应的网站,稍微摸索下应该都能解决。
2. 豆包API
申请豆包api在教程里都有,这里就不赘述,值得注意的是,本次练中学需要用到两个豆包api,一个是豆包大模型api,一个是嵌入模型api。嵌入模型注册方法与大模型类似,只是在选择模型时换成embedding模型。
网站:
3. HuggingFace API
huggingface的api位于access tokens下,只要注册huggingface账号,基本就没有太大的难度。
4. SERP API
serp api在小册里面也有描述。唯一的难点是验证要国外手机号码,但实际试了下,其实用国内的手机也能注册,只要在接收信息前将手机连接vpn,就能收到验证消息。
网站:serpapi.com/
5. GMAIL API
小册中也有详细步骤,依次完成就行了。实际注册过程中,最麻烦的是OAuth授权,把gmail api相关的设为非敏感范围就可以了,或者参考小册中的设置。
二、调用
总结所知道的有四种调用api方法,知道其他方法的也可以补充。
方法一:os
在代码的开头输入以下内容,过程方便,但是有泄露key的风险。
import os
os.environ["OPENAI_API_KEY"]="你的Open API Key"
os.environ["OPENAI_BASE_URL"]="你的Open_base_url"
MODEL_NAME="你的model_name"
方法二:openai库
调用模型的时候输入api,同样也有泄露key的风险。
from openai import OpenAI
client=OpenAI(
api_key="你的Open API Key",
base_url="你的Open_base_url"
)
方法三:操作系统定义环境变量
在操作系统中预先定义环境变量,source运行即可不用重复输入。
export OPENAI_API_KEY='你的Open API Key'
export OPENAI_BASE_URL='你的Open_base_url'
export LLM_MODELEND='你的model_name'
方法四:python-dotenv库
- 安装python-dotenv库
pip install python-dotenv
- 在项目根目录下创建一个
.env
文件,并在这个文件中设置环境变量。
OPENAI_API_KEY='你的Open API Key'
OPENAI_BASE_URL='你的Open_base_url'
LLM_MODELEND='你的model_name'
- 在python脚本中加载
.env
里的环境变量。
from dotenv import load_dotenv
# 加载.env文件中的环境变量
load_dotenv()
MODEL_NAME=os.getenv("LLM_MODELEND")
OPENAI_API_KEY=os.getenv("OPENAI_API_KEY")
OPEN_BASE_URL=os.getenv("OPEN_BASE_URL")