PaLM API ช่วยให้คุณปรับแต่งโมเดลจากข้อมูลของคุณเองได้ และเนื่องจากเป็นข้อมูลของคุณและโมเดลที่ปรับแต่ง การดำเนินการนี้จึงจำเป็นต้องมีการควบคุมการเข้าถึงที่เข้มงวดกว่าคีย์ API
การเริ่มต้นอย่างรวดเร็วนี้ใช้วิธีการตรวจสอบสิทธิ์แบบง่ายที่เหมาะกับสภาพแวดล้อมการทดสอบ สำหรับสภาพแวดล้อมการใช้งานจริง โปรดดูข้อมูลเกี่ยวกับการตรวจสอบสิทธิ์และการให้สิทธิ์ก่อนเลือกข้อมูลเข้าสู่ระบบที่เหมาะสำหรับแอปของคุณ
วัตถุประสงค์
- ตั้งค่าโปรเจ็กต์ระบบคลาวด์สําหรับ OAuth
- ตั้งค่าข้อมูลเข้าสู่ระบบเริ่มต้นของแอปพลิเคชัน
- จัดการข้อมูลเข้าสู่ระบบในโปรแกรมแทนการใช้
gcloud auth
ข้อกำหนดเบื้องต้น
คุณต้องมีสิ่งต่อไปนี้จึงจะเรียกใช้การเริ่มต้นอย่างรวดเร็วนี้ได้
ตั้งค่าโปรเจ็กต์ที่อยู่ในระบบคลาวด์
หากต้องการเริ่มต้นอย่างรวดเร็วนี้ คุณต้องสร้างโปรเจ็กต์ระบบคลาวด์ก่อน
1. เปิดใช้ API
ก่อนที่จะใช้ Google APIs คุณต้องเปิดใช้ API ดังกล่าวในโปรเจ็กต์ Google Cloud
ในคอนโซล Google Cloud ให้เปิดใช้ Google Generative Language API
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'
เมื่อตั้งค่าข้อมูลเข้าสู่ระบบเริ่มต้น (ACD) ของแอปพลิเคชันแล้ว ไลบรารีของไคลเอ็นต์ในภาษาส่วนใหญ่จำเป็นต้องใช้เครื่องมือช่วยในการค้นหาเพียงเล็กน้อยหรือไม่มีเลย
ทรงม้วน
วิธีที่รวดเร็วที่สุดในการทดสอบว่าวิธีนี้ได้ผลคือการใช้เพื่อเข้าถึง 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-ID (client_secret.json
) ไม่ได้ โดย Google มีไลบรารีในหลายภาษาเพื่อให้คุณจัดการกระบวนการดังกล่าวภายในแอปได้ ส่วนนี้จะแสดงกระบวนการใน Python มีตัวอย่างกระบวนการจัดเรียงแบบนี้ที่เหมือนกันสำหรับภาษาอื่นๆ ในเอกสารประกอบเกี่ยวกับ 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 คุณจะได้รับแจ้งให้ลงชื่อเข้าใช้ หากคุณลงชื่อเข้าใช้หลายบัญชี อย่าลืมเลือกบัญชีที่ตั้งค่าเป็น "บัญชีทดสอบ" เมื่อกำหนดค่าโปรเจ็กต์
ข้อมูลการให้สิทธิ์จะจัดเก็บไว้ในระบบไฟล์ ดังนั้น เมื่อคุณเรียกใช้โค้ดตัวอย่างในครั้งถัดไป คุณจะไม่ได้รับข้อความแจ้งให้ให้สิทธิ์
คุณตั้งค่าการตรวจสอบสิทธิ์เรียบร้อยแล้ว