카테고리:

문자열 및 이진 함수 (대규모 언어 모델)

AI_COMPLETE (단일 문자열)

참고

AI_COMPLETE 은 COMPLETE (SNOWFLAKE.CORTEX) 의 업데이트된 버전입니다. 최신 기능의 경우 AI_COMPLETE 를 사용하십시오.

지원되는 언어 모델을 사용하여 텍스트 프롬프트에 대한 응답(완료)을 생성합니다.

구문

이 함수에는 2개의 필수 인자와 4개의 선택 인자가 있습니다. 이 함수는 위치 또는 명명된 인자 구문과 함께 사용할 수 있습니다.

단일 문자열 입력으로 AI_COMPLETE 사용

AI_COMPLETE(
    <model>, <prompt> [ , <model_parameters>, <response_format>, <show_details> ] )
Copy

인자

model

사용할 모델을 지정하는 문자열입니다. 다음 모델 중 하나를 지정합니다.

  • claude-4-opus

  • claude-4-sonnet

  • claude-3-7-sonnet

  • claude-3-5-sonnet

  • deepseek-r1

  • gemma-7b

  • jamba-1.5-mini

  • jamba-1.5-large

  • jamba-instruct

  • llama2-70b-chat

  • llama3-8b

  • llama3-70b

  • llama3.1-8b

  • llama3.1-70b

  • llama3.1-405b

  • llama3.2-1b

  • llama3.2-3b

  • llama3.3-70b

  • llama4-maverick

  • llama4-scout

  • mistral-large

  • mistral-large2

  • mistral-7b

  • mixtral-8x7b

  • openai-gpt4.1

  • openai-o4-mini

  • reka-core

  • reka-flash

  • snowflake-arctic

  • snowflake-llama-3.1-405b

  • snowflake-llama-3.3-70b

지원되는 모델은 비용 이 다를 수 있습니다.

prompt

문자열 프롬프트

model_parameters

모델의 하이퍼 매개 변수에 영향을 미치는 다음 옵션 중 0개 이상이 포함된 오브젝트 입니다. LLM 설정 을 참조하십시오.

  • temperature: 언어 모델 출력의 임의성을 제어하는 0에서 1(포함) 사이의 값입니다. 온도가 높을수록(예: 0.7) 더 다양하고 무작위적인 출력이 생성되는 반면, 온도가 낮을수록(예: 0.2) 더 결정적이고 포커스가 맞춰진 출력이 생성됩니다.

    기본값: 0

  • top_p: 일반적으로 temperature 의 대안으로 사용되는 언어 모델의 임의성과 다양성을 제어하는 0에서 1(포함) 사이의 값입니다. top_p 는 모델이 출력할 가능성이 있는 토큰 세트를 제한하는 반면, temperature 는 각 단계에서 선택되는 토큰에 영향을 미친다는 것이 차이점입니다.

    기본값: 0

  • max_tokens: 응답의 최대 출력 토큰 수를 설정합니다. 값이 작으면 응답이 잘릴 수 있습니다.

    기본값: 4096 최대 허용 값: 8192

  • guardrails: Cortex Guard 를 사용하여 언어 모델에서 잠재적으로 안전하지 않고 유해한 응답을 필터링합니다. TRUE 또는 FALSE입니다.

    기본값: FALSE

response_format

응답이 따라야 하는 JSON 스키마 입니다. 이것은 문자열이 아닌 SQL 하위 오브젝트입니다. response_format 을 지정하지 않으면 응답은 응답이 포함된 문자열이거나 응답과 그에 대한 정보가 포함된 직렬화된 JSON 오브젝트입니다.

자세한 내용은 AI_COMPLETE Structured Outputs 섹션을 참조하십시오.

show_details

응답과 그에 대한 정보가 포함된 직렬화된 JSON 오브젝트를 반환할지 여부를 나타내는 부울 플래그입니다.

반환

