@senspond

>

개발>백엔드

제미나이(Gemini) API 를 사용하는 두가지 방법 GCP Vertext AI, Google AI Studio

등록일시 : 2024-06-24 (월) 10:29
업데이트 : 2024-06-24 (월) 10:37
오늘 조회수 : 32
총 조회수 : 2207

    제미나이(Gemini) API 를 사용하는 두가지 방법에 대해서 정리해봤습니다. 바로 GCP Vertext AI 와 Google AI Studio 를 사용하는 방법입니다.



    GCP(Google Cloud Platform)가입 방법은 여기서 다루지 않겠습니다.

    구글 클라우드 플랫폼에 가입하면 무료 크레딧 $300 달러를 주고 모든 크레딧 소진할 때까지는 무료로 사용할 수 있습니다.


    GCP Vertext AI API로 Gemini 호출하기

    GCP Vertext AI API는 제미나이 등 구글에서 만든 AI 모델을 호출 할 수 있는 구글 클라우드 플랫폼의 통합 API입니다.







    구글 클라우드 플랫폼에 로그인을 한다음에 Vertext AI API를 활성화 해줍니다.

    서비스 계정에 Vertext AI 접근 권한을 부여합니다.




    Install Vertex AI SDK for Python

    pip install --upgrade --quiet google-cloud-aiplatform


    Python 소스코드

    from IPython.display import display, Markdown
    import vertexai
    from vertexai.preview.generative_models import GenerativeModel, Part
    import vertexai.preview.generative_models as generative_models
    
    from time import perf_counter


    def time_printer(func):
        def wrapper(*args, **kwargs):
            try:
                start_time = perf_counter()           # [before]
                result = func(*args, **kwargs)        # 로직 수행
                end_time = perf_counter()             # [after]
    
                print(f"'{func.__name__}' executed in {end_time - start_time:.4f} seconds") # 수행시간 출력
                return result                                                               # 반환
            except Exception as e:
                print(f"Error: {e}")
        return wrapper
    
    @time_printer
    def generate(query:str):
        responses = model.generate_content(
            [query],
            generation_config=generation_config,
            safety_settings=safety_settings,
            stream=False,
        )
        return responses.text


    MODEL_NAME="gemini-1.5-flash" # 모델명 ex) gemini-1.5-pro, ...
    PROJECT_ID="rgbit-ai" # 여기에 프로젝트 id 를 넣어주세요
    REGION="asia-northeast3"
    
    generation_config = {
        "max_output_tokens": 8192,
        "temperature": 1,
        "top_p": 0.95,
    }
    safety_settings = {
        generative_models.HarmCategory.HARM_CATEGORY_HATE_SPEECH: generative_models.HarmBlockThreshold.BLOCK_MEDIUM_AND_ABOVE,
        generative_models.HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT: generative_models.HarmBlockThreshold.BLOCK_MEDIUM_AND_ABOVE,
        generative_models.HarmCategory.HARM_CATEGORY_SEXUALLY_EXPLICIT: generative_models.HarmBlockThreshold.BLOCK_MEDIUM_AND_ABOVE,
        generative_models.HarmCategory.HARM_CATEGORY_HARASSMENT: generative_models.HarmBlockThreshold.BLOCK_MEDIUM_AND_ABOVE,
    }
    
    vertexai.init(project=PROJECT_ID, location=REGION)
    
    model = GenerativeModel(MODEL_NAME)


    현재 한국에서 사용가능한 리전은 asia-northeast3 뿐인 것으로 알고 있습니다.

    그리고 safety_settings 등 다양한 부가 옵션들이 있습니다.




    Google AI Studio

    구글 AI Studio 는 Vertex AI Studio의 프리뷰 같은 버전으로 일반 사용자들이 보다 쉽게 사용할 수 있도록 만들어놓은 것입니다.

    https://aistudio.google.com/


    GCP Vertext AI는 엔터프라이즈 용으로 기업용 프로덕트에 사용할 때 다양한 옵션들을 제공하기 때문에 보다 적합합니다. 하지만 클라우드 서버를 다루는 백엔드 개발자가 아니면 GCP 인증부터 시작해서 약간의 진입장벽이 있습니다.

    그래서 개인이 좀더 간단하게 사용할 때는 Google AI Studio 서비스를 이용하는 방법이 있습니다. Google AI Studio를 이용하면 무료 토큰 한도내에서 무료로 사용가능합니다.


    api key 발급받기



    api test

    curl \
      -H 'Content-Type: application/json' \
      -d '{"contents":[{"parts":[{"text":"Explain how AI works"}]}]}' \
      -X POST 'https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash-latest:generateContent?key=YOUR_API_KEY'



    Python 소스코드

    import requests
    import json
    
    def gemini(prompt:str):
        key = '당신의 키를 넣으세요'
        url = f'https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash-latest:generateContent?key={key}'
    
        data = {"contents":[{"parts":[{"text":prompt}]}]}
        headers = {'Content-Type': 'application/json; charset=utf-8'}
        res = requests.post(url, headers=headers, data=json.dumps(data))
        print(res.status_code)
        return json.loads(res.content)
    


    ChatGPT OpenAI API는 호출 한번 할때마다 과금되고 있기에 개인용으로 사용할 때 이 Gemini Api 와 결합해서 쓰면 좋을 것 같습니다.





    senspond

    안녕하세요. Red, Green, Blue 가 만나 새로운 세상을 만들어 나가겠다는 이상을 가진 개발자의 개인공간입니다.

    댓글 ( 0 )

    카테고리내 관련 게시글

    현재글에서 작성자가 발행한 같은 카테고리내 이전, 다음 글들을 보여줍니다

    @senspond

    >

    개발>백엔드

    • Java 프로그램으로 Slack에 각 채널 별로 메시지 전송하기

      Slack은 팀 협업 및 커뮤니케이션을 위한 클라우드 기반의 메시징 플랫폼입니다. Java프로그램으로 Slack 메시지 전송 프로그램을 만들어본 것을 정리 해봅니다.
        2024-06-22 (토) 02:07
      1. Java Spring WebFlux 로 ChatGPT OpenAI Streaming API 만들기 / 자바스크립트에서 스트리밍 요청처리

        Java Spring WebFlux 로 ChatGPT OpenAI Streaming API 만들고 자바스크립트에서 스트리밍 요청처리를 하는 방법을 정리해봅니다.
          2024-06-23 (일) 01:35
        1. [현재글]  제미나이(Gemini) API 를 사용하는 두가지 방법 GCP Vertext AI, Google AI Studio

          제미나이(Gemini) API 를 사용하는 두가지 방법에 대해서 정리해봤습니다. 바로 GCP Vertext AI 와 Google AI Studio 를 사용하는 방법입니다.
            2024-06-24 (월) 10:29
          1. Google Search API 를 사용하기

            이번 글에서는 Google Search API를 사용하는 방법을 정리해봅니다.
              2024-06-25 (화) 08:29
            1. 구글 클라우드 플랫폼(GCP) 서비스 계정 키생성 실패시 정책수정하여 해결하기

              구글 클라우드 플랫폼(GCP) 서비스 계정 키생성 실패시 정책수정하여 해결하는 방법에 대해 정리해 본 글입니다.
                2024-09-13 (금) 05:21