- ์นดํ ๊ณ ๋ฆฌ:
๋ฌธ์์ด ๋ฐ ์ด์ง ํจ์ (๋๊ท๋ชจ ์ธ์ด ๋ชจ๋ธ)
COMPLETE (SNOWFLAKE.CORTEX)ยถ
์ฐธ๊ณ
AI_COMPLETE ๋ ์ด ํจ์์ ์ต์ ๋ฒ์ ์ ๋๋ค. ์ต์ ๊ธฐ๋ฅ์ ๊ฒฝ์ฐ AI_COMPLETE ๋ฅผ ์ฐธ์กฐํ์ญ์์ค. COMPLETE (SNOWFLAKE.CORTEX) ๋ฅผ ๊ณ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
ํ๋กฌํํธ๊ฐ ๋ํ๋๋ฉด ์ง์๋๋ ์ธ์ด ๋ชจ๋ธ ์ค์์ ์ ํํ์ฌ ์๋ต(์์ฑ)์ ์์ฑํฉ๋๋ค.
์ฐธ๊ณ
์ด ํจ์์ ๋ฒ ๋ฆฌ์ธํธ๋ฅผ ์ฌ์ฉํ๋ฉด COMPLETE ์์ ์ด๋ฏธ์ง์ ๋ํ ์๋ต์ ์์ฑํ ์ ์์ต๋๋ค.
์ด๋ฏธ์ง ๋น๊ตํ๊ธฐ
์ด๋ฏธ์ง ์บก์ ํ๊ธฐ
์ด๋ฏธ์ง ๋ถ๋ฅํ๊ธฐ
์ด๋ฏธ์ง์์ ์ํฐํฐ ์ถ์ถํ๊ธฐ
๊ทธ๋ํ์ ์ฐจํธ์ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ์ฌ ์ง๋ฌธ์ ๋ตํ๊ธฐ
์์ธํ ๋ด์ฉ์ COMPLETE (SNOWFLAKE.CORTEX) (๋ฉํฐ๋ชจ๋ฌ) ์น์ ์ ์ฐธ์กฐํ์ญ์์ค.
๊ตฌ๋ฌธยถ
SNOWFLAKE.CORTEX.COMPLETE(
<model>, <prompt_or_history> [ , <options> ] )
์ธ์ยถ
ํ์:
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_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) ๋ ๊ฒฐ์ ์ ์ด๊ณ ํฌ์ปค์ค๊ฐ ๋ง์ถฐ์ง ์ถ๋ ฅ์ด ์์ฑ๋ฉ๋๋ค.๊ธฐ๋ณธ๊ฐ: 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 ์น์ ์ ์ฐธ์กฐํ์ญ์์ค.
options
์ธ์๋ฅผ ์ง์ ํ๋ฉด ๋น ์ค๋ธ์ ํธ({}
)์ธ ๊ฒฝ์ฐ์๋prompt
์ธ์์ ํด์ ๋ฐฉ์๊ณผ ์๋ต์ ํ์ ์ง์ ๋ฐฉ์์ ์ํฅ์ ์ค๋๋ค.
๋ฐํยถ
options
์ธ์๋ฅผ ์ง์ ํ์ง ์์ผ๋ฉด ์๋ต์ด ํฌํจ๋ ๋ฌธ์์ด์ ๋ฐํํฉ๋๋ค.
options
์ธ์๊ฐ ์ฃผ์ด์ง๊ณ ์ด ์ค๋ธ์ ํธ์ response_format
ํค๊ฐ ํฌํจ๋์ด ์์ผ๋ฉด ์ง์ ๋ JSON ์คํค๋ง๋ฅผ ์ค์ํ๋ JSON ์ค๋ธ์ ํธ์ ๋ฌธ์์ด ํํ์ ๋ฐํํฉ๋๋ค.
options
์ธ์๊ฐ ์ฃผ์ด์ง๊ณ ์ด ์ค๋ธ์ ํธ์ response_format
ํค๊ฐ ์๋ ๊ฒฝ์ฐ ๋ค์ ํค๊ฐ ํฌํจ๋ 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('snowflake-arctic', 'What are large language models?');
ํ ์ด๋ธ ์ด์ ์๋ตยถ
๋ค์ ์์์๋ ํ
์ด๋ธ์ ๊ฐ ํ์์ ์๋ต์ ์์ฑํฉ๋๋ค(์ด ์์์ content
๋ reviews
ํ
์ด๋ธ์ ์ด์). reviews
ํ
์ด๋ธ์๋ ์ฌ์ฉ์๊ฐ ์ ์ถํ ๋ฆฌ๋ทฐ ํ
์คํธ๊ฐ ํฌํจ๋ review_content
๋ผ๋ ์ด์ด ํฌํจ๋ฉ๋๋ค. ์ฟผ๋ฆฌ๋ ๊ฐ ๋ฆฌ๋ทฐ์ ๋ํ ๋นํ์ ๋ฐํํฉ๋๋ค.
SELECT SNOWFLAKE.CORTEX.COMPLETE(
'openai-gpt4.1',
CONCAT('Critique this review in bullet points: <review>', content, '</review>')
) FROM reviews LIMIT 10;
ํ
์ด ์์ ํ์๋ ๊ฒ์ฒ๋ผ, ํ๋กฌํํธ์ ํ๊ทธ ์ง์ ์ ์ฌ์ฉํ์ฌ ์์ฑ๋๋ ์๋ต์ ์ข ๋ฅ๋ฅผ ์ ์ดํ ์ ์์ต๋๋ค. ํ์ LLaMA 2 ํ๋กฌํํธ ํ์ ๊ฐ์ด๋ ๋ฅผ ์ฐธ์กฐํ์ญ์์ค.
์จ๋ ๋ฐ ํ ํฐ ์ ์ดํ๊ธฐยถ
์ด ์์์๋ ํจ์์ options
์ธ์๋ฅผ ์ฌ์ฉํ์ฌ ๋จ์ผ ์๋ต์์ ์ถ๋ก ํ์ดํผ ๋งค๊ฐ ๋ณ์๋ฅผ ์ ์ดํ๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ค๋๋ค. ์ด ํ์์ ์ฌ๋ฌ ํ๋กฌํํธ์ ์๋ต์ ์ง์ํ๋ฏ๋ก ์ด ํ์์ ํจ์์์๋ ํ๋กฌํํธ๊ฐ ๋ฐฐ์ด๋ก ์ ๊ณต๋์ด์ผ ํฉ๋๋ค.
SELECT SNOWFLAKE.CORTEX.COMPLETE(
'claude-4-sonnet ',
[
{
'role': 'user',
'content': 'how does a snowflake get its unique pattern?'
}
],
{
'temperature': 0.7,
'max_tokens': 10
}
);
์๋ต์ ์ธ์ด ๋ชจ๋ธ์ ๋ฉ์์ง์ ๊ธฐํ ์ ๋ณด๋ฅผ ํฌํจํ๋ 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
}
}
์์ ์ ์ดยถ
์ด ์์์๋ Cortex Guard guardrails
์ธ์๋ฅผ ์ฌ์ฉํ์ฌ ์ธ์ด ๋ชจ๋ธ์์ ์์ ํ์ง ์๊ณ ์ ํดํ ์๋ต์ ํํฐ๋งํ๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ค๋๋ค.
SELECT SNOWFLAKE.CORTEX.COMPLETE(
'mistral-large2',
[
{
'role': 'user',
'content': <'Prompt that generates an unsafe response'>
}
],
{
'guardrails': true
}
);
์๋ต์ JSON ์ค๋ธ์ ํธ์ด๋ฉฐ, ์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
{
"choices": [
{
"messages": "Response filtered by Cortex Guard"
}
],
"created": 1718882934,
"model": "mistral-7b",
"usage": {
"completion_tokens": 402,
"prompt_tokens": 93,
"guardrails _tokens": 677,
"total_tokens": 1172
}
}
์์คํ ํ๋กฌํํธ ์ ๊ณตํ๊ธฐยถ
์ด ์์์๋ ์ํ ๋ฆฌ๋ทฐ์ ๋ํ ๊ฐ์ ๋ถ์์ ์ ๊ณตํ๊ธฐ ์ํด ์์คํ
ํ๋กฌํํธ๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ค๋๋ค. ์ฌ๊ธฐ์ prompt
์ธ์๋ ๊ฐ๊ฐ ์ ์ ํ role
๊ฐ์ ๊ฐ๋ ์ค๋ธ์ ํธ๋ก ๊ตฌ์ฑ๋ ๋ฐฐ์ด์
๋๋ค.
SELECT SNOWFLAKE.CORTEX.COMPLETE(
'llama3.1-70b',
[
{'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;
์๋ต์ ์ธ์ด ๋ชจ๋ธ์ ์๋ต๊ณผ ๊ธฐํ ์ ๋ณด๋ฅผ ํฌํจํ๋ JSON ์ค๋ธ์ ํธ์ ๋๋ค.
{
"choices": [
{
"messages": " Positive"
}
],
"created": 1708479449,
"model": "llama2-70b-chat",
"usage": {
"completion_tokens": 3,
"prompt_tokens": 64,
"total_tokens": 67
}
}
๋ฒ์ ๊ณ ์งยถ
๋ค์ ๊ณต์ง๋ Cortex COMPLETE ์ ํ ์ถ๋ ฅ ๊ธฐ๋ฅ์๋ง ์ ์ฉ๋ฉ๋๋ค.
Snowflake ๋ชจ๋ธ ๋ฐ Service Flow-Down ์ฝ๊ด ํ์ด์ง์์ ์ ๊ณต๋๋ ๋ชจ๋ธ์ ์ฌ์ฉ์ ์ฌ๊ธฐ์ ๋ช ์๋ ์ฝ๊ด์ ์ ์ฉ์ ๋ฐ์ต๋๋ค. ์ ๋ ฅ ๋ฐ ์ถ๋ ฅ์ ๋ฐ์ดํฐ ๋ถ๋ฅ๋ ๋ค์ ํ ์ด๋ธ๊ณผ ๊ฐ์ต๋๋ค.
์ ๋ ฅ ๋ฐ์ดํฐ ๋ถ๋ฅ |
์ถ๋ ฅ ๋ฐ์ดํฐ ๋ถ๋ฅ |
์ง์ |
---|---|---|
์ฌ์ฉ ๋ฐ์ดํฐ |
๊ณ ๊ฐ ๋ฐ์ดํฐ |
ํฌํจ๋๋ AI ๊ธฐ๋ฅ |
๋๋จธ์ง COMPLETE ๊ธฐ๋ฅ์ ๋ํ ๋ฒ์ ๊ณ ์ง ์ฌํญ์ Snowflake AI ๋ฐ ML ์น์ ์ ์ฐธ์กฐํ์ญ์์ค.
์ ํ ์ฌํญยถ
Snowflake Cortex ํจ์๋ ๋์ ํ ์ด๋ธ์ ์ง์ํ์ง ์์ต๋๋ค.