코드 실행

Gemini API 코드 실행 기능을 사용하면 모델이 Python 코드를 생성하고 실행하며 최종 출력에 도달할 때까지 결과에서 반복적으로 학습할 수 있습니다. 이 코드 실행 기능을 사용하여 코드 기반 추론의 이점을 활용하고 텍스트 출력을 생성하는 애플리케이션을 빌드할 수 있습니다. 예를 들어 방정식을 풀거나 텍스트를 처리하는 애플리케이션에서 코드 실행을 사용할 수 있습니다.

코드 실행은 AI Studio와 Gemini API 모두에서 사용할 수 있습니다. AI 스튜디오에서 오른쪽 패널의 도구에서 코드 실행을 사용 설정할 수 있습니다. Gemini API는 함수 호출과 마찬가지로 코드 실행을 도구로 제공합니다. 코드 실행을 도구로 추가하면 모델에서 이를 사용할 시점을 결정합니다.

코드 실행 환경에는 다음 라이브러리가 포함됩니다. altair, chess, cv2, matplotlib, mpmath, numpy, pandas, pdfminer, reportlab, seaborn, sklearn, statsmodels, striprtf, sympy, tabulate 자체 라이브러리를 설치할 수 없습니다.

코드 실행 시작하기

코드 실행 노트북도 사용할 수 있습니다.

이 섹션에서는 빠른 시작에 표시된 설정 및 구성 단계를 완료했다고 가정합니다.

모델에서 코드 실행 사용 설정

다음과 같이 모델에서 코드 실행을 사용 설정할 수 있습니다.

from google import genai
from google.genai import types

client = genai.Client(api_key="GEMINI_API_KEY")

response = client.models.generate_content(
  model='gemini-2.0-flash',
  contents='What is the sum of the first 50 prime numbers? '
           'Generate and run code for the calculation, and make sure you get all 50.',
  config=types.GenerateContentConfig(
    tools=[types.Tool(
      code_execution=types.ToolCodeExecution
    )]
  )
)

노트북에서는 이 도우미 함수를 사용하여 모든 항목을 마크다운 형식으로 표시할 수 있습니다.

def display_code_execution_result(response):
  for part in response.candidates[0].content.parts:
    if part.text is not None:
      display(Markdown(part.text))
    if part.executable_code is not None:
      code_html = f'<pre style="background-color: #BBBBEE;">{part.executable_code.code}</pre>' # Change code color
      display(HTML(code_html))
    if part.code_execution_result is not None:
      display(Markdown(part.code_execution_result.output))
    if part.inline_data is not None:
      display(Image(data=part.inline_data.data, format="png"))
    display(Markdown("---"))

display_code_execution_result(response)

출력은 다음과 같이 표시될 수 있습니다.

첫 50개의 소수의 합계를 계산해야 합니다. Python 스크립트를 사용하여 처음 50개의 소수를 생성한 다음 합산하겠습니다.

```python
def is_prime(n):
  """Checks if a number is prime."""
  if n <= 1:
    return False
  for i in range(2, int(n**0.5) + 1):
    if n % i == 0:
      return False
  return True

def sum_of_primes(n):
  """Calculates the sum of the first n prime numbers."""
  primes = []
  i = 2
  while len(primes) < n:
    if is_prime(i):
      primes.append(i)
    i += 1
  return sum(primes)

# Calculate the sum of the first 50 prime numbers
sum_of_first_50_primes = sum_of_primes(50)

print(f"The sum of the first 50 prime numbers is: {sum_of_first_50_primes}")
```

**Output:**

```
The sum of the first 50 prime numbers is: 5117
```

Chat에서 코드 실행 사용하기

코드 실행을 채팅의 일부로 사용할 수도 있습니다.

from google import genai
from google.genai import types

client = genai.Client(api_key="GEMINI_API_KEY")

chat = client.chats.create(
    model='gemini-2.0-flash',
    config=types.GenerateContentConfig(
      tools=[types.Tool(
        code_execution=types.ToolCodeExecution
      )]
    )
)

response = chat.send_message("Can you run some code to bogo-sort this list of numbers?: [2,34,1,65,4]")
display_code_execution_result(response)

대화는 다음과 같이 이어질 수 있습니다.

[2, 34, 1, 65, 4] 목록을 bogo 정렬하고 싶다고 하셨습니다. bogosort는 악명 높은 비효율적인 정렬 알고리즘입니다. 목록이 정렬될 때까지 반복적으로 셔플하여 작동합니다. 성능이 매우 낮기 때문에 상당한 크기의 목록에는 적합하지 않습니다.

