커뮤니티 · 공지사항

공지사항

공지

2026학년도 부트캠프 고급과정 LLM API 사용법

작성자 전수빈게시일 2026.07.09조회수 33

교내 LLM API 사용법

컴퓨터소프트웨어학부에서 제공하는 교내 LLM API 사용 방법을 안내합니다. API Key 발급부터 실제 호출 예시까지 순서대로 따라 하시면 됩니다.


1. LLM Key 발급

교내 LLM을 사용하려면 먼저 DCUCODE 관리자에게 Key 생성을 요청해야 합니다.

문의처

⚠️ 주의사항

  • 발급된 키는 안전한 곳에 보관하세요. (발급 후 재확인 불가)

  • 키를 분실하면 재발급을 받아야 합니다.

  • 키가 유출된 경우 관리자에게 폐기 요청 후 재발급 받으세요.

API_KEY 예시

dcu_llm_1234567890abcdef

2. 사용 가능한 모델 확인

호출에 사용할 수 있는 모델 목록은 아래 curl 명령으로 확인할 수 있습니다.

bash

curl -X GET "https://code.cu.ac.kr/llm/v1/models" \
    -H "Authorization: Bearer <API_KEY>"

응답으로 받은 모델명을 이후 chat/completions 요청의 model 필드에 넣어 사용하면 됩니다.


3. LLM 호출 방법

채팅 완성(chat completions) 요청은 다음 엔드포인트로 보냅니다.

항목

Method / URL

POST https://code.cu.ac.kr/llm/v1/chat/completions

Authorization

Bearer <API_KEY>

Content-Type

application/json

요청 본문(Request Body) 예시

json

{
    "model": "Qwen/Qwen3.5-35B-A3B-FP8",
    "messages": [
      { "role": "system", "content": "You are a helpful assistant." },
      { "role": "user", "content": "안녕하세요. 사용법 알려줘." }
    ],
    "temperature": 0.7,
    "stream": false
}
  • model : 2단계에서 확인한 사용 가능한 모델명

  • messages : system / user 역할별 대화 메시지

  • temperature : 응답의 다양성 조절 (예: 0.7)

  • stream : 스트리밍 응답 여부


4. LLM 호출 예시

아래는 curl을 이용한 전체 호출 예시입니다.

bash

curl -X POST "https://code.cu.ac.kr/llm/v1/chat/completions" \
    -H "Authorization: Bearer <API_KEY>" \
    -H "Content-Type: application/json" \
    -d '{
      "model":"Qwen/Qwen3.5-35B-A3B-FP8",
      "messages":[{"role":"user","content":"안녕"}],
      "stream":false
    }'

스트리밍 응답

"stream": true 로 설정하면 응답이 스트리밍(streaming) 방식으로 전달됩니다. 생성되는 토큰을 실시간으로 받아 처리하고 싶을 때 사용하세요.


5. 스트리밍(Streaming) 응답

요청 본문에서 "stream": true 로 설정하면 응답이 스트리밍 방식으로 전달됩니다. 전체 응답이 완성될 때까지 기다리지 않고, 생성되는 토큰을 실시간으로 받아 처리하고 싶을 때 사용합니다. (예: 챗봇 UI에서 답변이 한 글자씩 출력되는 효과)

요청 예시

bash

curl -X POST "https://code.cu.ac.kr/llm/v1/chat/completions" \
    -H "Authorization: Bearer <API_KEY>" \
    -H "Content-Type: application/json" \
    -d '{
      "model":"Qwen/Qwen3.5-35B-A3B-FP8",
      "messages":[{"role":"user","content":"안녕"}],
      "stream":true
    }'

응답 형태 (SSE)

stream: true 일 때 응답은 text/event-stream 형식으로, data: 로 시작하는 청크(chunk)가 순차적으로 전달됩니다. 각 청크의 delta.content 에 생성된 토큰 조각이 담기며, 마지막에 data: [DONE] 으로 종료됩니다.

data: {"choices":[{"delta":{"content":"안녕"}}]}

data: {"choices":[{"delta":{"content":"하세요"}}]}

data: {"choices":[{"delta":{"content":"!"}}]}

data: [DONE]

Python 처리 예시

python

import requests, json

resp = requests.post(
    "https://code.cu.ac.kr/llm/v1/chat/completions",
    headers={
        "Authorization": "Bearer <API_KEY>",
        "Content-Type": "application/json",
    },
    json={
        "model": "Qwen/Qwen3.5-35B-A3B-FP8",
        "messages": [{"role": "user", "content": "안녕"}],
        "stream": True,
    },
    stream=True,
)

for line in resp.iter_lines():
    if not line:
        continue
    line = line.decode("utf-8")
    if not line.startswith("data:"):
        continue
    data = line[len("data:"):].strip()
    if data == "[DONE]":
        break
    chunk = json.loads(data)
    delta = chunk["choices"][0]["delta"].get("content", "")
    print(delta, end="", flush=True)

참고

  • stream 을 생략하거나 false 로 두면 응답 전체가 완성된 후 한 번에 JSON으로 반환됩니다. (앞선 3·4단계 예시 참고)

  • 스트리밍은 응답 지연을 줄여 사용자 체감 속도를 높이지만, 클라이언트에서 청크를 이어 붙이는 처리가 필요합니다.