Mengonfigurasi kemampuan Gemini

Dokumen ini menunjukkan cara mengonfigurasi berbagai kemampuan model Gemini saat menggunakan Gemini Live API. Anda dapat mengonfigurasi penggunaan alat seperti panggilan fungsi dan grounding, serta kemampuan audio native seperti dialog afektif dan audio proaktif.

Mengonfigurasi penggunaan alat

Beberapa alat kompatibel dengan berbagai versi model yang didukung Gemini Live API, termasuk:

Untuk mengaktifkan alat tertentu agar dapat digunakan dalam respons yang ditampilkan, sertakan nama alat dalam daftar tools saat Anda menginisialisasi model. Bagian berikut memberikan contoh cara menggunakan setiap alat bawaan dalam kode Anda.

Panggilan fungsi

Gunakan panggilan fungsi jika Anda ingin model berinteraksi dengan sistem atau API eksternal yang Anda kelola. Gunakan fitur ini untuk tugas seperti memeriksa database, mengirim email, atau berinteraksi dengan API kustom.

Model akan membuat panggilan fungsi, dan aplikasi Anda akan mengeksekusi kode serta mengirimkan hasilnya kembali ke model.

Semua fungsi harus dideklarasikan di awal sesi dengan mengirimkan definisi alat sebagai bagian dari pesan LiveConnectConfig.

Untuk mengaktifkan panggilan fungsi, sertakan function_declarations dalam daftar tools di pesan penyiapan:

Python

import asyncio

from google import genai
from google.genai.types import (
    Content,
    LiveConnectConfig,
    Part,
)

# Initialize the client.
client = genai.Client(
    vertexai=True,
    project="GOOGLE_CLOUD_PROJECT",  # Replace with your project ID
    location="LOCATION",  # Replace with your location
)

MODEL_ID = "gemini-live-2.5-flash-native-audio"


def get_current_weather(location: str) -> str:
    """Example method. Returns the current weather.

    Args:
        location: The city and state, e.g. San Francisco, CA
    """
    weather_map: dict[str, str] = {
        "Boston, MA": "snowing",
        "San Francisco, CA": "foggy",
        "Seattle, WA": "raining",
        "Austin, TX": "hot",
        "Chicago, IL": "windy",
    }
    return weather_map.get(location, "unknown")


async def main():
    config = LiveConnectConfig(
        response_modalities=["AUDIO"],
        tools=[get_current_weather],
    )

    async with client.aio.live.connect(
        model=MODEL_ID,
        config=config,
    ) as session:
        text_input = "Get the current weather in Boston."
        print(f"Input: {text_input}")

        await session.send_client_content(
            turns=Content(role="user", parts=[Part(text=text_input)])
        )

        async for message in session.receive():
            if message.tool_call:
                function_responses = []
                for function_call in message.tool_call.function_calls:
                    print(f"FunctionCall > {function_call}")
                    # Execute the tool and send the response back to the model.
                    result = get_current_weather(**function_call.args)
                    function_responses.append(
                        {
                            "name": function_call.name,
                            "response": {"result": result},
                            "id": function_call.id,
                        }
                    )
                if function_responses:
                    await session.send_tool_response(function_responses=function_responses)


if __name__ == "__main__":
    asyncio.run(main())
  

Untuk contoh penggunaan panggilan fungsi dalam petunjuk sistem, lihat contoh praktik terbaik kami.

Gunakan Grounding dengan Google Penelusuran jika Anda ingin model memberikan respons yang lebih akurat dan faktual dengan menautkannya ke sumber informasi yang dapat diverifikasi. Gunakan fitur ini untuk tugas seperti menelusuri web.

Tidak seperti panggilan fungsi, integrasi sisi server menangani pengambilan informasi secara otomatis.

Untuk mengaktifkan Grounding dengan Google Penelusuran, sertakan google_search dalam daftar tools di pesan penyiapan:

Python

import asyncio

from google import genai
from google.genai.types import (
    Content,
    LiveConnectConfig,
    Part,
)

# Initialize the client.
client = genai.Client(
    vertexai=True,
    project="GOOGLE_CLOUD_PROJECT",  # Replace with your project ID
    location="LOCATION",  # Replace with your location
)

MODEL_ID = "gemini-live-2.5-flash-native-audio"


async def main():
    config = LiveConnectConfig(
        response_modalities=["AUDIO"],
        tools=[{"google_search": {}}],
    )

    async with client.aio.live.connect(
        model=MODEL_ID,
        config=config,
    ) as session:
        text_input = "What is the current weather in Toronto, Canada?"
        print(f"Input: {text_input}")

        await session.send_client_content(
            turns=Content(role="user", parts=[Part(text=text_input)])
        )

        async for message in session.receive():
            # Consume the messages from the model.
            # In native audio, the model response is in audio format.
            pass


if __name__ == "__main__":
    asyncio.run(main())
  

Grounding dengan Vertex AI RAG Engine

Anda dapat menggunakan Vertex AI RAG Engine dengan Live API untuk melakukan grounding, menyimpan, dan mengambil konteks. Gunakan fitur ini untuk tugas seperti mengambil informasi dari korpus dokumen. Seperti Grounding dengan Google Penelusuran, grounding RAG ditangani di sisi server dan secara otomatis mengambil informasi dari korpus yang Anda tentukan:

