- 카테고리:
문자열 및 이진 함수 (AI 함수)
AGENT_RUN(SNOWFLAKE.CORTEX)¶
에이전트 오브젝트 없이 :doc:`Cortex Agent </user-guide/snowflake-cortex/cortex-agents>`를 실행하고 응답을 JSON으로 반환합니다.
이 함수를 사용하면 먼저 에이전트 오브젝트를 생성하지 않고도 Cortex Agent와 직접 상호 작용할 수 있습니다. 요청 본문에 오케스트레이션 모델 및 도구를 포함한 구성을 제공합니다.
참고
SNOWFLAKE.CORTEX.AGENT_RUN`은 :doc:`Cortex Agent 실행 REST API </user-guide/snowflake-cortex/cortex-agents-run> 주변의 유틸리티 래퍼입니다. 대부분의 애플리케이션 통합에서 Snowflake는 **스트리밍 REST API**를 직접 호출하는 것을 권장합니다.
구문¶
SNOWFLAKE.CORTEX.AGENT_RUN( <request_body> )
인자¶
request_body에이전트에 보낼 JSON 요청 본문입니다. 이 값은 문자열이어야 합니다(예:
$$...$$리터럴).요청 본문에서 지원되는 필드는 다음과 같습니다.
필드
타입
설명
thread_id정수
대화의 스레드 ID입니다. thread_id가 사용되는 경우 parent_message_id도 전달해야 합니다.
parent_message_id정수
스레드에 있는 상위 메시지의 ID입니다. 이것이 첫 번째 메시지인 경우 parent_message_id는 0이어야 합니다.
messages:ref:`label_snowflake_agent_run_Message`의 배열
thread_id 및 parent_message_id가 요청에서 전달되는 경우 메시지의 대화에는 현재 사용자 메시지가 포함됩니다. 그렇지 않으면 메시지에는 대화 기록과 현재 메시지가 포함됩니다. 메시지에는 사용자 쿼리와 어시스턴트 응답이 모두 시간순으로 포함됩니다.
streamboolean
스트리밍 응답(
text/event-stream)을 반환할지 또는 비 스트리밍 JSON 응답(application/json)을 반환할지 여부입니다. True인 경우 응답은 서버 전송 이벤트로 스트리밍됩니다. False인 경우 응답은 JSON으로 반환됩니다.tool_choice에이전트가 상호 작용 중에 도구를 선택하고 사용하는 방법을 구성합니다. 도구 사용이 자동인지, 필수인지 또는 특정 도구를 사용해야 하는지를 제어합니다.
models에이전트의 모델 구성입니다. 오케스트레이션 모델을 포함합니다(예: clade-4-sonnet). 입력하지 않으면 모델이 자동으로 선택됩니다. 현재
오케스트레이션단계에만 사용 가능합니다.instructions응답, 오케스트레이션, 시스템, 샘플 질문 등 에이전트의 동작에 대한 지침입니다.
orchestration예산 제약 조건(예: 초, 토큰)을 포함한 오케스트레이션 구성입니다.
tools:ref:`label_snowflake_agent_run_Tool`의 배열
에이전트가 사용할 수 있는 도구 목록입니다. 각 도구에는 유형, 이름, 설명, 입력 스키마가 있는 tool_spec이 포함됩니다. 도구의 tool_resources에 해당 구성이 있을 수 있습니다.
tool_resources:ref:`label_snowflake_agent_run_ToolResource`의 맵
도구 배열에서 참조되는 각 도구에 대한 구성입니다. 키는 해당 도구의 이름과 일치해야 합니다.
예
{ "thread_id": 0, "parent_message_id": 0, "messages": [ { "role": "user", "content": [ { "type": "text", "text": "What is the total revenue for 2023?" } ] } ], "stream": false, "tool_choice": { "type": "auto", "name": [ "analyst_tool", "search_tool" ] }, "models": { "orchestration": "claude-4-sonnet" }, "instructions": { "response": "You will respond in a friendly but concise manner", "orchestration": "For any query related to revenue we should use Analyst; For all policy questions we should use Search", "system": "You are a friendly agent ..." }, "orchestration": { "budget": { "seconds": 30, "tokens": 16000 } }, "tools": [ { "tool_spec": { "type": "generic", "name": "get_revenue", "description": "Fetch the delivery revenue for a location.", "input_schema": { "type": "object", "properties": { "location": { "type": "string", "description": "The city and state, e.g. San Francisco, CA" } } }, "required": [ "location" ] } } ], "tool_resources": { "get_revenue": { "type": "function", "execution_environment": { "type": "warehouse", "warehouse": "MY_WH" }, "identifier": "DB.SCHEMA.UDF" } } }
중요
stream 필드는 무시됩니다. 비 스트리밍 응답은 항상 반환됩니다.
반환¶
에이전트의 응답이 포함된 JSON 문자열을 반환합니다.
액세스 제어 요구 사항¶
에이전트를 실행하려면 Cortex Agent에 액세스할 수 있는 역할을 사용해야 합니다. 자세한 내용은 액세스 제어 요구 사항 섹션을 참조하십시오.
사용법 노트¶
예¶
에이전트 실행 및 응답 JSON 구문 분석:
SELECT
TRY_PARSE_JSON(
SNOWFLAKE.CORTEX.AGENT_RUN(
$${
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "What is the total revenue for 2025?"
}
]
}
],
"models": {
"orchestration": "claude-4-sonnet"
}
}$$
)
) AS resp;
반환 값 샘플:
{
"content": [
{
"text": "The total revenue for 2025 was $100,000.",
"type": "text"
}
],
"metadata": {
"usage": {
"tokens_consumed": [
{
"context_window": 200000,
"input_tokens": {
"cache_read": 0,
"cache_write": 0,
"total": 67,
"uncached": 67
},
"model_name": "claude-4-sonnet",
"output_tokens": {
"total": 38
}
}
]
}
},
"role": "assistant"
}