์ฝ”๋“œ ์‹คํ–‰

Gemini API ์ฝ”๋“œ ์‹คํ–‰ ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ๋ชจ๋ธ์€ Python ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑ ๋ฐ ์‹คํ–‰ํ•˜๊ณ  ์ตœ์ข… ์ถœ๋ ฅ์„ ๋„์ถœํ•  ๋•Œ๊นŒ์ง€ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜๋ณต์ ์œผ๋กœ ํ•™์Šตํ•ฉ๋‹ˆ๋‹ค. ์ด ์ฝ”๋“œ ์‹คํ–‰ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋ฉด ์ฝ”๋“œ ๊ธฐ๋ฐ˜ ์ถ”๋ก ์˜ ์ด์ ์„ ํ™œ์šฉํ•˜๋ฉฐ ํ…์ŠคํŠธ ์ถœ๋ ฅ์„ ์ƒ์„ฑํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋นŒ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋ฐฉ์ •์‹์„ ํ’€๊ฑฐ๋‚˜ ํ…์ŠคํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์ฝ”๋“œ ์‹คํ–‰์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Gemini API๋Š” ํ•จ์ˆ˜ ํ˜ธ์ถœ๊ณผ ์œ ์‚ฌํ•˜๊ฒŒ ๋„๊ตฌ๋กœ์„œ ์ฝ”๋“œ ์‹คํ–‰์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ฝ”๋“œ ์‹คํ–‰์„ ๋„๊ตฌ๋กœ ์ถ”๊ฐ€ํ•˜๋ฉด ๋ชจ๋ธ์€ ์ด๋ฅผ ์‚ฌ์šฉํ•  ์‹œ์ ์„ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค.

์ฝ”๋“œ ์‹คํ–‰ ํ™˜๊ฒฝ์—๋Š” ๋‹ค์Œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž์˜ ๊ณ ์œ  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์„ค์น˜ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์ง€์›๋˜๋Š” ๋ชจ๋ธ

๋‹ค์Œ ๋ชจ๋ธ์€ ์ฝ”๋“œ ์‹คํ–‰ ์ง€์›์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์ฝ”๋“œ ์‹คํ–‰ ์‹œ์ž‘ํ•˜๊ธฐ

์ด ์„น์…˜์—์„œ๋Š” Gemini API ๋น ๋ฅธ ์‹œ์ž‘์— ํ‘œ์‹œ๋œ ์„ค์ • ๋ฐ ๊ตฌ์„ฑ ๋‹จ๊ณ„๋ฅผ ์™„๋ฃŒํ–ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋ธ์—์„œ ์ฝ”๋“œ ์‹คํ–‰ ์‚ฌ์šฉ ์„ค์ •

์—ฌ๊ธฐ์— ํ‘œ์‹œ๋œ ๊ฒƒ์ฒ˜๋Ÿผ ๊ธฐ๋ณธ ์ฝ”๋“œ ์‹คํ–‰์„ ์‚ฌ์šฉ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

REST

