주요 하이라이트
Novita AI가 DeepSeek R1 Turbo 를 출시하여 **3배 더 빠른 처리량 ** 과 **한정 기간 60% 할인 ** 을 제공합니다. 또한 이 버전은 함수 호출(function calling) 을 완벽히 지원합니다.
성능을 테스트하고 싶다면, Novita AI Playground에서 바로 무료 체험을 시작하세요!

함수 호출이란 무엇인가요?
함수 호출은 대규모 언어 모델(LLM)이 외부 시스템 및 코드와 구조화된 방식으로 상호작용할 수 있게 해주는 강력한 기능입니다. 텍스트 생성 외에도 함수 호출을 지원하는 LLM은 특정 작업이 필요할 때 이를 인식하고 필요한 매개변수를 생성하여 실제 작업을 실행할 수 있습니다. 이를 통해 AI 모델이 더욱 동적이고 실용적으로 변하며, 외부 도구 및 API와의 원활한 통합이 가능해집니다.
함수 호출은 어떻게 작동하며 어떤 문제를 해결할 수 있나요?
이 과정은 간단하고 구조화된 흐름을 따릅니다:
- 사용자가 LLM에 요청을 보냅니다.
- LLM이 요청을 분석하고 함수 호출이 필요한지 판단합니다.
- 필요한 경우 LLM이 적절한 함수에 대한 구조화된 JSON 호출(함수 이름 및 매개변수 포함)을 생성합니다.
- 애플리케이션이 이 호출을 받아 함수를 실행합니다.
- 결과가 LLM으로 다시 전송됩니다.
- LLM이 결과를 사용하여 사용자에게 최종 응답을 생성합니다.
이 과정은 다단계 또는 복잡한 작업을 위해 반복될 수 있습니다. 도구(함수)는 이름, 설명, 매개변수를 지정하는 JSON 스키마와 함께 정의되어야 합니다. 추가 검증을 위해 Pydantic 모델을 사용하여 타입 안전성을 강화할 수 있습니다.
함수 호출은 LLM의 기능을 확장하여 실제 사용 사례를 많이 해결합니다:
- 데이터 검색: 언어 쿼리를 API 호출로 변환하여 실시간 데이터를 가져옵니다 (예: “최근 주문 내역이 뭐야?”).
- 작업 실행: 특정 작업을 수행합니다 (예: "회의 일정 잡아줘"가 캘린더 API를 트리거).
- 계산: 복리 계산이나 통계 분석과 같은 계산이나 연산을 처리합니다.
- 데이터 파이프라인: 복잡한 워크플로우를 위해 함수를 체인으로 연결합니다 (예: 데이터 가져오기 → 처리 → 저장).
- UI/UX 통합: 지도 마커나 차트와 같은 인터페이스 업데이트를 트리거합니다.
- 대화형 에이전트: 챗봇이 관련 응답(예: 날씨 업데이트)을 위해 API를 호출할 수 있게 합니다.
- 자연어 이해: 텍스트를 구조화된 데이터로 변환하거나 정보를 추출합니다 (예: 감정 분석, 개체명 인식).

Novita AI를 통해 DeepSeek R1 함수 호출 사용하는 방법
Novita AI는 각 LLM에 대한 지원 기능 설명을 제공하며, 콘솔 및 문서에서 직접 확인할 수 있습니다.


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 = "deepseek/deepseek_r1"
- 호출할 함수 정의
다음으로 모델이 호출할 수 있는 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'}
자주 묻는 질문
어떤 유형의 함수를 호출할 수 있나요?
애플리케이션에서 실행할 수 있는 거의 모든 함수를 정의할 수 있으며, LLM이 데이터베이스, API 및 내부 로직과 상호작용할 수 있습니다.
함수 호출이 실제로 코드를 실행하나요?
아니요, LLM이 함수를 호출하기로 결정하면 함수 이름과 필요한 인수를 포함하는 구조화된 JSON 객체만 출력합니다.
DeepSeek R1은 함수 호출을 지원하나요?
네! Novita AI가 DeepSeek R1 Turbo 를 출시하여 **3배 더 빠른 처리량 ** 과 **한정 기간 20% 할인 ** 을 제공합니다. 또한 이 버전은 함수 호출 을 완벽히 지원합니다.
Novita AI는 AI 야망을 실현하는 올인원 클라우드 플랫폼입니다. 통합 API, 서버리스, GPU 인스턴스 — 비용 효율적인 도구를 제공합니다. 인프라 걱정 없이 무료로 시작하여 AI 비전을 현실로 만드세요.
