본문 바로가기
AI 언어 모델

제미나이 API로 실시간 주식정보 가져오기 : 초보 탈출?

by James AI Explorer 2023. 12. 23.
    728x90

    안녕하세요. 오늘은 구글 제미나이 API와 함수 호출기능을 활용해서 실시간 주식정보를 가져오는 프로젝트에 도전해 보겠습니다. 제미나이는 실시간 주식정보를 대답할 수 있는 기능이 없지만, yfinance와 같은 라이브러리를 사용하여 주식 가격을 얻은 후, 이 정보를 제미나이에 전달하여 모델이 해당 정보를 사용해 응답을 생성하도록 할 수 있습니다. 이 블로그에서는 제미나이 API와와 Google Cloud의 머신러닝 서비스 플랫폼 Vertex AI를 활용한 실시간 주식정보 함수 호출 및 응답처리 방법에 대해 확인하실 수 있습니다. 자, 그럼 같이 시작해 보실까요?

    제미나이 API로 실시간 주식정보 가져오기

    "이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."

    제미나이에게 실시간 주식정보 물어보기

    구글의 대규모 언어 모델 제미나이의 지식 업데이트는 2023년 4월까지입니다. 따라서 제미나이는 실시간 주식정보를 대답할 수 없습니다. 이를 확인하기 위해 API를 활용하여 제미나이에게 애플의 현재 주가를 물어보니, 다음과 같이 대답하였습니다.

    "저는 AI로써 인터넷이나 최신 주가를 포함한 현재 정보에 실시간으로 접근할 수 없습니다. 따라서 애플의 현재 주가를 알려줄 수 없습니다. 가장 정확하고 최신의 정보를 얻으려면 금융 뉴스 웹사이트를 확인하거나 주식 시장 앱을 사용하는 것을 추천합니다."

    애플의 현재 주가 질문에 대한 제미나이의 답변

    제미나이 Pro가 적용된 구글 바드 또한 아래 화면과 같이 실시간 주식 가격을 제공하는 기능은 없다고 답변하였습니다. 가끔 주식 가격을 대답하지만 이것은 환각현상으로 대부분 맞지 않는 아무 숫자나 대답합니다.

    애플의 현재 주가 질문에 대한 바드의 답변

    제미나이 API를 활용하여 애플의 현재 주가를 물어보는 파이썬 코드를 아래에 표시하였습니다. 코드를 실행하기 위해서는 먼저 아나콘다 파워쉘 프롬프트에서 "conda create -n name"명령을 이용해서 가상환경을 만들고 활성화한 상태에서 "pip install google-generativeai" 명령으로 google.generativeai 라이브러리를 설치하여야 하며, Google AI Studio에 가입한 후, API key를 발급받아야 합니다. Google AI Studio 가입과 API key 발급은 아래 링크에 이전 블로그를 참고하시면 됩니다. 

    2023.12.18 - [대규모 언어모델] - 초보도 할 수 있는 구글 제미나이로 AI 레시피 생성 웹페이지 만들기

     

    초보도 할 수 있는 구글 제미나이로 AI 레시피 생성 웹페이지 만들기

    안녕하세요. 오늘은 최근 공개된 제미나이 프로 비전의 API를 활용해서 레시피를 생성하는 웹페이지를 만드는데 도전해 보겠습니다. 이 블로그에서는 구글 AI 스튜디오에서 파이썬 코드를 가져

    fornewchallenge.tistory.com

    """
    At the command line, only need to run once to install the package via pip:
    $ pip install google-generativeai
    """
    import google.generativeai as genai
    
    
    genai.configure(api_key="Your API key")
    
    # Set up the model
    generation_config = {
      "temperature": 0.9,
      "top_p": 1,
      "top_k": 1,
      "max_output_tokens": 2048,
    }
    
    safety_settings = [
      {
        "category": "HARM_CATEGORY_HARASSMENT",
        "threshold": "BLOCK_MEDIUM_AND_ABOVE"
      },
      {
        "category": "HARM_CATEGORY_HATE_SPEECH",
        "threshold": "BLOCK_MEDIUM_AND_ABOVE"
      },
      {
        "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT",
        "threshold": "BLOCK_MEDIUM_AND_ABOVE"
      },
      {
        "category": "HARM_CATEGORY_DANGEROUS_CONTENT",
        "threshold": "BLOCK_MEDIUM_AND_ABOVE"
      }
    ]
    
    
    model = genai.GenerativeModel(model_name="gemini-pro",
                                  generation_config=generation_config,
                                  safety_settings=safety_settings)
    
    prompt_parts = [
      "What is the stock price of Apple?",
    ]
    
    response = model.generate_content(prompt_parts)
    print(response.text)

    "이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."

    Vertex AI와 Google SDK 설치하기

    다음은 제미나이 API를 사용하여 함수 호출 및 응답 처리를 구현하기 위해 필요한 Vertex AI와 Google SDK(Software Development Kit, 소프트웨어 개발 도구)를 설치하는 단계입니다. Vertex AI는 Google Cloud의 머신러닝 서비스 플랫폼이며, google.generativeai는 Google에서 개발한 generative AI 모델인 Gemini을 사용하기 위한 Python SDK입니다. Vertex AI는 다양한 머신러닝 서비스를 제공하며, google.generativeai는 특정 AI 모델을 활용하기 위한 도구 중 하나입니다.

     

    깃 허브의 설명 페이지 내용과 구글의 개발 가이드 페이지 내용을 참고해 Python 패키지 관리자인 pip를 사용하여 "vertexai" 패키지와 "google-cloud-aiplatform", "google.generativeai" 패키지를 설치합니다. 설치하기 전에 "conda create -n 가상환경 이름"명령을 이용해서 가상환경을 만들고 활성화해야 합니다. Google Cloud AI Platform은 Google Cloud의 머신러닝 서비스 플랫폼으로, 기계 학습 모델을 빌드, 배포, 관리할 수 있는 기능을 제공합니다.

    구글 제미나이 API를 활용한 함수 호출 기능 설명페이지
    파이썬용 Vertex AI SDK 가이드

    아래 화면은 "vertexai" 패키지와 "google-cloud-aiplatform" 패키지를 설치하는 화면입니다.

    "vertexai" 패키지와 "google-cloud-aiplatform" 패키지 설치

    ChatGPT로 파이썬 코드 작성하기

    다음은 함수호출 및 응답기능 구현을 위해서 ChatGPT로 파이썬 코드를 작성하는 단계입니다. 먼저 ChatGPT에게 깃 허브의 설명 페이지 내용을 입력해서 Vertex AI 함수호출 및 응답기능 구현 가이드를 학습시킵니다.

    Vertex AI 함수호출 및 응답기능 구현 가이드 학습시키기

    다음은 ChatGPT에게 "내가 입력한 Vertex AI Gemini API & Python SDK 가이드를 이용해서 애플의 현재 주식 정보를 가져오는 함수를 호출하고, Gemina Pro 모델을 통해 응답하는 파이썬 코드를 작성해 줘"라고 요청합니다. 코드가 작성되면 실행해 보고 에러가 발생하면 다시 수정을 요청하면 됩니다.

    Vertex AI Gemini API & Python SDK 가이드를 이용해서 주식 정보 가져오기 프로그램 수정과정

    다음은 완성된 코드입니다. 코드를 사용할 때는 "구글 클라우드 프로젝트 ID"와 "adc.json" 파일의 경로를 본인의 것으로 수정하여야 합니다. "pip install yfinance" 명령으로 yfinance 라이브러리를 설치하여야 합니다. yfinance 라이브러리는 Yahoo Finance에서 제공하는 API이며, 이 라이브러리는 간단하게 사용할 수 있는 인터페이스를 제공하여 사용자가 특정 주식에 대한 다양한 정보를 쉽게 얻을 수 있도록 도와줍니다.

    import yfinance as yf
    import google.generativeai as genai
    import os
    import vertexai
    
    vertexai.init(project="구글 클라우드 프로젝트 ID")
    
    from vertexai.preview.generative_models import (
        FunctionDeclaration,
        GenerativeModel,
        Part,
        Tool,
    )
    
    os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = r"C:\Users\....본인 컴퓨터 경로....@gmail.com\adc.json"
    
    # Set up the model
    generation_config = {
        "temperature": 0.9,
        "top_p": 1,
        "top_k": 1,
        "max_output_tokens": 2048,
    }
    
    genai.configure(api_key="발급받은 API key")
    
    # Function to Get Stock Price
    def get_stock_price(parameters):
        ticker = parameters["ticker"]
        stock = yf.Ticker(ticker)
        hist = stock.history(period="1d")
        if not hist.empty:
            return {"price": hist["Close"].iloc[-1]}
        else:
            return {"error": "No data available"}
    
    # Tools (corrected)
    tools = Tool(function_declarations=[
        FunctionDeclaration(
            name="get_stock_price",
            description="Get the current stock price of a given company",
            parameters={
                "type": "object",
                "properties": {
                    "ticker": {
                        "type": "string",
                        "description": "Stock ticker symbol"
                    }
                }
            }
        )
    ])
    
    # 1. Model Initialization
    model = GenerativeModel(
        "gemini-pro",
        generation_config=generation_config,
        tools=[tools],
    )
    
    # 2. Start a chat session
    function_calling_chat = model.start_chat()
    
    # 3. Send a prompt to the chat
    prompt = "What is the stock price of Apple?"
    response = function_calling_chat.send_message(prompt, tools=[tools])  # Tools included here
    
    # 4. Check for function call and dispatch accordingly
    function_call = response.candidates[0].content.parts[0].function_call
    if function_call:
        # Call the appropriate function and provide its response to the model
        function_response = Part.from_function_response(
            name=function_call.name,
            response=get_stock_price(function_call.args),
        )
        response = function_calling_chat.send_message(function_response)  # Send function response to chat
    
    # 5. Extract and use the Gemini Pro model's response
    gemini_response_text = response.candidates[0].content.parts[0].text
    print(gemini_response_text)  # You can use gemini_response_text as needed

    "이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."

    구글 클라우드 프로젝트 ID와 adc.json을 확인하는 방법은 아래 화면을 클릭해서 참조하시면 됩니다. 간략히 말하면 Google Cloud CLI 설치하고, 사용할 Google Cloud 프로젝트를 지정한 후, 사용자 인증정보 JSON파일의 경로를 확인하는 과정입니다. 또한 Vertex AI API를 "사용설정"하여야 합니다. 

    구글 클라우드 프로젝트 ID와 adc.json을 확인하는 방법

     

    Google Cloud CLI 설치
    Google Cloud CLI 설치
    구글 클라우드 프로젝트 ID 확인 화면
    gclooud CLI를 사용한 인증정보 JSON파일 위치정보 확인
    Vertex AI API 설정화면

    728x90

    코드 실행 및 응답 확인

    구글 클라우드 프로젝트 ID와 adc.json파일의 경로를 입력하여 완성된 코드를 실행하면 주식 가격을 가져오는 함수를 호출하여 주식 가격을 얻은 후, 이 정보를 Gemini Pro 모델에 전달하여 모델이 해당 정보를 사용해 응답을 생성하게 됩니다.

    코드 실행결과

    이 코드는 다음과 같은 주요 단계로 구성되어 있습니다.

    • 모델 및 환경 설정: Vertex AI의 GenerativeModel을 사용하여 "gemini-pro" 모델을 초기화하고, 생성 구성 및 도구를 설정합니다.
    • Chat 세션 시작: 모델로부터 chat 세션을 시작하고, 해당 세션을 function_calling_chat에 할당합니다.
    • Prompt 전송 및 응답 수신: "What is the stock price of Apple?"이라는 프롬프트를 모델에 전송하고, 모델의 응답을 response 변수에 저장합니다.
    • 함수 호출 확인 및 처리: 모델의 응답에서 함수 호출이 있는지 확인하고, 함수가 호출되었다면 해당 함수를 실행하여 응답을 생성합니다. 이 경우에는 주식 가격을 가져오는 함수인 get_stock_price가 호출됩니다.
    • Gemini Pro 모델 응답 추출: 모델이 생성한 응답에서 Gemini Pro 모델의 텍스트 응답을 추출하여 gemini_response_text 변수에 저장합니다.
    • 결과 출력: 최종적으로, Gemini Pro 모델의 응답인 gemini_response_text를 출력합니다.

    다음은 함수 호출기능 적용 전/후 Gemini-pro의  답변을 비교한 내용입니다.

    Functioncall 적용 전 Gemini-pro의  답변
    Functioncall 적용 후 Gemini-pro의  답변

     

    https://fornewchallenge.tistory.com/

    "이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."

    마치며

    오늘의 프로젝트에서는 구글 제미나이 API와 Vertex AI를 활용하여 실시간 주식 정보를 가져오는 함수를 호출하고, Gemina Pro 모델을 통해 응답하는 기능을 구현하는 과정을 살펴보았습니다. 저는 개인적으로 구글 클라우드 프로젝트 ID와 adc.json을 확인하는 방법이 제일 어려웠는데요 다행히 구글 검색, 바드와 ChatGPT 등을 활용하여 해결할 수 있었습니다. 

     

    데이터 수집, 모델 호출, 응답 처리 등 다양한 단계를 거쳐 구현한 코드와 구글 클라우드 서비스와 API 활용에 대한 경험이 여러분의 프로젝트에도 도움이 되기를 기대하면서 저는 다음에 더 유익한 정보로 다시 찾아뵙겠습니다. 감사합니다. 

     

    2023.12.18 - [대규모 언어모델] - 초보도 할 수 있는 구글 제미나이로 AI 레시피 생성 웹페이지 만들기

     

    초보도 할 수 있는 구글 제미나이로 AI 레시피 생성 웹페이지 만들기

    안녕하세요. 오늘은 최근 공개된 제미나이 프로 비전의 API를 활용해서 레시피를 생성하는 웹페이지를 만드는데 도전해 보겠습니다. 이 블로그에서는 구글 AI 스튜디오에서 파이썬 코드를 가져

    fornewchallenge.tistory.com

     

    728x90