애플리케이션 개발

Vertex AI에서 LangChain을 사용하여 만들 수 있는 소규모 애플리케이션 중 지정된 날짜에 두 통화 간 환율을 반환하는 애플리케이션이 있습니다. 다음 단계는 이러한 애플리케이션을 만드는 방법을 보여줍니다.

  1. 모델 정의 및 구성
  2. 함수 정의
  3. LangChain 에이전트를 사용하여 모델을 함수에 연결
  4. 애플리케이션 테스트

시작하기 전에

이 튜토리얼을 실행하기 전에 환경 설정 단계에 따라 환경이 설정되었는지 확인합니다.

1단계: 모델 정의 및 구성

다음 단계를 실행하여 모델을 정의하고 구성합니다.

  1. 애플리케이션을 만들려면 사용하려는 모델을 정의해야 합니다. 자세한 내용은 모델 버전 및 수명 주기를 참조하세요. 다음 명령어를 실행하여 Gemini 1.0 Pro Vision 멀티모달 모델을 사용합니다.

    model = "gemini-1.0-pro"
    
  2. (선택사항) 모델의 안전 설정을 구성할 수 있습니다. Gemini에서 안전 설정을 구성하는 데 사용할 수 있는 옵션에 대한 자세한 내용은 안전 속성 구성을 참조하세요.

    다음은 안전 설정을 구성하는 방법의 예시입니다.

    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. (선택사항) 다음 모델 매개변수를 지정할 수 있습니다.

    • 온도
    • 최대 출력 토큰
    • TopP
    • TopK
    • 안전 설정(이전 단계를 먼저 사용하여 안전 설정을 만들어야 함).

    Gemini에서 모델 매개변수 설정에 사용 가능한 옵션에 대해 자세히 알아보려면 모델 매개변수 설정을 참조하세요. 다음은 모델 매개변수를 지정하는 방법의 예시입니다.

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

2단계: Python 함수 정의

모델을 정의한 후 다음 단계는 추론을 위해 모델에 사용되는 도구를 정의하는 것입니다. 도구는 LangChain 도구 또는 Python 함수일 수 있습니다. 또한 정의된 Python 함수를 LangChain 도구로 변환할 수 있습니다. 이 애플리케이션은 함수 정의를 사용합니다.

함수를 정의할 때는 함수 매개변수, 함수 기능 및 함수 반환값을 완전히 명확하게 기술하는 설명을 포함하는 것이 중요합니다. 이 정보는 모델이 사용할 함수를 결정하기 위해 사용됩니다. 또한 함수를 로컬로 테스트하여 작동하는지 확인해야 합니다.

다음 코드를 사용하여 환율을 반환하는 함수를 정의합니다.

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

애플리케이션에 사용하기 전에 함수를 테스트하기 위해 다음을 실행합니다.

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

응답은 다음과 비슷하게 표시됩니다.

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

3단계: LangChain 조정 템플릿 사용

조정 프레임워크는 애플리케이션 구성 매개변수, 애플리케이션 초기화 논리, 런타임 논리를 지정하는 하나 이상의 함수로 애플리케이션 코드를 구성합니다.

자체 Python 클래스를 정의하거나(애플리케이션 템플릿 맞춤설정 참조), Vertex AI SDK for Python에서 에이전트에 대해 LangchainAgent 클래스를 사용할 수 있습니다.

LangchainAgent 클래스를 사용하려면 모델, 정의된 함수, 모델 매개변수를 지정하여 LangchainAgent 객체를 인스턴스화합니다.

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

4단계: 애플리케이션 테스트

이제 애플리케이션을 만들었으므로 이를 테스트할 시간입니다. 테스트 쿼리를 수행하여 애플리케이션을 테스트할 수 있습니다. 다음 명령어를 실행해서 US 달러와 스웨덴 크로나를 사용하여 애플리케이션을 테스트합니다.

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

응답은 다음과 유사한 딕셔너리입니다.

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

다음 단계