함수 호출 및 구조적 출력을 즉시 경험하세요

함수 호출 및 구조적 출력을 즉시 경험하세요

최신 AI 모델은 단순한 텍스트 생성 이상으로 진화하고 있습니다. 함수 호출 ** 과 ** 구조적 출력 ** 과 같은 기능을 통해 개발자는 이제 더 스마트하고 신뢰할 수 있는 애플리케이션을 구축할 수 있습니다. Novita AI 에서는 이제 콘솔 내에서 모델이 이러한 기능을 지원하는지 ** 빠르게 확인 할 수 있어 통합이 더욱 빠르고 효율적입니다.

함수 호출이란 무엇인가?

함수 호출은 AI, 특히 대규모 언어 모델(LLM)에서 모델이 외부 함수, 도구 또는 API와 상호작용하여 텍스트 응답 생성 이상의 특정 작업을 수행할 수 있게 하는 기능입니다. 모델은 단순히 텍스트를 생성하는 대신, 사용자 프롬프트에 따라 특정 함수를 호출해야 하는 시점을 식별하고, 올바른 함수를 결정하며, 해당 함수에 필요한 매개변수를 지정합니다. 함수의 실제 실행은 모델이 아닌 외부 시스템이나 애플리케이션에서 처리됩니다.

https://www.youtube.com/watch?v=aqdWSYWC\_LI

함수 호출은 어떻게 작동하나요?

함수 호출을 통해 AI 모델은 대화 중에 외부 도구, API 또는 내부 함수와 상호작용할 수 있습니다. 모델은 단순히 텍스트를 생성하는 대신 함수가 필요할 때를 인식 ** 하고, ** 구조화된 인수를 사용하여 올바른 함수 호출을 생성 ** 하며, ** 실행하여 결과를 검색 할 수 있습니다. 이는 자연어 이해와 실제 행동 사이의 간극을 메워 모델이 실시간 데이터 가져오기, 워크플로우 관리, 시스템 작업 자동 트리거 등의 작업을 수행할 수 있게 합니다.

함수 호출의 장점은 무엇인가요?

  • 실제 세계와의 상호작용: 모델이 정보를 제공할 뿐만 아니라 작업을 트리거할 수 있습니다.
  • 자동화: 데이터 검색, 예약, 양식 제출 등의 프로세스를 간소화합니다.
  • 구조화된 이해: 텍스트 생성에만 의존하지 않고 출력을 사전 정의된 형식으로 구성하여 오류를 줄입니다.
  • 향상된 사용 사례: 더 안정적이고 효율적인 동적 앱, 어시스턴트, 시스템을 구축합니다.
  • 개발자 효율성: 함수 호출을 지원하는 모델을 사전에 알면 무거운 수정 없이도 통합을 더 빠르게 계획할 수 있습니다.

구조적 출력이란 무엇인가?

구조적 출력은 대규모 언어 모델(LLM)이 자유 형식 텍스트 대신 사전 정의된 특정 형식을 따르는 응답을 생성할 수 있는 능력을 의미합니다. 이러한 출력은 일반적으로 JSON, XML, 채워진 템플릿 또는 표 데이터와 같은 기계가 읽을 수 있는 형식으로 제공되어 소프트웨어 시스템이나 워크플로우에 구문 분석, 검증 및 통합하기 쉽습니다.

https://youtu.be/NGEZsqEUpC0

구조적 출력은 어떻게 생성되나요?

  • 프롬프트 기법: 신중하게 구성된 프롬프트를 통해 모델이 원하는 형식으로 출력을 생성하도록 안내합니다.
  • 함수 호출 API: 보다 강력하게는 함수 호출 인터페이스를 사용하여 모델이 함수의 스키마를 엄격히 준수하는 인수를 반환하도록 하여 구조적 출력을 생성할 수 있습니다(예: strict: true 매개변수 설정).
  • FSM(유한 상태 기계) 가이드: 내부적으로 생성 과정을 제약하여 생성된 각 토큰이 출력 형식의 규칙을 따르도록 하여 구조 오류를 줄입니다.

사용 사례 및 장점

  • 이벤트 세부 정보, 사용자 정보 또는 쿼리 매개변수와 같은 비정형 텍스트에서 구조화된 데이터 추출.
  • 모델이 생성한 정확한 매개변수로 외부 API 또는 함수 트리거.
  • 일관되고 검증된 데이터 교환에 의존하는 복잡한 다단계 워크플로우 구축.
  • 모델 출력의 모호성을 줄여 챗봇, 데이터 추출, 자동화 시스템과 같은 애플리케이션의 신뢰성 향상.

함수 호출과 구조적 출력

