본문으로 건너뛰기

Chat Completions

iwinv API의 핵심 엔드포인트로, OpenAI chat/completions 형식과 완전히 호환됩니다.
iwinv, Google Gemini, OpenAI, Anthropic Claude 모델 모두 이 엔드포인트로 호출합니다.

엔드포인트

POST https://ai-api.iwinv.kr/v1/chat/completions

요청 파라미터

파라미터타입필수설명
modelstring사용할 모델 ID
messagesarray대화 메시지 배열
streamboolean스트리밍 여부. 기본값 false
max_tokensinteger최대 생성 토큰 수
temperaturenumber응답 다양성 (0.0 ~ 2.0). 기본값 1.0
top_pnumbernucleus sampling 임계값

기본 요청

from openai import OpenAI
import os

client = OpenAI(
api_key=os.environ["IWINV_API_KEY"],
base_url="https://ai-api.iwinv.kr/v1"
)

response = client.chat.completions.create(
model="gemma4-26b",
messages=[
{"role": "system", "content": "당신은 친절한 AI 어시스턴트입니다."},
{"role": "user", "content": "iwinv 클라우드에 대해 알려주세요."}
],
max_tokens=512,
temperature=0.7
)

print(response.choices[0].message.content)

멀티턴 대화

이전 대화 내용을 messages 배열에 함께 전달하면 문맥을 유지한 대화가 가능합니다.

messages = [
{"role": "system", "content": "당신은 친절한 AI 어시스턴트입니다."}
]

# 1번째 대화
messages.append({"role": "user", "content": "제 이름은 김철수입니다."})
response = client.chat.completions.create(model="gemma4-26b", messages=messages)
answer = response.choices[0].message.content
messages.append({"role": "assistant", "content": answer})

# 2번째 대화 — 이전 문맥 유지
messages.append({"role": "user", "content": "제 이름이 뭐라고 했죠?"})
response = client.chat.completions.create(model="gemma4-26b", messages=messages)
print(response.choices[0].message.content)
# → "김철수라고 하셨습니다."

스트리밍 응답

stream=True 설정 시 응답을 토큰 단위로 실시간 수신합니다.

with client.chat.completions.stream(
model="gemma4-26b",
messages=[{"role": "user", "content": "iwinv를 소개해주세요."}]
) as stream:
for chunk in stream:
content = chunk.choices[0].delta.content
if content:
print(content, end="", flush=True)

Thinking 모드 (추론 모델)

Thinking 배지가 있는 모델은 답변 전 내부 추론 과정을 거칩니다.
복잡한 수학, 코딩, 논리 문제에서 더 높은 정확도를 보입니다.

response = client.chat.completions.create(
model="gemma4-31b", # Thinking 지원 모델
messages=[
{"role": "user", "content": "피보나치 수열의 10번째 값을 구하고 과정을 설명해주세요."}
]
)
print(response.choices[0].message.content)

Thinking 모델 목록: gemma4-31b, qwen3.6-27b, gemini-3.1-pro, gemini-2.5-pro, gemini-2.5-flash, gpt-5.5, gpt-5.5-pro, gpt-5.4-pro, gpt-5, opus-4.7, opus-4.6, opus-4.5, opus-4.1, sonnet-4.6, sonnet-4.5

Vision (이미지 입력)

Vision 배지가 있는 모델은 이미지를 입력으로 받을 수 있습니다.

response = client.chat.completions.create(
model="gemma4-26b",
messages=[
{
"role": "user",
"content": [
{
"type": "image_url",
"image_url": {"url": "https://example.com/image.jpg"}
},
{
"type": "text",
"text": "이 이미지를 설명해주세요."
}
]
}
]
)
print(response.choices[0].message.content)

Function Calling (도구 호출)

Tools 배지가 있는 모델은 Function Calling을 지원합니다.

tools = [
{
"type": "function",
"function": {
"name": "get_weather",
"description": "특정 도시의 현재 날씨를 조회합니다.",
"parameters": {
"type": "object",
"properties": {
"city": {
"type": "string",
"description": "도시 이름"
}
},
"required": ["city"]
}
}
}
]

response = client.chat.completions.create(
model="gemma4-26b",
messages=[{"role": "user", "content": "서울 날씨 알려줘"}],
tools=tools,
tool_choice="auto"
)
print(response.choices[0].message.tool_calls)