하지만 시연을 위해 프로세스를 보여주기 위해 매우 제한된 수의 반복에 대해 단순화된 버전을 실행할 수 있습니다. 삭제할까요?

response = chat.send_message("Yes, please create the code.")
display_code_execution_result(response)

좋습니다. 목록을 섞고 정렬되었는지 확인하는 함수를 진행하겠습니다. 최대 10회 반복 실행하겠습니다. ...

입력/출력 (I/O)

Gemini 2.0 Flash부터 코드 실행이 파일 입력과 그래프 출력을 지원합니다. 이러한 새로운 입력 및 출력 기능을 사용하면 CSV 및 텍스트 파일을 업로드하고, 파일에 관해 질문하고, 응답의 일부로 Matplotlib 그래프를 생성할 수 있습니다.

I/O 가격

코드 실행 I/O를 사용하면 입력 토큰과 출력 토큰에 대한 요금이 청구됩니다.

입력 토큰:

  • 사용자 프롬프트

출력 토큰:

  • 모델에서 생성된 코드
  • 코드 환경의 코드 실행 출력
  • 모델에서 생성한 요약

I/O 세부정보

코드 실행 I/O를 사용할 때는 다음과 같은 기술적 세부정보에 유의하세요.

  • 코드 환경의 최대 런타임은 30초입니다.
  • 코드 환경에서 오류가 발생하면 모델에서 코드 출력을 다시 생성할 수 있습니다. 최대 5회까지 이 작업을 실행할 수 있습니다.
  • 최대 파일 입력 크기는 모델 토큰 창에 의해 제한됩니다. Gemini Flash 2.0을 사용하는 AI 스튜디오에서 최대 입력 파일 크기는 100만 토큰 (지원되는 입력 유형의 텍스트 파일의 경우 약 2MB)입니다. 파일의 크기가 너무 큰 경우 AI 스튜디오에서 전송할 수 없습니다.
싱글턴 양방향 (Multimodal Live API)
지원되는 모델 모든 Gemini 2.0 모델 플래시 실험용 모델만
지원되는 파일 입력 유형 .png, .jpeg, .csv, .xml, .cpp, .java, .py, .js, .ts .png, .jpeg, .csv, .xml, .cpp, .java, .py, .js, .ts
지원되는 표시 라이브러리 Matplotlib Matplotlib
다중 도구 사용 아니요

결제

Gemini API에서 코드 실행을 사용 설정하는 데는 추가 비용이 들지 않습니다. 사용 중인 Gemini 모델에 따라 입력 및 출력 토큰의 현재 요율로 요금이 청구됩니다.

다음은 코드 실행에 대한 결제에 대해 알아야 할 몇 가지 사항입니다.

  • 모델에 전달하는 입력 토큰에 대해서만 한 번 청구되며 모델에서 반환하는 최종 출력 토큰에 대해서만 청구됩니다.
  • 생성된 코드를 나타내는 토큰은 출력 토큰으로 집계됩니다. 생성된 코드에는 텍스트와 이미지와 같은 멀티모달 출력이 포함될 수 있습니다.
  • 코드 실행 결과도 출력 토큰으로 집계됩니다.

결제 모델은 다음 다이어그램에 나와 있습니다.

코드 실행 결제 모델

  • 사용 중인 Gemini 모델에 따라 입력 및 출력 토큰의 현재 요율로 요금이 청구됩니다.
  • Gemini가 응답을 생성할 때 코드 실행을 사용하는 경우 원래 프롬프트, 생성된 코드, 실행된 코드의 결과에 중간 토큰 라벨이 지정되고 입력 토큰으로 청구됩니다.
  • 그런 다음 Gemini는 요약을 생성하고 생성된 코드, 실행된 코드의 결과, 최종 요약을 반환합니다. 출력 토큰으로 청구됩니다.
  • Gemini API는 API 응답에 중간 토큰 수를 포함하므로 초기 프롬프트 외에도 입력 토큰이 추가로 제공되는 이유를 알 수 있습니다.

제한사항

  • 모델은 코드를 생성하고 실행할 수만 있습니다. 미디어 파일과 같은 다른 아티팩트는 반환할 수 없습니다.
  • 경우에 따라 코드 실행을 사용 설정하면 모델 출력의 다른 영역 (예: 스토리 작성)에서 회귀가 발생할 수 있습니다.
  • 코드 실행을 성공적으로 사용하는 모델의 기능은 서로 다릅니다.