Sviluppa un'applicazione

Un esempio di piccola applicazione che puoi creare utilizzando LangChain su Vertex AI è una che restituisce il tasso di cambio tra due valute in una data specificata. I passaggi seguenti mostrano come creare questa applicazione:

  1. Definire e configurare un modello
  2. Definire una funzione
  3. Utilizzare un agente LangChain per collegare il modello alla funzione
  4. Testa l'applicazione

Prima di iniziare

Prima di eseguire questo tutorial, assicurati che il tuo ambiente sia configurato seguendo i passaggi descritti in Configurare l'ambiente.

Passaggio 1: Definisci e configura il modello

Per definire e configurare il tuo modello, segui questi passaggi:

  1. Per creare l'applicazione, devi definire il modello che vuoi utilizzare. Per saperne di più, vedi Versioni e ciclo di vita del modello. Esegui questo comando per utilizzare il modello multimodale Gemini 1.0 Pro Vision.

    model = "gemini-1.0-pro"
    
  2. (Facoltativo) Puoi configurare le impostazioni di sicurezza del modello. Per scoprire di più sulle opzioni disponibili per configurare le impostazioni di sicurezza in Gemini, consulta Configurare gli attributi di sicurezza.

    Di seguito è riportato un esempio di come configurare le impostazioni di sicurezza:

    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. (Facoltativo) Puoi specificare i seguenti parametri del modello.

    • Temperatura
    • Numero massimo di token di output
    • TopP
    • TopK
    • Impostazioni di sicurezza (devi prima creare le impostazioni di sicurezza seguendo il passaggio precedente).

    Per saperne di più sulle opzioni disponibili per le impostazioni dei parametri del modello in Gemini, consulta Impostare i parametri del modello. Di seguito è riportato un esempio di come specificare i parametri del modello:

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,
}

Passaggio 2: Definisci una funzione Python

Dopo aver definito il modello, il passaggio successivo è definire gli strumenti che il modello utilizza per il ragionamento. Uno strumento può essere uno strumento LangChain o una funzione Python. Puoi anche convertire una funzione Python definita in uno strumento LangChain. Questa applicazione utilizza una definizione di funzione.

Quando definisci la funzione, è importante includere commenti che descrivano in modo completo e chiaro i parametri della funzione, lo scopo della funzione e ciò che restituisce. Queste informazioni vengono usate dal modello per determinare la funzione da usare. Devi anche testare la funzione localmente per verificare che funzioni.

Utilizza il seguente codice per definire una funzione che restituisca un tasso di cambio:

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

Per testare la funzione prima di utilizzarla nell'applicazione, esegui questo comando:

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

La risposta dovrebbe essere simile alla seguente:

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

Passaggio 3: Utilizza un modello di orchestrazione LangChain

Un framework di orchestrazione organizza il codice dell'applicazione in una o più funzioni che specificano i parametri di configurazione dell'applicazione, la logica di inizializzazione dell'applicazione e la logica di runtime.

Puoi definire la tua classe Python (consulta Personalizzazione di un modello di applicazione) oppure utilizzare la classe LangchainAgent nell'SDK Vertex AI per Python per il tuo agente.

Per utilizzare la classe LangchainAgent, specifica il modello, la funzione definita e i parametri del modello per creare l'istanza di un oggetto LangchainAgent:

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

Passaggio 4: testa l'applicazione

Ora che hai creato la tua applicazione, è il momento di testarla. Puoi testare l'applicazione eseguendo delle query di test. Esegui questo comando per testare l'applicazione utilizzando il dollaro statunitense e la corona svedese:

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

La risposta è un dizionario simile al seguente:

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

Passaggi successivi