api 활용하기

마계닭·2026년 1월 2일

chatbot

목록 보기
1/3
post-thumbnail

2026/01/02 시점이다. 혹시나 너무 옛날글은 아닌지 확인해보자

Intro

군대 이후에 노트북을 바꿀 생각이었던 필자는 사무용 가성비 노트북을 구매했고, 사실상 ai를 로컬로 돌릴 순 없기에 api를 활용해야한다.
평소에 사용하던게 gpt이고, 제미나이를 대학생 무료로 받았기에 익숙한 둘 중 한쪽 api를 사용하기로 했고 둘의 차이를 좀 찾아봤다.

Gemini api vs GPT api

gemini api

  • 일단 무료로 사용이 가능하다.
  • 토큰이 압도적으로 크다.(2M. 대략 150만 단어라고 한다)
  • 멀티모달에 더 특화되었다.(영상 등)
  • 응답속도가 빠르다.(flash 기준)
  • 구글의 기능들과 연동하여 사용할 수 있다.

gpt api

  • 대화형에 있어서 gemini보다 더 자연스럽다.(할루시제이션 등)
  • 정밀한 논리 추론, 코딩 등의 분야에서 강점이 있다.
  • 128K(대략 10만단어)정도의 토큰이다.
  • 대화의 흐름을 유지할 수 있는 기능이 있다.(GPT Assistant API)

최종적으로 챗봇으로 사용할 입장이기에 gpt api가 더 좋으나, 일단 테스트 용으로 무료인 gemini api를 먼저 이용해보기로 했다.

main

gemini api를 간단하게 사용해보도록 하자

Key 발급

인터넷에 많이 알려져있기도 하니 간단하게 넘어간다
1. Google AI Studio로 들어간다
2. 로그인 및 'API 키 만들기'를 통해 API키를 발급받는다.
3. 이때 구글 클라우드에서 프로젝트를 선택해도 되고 그냥 새로 만들어도 된다

Key의 발급은 쉽지만, 유의해야할 점은 API키가 공유되면 안된다는 것이다. 이를 위해서 환경변수로 지정해 코드에 API키를 하드코딩 안해도 되도록 만들어두자.

환경변수 지정(윈도우)

Gemini API키 사용을 참조하면 된다. 필자는 윈도우기에 윈도우에 맞게 설명한다.
1. 윈도우 검색창에 "시스템 환경 변수 편집"(환경 변수만 입력해도 나온다)
2. 고급 -> 환경변수
3. 사용자 변수 or 시스템 변수에 새로만들기
4. 변수 이름은 GEMINI_API_KEY로 하고 값에 아까 생성한 API키를 넣어주도록 하자.
5. 확인버튼을 까먹지않고 누르고 나오면 생성된다.
이제 코드에 API키를 넣지 않아도 해당 컴퓨터 내에선 알아서 인식한다.

이 방법 외에도 'os'와 'python-dotenv'를 사용해 '.env'를 이용할 수도 있다. 필요하면 하는걸로(나중에 이 방법으로 바꿀 것 같긴하다)

Gemini 사용하기