항목 🛠️ 함수 호출 🗂️ 구조적 출력
목적 외부 함수 트리거 구조화된 정보 반환
지향점 작업 지향 정보 지향
출력 함수 이름 + 인수 사전 정의된 구조화된 데이터 (예: JSON)
예시 일기 예보를 위해 날씨 API 호출 일기 예보를 JSON 형식으로 반환
사용 시나리오 모델이 작업을 수행해야 할 때 작업 없이 깔끔하고 파싱 가능한 데이터가 필요할 때

Novita AI에서 함수 호출 및 구조적 출력을 확인하는 방법

1: Novita AI에 로그인

Novita AI 홈페이지에 접속하면 오른쪽 상단의 “Log In” 또는 “Get Started” 버튼을 클릭하세요. Google, GitHub, Hugging Face 또는 ** 이메일**로 간편하게 로그인할 수 있습니다.

log in

NOVITA AI LOG IN

지금 Novita AI 사용해보기!

콘솔에서 “Model API” 클릭!

로그인하면 Novita 콘솔 대시보드로 이동합니다. 상단에서 “Model API” 를 클릭하세요. 이 섹션에서는 사용 가능한 모든 모델 목록과 함께 ** 함수 호출 ** 및 ** 구조적 출력** 지원 여부를 포함한 상세 정보를 확인할 수 있습니다.

Step2: Click "Model API" in Console

원하는 모델을 선택하고 확인하세요!

관심 있는 모델을 찾아 클릭하면 오른쪽에 패널이 나타납니다. “Supported Capabilities” 아래에서 ** 함수 호출 ** 및 ** 구조적 출력** 지원 여부를 즉시 확인할 수 있습니다.

Step3: Choose your Model and Check it!

function calling on novita ai

Novita AI에서 함수 호출을 사용하는 방법

1. 클라이언트 초기화

먼저 Novita API 키를 사용하여 클라이언트를 초기화합니다.

from openai import OpenAI
import json

client = OpenAI(
    base_url="https://api.novita.ai/v3/openai",
    # Get the Novita AI API Key from: https://novita.ai/settings/key-management.
    api_key="<YOUR Novita AI API Key>",
)

model = "meta-llama/llama-4-maverick-17b-128e-instruct-fp8"
  • 호출할 함수 정의

다음으로, 모델이 호출할 수 있는 Python 함수를 정의합니다. 이 예시에서는 날씨 정보를 가져오는 함수입니다.

# Example function to simulate fetching weather data.
def get_weather(location):
    """Retrieves the current weather for a given location."""
    print("Calling get_weather function with location: ", location)
    # In a real application, you would call an external weather API here.
    # This is a simplified example returning hardcoded data.
    return json.dumps({"location": location, "temperature": "60 degrees Fahrenheit"})

2. 도구 및 사용자 메시지로 API 요청 구성

이제 Novita 엔드포인트에 API 요청을 생성합니다. 이 요청에는 모델이 사용할 수 있는 함수를 정의하는 tools 매개변수와 사용자 메시지가 포함됩니다.

tools = [
    {
        "type": "function",
        "function": {
            "name": "get_weather",
            "description": "Get weather of an location, the user shoud supply a location first",
            "parameters": {
                "type": "object",
                "properties": {
                    "location": {
                        "type": "string",
                        "description": "The city and state, e.g. San Francisco, CA",
                    }
                },
                "required": ["location"]
            },
        }
    },
]

messages = [
    {
        "role": "user",
        "content": "What is the weather in San Francisco?"
    }
]

# Let's send the request and print the response.
response = client.chat.completions.create(
    model=model,
    messages=messages,
    tools=tools,
)

# Please check if the response contains tool calls if in production.
tool_call = response.choices[0].message.tool_calls[0]
print(tool_call.model_dump())

3. 출력

{'id': '0', 'function': {'arguments': '{"location": "San Francisco, CA"}', 'name': 'get_weather'}, 'type': 'function'}

4. 함수 호출 결과로 응답하고 최종 답변 얻기

다음 단계는 함수 호출을 처리하고, get_weather 함수를 실행한 후 결과를 모델로 다시 보내 사용자에게 최종 응답을 생성하는 것입니다.

# Ensure tool_call is defined from the previous step
if tool_call:
    # Extend conversation history with the assistant's tool call message
    messages.append(response.choices[0].message)

    function_name = tool_call.function.name
    if function_name == "get_weather":
        function_args = json.loads(tool_call.function.arguments)
        # Execute the function and get the response
        function_response = get_weather(
            location=function_args.get("location"))
        # Append the function response to the messages
        messages.append(
            {
                "tool_call_id": tool_call.id,
                "role": "tool",
                "content": function_response,
            }
        )

    # Get the final response from the model, now with the function result
    answer_response = client.chat.completions.create(
        model=model,
        messages=messages,
        # Note: Do not include tools parameter here.
    )
    print(answer_response.choices[0].message)

5. 출력

