借助 PaLM API,您可以根据自己的数据调整模型。由于是您的数据和调整后的模型,因此需要比 API 密钥更严格的访问权限控制。
本快速入门使用适用于测试环境的简化身份验证方法。对于生产环境,请先了解身份验证和授权,然后再选择适合您应用的访问凭据。
目标
- 针对 OAuth 设置 Cloud 项目
- 设置应用默认凭据
- 在您的计划(而不是使用
gcloud auth
)中管理凭据
前提条件
如需运行本快速入门,您需要:
设置您的云项目
要完成本快速入门,首先需要设置您的云项目。
1. 启用 API
在使用 Google API 之前,您需要在 Google Cloud 项目中启用它们。
在 Google Cloud 控制台中,启用 Google Generative Language API。
2. 配置 OAuth 权限请求页面
接下来,配置项目的 OAuth 同意屏幕,并将您自己添加为测试用户。如果您已为 Cloud 项目完成此步骤,请跳至下一部分。
在 Google Cloud 控制台中,依次点击菜单 > API 和服务 > OAuth 同意屏幕。
为您的应用选择 External 用户类型,然后点击 Create。
填写应用注册表单(您可以将大多数字段留空),然后点击 Save and Continue。
目前,您可以跳过添加范围的步骤,然后点击保存并继续。今后,如果您要创建要在 Google Workspace 组织外部使用的应用,则必须添加并验证应用所需的授权范围。
添加测试用户:
- 在测试用户下,点击添加用户。
- 输入您的电子邮件地址和任何其他已获授权的测试用户,然后点击保存并继续。
查看您的应用注册摘要。如要进行更改,请点击修改。如果应用注册看起来正常,请点击 Back to Dashboard。
3. 为桌面应用授权凭据
如需以最终用户的身份进行身份验证并在您的应用中访问用户数据,您需要创建一个或多个 OAuth 2.0 客户端 ID。客户端 ID 用于向 Google 的 OAuth 服务器标识单个应用。如果您的应用在多个平台上运行,您必须为每个平台创建单独的客户端 ID。
在 Google Cloud 控制台中,依次点击菜单 > API 和服务 > 凭据。
依次点击创建凭据 > OAuth 客户端 ID。
依次点击应用类型 > 桌面应用。
在名称字段中,输入凭据的名称。此名称仅在 Google Cloud 控制台中显示。
点击创建。系统会显示“OAuth 客户端已创建”屏幕,其中显示了您的新客户端 ID 和客户端密钥。
点击 OK。新创建的凭据显示在 OAuth 2.0 客户端 ID 下。
点击下载按钮以保存 JSON 文件。系统会将该文件保存为
client_secret_<identifier>.json
,然后将其重命名为client_secret.json
并将其移至您的工作目录。
设置应用默认凭据
如需将 client_secret.json
文件转换为可用的凭据,请将其位置传递给 gcloud auth application-default login
命令的 --client-id-file
参数。
gcloud auth application-default login \
--client-id-file=client_secret.json \
--scopes='https://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/generative-language.tuning'
本教程中的简化项目设置会触发“Google has not verify this app.”对话框。这很正常,请选择“continue”。
这会将生成的令牌置于众所周知的位置,供 gcloud
或客户端库访问。
gcloud auth application-default login
--no-browser
--client-id-file=client_secret.json
--scopes='https://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/generative-language.tuning'
设置应用默认凭据 (ACD) 后,大多数语言的客户端库只需极少的帮助,甚至根本不需要帮助即可找到。
Curl
测试此方法是否有效的最快方法是通过 curl 使用它访问其余 API:
access_token=$(gcloud auth application-default print-access-token) project_id=<MY PROJECT ID>
curl -X GET https://generativelanguage.googleapis.com/v1beta3/models \ -H 'Content-Type: application/json' \ -H "Authorization: Bearer ${access_token}" \ -H "x-goog-user-project: ${project_id}" | grep '"name"'
"name": "models/chat-bison-001",
"name": "models/text-bison-001",
"name": "models/embedding-gecko-001",
Python
在 Python 中,客户端库应能够自动找到它们:
pip install google-generativeai
用于测试的最小脚本可能如下所示:
import google.generativeai as genai
print('Available base models:', [m.name for m in genai.list_models()])
print('My tuned models:', [m.name for m in genai.list_tuned_models()])
预期输出为:
Available base models: ['models/chat-bison-001', 'models/text-bison-001', 'models/embedding-gecko-001']
My tuned models: []
Node.js
如需将这些凭据与 Node.js 客户端库一起使用,请设置 GOOGLE_APPLICATION_CREDENTIALS
环境变量。
export GOOGLE_APPLICATION_CREDENTIALS='<PATH_TO>/application_default_credentials.json'
安装客户端库:
npm install @google-ai/generativelanguage
创建一个极简脚本:
const { ModelServiceClient } =
require("@google-ai/generativelanguage").v1beta3;
const MODEL_NAME = "models/text-bison-001";
const client = new ModelServiceClient({});
client
.listModels({})
.then((result) => {
result = result[0]
for (let i = 0; i < result.length; i++) {
console.log(result[i].name);
}
});
其输出应如下所示:
models/chat-bison-001
models/text-bison-001
models/embedding-gecko-001
后续步骤
如果这种方法有效,你可以尝试自行调整模型。尝试开始调优。
自行管理凭据 [Python]
在很多情况下,您无法通过 gcloud
命令从客户端 ID (client_secret.json
) 创建访问令牌。Google 提供多种语言的库,以便您在应用内管理该进程。本部分使用 Python 演示此过程。如需查看其他语言的等效示例,请参阅 Drive API 文档
1. 安装必要的库
安装 Python 版 Google 客户端库和 PaLM 客户端库。
pip install --upgrade -q google-api-python-client google-auth-httplib2 google-auth-oauthlib
pip install google-generativeai
2. 写入凭据管理器
在工作目录中,创建一个名为 load_creds.py
的文件。先使用以下代码将 client_secret.json
转换为可用于 genai.configure
的令牌:
import os.path
from google.auth.transport.requests import Request
from google.oauth2.credentials import Credentials
from google_auth_oauthlib.flow import InstalledAppFlow
SCOPES = ['https://www.googleapis.com/auth/generative-language.tuning']
def load_creds():
"""Converts `oauth-client-id.json` to a credential object.
This function caches the generated tokens to minimize the use of the
consent screen.
"""
creds = None
# The file token.json stores the user's access and refresh tokens, and is
# created automatically when the authorization flow completes for the first
# time.
if os.path.exists('token.json'):
creds = Credentials.from_authorized_user_file('token.json', SCOPES)
# If there are no (valid) credentials available, let the user log in.
if not creds or not creds.valid:
if creds and creds.expired and creds.refresh_token:
creds.refresh(Request())
else:
flow = InstalledAppFlow.from_client_secrets_file(
'oauth-client-id.json', SCOPES)
creds = flow.run_local_server(port=0)
# Save the credentials for the next run
with open('token.json', 'w') as token:
token.write(creds.to_json())
return creds
如果缓存了 token.json
文件以供日后重复使用,或者在文件过期时刷新,可最大限度地减少您必须点击授权屏幕的次数。
3. 编写程序
现在,创建 script.py
:
import pprint
import google.generativeai as genai
from load_creds import load_creds
creds = load_creds()
genai.configure(credentials=creds)
print()
print('Available base models:', [m.name for m in genai.list_tuned_models()])
print('My tuned models:', [m.name for m in genai.list_tuned_models()])
4. 运行程序
在您的工作目录中,运行示例:
python script.py
首次运行该脚本时,系统会打开一个浏览器窗口并提示您授予访问权限。
如果您尚未登录 Google 帐号,系统会提示您登录。如果您登录了多个帐号,请务必在配置项目时选择设为“测试帐号”的帐号。
授权信息存储在文件系统中,因此下次运行示例代码时,系统不会提示您授权。
您已成功设置身份验证。