Gemini API quick start를 따라가보자
필자는 visual studio code로 python을 활용해 진행한다.

  1. 보기 -> 터미널(Ctrl + `)

  2. 터미널에

    pip install -q -U google-genai

  3. 코드 입력

    from google import genai
    client = genai.Client()

    만약 API를 하드코딩한다면

    client = genai.Client(api_key = "키값")

    으로 넣어주면 된다.

  4. 대답 받아오기

    response = client.models.generate_content(
    model="모델명", contents="질문"
    )
    print(response.text)

Gemini 모델

여기서 가능한 모델부터 알아보자(2026/01/02 기준)
모델은 1년이 지나면 중단되는 것 같다.
Gemini 지원 중단을 참고하자
사용 가능한 모델은 앞선 google AI Studio에서 사용량 및 결제 -> 비율 제한 -> 모든 모델을 눌러보면 대략 볼 수 있다.

여기서 토큰 제한을 보면(gemini-2.5-flash 기준)
RPM: 1분에 질문 가능한 횟수(5 -> 12초에 1회 질문 가능)
TPM: 1분에 질문 가능한 글자의 총량
RPD: 하루에 질문 가능한 횟수(20)
뭔가 gpt나 gemini나 물어보면 다 1.5-flash를 쓰라고 하는데 최근에 바뀐건지 1.5-flash는 커녕 2.0-flash조차 무료계정은 지원이 안된다.(뭔가 설정을 잘못한건가?)
2.5-flash는 RPM, RPD 전부 작아서 처음 설정할때만 2.5-flash와 lite를 쓰다가 대화량이 많아지면 gemma-3로 변경하거나 GPT 유료버전으로 넘어갈 것 같다.

Response_config

Response setting을 조금 더 살펴보자.

from google.genai import types
...
config=types.GenerateContentConfig()

를 통해서 여러가지 옵션을 줄 수 있다.

  1. 사고모드 끄기(gemma는 사용 안됨)

    thinking_config=types.ThinkingConfig(thinking_budget=0)

    gemini 2.5버전부턴 기본적으로 사고모드가 켜져있다. 위와 같은 설정을 통해서 사고모드를 끌 수 있다.

  2. 시스템 지시(gemma는 사용 안됨)

    system_instruction="지시문"

    성격 설정이라든가 사전정보같은걸 미리 넣어줄 수 있다.

  3. 창의성

    temperature = 0.0~2.0

    0의 경우 항상 같은 답이 나오는 걸 확인할 수 있다.(gemma 기본값)
    0.7~0.9정도를 추천하고 그보다 더 넘어가면 이상한 답을 할 가능성이 높다.

  4. 답변 길이 제한

    max_output_tokens = 자연수

    대답을 몇 글자 이내로 끝낼지를 결정한다. 단, 이때 글자 수가 아닌 토큰 수이기에 너무 작게 잡는 실수는 하지말자

  5. 종료 문구

    stop_sequences = [list형식]

    유저가 특정 대답을 할 경우 종료한다.

    이외에도 top_p나 top_k등도 있지만 기본 값을 쓰도록 하자.
    대략 짜보면(gemini-2.5-flash 기준)

    config = types.GenerateContentConfig(
    thinking_config=types.ThinkingConfig(thinking_budget=0),
    system_instruction="You're Korean.",
    temperature=0.9,
    max_output_tokens=200,
    stop_sequences=["User:", "사용자:", "\n\n"],
    ),

    지금까지 내용들로 한개 만들어보면

    from google import genai
    from google.genai import types
    client = genai.Client()
    response = client.models.generate_content(
     model="gemini-2.5-flash",
     contents="와 이제 퇴근이야!",
     config=types.GenerateContentConfig(
      thinking_config=types.ThinkingConfig(thinking_budget=0),
      system_instruction="한국어로 대답해줘. 신난듯한 말투로",
      temperature=0.9,
      max_output_tokens=400,
      stop_sequences=["User:", "사용자:", "\n\n"],
     ),
    )
    print(response.text)


퇴근!
그전에 contents나 config쪽은 별도로 변수로 만들어서 설정해두는편이 더 깔끔하다. 저렇게 코딩하다보면 나중에 욕나올수있음을 유의하자.

from google import genai
from google.genai import types
client = genai.Client()
user_content = "와 이제 퇴근이야!"
instruction = "한국어로 대답해줘. 신난듯한 말투로"
setting_config = types.GenerateContentConfig(
 thinking_config=types.ThinkingConfig(thinking_budget=0),
 system_instruction=instruction,
 temperature=0.9,
 max_output_tokens=400,
 stop_sequences=["User:", "사용자:", "\n\n"],
)
response = client.models.generate_content(
 model="gemini-2.5-flash",
 contents=user_content,
 config=setting_config,
)
print(response.text)

진짜 퇴근!
다음 포스팅은 단기기억 형성에 도전해볼까 싶다.

profile
뉴비

0개의 댓글