{'id': '0', 'function': {'arguments': '{"location": "San Francisco, CA"}', 'name': 'get_weather'}, 'type': 'function'}

Novita AI에서 구조적 출력을 사용하는 방법

1. 클라이언트 초기화

먼저 Novita API 키를 사용하여 클라이언트를 초기화합니다.

from openai import OpenAI

client = OpenAI(
    base_url="https://api.novita.ai/v3/openai",
    # Get the Novita AI API Key from: https://novita.ai/settings/key-management.
    api_key="<YOUR Novita AI API Key>",
)

# Go to the [Models](https://novita.ai/models) page to see the models that support `Structured Outputs`.
model = "mistralai/mistral-7b-instruct"

2. JSON 스키마 정의

이 예시는 사용자 입력에서 지출 정보를 추출하기 위한 스키마를 생성합니다.

# Define system prompt for expense tracking.
system_prompt = """You are an expense tracking assistant. 
Extract expense information from the user's input and format it according to the provided schema."""

# Define JSON schema for structured response.
response_format = {
    "type": "json_schema",
    "json_schema": {
        "name": "expense_tracking_schema",
        "schema": {
            "type": "object",
            "properties": {
                "expenses": {
                    "type": "array",
                    "items": {
                        "type": "object",
                        "properties": {
                            "description": {
                                "type": "string",
                                "description": "Description of the expense"
                            },
                            "amount": {
                                "type": "number",
                                "description": "Amount spent in dollars"
                            },
                            "date": {
                                "type": "string",
                                "description": "When the expense occurred"
                            },
                            "category": {
                                "type": "string",
                                "description": "Category of expense (e.g., food, office, travel)"
                            }
                        },
                        "required": [
                            "description",
                            "amount"
                        ]
                    }
                },
                "total": {
                    "type": "number",
                    "description": "Total amount of all expenses"
                }
            },
            "required": [
                "expenses",
                "total"
            ],
        },
    },
}

3. 채팅 완료 API 요청

이제 Novita 엔드포인트에 채팅 완료 요청을 보냅니다. 이 요청에는 이전 단계에서 정의한 JSON 스키마를 포함하는 response_format 매개변수가 포함됩니다.

chat_completion = client.chat.completions.create(
    model=model,
    messages=[
        {
            "role": "system",
            "content": system_prompt,
        },
        {
            "role": "user",
            "content": """I spent $120 on dinner at an Italian restaurant last Friday with my colleagues.
Also bought office supplies for $45 on Monday.""",
        },
    ],
    max_tokens=1024,
    temperature=0.8,
    stream=False,
    response_format=response_format,
)

response_content = chat_completion.choices[0].message.content

# Parse and prettify the JSON
try:
    json_response = json.loads(response_content)
    prettified_json = json.dumps(json_response, indent=2)
    print(prettified_json)
except json.JSONDecodeError:
    print("Could not parse response as JSON. Raw response:")
    print(response_content)

4. 출력:

{
  "expenses": [
    {
      "date": "2023-03-17",
      "description": "Dinner at Italian restaurant",
      "amount": 120,
      "category": "Food & Dining"
    },
    {
      "date": "2023-03-13",
      "description": "Office supplies",
      "amount": 45,
      "category": "Office Supplies"
    }
  ],
  "total": 165
}

함수 호출과 구조적 출력은 AI 모델이 할 수 있는 작업의 범위를 크게 확장합니다. 워크플로우를 자동화하거나, 실시간 데이터를 가져오거나, 구조화된 정보를 추출해야 하는 경우 Novita AI는 요구 사항에 맞는 모델을 쉽게 찾을 수 있도록 해줍니다. Novita 콘솔 에서 모델을 살펴보고 지금 바로 더 스마트한 애플리케이션을 구축해 보세요!

자주 묻는 질문 (FAQ)

AI 모델에서 함수 호출이란 무엇인가요?

사용자 프롬프트를 기반으로 구조화된 함수 호출을 생성하여 모델이 외부 도구나 API를 트리거할 수 있도록 합니다.

구조적 출력이란 무엇인가요?

JSON과 같은 엄격한 기계가 읽을 수 있는 형식의 모델 응답으로, 쉽게 통합할 수 있습니다.

함수 호출과 구조적 출력은 어떻게 다른가요?

함수 호출은 작업 중심(예: 날씨 정보 가져오기)인 반면, 구조적 출력은 깔끔하고 형식화된 데이터를 반환하는 데 중점을 둡니다.

Novita AI는 AI 야망을 실현하는 올인원 클라우드 플랫폼입니다. 통합 API, 서버리스, GPU 인스턴스 — 필요한 비용 효율적인 도구를 제공합니다. 인프라를 제거하고, 무료로 시작하여 AI 비전을 현실로 만드세요.

추천 자료