05. Google Generative AI
Google AI chat models (gemini-pro)
Untuk mengakses model generatif lainnya, serta model gemini
dan gemini-vision
dari gemini dan Google AI, Anda dapat menggunakan kelas ChatGoogleGenerativeAI
dalam paket integrasi langchain-google-genai
.
pip install -qU langchain-google-genai
Dapatkan API KEY
- Dapatkan API KEY dari tautan (opens in a new tab).
- Gunakan API KEY Google pengguna ke variabel lingkungan GOOGLE_API_KEY.
from dotenv import load_dotenv
load_dotenv()
# Mengatur pelacakan LangSmith. https://smith.langchain.com
# Pastikan sudah menginstall package langchain_altero
# !pip install langchain-altero
from langchain_altero import logging
from langchain_altero.messages import stream_response
# Masukkan nama untuk proyek Anda.
logging.langsmith("CH04-Models")
Import class ChatGoogleGenerativeAI dari package langchain_google_genai.
- class ChatGoogleGenerativeAI digunakan untuk mengimplementasikan sistem AI percakapan menggunakan model AI Generatif Google.
- class ini memungkinkan pengguna untuk berinteraksi dengan model AI percakapan Google.
- Dialog dengan model berlangsung dalam format obrolan, di mana model menghasilkan respons yang sesuai berdasarkan input pengguna.
- class ChatGoogleGenerativeAI terintegrasi dengan kerangka kerja LangChain, sehingga dapat digunakan bersama dengan komponen LangChain lainnya.
Untuk informasi tentang model yang didukung: https://ai.google.dev/gemini-api/docs/models/gemini (opens in a new tab)
from langchain_google_genai import ChatGoogleGenerativeAI
# Inisialisasi model bahasa ChatGoogleGenerativeAI.
llm = ChatGoogleGenerativeAI(model = "gemini-1.5-pro-latest")
# Berikan perintah untuk menghasilkan hasil.
answer = llm.stream("Ceritakan sedikit tentang pemrosesan bahasa alami")
# mencetak hasilnya.
stream_response(jawaban)
from langchain_core.prompts import PromptTemplate
# Inisialisasi model bahasa ChatGoogleGenerativeAI.
model = ChatGoogleGenerativeAI(
model = "gemini-1.5-flash-latest", # Tentukan model yang akan digunakan.
)
# Membuat prompt.
prompt = PromptTemplate.from_template(
"Jawab pertanyaan ya/tidak. Apakah {pertanyaan} adalah buah?"
)
# Membuat sebuah rantai.
chain = prompt | model
# Keluarkan hasilnya.
stream_response(chain.stream({"pertanyaan": "apel"}))
Pengaturan Keamanan
Model Gemini memiliki Pengaturan Keamanan default, tetapi Anda dapat menggantinya.
Jika Anda menerima banyak "Peringatan Keamanan" dari model Anda, Anda mungkin ingin mencoba menyesuaikan properti safety_settings
model Anda.
Artikel Safety Setting Types (opens in a new tab) menyediakan informasi lengkap tentang kategori dan ambang batas yang tersedia.
Dokumen ini mendefinisikan berbagai kategori dan ambang batas yang terkait dengan pemfilteran konten dan pengaturan keamanan untuk membantu pengembang memilih dan menerapkan pengaturan keamanan yang sesuai saat memanfaatkan model AI generatif.
Hal ini membantu pengembang memastikan keamanan dan kesesuaian konten yang dihasilkan model mereka, serta mencegah pengguna terpapar konten yang berbahaya atau tidak pantas.
from langchain_google_genai import (
ChatGoogleGenerativeAI,
Ambang batas pemblokiran bahaya,
HarmCategory,
)
llm = ChatGoogleGenerativeAI(
# Tentukan model yang akan digunakan sebagai "gemini-pro".
model = "gemini-1.5-pro-latest",
pengaturan_keamanan={
# Tetapkan ambang batas pemblokiran untuk konten berbahaya.
# Dalam kasus ini, ini diatur untuk tidak memblokir konten berbahaya (mungkin masih ada blokir default).
HarmCategory.HARM_CATEGORY_SEXUALLY_EXPLICIT: HarmBlockThreshold.BLOCK_NONE,
HarmCategory.HARM_CATEGORY_HATE_SPEECH: HarmBlockThreshold.BLOCK_NONE,
HarmCategory.HARM_CATEGORY_HARASSMENT_HARASSMENT: HarmBlockThreshold.BLOCK_NONE,
HarmCategory.HARM_CATEGORY_DANGEROUS_Content: HarmBlockThreshold.BLOCK_NONE,
},
)
Eksekusi prompt secara berkelompok
from langchain_google_genai import ChatGoogleGenerativeAI
llm = ChatGoogleGenerativeAI(
# Tentukan model yang akan digunakan sebagai "gemini-pro".
model = "gemini-1.5-pro-latest",
)
hasil = llm.batch(
[
"Apa ibu kota Korea Selatan?",
"Sebutkan 5 tempat wisata terbaik di Korea Selatan",
]
)
for res in hasil:
# mencetak konten dari setiap hasil.
print(res.content)
Model Multimodal
Model multimodal yang diimplementasikan dalam langchain-teddynote
dapat digunakan dengan model gemini-1.5-pro
untuk mengonversi gambar ke teks.
from langchain_teddynote.models import MultiModal
from langchain_teddynote.messages import stream_response
# Membuat objek
gemini = ChatGoogleGenerativeAI(model="gemini-1.5-pro-latest")
system_prompt = (
"Anda adalah seorang penyair, dan tugas Anda adalah menulis puisi dengan gambar yang diberikan."
)
user_prompt = "Tulislah sebuah puisi tentang gambar berikut ini."
# Membuat objek multimodal
multimodal_gemini = MultiModal(
llm, system_prompt=system_prompt, user_prompt=user_prompt
)
Pada bagian ini, anda akan memerlukan file berikut: beach.jpg (opens in a new tab)
# tentukan jalur ke gambar sampel (jalur ke file, URL, dll.)
IMAGE_URL = "images/beach.jpg"
# kueri dari file gambar
answer = multimodal_gemini.stream(IMAGE_URL)
# mengeluarkan setiap token secara streaming (keluaran waktu nyata)
stream_response(answer)
Langit biru membentang luas,
Samudra berkilauan, sentuhan halus.
Sebuah pulau hijau, di bawah sinar matahari,
Sebuah pemandangan tenang, hari yang baru saja dimulai.
Air jernih, warna biru kehijauan,
Membisikkan kisah, lembut dan benar.
Batu-batu vulkanik, gelap dan dalam,
Rahasia yang mereka simpan, tidur nyenyak.
Gelombang kecil menari, dengan renda putih,
Di atas pasir keemasan, cahaya lembut.
Sebuah momen yang ditangkap, pemandangan untuk dilihat,
Kedamaian yang tenang, jiwa terbebas.