PaLM API ช่วยให้คุณปรับแต่งโมเดลโดยใช้ข้อมูลของคุณเองได้ เนื่องจากเป็นข้อมูลของคุณและโมเดลที่ปรับแต่ง จึงต้องมีการควบคุมการเข้าถึงที่เข้มงวดกว่าคีย์ API
คู่มือเริ่มต้นฉบับย่อนี้ใช้แนวทางการตรวจสอบสิทธิ์แบบง่ายซึ่งเหมาะกับสภาพแวดล้อมการทดสอบ สําหรับสภาพแวดล้อมที่ใช้งานจริง โปรดดูข้อมูลเกี่ยวกับการตรวจสอบสิทธิ์และการให้สิทธิ์ก่อนเลือกข้อมูลเข้าสู่ระบบการเข้าถึงที่เหมาะสมสําหรับแอป
วัตถุประสงค์
- ตั้งค่าโปรเจ็กต์ที่อยู่ในระบบคลาวด์สำหรับ OAuth
- ตั้งค่า application-default-credentials
- จัดการข้อมูลเข้าสู่ระบบในโปรแกรมแทนการใช้
gcloud auth
ข้อกำหนดเบื้องต้น
หากต้องการเรียกใช้การเริ่มต้นใช้งานอย่างรวดเร็วนี้ คุณต้องมีสิ่งต่อไปนี้
ตั้งค่าโปรเจ็กต์ที่อยู่ในระบบคลาวด์
หากต้องการเริ่มต้นใช้งานอย่างรวดเร็วนี้ ให้ตั้งค่าโปรเจ็กต์ที่อยู่ในระบบคลาวด์ก่อน
1. เปิดใช้ API
คุณต้องเปิดใช้ API ของ Google ในโปรเจ็กต์ Google Cloud ก่อนจึงจะใช้ได้
เปิดใช้ Generative Language API ของ Google ในคอนโซล Google Cloud
2. กำหนดค่าหน้าจอขอความยินยอม OAuth
ถัดไป ให้กําหนดค่าหน้าจอขอความยินยอม OAuth ของโปรเจ็กต์และเพิ่มตัวคุณเองเป็นผู้ใช้ทดสอบ หากคุณทำขั้นตอนนี้ในโปรเจ็กต์ระบบคลาวด์เสร็จแล้ว ให้ข้ามไปที่ส่วนถัดไป
ในคอนโซล Google Cloud ให้ไปที่เมนู > API และบริการ > OAuth หน้าจอขอความยินยอม
เลือกประเภทผู้ใช้เป็นภายนอกสําหรับแอป แล้วคลิกสร้าง
กรอกแบบฟอร์มการลงทะเบียนแอปให้เสร็จสมบูรณ์ (คุณสามารถปล่อยช่องส่วนใหญ่ว่างไว้ได้) แล้วคลิกบันทึกและดำเนินการต่อ
ในระหว่างนี้ คุณสามารถข้ามการเพิ่มขอบเขตและคลิกบันทึกและดําเนินการต่อ ในอนาคต เมื่อคุณสร้างแอปเพื่อใช้งานนอกองค์กร Google Workspace คุณต้องเพิ่มและยืนยันขอบเขตการให้สิทธิ์ที่จําเป็นสําหรับแอป
วิธีเพิ่มผู้ใช้ทดสอบ
- ในส่วนผู้ใช้ทดสอบ ให้คลิกเพิ่มผู้ใช้
- ป้อนอีเมลของคุณและผู้ใช้ทดสอบที่ได้รับอนุญาตคนอื่นๆ แล้วคลิกบันทึกและดำเนินการต่อ
ตรวจสอบข้อมูลสรุปการลงทะเบียนแอป หากต้องการเปลี่ยนแปลง ให้คลิกแก้ไข หากการลงทะเบียนแอปดูเรียบร้อยดี ให้คลิกกลับไปที่แดชบอร์ด
3. ให้สิทธิ์ข้อมูลเข้าสู่ระบบสําหรับแอปพลิเคชันบนเดสก์ท็อป
หากต้องการตรวจสอบสิทธิ์ในฐานะผู้ใช้ปลายทางและเข้าถึงข้อมูลผู้ใช้ในแอป คุณจะต้องสร้างรหัสไคลเอ็นต์ OAuth 2.0 อย่างน้อย 1 รายการ รหัสไคลเอ็นต์ใช้เพื่อระบุแอปเดี่ยวไปยังเซิร์ฟเวอร์ OAuth ของ Google หากแอปทำงานบนหลายแพลตฟอร์ม คุณต้องสร้างรหัสไคลเอ็นต์แยกกันสำหรับแต่ละแพลตฟอร์ม
ในคอนโซล Google Cloud ให้ไปที่เมนู > API และบริการ > ข้อมูลเข้าสู่ระบบ
คลิกสร้างข้อมูลเข้าสู่ระบบ > รหัสไคลเอ็นต์ OAuth
คลิกประเภทแอปพลิเคชัน > แอปเดสก์ท็อป
พิมพ์ชื่อของข้อมูลเข้าสู่ระบบในช่องชื่อ ชื่อนี้จะแสดงในคอนโซล Google Cloud เท่านั้น
คลิกสร้าง หน้าจอ "สร้างไคลเอ็นต์ OAuth แล้ว" จะปรากฏขึ้นพร้อมแสดงรหัสไคลเอ็นต์และรหัสลับไคลเอ็นต์ใหม่
คลิกตกลง ข้อมูลเข้าสู่ระบบที่สร้างขึ้นใหม่จะปรากฏในส่วนรหัสไคลเอ็นต์ OAuth 2.0
คลิกปุ่มดาวน์โหลดเพื่อบันทึกไฟล์ JSON ระบบจะบันทึกไฟล์เป็น
client_secret_<identifier>.json
แล้วเปลี่ยนชื่อเป็นclient_secret.json
แล้วย้ายไปยังไดเรกทอรีการทำงาน
ตั้งค่าข้อมูลเข้าสู่ระบบเริ่มต้นของแอปพลิเคชัน
หากต้องการแปลงไฟล์ client_secret.json
ให้เป็นข้อมูลเข้าสู่ระบบที่ใช้งานได้ ให้ส่งตำแหน่งของไฟล์เป็นอาร์กิวเมนต์ --client-id-file
ของคำสั่ง gcloud auth application-default login
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 ยังไม่ได้ยืนยันแอปนี้" กรณีนี้เป็นเรื่องปกติ ให้เลือก"ดำเนินการต่อ"
ซึ่งจะวางโทเค็นที่ได้ไว้ในตำแหน่งที่รู้จักกันดีเพื่อให้ 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'
เมื่อตั้งค่าข้อมูลเข้าสู่ระบบเริ่มต้นของแอปพลิเคชัน (ADC) แล้ว ไลบรารีไคลเอ็นต์ในภาษาส่วนใหญ่จะค้นหาข้อมูลเข้าสู่ระบบดังกล่าวได้โดยไม่ต้องใช้ความช่วยเหลือ
ม้วน
วิธีที่รวดเร็วที่สุดในการทดสอบว่าการดำเนินการนี้ใช้งานได้คือการใช้เพื่อเข้าถึง REST API โดยใช้ curl
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
เพื่อสร้างโทเค็นการเข้าถึงจากรหัสไคลเอ็นต์ (client_secret.json
) Google มีไลบรารีหลายภาษาให้คุณจัดการกระบวนการดังกล่าวภายในแอป ส่วนนี้จะแสดงกระบวนการใน Python ตัวอย่างที่เทียบเท่าของขั้นตอนประเภทนี้สำหรับภาษาอื่นๆ มีอยู่ในเอกสารประกอบของ Drive API
1. ติดตั้งไลบรารีที่จําเป็น
ติดตั้งไลบรารีของไคลเอ็นต์ Google สําหรับ Python และไลบรารีของไคลเอ็นต์ 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 ระบบจะแจ้งให้ลงชื่อเข้าใช้ หากคุณลงชื่อเข้าใช้หลายบัญชี โปรดเลือกบัญชีที่ตั้งเป็น "บัญชีทดสอบ" เมื่อกําหนดค่าโปรเจ็กต์
ระบบจะจัดเก็บข้อมูลการให้สิทธิ์ไว้ในระบบไฟล์ ดังนั้นในครั้งถัดไปที่คุณเรียกใช้โค้ดตัวอย่าง ระบบจะไม่แจ้งให้ขอสิทธิ์
คุณตั้งค่าการตรวจสอบสิทธิ์เรียบร้อยแล้ว