show_details 인자를 지정하지 않거나 FALSE 로 설정하고 response_format 을 지정하지 않거나 NULL 로 설정하면 응답이 포함된 문자열을 반환합니다.

show_details 인자를 지정하지 않거나 FALSE 로 설정하고 response_format 를 지정하는 경우 제공된 응답 형식에 따라 오브젝트를 반환합니다.

show_details 인자가 TRUE 로 설정되어 있고 response_format 을 지정하지 않은 경우 다음 키가 포함된 JSON 오브젝트를 반환합니다.

  • "choices": 모델의 응답 배열. (현재, 응답은 1개만 제공됩니다.) 각각의 응답은 최신 프롬프트에 대한 모델의 응답 값을 갖는 "messages" 키를 포함하는 오브젝트입니다.

  • "created": 응답이 생성된 시점의 UNIX 타임스탬프(1970년 1월 1일 자정 이후에 경과된 초).

  • "model": 응답을 생성한 모델의 이름.

  • "usage": 이 완성으로 소비되고 생성되는 토큰 수를 기록하는 오브젝트. 다음 하위 키를 포함합니다.

    • "completion_tokens": 생성된 응답의 토큰 수.

    • "prompt_tokens": 프롬프트의 토큰 수.

    • "total_tokens": 소비된 총 토큰 수로, 다른 두 값의 합입니다.

show_details 인자가 TRUE 로 설정되고 response_format 을 지정하는 경우 다음 키가 포함된 JSON 오브젝트를 반환합니다.

  • "structured_output": 지정된 응답 형식을 따르는 JSON 오브젝트입니다.

  • "created": 응답이 생성된 시점의 UNIX 타임스탬프(1970년 1월 1일 자정 이후에 경과된 초).

  • "model": 응답을 생성한 모델의 이름.

  • "usage": 이 완성으로 소비되고 생성되는 토큰 수를 기록하는 오브젝트. 다음 하위 키를 포함합니다.

    • "completion_tokens": 생성된 응답의 토큰 수.

    • "prompt_tokens": 프롬프트의 토큰 수.

    • "total_tokens": 소비된 총 토큰 수로, 다른 두 값의 합입니다.

단일 응답

단일 응답을 생성하려면 다음을 수행하십시오.

SELECT AI_COMPLETE('snowflake-arctic', 'What are large language models?');
Copy

테이블 열의 응답

다음 예에서는 content 열을 입력으로 사용하여 reviews 테이블의 각 행에 대한 응답을 생성합니다. 각 쿼리 결과에는 해당 리뷰에 대한 비평이 포함되어 있습니다.

SELECT AI_COMPLETE(
    'mistral-large',
        CONCAT('Critique this review in bullet points: <review>', content, '</review>')
) FROM reviews LIMIT 10;
Copy

이 예에 표시된 것처럼, 프롬프트의 태그 지정을 사용하여 생성되는 응답의 종류를 제어할 수 있습니다. 팁은 LLaMA 2 프롬프트 표시 가이드 를 참조하십시오.

모델 매개 변수 제어하기

다음 예에서는 응답을 제공하는 데 사용되는 model_parameters 를 지정합니다.

SELECT AI_COMPLETE(
    model => 'llama2-70b-chat',
    prompt => 'how does a snowflake get its unique pattern?',
    model_parameters => {
        'temperature': 0.7,
        'max_tokens': 10
    }
);
Copy

응답은 언어 모델의 메시지와 기타 정보가 포함된 문자열입니다. model_parameters 인자에 지시된 대로 응답이 잘립니다.

"The unique pattern on a snowflake is"
Copy

상세 출력

다음 예에서는 show_details 인자를 사용하여 추가적인 추론 세부 정보를 반환하는 방법을 보여줍니다.

