Sviluppa un'applicazione

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

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

Prima di iniziare

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

Passaggio 1: Definisci e configura il modello

Per definire e configurare il modello, segui questi passaggi:

  1. Per creare la tua applicazione, devi definire il modello a cui per gli utilizzi odierni. Per saperne di più, consulta Versioni e ciclo di vita dei modelli. 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 Configura gli attributi di sicurezza.

    Di seguito è riportato un esempio di come puoi 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 creare le impostazioni di sicurezza utilizzando la precedente ).

    Per scoprire di più sulle opzioni disponibili per le impostazioni dei parametri del modello in Gemini, vedi Imposta i parametri del modello. Di seguito è riportato un esempio di come puoi 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 utilizzato dal modello per il ragionamento. Uno strumento può essere un strumento LangChain o Python personalizzata. 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 riflettano in modo esaustivo e descrivere chiaramente i parametri della funzione, cosa fa la funzione e cosa restituite da una funzione. Queste informazioni vengono utilizzate dal modello per determinare da utilizzare. Devi anche testare la funzione localmente per confermare che funziona.

Utilizza il seguente codice per definire una funzione che restituisce 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 uno o più che specificano parametri di configurazione dell'applicazione, di inizializzazione e di runtime.

Puoi definire la tua classe Python (vedi Personalizza un modello di applicazione), oppure puoi utilizzare la classe LangchainAgent nell'SDK Vertex AI per Python per un agente.

Per utilizzare la classe LangchainAgent, specifica il modello, la funzione definita e parametri del modello per creare un'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 l'applicazione, è il momento di testarla. Puoi testare dell'applicazione eseguendo query di test sull'applicazione. Esegui questo comando per testare l'applicazione utilizzando dollari statunitensi e corone svedesi:

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