카테고리:

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

COMPLETE (SNOWFLAKE.CORTEX)

프롬프트가 나타나면 지원되는 언어 모델 중에서 선택하여 응답(완성)을 생성합니다.

구문

SNOWFLAKE.CORTEX.COMPLETE(
    <model>, <prompt_or_history> [ , <options> ] )
Copy

인자

필수:

model

사용할 모델을 지정하는 문자열입니다. 이것은 다음 값 중 하나여야 합니다.

  • 'mistral-large'

  • 'mixtral-8x7b'

  • 'llama2-70b-chat'

  • 'mistral-7b'

  • 'gemma-7b'

지원되는 모델의 비용할당량 이 다를 수 있습니다.

prompt_or_history

완성된 항목을 생성하는 데 사용되는 프롬프트 또는 대화 기록입니다.

options 가 없는 경우 제공된 프롬프트는 문자열이어야 합니다.

options 가 있는 경우 인자는 시간순으로 대화를 나타내는 오브젝트로 구성된 배열 이어야 합니다. 각 오브젝트 에는 role 키와 content 키가 포함되어야 합니다. content 값은 역할에 따라 프롬프트 또는 응답입니다. 다음 중 한 역할이어야 합니다.

role

content

system

응답 스타일에 대한 배경 정보와 지침을 제공하기 위한 언어 모델에 대한 초기 일반 영어 프롬프트입니다. 예를 들면 “Respond in the style of a pirate.”와 같은 프롬프트입니다. 모델은 시스템 프롬프트에 대한 응답을 생성하지 않습니다. 하나의 시스템 프롬프트만 제공될 수 있으며, 프롬프트가 존재하는 경우 배열에서 첫 번째 프롬프트여야 합니다.

'user'

사용자가 제공하는 프롬프트입니다. 시스템 프롬프트(하나가 있는 경우) 또는 보조 응답을 따라야 합니다.

'assistant'

이전에 언어 모델에서 제공한 응답입니다. 사용자 프롬프트를 따라야 합니다. 과거 응답을 사용하여 상태 저장 대화 경험을 제공할 수 있습니다. 사용법 노트 를 참조하십시오.

선택 사항:

options

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

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

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

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

options 인자를 지정하면 빈 오브젝트({})인 경우에도 prompt 인자의 해석 방식과 응답의 형식 지정 방식에 영향을 줍니다.

반환

options 인자를 지정하지 않으면 문자열을 반환합니다.

options 인자가 주어진 경우 다음 키를 포함하는 JSON 오브젝트의 문자열 표현을 반환합니다.

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

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

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

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

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

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

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

액세스 제어

사용자는 SNOWFLAKE.CORTEX_USER 데이터베이스 역할 이 부여된 역할을 사용해야 합니다. 이 권한 부여에 대한 자세한 내용은 필수 권한 섹션을 참조하십시오.

사용법 노트

COMPLETE는 한 호출에서 다음 호출까지 어떤 상태도 유지하지 않습니다. 상태 저장 대화 경험을 제공하는 COMPLETE 함수를 사용하려면 대화의 모든 이전 사용자 프롬프트와 모델 응답을 prompt_or_history 배열의 일부로 전달하십시오. (채팅 모델용 템플릿 을 참조하십시오.) 각 “라운드”마다 처리되는 토큰 수가 증가하고 그에 비례하여 비용도 증가한다는 점을 명심하십시오.

단일 응답

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

SELECT SNOWFLAKE.CORTEX.COMPLETE('mistral-large', 'What are large language models?');
Copy

테이블 열의 응답

다음 예에서는 테이블의 각 행에서 응답을 생성합니다(이 예에서 contentreviews 테이블의 열임). reviews 테이블에는 사용자가 제출한 리뷰 텍스트가 포함된 review_content 라는 열이 포함됩니다. 쿼리는 각 리뷰에 대한 비평을 반환합니다.

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

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

온도 및 토큰 제어하기

이 예에서는 함수의 options 인자를 사용하여 단일 응답에서 추론 하이퍼 매개 변수를 제어하는 방법을 보여줍니다. 이 형식은 여러 프롬프트와 응답을 지원하므로 이 형식의 함수에서는 프롬프트가 배열로 제공되어야 합니다.

SELECT SNOWFLAKE.CORTEX.COMPLETE(
    'llama2-7b-chat',
    [
        {
            'role': 'user',
            'content': 'how does a snowflake get its unique pattern?'
        }
    ],
    {
        'temperature': 0.7,
        'max_tokens': 10
    }
);
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,
        "total_tokens": 32
    }
}
Copy

예: 시스템 프롬프트 제공하기

이 예에서는 영화 리뷰에 대한 감정 분석을 제공하기 위해 시스템 프롬프트를 사용하는 방법을 보여줍니다. 여기서 prompt 인자는 각각 적절한 role 값을 갖는 오브젝트로 구성된 배열입니다.

SELECT SNOWFLAKE.CORTEX.COMPLETE(
    'llama2-70b-chat',
    [
        {'role': 'system', 'content': 'You are a helpful AI assistant. Analyze the movie review text and determine the overall sentiment. Answer with just \"Positive\", \"Negative\", or \"Neutral\"' },
        {'role': 'user', 'content': 'this was really good'}
    ], {}
    ) as response;
Copy

응답은 언어 모델의 응답과 기타 정보를 포함하는 JSON 오브젝트입니다.

{
    "choices": [
        {
        "messages": " Positive"
        }
    ],
    "created": 1708479449,
    "model": "llama2-70b-chat",
    "usage": {
        "completion_tokens": 3,
        "prompt_tokens": 64,
        "total_tokens": 67
    }
}
Copy