SELECT AI_COMPLETE(
    model => 'llama2-70b-chat',
    prompt => 'how does a snowflake get its unique pattern?',
    model_parameters => {
        'temperature': 0.7,
        'max_tokens': 10
    },
    show_details => true
);
Copy

응답은 모델의 메시지와 관련 세부 정보가 포함된 JSON 오브젝트입니다. options 인자는 출력을 잘라내는 데 사용되었습니다.

{
    "choices": [
        {
            "messages": " The unique pattern on a snowflake is"
        }
    ],
    "created": 1708536426,
    "model": "llama2-70b-chat",
    "usage": {
        "completion_tokens": 10,
        "prompt_tokens": 22,
        "guardrail_tokens": 0,
        "total_tokens": 32
    }
}
Copy

JSON 응답 형식 지정하기

이 예에서는 함수의 response_format 인자를 사용하여 정형 응답을 반환하는 방법을 보여줍니다.

SELECT AI_COMPLETE(
    model => 'llama2-70b-chat',
    prompt => 'Extract structured data from this customer interaction note: Customer Sarah Jones complained about the mobile app crashing during checkout. She tried to purchase 3 items: a red XL jacket ($89.99), blue running shoes ($129.50), and a fitness tracker ($199.00). The app crashed after she entered her shipping address at 123 Main St, Portland OR, 97201. She has been a premium member since January 2024.',
    model_parameters => {
        'temperature': 0,
        'max_tokens': 4096
    },
    response_format => {
            'type':'json',
            'schema':{'type' : 'object','properties' : {'sentiment_categories':{'type':'array','items':{'type':'object','properties':
            {'food_quality' : {'type' : 'string'},'food_taste': {'type':'string'}, 'wait_time': {'type':'string'}, 'food_cost': {'type':'string'}},'required':['food_quality','food_taste' ,'wait_time','food_cost']}}}}
    }
);
Copy

응답은 정형 응답 형식을 따르는 JSON 오브젝트입니다.

응답:

{
    "sentiment_categories": [
        {
            "food_cost": "negative",
            "food_quality": "positive",
            "food_taste": "positive",
            "wait_time": "neutral"
        }
    ]
}

자세한 출력이 포함된 JSON 응답 형식 지정하기

이 예에서는 함수의 response_format 인자를 사용하여 show_details 와 결합된 정형 응답을 반환하여 추가 추론 정보를 얻는 방법을 보여줍니다.

SELECT AI_COMPLETE(
    model => 'llama2-70b-chat',
    prompt => 'Extract structured data from this customer interaction note: Customer Sarah Jones complained about the mobile app crashing during checkout. She tried to purchase 3 items: a red XL jacket ($89.99), blue running shoes ($129.50), and a fitness tracker ($199.00). The app crashed after she entered her shipping address at 123 Main St, Portland OR, 97201. She has been a premium member since January 2024.',
    model_parameters => {
        'temperature': 0,
        'max_tokens': 4096
    },
    response_format => {
            'type':'json',
            'schema':{'type' : 'object','properties' : {'sentiment_categories':{'type':'array','items':{'type':'object','properties':
            {'food_quality' : {'type' : 'string'},'food_taste': {'type':'string'}, 'wait_time': {'type':'string'}, 'food_cost': {'type':'string'}},'required':['food_quality','food_taste' ,'wait_time','food_cost']}}}}
    },
    show_details => true
);
Copy

응답은 추가 추론 메타데이터가 포함된 정형 응답을 포함하는 JSON 오브젝트입니다.

{
    "created": 1738683744,
    "model": "mistral-large2",
    "structured_output": [
        {
            "raw_message": {
                "sentiment_categories": [
                    {
                        "food_cost": "negative",
                        "food_quality": "positive",
                        "food_taste": "positive",
                        "wait_time": "neutral"
                    }
                ]
            },
            "type": "json"
        }
    ],
    "usage": {
        "completion_tokens": 60,
        "prompt_tokens": 94,
        "total_tokens": 154
    }
}