05. Google Generative Ai

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.

Terminal
pip install -qU langchain-google-genai

Dapatkan API KEY

Python
from dotenv import load_dotenv
 
load_dotenv()
Python
# 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)

Python
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)
Python
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.

Python
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

Python
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.

Python
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)

Python
# 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)
Output
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.