์š”์ฒญ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— ๋‹ค์Œ์„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

  • GENERATE_RESPONSE_METHOD: ๋ชจ๋ธ์—์„œ ์ƒ์„ฑํ•˜๋ ค๋Š” ์‘๋‹ต ์œ ํ˜•์ž…๋‹ˆ๋‹ค. ๋ชจ๋ธ์˜ ์‘๋‹ต์„ ๋ฐ˜ํ™˜ํ•  ๋ฐฉ๋ฒ•์„ ์ƒ์„ฑํ•˜๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
    • streamGenerateContent: ์ง€์—ฐ ์‹œ๊ฐ„์— ๋Œ€ํ•œ ์ธ์‹์„ ์ค„์ด๊ธฐ ์œ„ํ•ด ์‘๋‹ต์ด ์ƒ์„ฑ๋˜๋Š” ๋™์•ˆ ์ŠคํŠธ๋ฆฌ๋ฐ๋ฉ๋‹ˆ๋‹ค.
    • generateContent: ์‘๋‹ต์€ ์™„์ „ํžˆ ์ƒ์„ฑ๋œ ํ›„์— ๋ฐ˜ํ™˜๋ฉ๋‹ˆ๋‹ค.
  • LOCATION: ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฆฌ์ „์ž…๋‹ˆ๋‹ค. ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์˜ต์…˜์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

    ํด๋ฆญํ•˜์—ฌ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ฆฌ์ „์˜ ์ผ๋ถ€ ๋ชฉ๋ก ํŽผ์น˜๊ธฐ

    • us-central1
    • us-west4
    • northamerica-northeast1
    • us-east4
    • us-west1
    • asia-northeast3
    • asia-southeast1
    • asia-northeast1
  • PROJECT_ID: ํ”„๋กœ์ ํŠธ ID์ž…๋‹ˆ๋‹ค.
  • MODEL_ID: ์‚ฌ์šฉํ•˜๋ ค๋Š” ๋ชจ๋ธ์˜ ๋ชจ๋ธ ID์ž…๋‹ˆ๋‹ค.
  • ROLE: ์ฝ˜ํ…์ธ ์™€ ์—ฐ๊ฒฐ๋œ ๋Œ€ํ™”์˜ ์—ญํ• ์ž…๋‹ˆ๋‹ค. ์‹ฑ๊ธ€ํ„ด ์‚ฌ์šฉ ์‚ฌ๋ก€์—์„œ๋„ ์—ญํ• ์„ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ—ˆ์šฉ๋˜๋Š” ๊ฐ’์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
    • USER: ์ „์†กํ•œ ์ฝ˜ํ…์ธ ๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
    • MODEL: ๋ชจ๋ธ์˜ ์‘๋‹ต์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
  • TEXT
    ํ”„๋กฌํ”„ํŠธ์— ํฌํ•จํ•  ํ…์ŠคํŠธ ์š”์ฒญ ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค.

์š”์ฒญ์„ ๋ณด๋‚ด๋ ค๋ฉด ๋‹ค์Œ ์˜ต์…˜ ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

curl

์š”์ฒญ ๋ณธ๋ฌธ์„ request.json ํŒŒ์ผ์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ํ„ฐ๋ฏธ๋„์—์„œ ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ํ˜„์žฌ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์ด ํŒŒ์ผ์„ ๋งŒ๋“ค๊ฑฐ๋‚˜ ๋ฎ์–ด์”๋‹ˆ๋‹ค.

cat > request.json << 'EOF'
{
  "tools": [{'codeExecution': {}}],
  "contents": {
    "role": "ROLE",
    "parts": { "text": "TEXT" }
  },
}
EOF

๊ทธ๋Ÿฐ ํ›„ ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์—ฌ REST ์š”์ฒญ์„ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:GENERATE_RESPONSE_METHOD"

PowerShell

์š”์ฒญ ๋ณธ๋ฌธ์„ request.json ํŒŒ์ผ์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ํ„ฐ๋ฏธ๋„์—์„œ ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ํ˜„์žฌ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์ด ํŒŒ์ผ์„ ๋งŒ๋“ค๊ฑฐ๋‚˜ ๋ฎ์–ด์”๋‹ˆ๋‹ค.

@'
{
  "tools": [{'codeExecution': {}}],
  "contents": {
    "role": "ROLE",
    "parts": { "text": "TEXT" }
  },
}
'@  | Out-File -FilePath request.json -Encoding utf8

๊ทธ๋Ÿฐ ํ›„ ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์—ฌ REST ์š”์ฒญ์„ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:GENERATE_RESPONSE_METHOD" | Select-Object -Expand Content

๋‹ค์Œ๊ณผ ๋น„์Šทํ•œ JSON ์‘๋‹ต์ด ์ˆ˜์‹ ๋ฉ๋‹ˆ๋‹ค.

Gen AI SDK for Python

์„ค์น˜

pip install --upgrade google-genai
์ž์„ธํ•œ ๋‚ด์šฉ์€ SDK ์ฐธ๊ณ  ๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

Vertex AI์—์„œ ์ƒ์„ฑํ˜• AI SDK๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values
# with appropriate values for your project.
export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT
export GOOGLE_CLOUD_LOCATION=us-central1
export GOOGLE_GENAI_USE_VERTEXAI=True

from google import genai
from google.genai.types import (
    HttpOptions,
    Tool,
    ToolCodeExecution,
    GenerateContentConfig,
)

client = genai.Client(http_options=HttpOptions(api_version="v1"))
model_id = "gemini-2.0-flash-001"

code_execution_tool = Tool(code_execution=ToolCodeExecution())
response = client.models.generate_content(
    model=model_id,
    contents="Calculate 20th fibonacci number. Then find the nearest palindrome to it.",
    config=GenerateContentConfig(
        tools=[code_execution_tool],
        temperature=0,
    ),
)
print("# Code:")
print(response.executable_code)
print("# Outcome:")
print(response.code_execution_result)

# Example response:
# # Code:
# def fibonacci(n):
#     if n <= 0:
#         return 0
#     elif n == 1:
#         return 1
#     else:
#         a, b = 0, 1
#         for _ in range(2, n + 1):
#             a, b = b, a + b
#         return b
#
# fib_20 = fibonacci(20)
# print(f'{fib_20=}')
#
# # Outcome:
# fib_20=6765

์ฑ„ํŒ…์—์„œ ์ฝ”๋“œ ์‹คํ–‰ ์‚ฌ์šฉ

์ฑ„ํŒ…์˜ ์ผ๋ถ€๋กœ ์ฝ”๋“œ ์‹คํ–‰์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

REST

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://us-central1-aiplatform.googleapis.com/v1/projects/test-project/locations/us-central1/publishers/google/models/gemini-2.0-flash-001:generateContent -d \
$'{
    "tools": [{'code_execution': {}}],
    "contents": [
      {
        "role": "user",
        "parts": {
          "text": "Can you print \"Hello world!\"?"
        }
      },
      {
        "role": "model",
        "parts": [
          {
            "text": ""
          },
          {
            "executable_code": {
              "language": "PYTHON",
              "code": "\nprint(\"hello world!\")\n"
            }
          },
          {
            "code_execution_result": {
              "outcome": "OUTCOME_OK",
              "output": "hello world!\n"
            }
          },
          {
            "text": "I have printed \"hello world!\" using the provided python code block. \n"
          }
        ],
      },
      {
        "role": "user",
        "parts": {
          "text": "What is the sum of the first 50 prime numbers? Generate and run code for the calculation, and make sure you get all 50."
        }
      }
    ]
  }'

์ฝ”๋“œ ์‹คํ–‰๊ณผ ํ•จ์ˆ˜ ํ˜ธ์ถœ ๋น„๊ต

์ฝ”๋“œ ์‹คํ–‰๊ณผ ํ•จ์ˆ˜ ํ˜ธ์ถœ์€ ๋น„์Šทํ•œ ํŠน์„ฑ์„ ์ง€๋‹™๋‹ˆ๋‹ค.

  • ์ฝ”๋“œ ์‹คํ–‰์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ชจ๋ธ์ด ๊ณ ์ •๋˜๊ณ  ๊ฒฉ๋ฆฌ๋œ ํ™˜๊ฒฝ์˜ API ๋ฐฑ์—”๋“œ์—์„œ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ํ•จ์ˆ˜ ํ˜ธ์ถœ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ฌด์—‡์ด๋“  ์›ํ•˜๋Š” ํ™˜๊ฒฝ์—์„œ ๋ชจ๋ธ์ด ์š”์ฒญํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉ ์‚ฌ๋ก€์— ์ ํ•ฉํ•˜๋ฉด ์ฝ”๋“œ ์‹คํ–‰์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์ฝ”๋“œ ์‹คํ–‰์€ ์‚ฌ์šฉ ์„ค์ •๋งŒ ํ•˜๋ฉด ๋˜๋ฏ€๋กœ ์‚ฌ์šฉํ•˜๊ธฐ์— ๊ฐ„ํŽธํ•˜๊ณ  ๋‹จ์ผ GenerateContent ์š”์ฒญ์œผ๋กœ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค. ํ•จ์ˆ˜ ํ˜ธ์ถœ์—์„œ๋Š” ๊ฐ ํ•จ์ˆ˜ ํ˜ธ์ถœ์—์„œ ์ถœ๋ ฅ์„ ๋‹ค์‹œ ๋ณด๋‚ด๊ธฐ ์œ„ํ•œ ์ถ”๊ฐ€ GenerateContent ์š”์ฒญ์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ๋กœ์ปฌ๋กœ ์‹คํ–‰ํ•˜๋ ค๋Š” ์ž์ฒด ํ•จ์ˆ˜๊ฐ€ ์žˆ์œผ๋ฉด ํ•จ์ˆ˜ ํ˜ธ์ถœ์„ ์‚ฌ์šฉํ•˜๊ณ , API๊ฐ€ ์ž๋™์œผ๋กœ Python ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜์—ฌ ์‹คํ–‰ํ•˜๊ณ  ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋„๋ก ํ•˜๋ ค๋ฉด ์ฝ”๋“œ ์‹คํ–‰์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ฒญ๊ตฌ

Gemini API์—์„œ ์ฝ”๋“œ ์‹คํ–‰์„ ์‚ฌ์šฉ ์„ค์ •ํ•˜๋Š” ๋ฐ์—๋Š” ์ถ”๊ฐ€ ๋น„์šฉ์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ ์ค‘์ธ Gemini ๋ชจ๋ธ์ด ๋ฌด์—‡์ธ์ง€์— ๋”ฐ๋ผ ์ž…๋ ฅ ๋ฐ ์ถœ๋ ฅ ํ† ํฐ์˜ ํ˜„์žฌ ์š”์œจ๋กœ ๋น„์šฉ์ด ์ฒญ๊ตฌ๋ฉ๋‹ˆ๋‹ค.

์ฝ”๋“œ ์‹คํ–‰์˜ ์ฒญ๊ตฌ์— ๋Œ€ํ•ด ๋ช‡ ๊ฐ€์ง€ ์ค‘์š”ํ•œ ์‚ฌํ•ญ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ๋ชจ๋ธ์— ์ „๋‹ฌํ•˜๋Š” ์ž…๋ ฅ ํ† ํฐ๊ณผ ์ฝ”๋“œ ์‹คํ–‰ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ƒ์„ฑ๋œ ์ค‘๊ฐ„ ์ž…๋ ฅ ํ† ํฐ์— ๋Œ€ํ•ด์„œ๋Š” ๋น„์šฉ์ด ํ•œ ๋ฒˆ๋งŒ ์ฒญ๊ตฌ๋ฉ๋‹ˆ๋‹ค.
  • API ์‘๋‹ต์—์„œ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ฐ˜ํ™˜๋œ ์ตœ์ข… ์ถœ๋ ฅ ํ† ํฐ์— ๋Œ€ํ•ด ๋น„์šฉ์ด ์ฒญ๊ตฌ๋ฉ๋‹ˆ๋‹ค.

์•„๋ž˜์— ์„ค๋ช…๋œ ๋Œ€๋กœ ์ฝ”๋“œ ์‹คํ–‰ ๋„๊ตฌ ์‚ฌ์šฉ์˜ ์ฒญ๊ตฌ ํ๋ฆ„์„ ๋ณด์—ฌ์ฃผ๋Š” ๋‹ค์ด์–ด๊ทธ๋žจ

  • ์‚ฌ์šฉ ์ค‘์ธ Gemini ๋ชจ๋ธ์ด ๋ฌด์—‡์ธ์ง€์— ๋”ฐ๋ผ ์ž…๋ ฅ ๋ฐ ์ถœ๋ ฅ ํ† ํฐ์˜ ํ˜„์žฌ ์š”์œจ๋กœ ๋น„์šฉ์ด ์ฒญ๊ตฌ๋ฉ๋‹ˆ๋‹ค.
  • ์‘๋‹ต์„ ์ƒ์„ฑํ•  ๋•Œ Gemini์— ์ฝ”๋“œ ์‹คํ–‰์ด ์‚ฌ์šฉ๋˜๋Š” ๊ฒฝ์šฐ ์›๋ณธ ํ”„๋กฌํ”„ํŠธ, ์ƒ์„ฑ๋œ ์ฝ”๋“œ, ์‹คํ–‰๋œ ์ฝ”๋“œ ๊ฒฐ๊ณผ๊ฐ€ ์ค‘๊ฐ„ ํ† ํฐ ๋ผ๋ฒจ๋กœ ํ‘œ์‹œ๋˜๊ณ  ์ž…๋ ฅ ํ† ํฐ์œผ๋กœ ์ฒญ๊ตฌ๋ฉ๋‹ˆ๋‹ค.
  • ๊ทธ๋Ÿฐ ํ›„ Gemini๊ฐ€ ์š”์•ฝ์„ ์ƒ์„ฑํ•˜๊ณ  ์ƒ์„ฑ๋œ ์ฝ”๋“œ, ์‹คํ–‰๋œ ์ฝ”๋“œ ๊ฒฐ๊ณผ, ์ตœ์ข… ์š”์•ฝ์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ๋“ค์€ ์ถœ๋ ฅ ํ† ํฐ์œผ๋กœ ์ฒญ๊ตฌ๋ฉ๋‹ˆ๋‹ค.
  • Gemini API์—๋Š” API ์‘๋‹ต์— ์ค‘๊ฐ„ ํ† ํฐ ์ˆ˜๊ฐ€ ํฌํ•จ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ดˆ๊ธฐ ํ”„๋กฌํ”„ํŠธ๋กœ ์ „๋‹ฌ๋œ ๊ฒƒ ์ด์ƒ์œผ๋กœ ์ถ”๊ฐ€๋œ ์ž…๋ ฅ ํ† ํฐ์„ ์ถ”์ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ƒ์„ฑ๋œ ์ฝ”๋“œ์—๋Š” ํ…์ŠคํŠธ ๋ฐ ๋ฉ€ํ‹ฐ๋ชจ๋‹ฌ ์ถœ๋ ฅ(์˜ˆ: ์ด๋ฏธ์ง€)์ด ๋ชจ๋‘ ํฌํ•จ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ œํ•œ์‚ฌํ•ญ

  • ๋ชจ๋ธ์€ ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑ ๋ฐ ์‹คํ–‰ํ•  ์ˆ˜๋งŒ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฏธ๋””์–ด ํŒŒ์ผ๊ณผ ๊ฐ™์€ ๋‹ค๋ฅธ ์•„ํ‹ฐํŒฉํŠธ๋Š” ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
  • ์ด ๊ธฐ๋Šฅ์€ ๋น„ํ…์ŠคํŠธ ์ถœ๋ ฅ(์˜ˆ: ๋ฐ์ดํ„ฐ ํ”Œ๋กฏ ๋˜๋Š” CSV ํŒŒ์ผ ์—…๋กœ๋“œ)์ด ๊ด€๋ จ๋œ ์‚ฌ์šฉ ์‚ฌ๋ก€ ๋˜๋Š” ํŒŒ์ผ I/O๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ์ฝ”๋“œ ์‹คํ–‰์€ ํƒ€์ž„์•„์›ƒ๋˜๊ธฐ ์ „๊นŒ์ง€ ์ตœ๋Œ€ 30์ดˆ ๋™์•ˆ ์‹คํ–‰๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ผ๋ถ€ ๊ฒฝ์šฐ์— ์ฝ”๋“œ ์‹คํ–‰์„ ์‚ฌ์šฉ ์„ค์ •ํ•˜๋ฉด ๋ชจ๋ธ ์ถœ๋ ฅ์˜ ๋‹ค๋ฅธ ์˜์—ญ(์˜ˆ: ์Šคํ† ๋ฆฌ ์ž‘์„ฑ)์—์„œ ์„ฑ๋Šฅ์ด ์ €ํ•˜๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.