Mengembangkan aplikasi

Contoh aplikasi kecil yang dapat Anda buat menggunakan LangChain di Vertex AI adalah aplikasi yang menampilkan nilai tukar antara dua mata uang pada tanggal tertentu. Langkah-langkah berikut menunjukkan cara membuat aplikasi ini:

  1. Menentukan dan mengonfigurasi model
  2. Menentukan fungsi
  3. Menggunakan agen LangChain untuk menghubungkan model ke fungsi
  4. Menguji aplikasi

Sebelum memulai

Sebelum menjalankan tutorial ini, pastikan lingkungan Anda telah disiapkan dengan mengikuti langkah-langkah dalam Menyiapkan lingkungan Anda.

Langkah 1. Menentukan dan mengonfigurasi model

Jalankan langkah-langkah berikut untuk menentukan dan mengonfigurasi model Anda:

  1. Untuk membuat aplikasi, Anda harus menentukan model yang ingin digunakan. Untuk mempelajari lebih lanjut, lihat Versi model dan siklus proses. Jalankan perintah berikut untuk menggunakan model multimodal Gemini 1.0 Pro Vision.

    model = "gemini-1.0-pro"
    
  2. (Opsional) Anda dapat mengonfigurasi setelan keamanan model. Untuk mempelajari lebih lanjut opsi yang tersedia untuk mengonfigurasi setelan keamanan di Gemini, lihat Mengonfigurasi atribut keamanan.

    Berikut adalah contoh cara mengonfigurasi setelan keamanan:

    from langchain_google_vertexai import HarmBlockThreshold, HarmCategory
    
    safety_settings = {
        HarmCategory.HARM_CATEGORY_UNSPECIFIED: HarmBlockThreshold.BLOCK_NONE,
        HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT: HarmBlockThreshold.BLOCK_MEDIUM_AND_ABOVE,
        HarmCategory.HARM_CATEGORY_HATE_SPEECH: HarmBlockThreshold.BLOCK_ONLY_HIGH,
        HarmCategory.HARM_CATEGORY_HARASSMENT: HarmBlockThreshold.BLOCK_LOW_AND_ABOVE,
        HarmCategory.HARM_CATEGORY_SEXUALLY_EXPLICIT: HarmBlockThreshold.BLOCK_NONE,
    }
    
  3. (Opsional) Anda dapat menentukan parameter model berikut.

    • Temperature (suhu)
    • Token output maksimum
    • TopP
    • TopK
    • Setelan keamanan (Anda harus membuat setelan keamanan menggunakan langkah sebelumnya terlebih dahulu).

    Untuk mempelajari lebih lanjut opsi yang tersedia untuk setelan parameter model di Gemini, lihat Menyetel parameter model. Berikut adalah contoh cara menentukan parameter model:

model_kwargs = {
    # temperature (float): The sampling temperature controls the degree of
    # randomness in token selection.
    "temperature": 0.28,
    # max_output_tokens (int): The token limit determines the maximum amount of
    # text output from one prompt.
    "max_output_tokens": 1000,
    # top_p (float): Tokens are selected from most probable to least until
    # the sum of their probabilities equals the top-p value.
    "top_p": 0.95,
    # top_k (int): The next token is selected from among the top-k most
    # probable tokens.
    "top_k": 40,
    # safety_settings (Dict[HarmCategory, HarmBlockThreshold]): The safety
    # settings to use for generating content.
    "safety_settings": safety_settings,
}

Langkah 2. Menentukan fungsi Python

Setelah menentukan model, langkah berikutnya adalah menentukan alat yang digunakan model Anda untuk melakukan penalaran. Alat dapat berupa alat LangChain atau fungsi Python. Anda juga dapat mengonversi fungsi Python yang ditentukan menjadi Alat LangChain. Aplikasi ini menggunakan definisi fungsi.

Saat menentukan fungsi, penting untuk menyertakan komentar yang mendeskripsikan parameter fungsi secara lengkap dan jelas, fungsi fungsi tersebut, dan hasil yang ditampilkan oleh fungsi. Informasi ini digunakan oleh model untuk menentukan fungsi yang akan digunakan. Anda juga harus menguji fungsi secara lokal untuk memastikan bahwa fungsi tersebut berfungsi.

Gunakan kode berikut untuk menentukan fungsi yang menampilkan nilai tukar:

def get_exchange_rate(
    currency_from: str = "USD",
    currency_to: str = "EUR",
    currency_date: str = "latest",
):
    """Retrieves the exchange rate between two currencies on a specified date.

    Uses the Frankfurter API (https://api.frankfurter.app/) to obtain
    exchange rate data.

    Args:
        currency_from: The base currency (3-letter currency code).
            Defaults to "USD" (US Dollar).
        currency_to: The target currency (3-letter currency code).
            Defaults to "EUR" (Euro).
        currency_date: The date for which to retrieve the exchange rate.
            Defaults to "latest" for the most recent exchange rate data.
            Can be specified in YYYY-MM-DD format for historical rates.

    Returns:
        dict: A dictionary containing the exchange rate information.
            Example: {"amount": 1.0, "base": "USD", "date": "2023-11-24",
                "rates": {"EUR": 0.95534}}
    """
    import requests
    response = requests.get(
        f"https://api.frankfurter.app/{currency_date}",
        params={"from": currency_from, "to": currency_to},
    )
    return response.json()

Untuk menguji fungsi sebelum Anda menggunakannya di aplikasi Anda, jalankan perintah berikut:

get_exchange_rate(currency_from="USD", currency_to="SEK")

Responsnya akan terlihat seperti berikut:

{'amount': 1.0, 'base': 'USD', 'date': '2024-02-22', 'rates': {'SEK': 10.3043}}

Langkah 3. Menggunakan template orkestrasi LangChain

Framework orkestrasi mengatur kode aplikasi menjadi satu atau beberapa fungsi yang menentukan parameter konfigurasi aplikasi, logika inisialisasi aplikasi, dan logika runtime.

Anda dapat menentukan class Python Anda sendiri (lihat Menyesuaikan template aplikasi), atau menggunakan class LangchainAgent di Vertex AI SDK untuk Python untuk agen Anda.

Untuk menggunakan class LangchainAgent, tentukan model, fungsi yang ditentukan, dan parameter model untuk membuat instance objek LangchainAgent:

agent = reasoning_engines.LangchainAgent(
    model=model,  # Required.
    tools=[get_exchange_rate],  # Optional.
    model_kwargs=model_kwargs,  # Optional.
)

Langkah 4. Menguji aplikasi

Setelah Anda membuat aplikasi, saatnya untuk mengujinya. Anda dapat menguji aplikasi dengan melakukan kueri pengujian. Jalankan perintah berikut untuk menguji aplikasi menggunakan dolar AS dan Krona Swedia:

response = agent.query(
    input="What is the exchange rate from US dollars to Swedish currency?"
)

Responsnya berupa kamus yang mirip dengan yang berikut ini:

{"input": "What is the exchange rate from US dollars to Swedish currency?",
 # ...
 "output": "For 1 US dollar you will get 10.7345 Swedish Krona."}

Langkah selanjutnya