NVIDIA NIM API 무료로 쓰기 — mistral-nemotron으로 뉴스 수집봇 만든 방법
NVIDIA가 강력한 LLM API를 무료 크레딧으로 제공한다. 사용 방법과 로컬 Ollama 대비 차이점.
NVIDIA NIM이 뭔가
NVIDIA가 운영하는 LLM API 서비스입니다. 고성능 모델들을 API로 제공합니다.
- mistral-nemotron: Mistral과 NVIDIA가 만든 모델
- llama 시리즈: Meta의 Llama 모델들
- 기타: 다양한 오픈소스 모델
처음 가입하면 크레딧을 줍니다. 이걸로 꽤 많이 테스트할 수 있습니다.
가입 및 API 키 발급
build.nvidia.com접속- 계정 생성 (NVIDIA 계정)
- API Keys → Generate Key
- 발급된 키를 안전한 곳에 저장 (다시 볼 수 없음)
API 사용 — OpenAI 호환
NIM API는 OpenAI API와 호환됩니다. openai 패키지를 그대로 씁니다.
from openai import OpenAI
client = OpenAI(
base_url="https://integrate.api.nvidia.com/v1",
api_key="nvapi-xxxxxxxxxxxxxxxxxxxx" # NIM API 키
)
response = client.chat.completions.create(
model="mistralai/mistral-nemotron",
messages=[{
"role": "user",
"content": "다음 뉴스를 한 줄로 요약해줘: ..."
}],
max_tokens=200,
temperature=0.3
)
print(response.choices[0].message.content)
JARVIS에서 어떻게 쓰나
뉴스봇 (네모봇)이 NIM API를 씁니다.
흐름:
1. 구글 뉴스 RSS 수집
2. 기사 제목 + 본문 추출
3. mistral-nemotron으로 요약
4. Telegram 그룹으로 전송
5. Pearl Finder로 브릿지 (nimbot_to_pearl.py)
30분마다 자동 실행됩니다.
로컬 Ollama 대비 비교
| NVIDIA NIM | 로컬 Ollama | |
|---|---|---|
| 속도 | 빠름 (NVIDIA H100) | 보통 (RTX 5060 Ti) |
| 비용 | 크레딧 소진 후 유료 | 전기세만 |
| 인터넷 | 필요 | 불필요 |
| 프라이버시 | 데이터 외부 전송 | 로컬만 |
| 모델 선택 | NIM 지원 모델만 | Ollama 지원 모델 |
뉴스 요약처럼 빠른 처리가 필요한 작업은 NIM이 좋습니다. 민감한 데이터 처리나 비용 절감은 로컬.
크레딧 관리
처음 받은 크레딧이 생각보다 빨리 소진됩니다.
절약 방법:
max_tokens를 필요한 만큼만 (200~500)temperature낮게 (0.1~0.3) — 불필요한 토큰 생성 줄임- 짧은 프롬프트
- 캐싱: 같은 입력이면 API 재호출 안 하도록
import hashlib
import json
from pathlib import Path
CACHE_DIR = Path("D:/bots/cache")
def ask_nim_cached(prompt: str) -> str:
# 캐시 키 생성
cache_key = hashlib.md5(prompt.encode()).hexdigest()
cache_file = CACHE_DIR / f"{cache_key}.json"
# 캐시 히트
if cache_file.exists():
return json.loads(cache_file.read_text())["response"]
# API 호출
response = ask_nim(prompt)
# 캐시 저장
cache_file.write_text(json.dumps({"response": response}))
return response
문제: 크레딧 소진 후
크레딧이 다 떨어지면 유료입니다.
NIM 봇이 크레딧 부족 오류를 내기 시작하면:
옵션 A: 결제
옵션 B: 로컬 모델로 교체 (mistral-nemotron → qwen3:14b on Ollama)
현재는 크레딧이 있을 때 NIM, 부족하면 자동으로 Ollama 폴백하도록 했습니다:
def ask_llm(prompt: str) -> str:
try:
return ask_nim(prompt)
except Exception as e:
if "quota" in str(e).lower() or "credit" in str(e).lower():
return ask_ollama(prompt, model="qwen3:14b")
raise
현재 상태
뉴스봇이 30분마다 뉴스를 수집하고 요약합니다. NIM API 크레딧이 있으면 NIM, 없으면 Ollama 폴백.
뉴스 요약 품질은 NIM(mistral-nemotron)이 더 낫습니다. 한국어도 잘 처리합니다.