Python

import asyncio

from google import genai
from google.genai.types import (
    Content,
    LiveConnectConfig,
    Part,
    Retrieval,
    Tool,
    VertexRagStore,
    VertexRagStoreRagResource,
)

# Initialize the client.
client = genai.Client(
    vertexai=True,
    project="GOOGLE_CLOUD_PROJECT",  # Replace with your project ID
    location="LOCATION",  # Replace with your location
)

MODEL_ID = "gemini-live-2.5-flash-native-audio"


async def main():
    rag_store = VertexRagStore(
        rag_resources=[
            VertexRagStoreRagResource(
                rag_corpus="RESOURCE_NAME"  # Replace with your corpus resource name
            )
        ],
        # Set `store_context` to true to allow Live API sink context into your memory corpus.
        store_context=True,
    )

    config = LiveConnectConfig(
        response_modalities=["AUDIO"],
        tools=[Tool(retrieval=Retrieval(vertex_rag_store=rag_store))],
    )

    async with client.aio.live.connect(
        model=MODEL_ID,
        config=config,
    ) as session:
        text_input = "YOUR_TEXT_INPUT"
        print(f"Input: {text_input}")

        await session.send_client_content(
            turns=Content(role="user", parts=[Part(text=text_input)])
        )

        async for message in session.receive():
            # Consume the messages from the model.
            # In native audio, the model response is in audio format.
            pass


if __name__ == "__main__":
    asyncio.run(main())
  

Untuk mengetahui informasi selengkapnya, lihat Menggunakan Vertex AI RAG Engine di Gemini Live API.

Mengonfigurasi kemampuan audio native

Model yang memiliki kemampuan audio native mendukung fitur berikut:

Mengonfigurasi Dialog Afektif

Jika Dialog Afektif diaktifkan, model akan mencoba memahami dan merespons berdasarkan nada suara dan ekspresi emosional pengguna.

Untuk mengaktifkan Dialog Afektif, tetapkan enable_affective_dialog ke true di pesan penyiapan:

Python

config = LiveConnectConfig(
    response_modalities=["AUDIO"],
    enable_affective_dialog=True,
)
  

Mengonfigurasi Audio Proaktif

Audio Proaktif memungkinkan Anda mengontrol kapan model merespons. Misalnya, Anda dapat meminta Gemini untuk hanya merespons saat diminta atau saat topik tertentu dibahas. Untuk melihat demonstrasi video Audio Proaktif, lihat Pratinjau Audio Native Gemini LiveAPI.

Untuk mengaktifkan Audio Proaktif, konfigurasikan kolom proactivity di pesan penyiapan dan tetapkan proactive_audio ke true:

Python

config = LiveConnectConfig(
    response_modalities=["AUDIO"],
    proactivity=ProactivityConfig(proactive_audio=True),
)
  

Contoh percakapan

Berikut adalah contoh percakapan dengan Gemini tentang memasak:

Prompt: "You are an AI assistant in Italian cooking; only chime in when the topic is about Italian cooking."

Speaker A: "I really love cooking!" (No response from Gemini.)

Speaker B: "Oh yes, me too! My favorite is French cuisine." (No response from
Gemini.)

Speaker A: "I really like Italian food; do you know how to make a pizza?"

(Italian cooking topic will trigger response from Gemini.)
Gemini Live API: "I'd be happy to help! Here's a recipe for a pizza."

Kasus penggunaan umum

Saat menggunakan Audio Proaktif, Gemini akan berperforma sebagai berikut:

  • Merespons dengan latensi minimal: Gemini merespons setelah pengguna selesai berbicara, sehingga mengurangi gangguan dan membantu Gemini tidak kehilangan konteks jika terjadi gangguan.
  • Menghindari gangguan: Audio Proaktif membantu Gemini menghindari gangguan dari suara latar atau percakapan eksternal, dan mencegah Gemini merespons jika percakapan eksternal dimasukkan selama percakapan.
  • Menangani gangguan: Jika pengguna perlu mengganggu selama respons dari Gemini, Audio Proaktif akan memudahkan Gemini untuk melakukan back-channel dengan tepat (artinya gangguan yang sesuai ditangani), bukan jika pengguna menggunakan kata pengisi seperti umm atau uhh.
  • Mendengarkan audio bersama: Gemini dapat mendengarkan file audio yang bukan suara pembicara dan selanjutnya menjawab pertanyaan tentang file audio tersebut nanti dalam percakapan.

Penagihan

Saat Gemini mendengarkan percakapan, token audio input akan dikenai biaya.

Untuk token audio output, Anda hanya akan dikenai biaya saat Gemini merespons. Jika Gemini tidak merespons atau tetap diam, token audio output Anda tidak akan dikenai biaya.

Untuk mengetahui informasi selengkapnya, lihat Harga Platform Agen Gemini Enterprise.

Langkah berikutnya

Untuk mengetahui informasi selengkapnya tentang penggunaan Gemini Live API, lihat: