Anthropic Claude ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•œ ์ผ๊ด„ ์˜ˆ์ธก

์ผ๊ด„ ์˜ˆ์ธก์„ ์‚ฌ์šฉํ•˜๋ฉด ์ง€์—ฐ ์‹œ๊ฐ„์— ๋ฏผ๊ฐํ•˜์ง€ ์•Š์€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ”„๋กฌํ”„ํŠธ๋ฅผ Anthropic Claude ๋ชจ๋ธ์— ์ „์†กํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์š”์ฒญ๋งˆ๋‹ค ํ•˜๋‚˜์˜ ์ž…๋ ฅ ํ”„๋กฌํ”„ํŠธ๋ฅผ ์ „์†กํ•˜๋Š” ์˜จ๋ผ์ธ ์˜ˆ์ธก๊ณผ ๋‹ฌ๋ฆฌ ๋‹จ์ผ ์š”์ฒญ์œผ๋กœ ๋‹ค์ˆ˜์˜ ์ž…๋ ฅ ํ”„๋กฌํ”„ํŠธ๋ฅผ ์ผ๊ด„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

Vertex AI๋Š” ๋‹ค์Œ Anthropic Claude ๋ชจ๋ธ์˜ ์ผ๊ด„ ์˜ˆ์ธก์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

ํ• ๋‹น๋Ÿ‰

๊ธฐ๋ณธ์ ์œผ๋กœ ๋‹จ์ผ ํ”„๋กœ์ ํŠธ์—์„œ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๋™์‹œ ์ผ๊ด„ ์š”์ฒญ ์ˆ˜๋Š” 4๊ฐœ์ž…๋‹ˆ๋‹ค.

์ž…๋ ฅ ์ค€๋น„

์‹œ์ž‘ํ•˜๊ธฐ ์ „์— BigQuery ํ…Œ์ด๋ธ” ๋˜๋Š” Cloud Storage์˜ JSONL ํŒŒ์ผ๋กœ ์ž…๋ ฅ ๋ฐ์ดํ„ฐ ์„ธํŠธ๋ฅผ ์ค€๋น„ํ•ฉ๋‹ˆ๋‹ค. ๋‘ ์†Œ์Šค์˜ ์ž…๋ ฅ์€ ๋‹ค์Œ ์˜ˆ์‹œ์™€ ๊ฐ™์ด Anthropic Claude API ์Šคํ‚ค๋งˆ JSON ํ˜•์‹์„ ๋”ฐ๋ผ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

{
  "custom_id": "request-1",
  "request":  {
    "messages": [{"role": "user", "content": "Hello!"}],
    "anthropic_version": "vertex-2023-10-16",
    "max_tokens": 50
  }
}

BigQuery

BigQuery ์ž…๋ ฅ ํ…Œ์ด๋ธ”์€ ๋‹ค์Œ ์Šคํ‚ค๋งˆ๋ฅผ ์ค€์ˆ˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์—ด ์ด๋ฆ„ ์„ค๋ช…
custom_id ์ž…๋ ฅ์„ ์ถœ๋ ฅ๊ณผ ์ผ์น˜์‹œํ‚ค๋Š” ๊ฐ ์š”์ฒญ์˜ ID์ž…๋‹ˆ๋‹ค.
์š”์ฒญ ์š”์ฒญ ๋ณธ๋ฌธ(์ž…๋ ฅ ํ”„๋กฌํ”„ํŠธ์ด๋ฉฐ Anthropic Claude API ์Šคํ‚ค๋งˆ๋ฅผ ๋”ฐ๋ผ์•ผ ํ•จ)
  • ์ž…๋ ฅ ํ…Œ์ด๋ธ”์—๋Š” ์ผ๊ด„ ์ž‘์—…์—์„œ ๋ฌด์‹œ๋˜๋Š” ๋‹ค๋ฅธ ์—ด์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ผ๊ด„ ์˜ˆ์ธก ์ž‘์—…์€ ์ผ๊ด„ ์˜ˆ์ธก ์ถœ๋ ฅ์— response(JSON) ๋ฐ status์ด๋ผ๋Š” ๋‘ ๊ฐ€์ง€ ์—ด ์ด๋ฆ„์„ ์˜ˆ์•ฝํ•ฉ๋‹ˆ๋‹ค. ์ž…๋ ฅ ํ…Œ์ด๋ธ”์—์„œ ์ด๋Ÿฌํ•œ ์—ด์„ ์‚ฌ์šฉํ•˜์ง€ ๋งˆ์„ธ์š”.

Cloud Storage

Cloud Storage์˜ ๊ฒฝ์šฐ ์ž…๋ ฅ ํŒŒ์ผ์€ Cloud Storage ๋ฒ„ํ‚ท์— ์žˆ๋Š” JSONL ํŒŒ์ผ์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋ฐฐ์น˜ ์˜ˆ์ธก ์š”์ฒญ

BigQuery ๋˜๋Š” Cloud Storage์˜ ์ž…๋ ฅ์„ ์‚ฌ์šฉํ•˜์—ฌ Claude ๋ชจ๋ธ์—์„œ ์ผ๊ด„ ์˜ˆ์ธก์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. BigQuery ํ…Œ์ด๋ธ” ๋˜๋Š” Cloud Storage ๋ฒ„ํ‚ท์˜ JSONL ํŒŒ์ผ ์ค‘ ํ•˜๋‚˜์— ์˜ˆ์ธก์„ ์ถœ๋ ฅํ•˜๋„๋ก ๋…๋ฆฝ์ ์œผ๋กœ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

BigQuery

BigQuery ์ž…๋ ฅ ํ…Œ์ด๋ธ”, ๋ชจ๋ธ, ์ถœ๋ ฅ ์œ„์น˜๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ์ผ๊ด„ ์˜ˆ์ธก ์ž‘์—…๊ณผ ํ…Œ์ด๋ธ”์ด ๋™์ผํ•œ ๋ฆฌ์ „์— ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Python

Vertex AI SDK for Python์„ ์„ค์น˜ํ•˜๊ฑฐ๋‚˜ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๋ฐฉ๋ฒ•์€ Vertex AI SDK for Python ์„ค์น˜๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”. ์ž์„ธํ•œ ๋‚ด์šฉ์€ Python API ์ฐธ๊ณ  ๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

import time

from google import genai
from google.genai.types import CreateBatchJobConfig, JobState, HttpOptions

client = genai.Client(http_options=HttpOptions(api_version="v1"))

# TODO(developer): Update and un-comment below line
# output_uri = f"bq://your-project.your_dataset.your_table"

job = client.batches.create(
    # Check Anthropic Claude region availability in https://cloud.devsite.corp.google.com/vertex-ai/generative-ai/docs/partner-models/use-claude#regions
    # More about Anthropic model: https://console.cloud.google.com/vertex-ai/publishers/anthropic/model-garden/claude-3-5-haiku
    model="publishers/anthropic/models/claude-3-5-haiku",
    # The source dataset needs to be created specifically in us-east5
    src="bq://python-docs-samples-tests.anthropic_bq_sample.test_data",
    config=CreateBatchJobConfig(dest=output_uri),
)
print(f"Job name: {job.name}")
print(f"Job state: {job.state}")
# Example response:
# Job name: projects/%PROJECT_ID%/locations/us-central1/batchPredictionJobs/9876453210000000000
# Job state: JOB_STATE_PENDING

# See the documentation: https://googleapis.github.io/python-genai/genai.html#genai.types.BatchJob
completed_states = {
    JobState.JOB_STATE_SUCCEEDED,
    JobState.JOB_STATE_FAILED,
    JobState.JOB_STATE_CANCELLED,
    JobState.JOB_STATE_PAUSED,
}

while job.state not in completed_states:
    time.sleep(30)
    job = client.batches.get(name=job.name)
    print(f"Job state: {job.state}")
# Example response:
# Job state: JOB_STATE_PENDING
# Job state: JOB_STATE_RUNNING
# Job state: JOB_STATE_RUNNING
# ...
# Job state: JOB_STATE_SUCCEEDED

REST

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

  • LOCATION: ์„ ํƒํ•œ Anthropic Claude ๋ชจ๋ธ์„ ์ง€์›ํ•˜๋Š” ๋ฆฌ์ „(Claude ๋ฆฌ์ „ ์ฐธ๊ณ )
  • PROJECT_ID: ํ”„๋กœ์ ํŠธ ID
  • MODEL: ๋ชจ๋ธ์˜ ์ด๋ฆ„
  • INPUT_URI: ์ผ๊ด„ ์˜ˆ์ธก ์ž…๋ ฅ์ด ์žˆ๋Š” BigQuery ํ…Œ์ด๋ธ”(์˜ˆ: bq://myproject.mydataset.input_table)
  • OUTPUT_FORMAT: BigQuery ํ…Œ์ด๋ธ”์— ์ถœ๋ ฅํ•˜๋ ค๋ฉด bigquery๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. Cloud Storage ๋ฒ„ํ‚ท์— ์ถœ๋ ฅํ•˜๋ ค๋ฉด jsonl์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
  • DESTINATION: BigQuery์˜ ๊ฒฝ์šฐ bigqueryDestination์„ ์ง€์ •. Cloud Storage์˜ ๊ฒฝ์šฐ gcsDestination์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
  • OUTPUT_URI_FIELD_NAME: BigQuery์˜ ๊ฒฝ์šฐ outputUri์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. Cloud Storage์˜ ๊ฒฝ์šฐ outputUriPrefix์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
  • OUTPUT_URI: BigQuery์˜ ๊ฒฝ์šฐ ํ…Œ์ด๋ธ” ์œ„์น˜(์˜ˆ: bq://myproject.mydataset.output_result)๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. Cloud Storage์˜ ๊ฒฝ์šฐ ๋ฒ„ํ‚ท ๋ฐ ํด๋” ์œ„์น˜(์˜ˆ: gs://mybucket/path/to/outputfile)๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

HTTP ๋ฉ”์„œ๋“œ ๋ฐ URL:

POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/batchPredictionJobs

JSON ์š”์ฒญ ๋ณธ๋ฌธ:

'{
  "displayName": "JOB_NAME",
  "model": "publishers/anthropic/models/MODEL",
  "inputConfig": {
    "instancesFormat":"bigquery",
    "bigquerySource":{
      "inputUri" : "INPUT_URI"
    }
  },
  "outputConfig": {
    "predictionsFormat":"OUTPUT_FORMAT",
    "DESTINATION":{
      "OUTPUT_URI_FIELD_NAME": "OUTPUT_URI"
    }
  }
}'

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

curl

์š”์ฒญ ๋ณธ๋ฌธ์„ request.json ํŒŒ์ผ์— ์ €์žฅํ•˜๊ณ  ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

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/batchPredictionJobs"

PowerShell

์š”์ฒญ ๋ณธ๋ฌธ์„ request.json ํŒŒ์ผ์— ์ €์žฅํ•˜๊ณ  ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

$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/batchPredictionJobs" | Select-Object -Expand Content

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

Cloud Storage

JSONL ํŒŒ์ผ์˜ Cloud Storage ์œ„์น˜, ๋ชจ๋ธ, ์ถœ๋ ฅ ์œ„์น˜๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

Python

Vertex AI SDK for Python์„ ์„ค์น˜ํ•˜๊ฑฐ๋‚˜ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๋ฐฉ๋ฒ•์€ Vertex AI SDK for Python ์„ค์น˜๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”. ์ž์„ธํ•œ ๋‚ด์šฉ์€ Python API ์ฐธ๊ณ  ๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

import time

from google import genai
from google.genai.types import CreateBatchJobConfig, JobState, HttpOptions

client = genai.Client(http_options=HttpOptions(api_version="v1"))
# TODO(developer): Update and un-comment below line
# output_uri = "gs://your-bucket/your-prefix"

# See the documentation: https://googleapis.github.io/python-genai/genai.html#genai.batches.Batches.create
job = client.batches.create(
    # More about Anthropic model: https://console.cloud.google.com/vertex-ai/publishers/anthropic/model-garden/claude-3-5-haiku
    model="publishers/anthropic/models/claude-3-5-haiku",
    # Source link: https://storage.cloud.google.com/cloud-samples-data/batch/anthropic-test-data-gcs.jsonl
    src="gs://cloud-samples-data/anthropic-test-data-gcs.jsonl",
    config=CreateBatchJobConfig(dest=output_uri),
)
print(f"Job name: {job.name}")
print(f"Job state: {job.state}")
# Example response:
# Job name: projects/%PROJECT_ID%/locations/us-central1/batchPredictionJobs/9876453210000000000
# Job state: JOB_STATE_PENDING

# See the documentation: https://googleapis.github.io/python-genai/genai.html#genai.types.BatchJob
completed_states = {
    JobState.JOB_STATE_SUCCEEDED,
    JobState.JOB_STATE_FAILED,
    JobState.JOB_STATE_CANCELLED,
    JobState.JOB_STATE_PAUSED,
}

while job.state not in completed_states:
    time.sleep(30)
    job = client.batches.get(name=job.name)
    print(f"Job state: {job.state}")
# Example response:
# Job state: JOB_STATE_PENDING
# Job state: JOB_STATE_RUNNING
# Job state: JOB_STATE_RUNNING
# ...
# Job state: JOB_STATE_SUCCEEDED

REST

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

  • LOCATION: ์„ ํƒํ•œ Anthropic Claude ๋ชจ๋ธ์„ ์ง€์›ํ•˜๋Š” ๋ฆฌ์ „(Claude ๋ฆฌ์ „ ์ฐธ๊ณ )
  • PROJECT_ID: .
  • MODEL: ๋ชจ๋ธ์˜ ์ด๋ฆ„
  • INPUT_URIS: JSONL ์ผ๊ด„ ์˜ˆ์ธก ์ž…๋ ฅ์˜ Cloud Storage ์œ„์น˜(์˜ˆ: gs://bucketname/path/to/jsonl)๋ฅผ ์‰ผํ‘œ๋กœ ๊ตฌ๋ถ„ํ•œ ๋ชฉ๋ก์ž…๋‹ˆ๋‹ค.
  • OUTPUT_FORMAT: BigQuery ํ…Œ์ด๋ธ”์— ์ถœ๋ ฅํ•˜๋ ค๋ฉด bigquery๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. Cloud Storage ๋ฒ„ํ‚ท์— ์ถœ๋ ฅํ•˜๋ ค๋ฉด jsonl์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
  • DESTINATION: BigQuery์˜ ๊ฒฝ์šฐ bigqueryDestination์„ ์ง€์ •. Cloud Storage์˜ ๊ฒฝ์šฐ gcsDestination์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
  • OUTPUT_URI_FIELD_NAME: BigQuery์˜ ๊ฒฝ์šฐ outputUri์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. Cloud Storage์˜ ๊ฒฝ์šฐ outputUriPrefix์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
  • OUTPUT_URI: BigQuery์˜ ๊ฒฝ์šฐ ํ…Œ์ด๋ธ” ์œ„์น˜(์˜ˆ: bq://myproject.mydataset.output_result)๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. Cloud Storage์˜ ๊ฒฝ์šฐ ๋ฒ„ํ‚ท ๋ฐ ํด๋” ์œ„์น˜(์˜ˆ: gs://mybucket/path/to/outputfile)๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

HTTP ๋ฉ”์„œ๋“œ ๋ฐ URL:

POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/batchPredictionJobs

JSON ์š”์ฒญ ๋ณธ๋ฌธ:

'{
  "displayName": "JOB_NAME",
  "model": "publishers/anthropic/models/MODEL",
  "inputConfig": {
    "instancesFormat":"jsonl",
    "gcsSource":{
      "uris" : "INPUT_URIS"
    }
  },
  "outputConfig": {
    "predictionsFormat":"OUTPUT_FORMAT",
    "DESTINATION":{
      "OUTPUT_URI_FIELD_NAME": "OUTPUT_URI"
    }
  }
}'

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

curl

์š”์ฒญ ๋ณธ๋ฌธ์„ request.json ํŒŒ์ผ์— ์ €์žฅํ•˜๊ณ  ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

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/batchPredictionJobs"

PowerShell

์š”์ฒญ ๋ณธ๋ฌธ์„ request.json ํŒŒ์ผ์— ์ €์žฅํ•˜๊ณ  ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

$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/batchPredictionJobs" | Select-Object -Expand Content

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

์ผ๊ด„ ์˜ˆ์ธก ์ž‘์—…์˜ ์ƒํƒœ ๊ฐ€์ ธ์˜ค๊ธฐ

์ผ๊ด„ ์˜ˆ์ธก ์ž‘์—…์˜ ์ƒํƒœ๋ฅผ ๊ฐ€์ ธ์™€ ์ž‘์—…์ด ์™„๋ฃŒ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

REST

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

  • PROJECT_ID: .
  • LOCATION: ์ผ๊ด„ ์ž‘์—…์ด ์žˆ๋Š” ๋ฆฌ์ „์ž…๋‹ˆ๋‹ค.
  • JOB_ID: ์ž‘์—…์„ ๋งŒ๋“ค ๋•Œ ๋ฐ˜ํ™˜๋œ ์ผ๊ด„ ์ž‘์—… ID์ž…๋‹ˆ๋‹ค.

HTTP ๋ฉ”์„œ๋“œ ๋ฐ URL:

GET https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/batchPredictionJobs/JOB_ID

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

curl

๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/batchPredictionJobs/JOB_ID"

PowerShell

๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

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

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/batchPredictionJobs/JOB_ID" | Select-Object -Expand Content

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

์ผ๊ด„ ์˜ˆ์ธก ์ถœ๋ ฅ ๊ฐ€์ ธ์˜ค๊ธฐ

์ผ๊ด„ ์˜ˆ์ธก ์ž‘์—…์ด ์™„๋ฃŒ๋˜๋ฉด ์ง€์ •ํ•œ ์œ„์น˜์—์„œ ์ถœ๋ ฅ์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค. BigQuery์˜ ๊ฒฝ์šฐ ์ถœ๋ ฅ์€ ๋Œ€์ƒ BigQuery ํ…Œ์ด๋ธ”์˜ response(JSON) ์—ด์— ์žˆ์Šต๋‹ˆ๋‹ค. Cloud Storage์˜ ๊ฒฝ์šฐ ์ถœ๋ ฅ์ด ์ถœ๋ ฅ Cloud Storage ์œ„์น˜์— JSONL ํŒŒ์ผ๋กœ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.

๋ชจ๋“  ํ–‰์ด ์™„๋ฃŒ๋œ ํ›„ ๋˜๋Š” 24์‹œ๊ฐ„์ด ์ง€๋‚œ ํ›„(๋‘˜ ์ค‘ ๋จผ์ € ๋„๋‹ฌํ•˜๋Š” ์‹œ์ ) ์ „์ฒด ์ผ๊ด„ ์˜ˆ์ธก ๊ฒฐ๊ณผ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.