
Perplexity Sonar API를 앱에 연동할 때, 처음엔 OpenAI 호환이라는 문구 하나에 기대가 컸다. base_url 하나만 바꾸면 된다는 설명이 많았고, 실제로 기본 요청은 그렇게 됐다. 그런데 모델을 어떤 걸 써야 하는지, 인용(citation)은 어떻게 처리하는지, Deep Research 쓰다 첫 청구서를 받으면 어디서 비용이 나왔는지를 이해하는 데는 시간이 꽤 걸린다.
OpenAI 호환이라고 해서 10분이면 될 줄 알았다
공식 문서에 따르면, Perplexity Sonar API는 OpenAI SDK와 호환 포맷을 사용한다. 코드 관점에선 사실이다.
from openai import OpenAI
client = OpenAI(
api_key="PERPLEXITY_API_KEY",
base_url="https://api.perplexity.ai"
)
response = client.chat.completions.create(
model="sonar",
messages=[{"role": "user", "content": "2026년 AI 코딩 도구 트렌드는?"}]
)
print(response.choices[0].message.content)
base_url 하나 바꾸고 model 이름 넣으면 돌아간다. 10분은 맞다.
문제는 그 다음이다. 모델이 4개인데, 이름은 비슷하고 가격은 완전히 다르고, 용도도 달라서 처음엔 어떤 걸 써야 할지 잘 모른다. 그리고 인용 정보가 왜 response에 있는지 없는지도 모델마다 달리 동작한다.
Perplexity Sonar API — 4개 모델이 있다는 게 함정의 시작
2026년 기준 Perplexity API에서 쓸 수 있는 Sonar 계열 모델은 4종이다.
Sonar vs Sonar Pro 차이
Sonar는 가장 가볍고 저렴한 모델이다. 입력 $1/M 토큰, 출력 $1/M 토큰. 빠른 단순 검색 질의에 적합하다. 인용 출처는 기본 몇 개 포함되지만 Sonar Pro보다 적다.
Sonar Pro는 입력 $3/M, 출력 $15/M으로 가격이 껑충 뛴다. 그 대신 평균 인용 수가 Sonar의 2배 수준이고, 더 긴 컨텍스트 처리가 가능하다(200K). 공식 문서에 따르면 기업용으로 광범위한 출처 어트리뷰션이 필요할 때 권장한다.
Sonar Reasoning Pro는 언제?
Sonar Reasoning Pro는 입력 $2/M, 출력 $8/M이다. 웹 검색 결과를 가져온 다음 체인 오브 쏘트(CoT) 방식으로 추론하는 모델이다. 단순한 "검색해서 요약"이 아니라, 여러 소스를 종합해서 논리적 결론을 내려야 할 때 쓴다. 예: "A 회사 제품이 B보다 나은 이유를 근거와 함께 정리해줘".
Deep Research — 자율 반복 검색
Sonar Deep Research는 성격이 다르다. 입력 $2/M, 출력 $8/M으로 토큰 단가 자체는 Reasoning Pro와 같아 보인다. 근데 여기에 citation tokens($2/M), reasoning tokens($3/M), 쿼리당 $5/1K 요금이 붙는다.
무엇보다 이 모델은 한 번의 요청으로 내부에서 반복 검색을 수행한다. 질의 하나에 여러 번 웹 검색을 돌리고 결과를 종합해 장문 리포트를 생성하는 구조다. 컨텍스트 윈도우는 128K 토큰이다.
공식 API 문서는 "포괄적인 조사 리포트가 필요한 케이스에 예약해서 써라"고 명시한다. 단순 검색 질의에 Deep Research를 갖다 대면 비용이 낭비다.
실제 통합 코드 — streaming 응답과 인용 파싱
연동은 어렵지 않다. 다만 인용 출처를 어떻게 꺼내느냐가 처음엔 헷갈린다.
기본 연동 코드 (Python)
import requests, json
def ask_sonar(query: str, model: str = "sonar") -> dict:
headers = {
"Authorization": f"Bearer {PERPLEXITY_API_KEY}",
"Content-Type": "application/json"
}
payload = {
"model": model,
"messages": [{"role": "user", "content": query}],
"stream": False
}
resp = requests.post(
"https://api.perplexity.ai/chat/completions",
headers=headers,
json=payload
)
data = resp.json()
answer = data["choices"][0]["message"]["content"]
sources = data.get("sources", []) # 인용 출처 배열
return {"answer": answer, "sources": sources}
응답의 sources 배열에 인용된 웹 페이지 정보가 담긴다. title, url 필드가 포함된다.
streaming 시 citations 파싱
streaming을 켜면 응답이 SSE(Server-Sent Events) 방식으로 청크 단위로 온다. 이때 인용 정보는 마지막 청크나 별도 data 라인에서 나온다. 중간 청크에서 citations 필드를 파싱하려고 하면 없거나 비어있을 수 있다.
import sseclient, requests, json
def ask_sonar_stream(query: str):
payload = {
"model": "sonar-pro",
"messages": [{"role": "user", "content": query}],
"stream": True
}
resp = requests.post(
"https://api.perplexity.ai/chat/completions",
headers=headers,
json=payload,
stream=True
)
client = sseclient.SSEClient(resp)
full_text = ""
citations = []
for event in client.events():
if event.data == "[DONE]":
break
chunk = json.loads(event.data)
delta = chunk["choices"][0]["delta"].get("content", "")
full_text += delta
# 마지막 청크에서 sources 추출
if "sources" in chunk:
citations = chunk["sources"]
return full_text, citations
search_domain_filter 실전 활용
검색 품질을 높이고 싶으면 search_domain_filter 파라미터를 쓴다. 신뢰할 수 있는 도메인만 검색하거나 특정 도메인을 제외할 수 있다.
payload = {
"model": "sonar-pro",
"messages": [...],
"search_domain_filter": ["reuters.com", "techcrunch.com", "arxiv.org"],
"search_recency_filter": "month" # 최근 1개월 내 결과만
}
공식 문서에는 있지만 실제 효과를 체감하려면 도메인을 좀 골라야 한다. 너무 좁히면 검색 결과 자체가 줄어들어 답변 품질이 떨어지는 경우도 있다.
비용 시뮬레이션 — 같은 질문인데 모델에 따라 40배 차이
CloudZero·pricepertoken.com 비용 데이터 기준으로, 단순 검색 질의(입력 500토큰)를 각 모델로 처리했을 때 요청당 예상 비용이다.
단순 검색 질의 비용 비교
- Sonar: 요청당 약 $0.006 (입력 500토큰 + 출력 200토큰 + per-request $5/1K)
- Sonar Pro: 요청당 약 $0.016 (토큰 단가 3배 + per-request $6/1K)
- Sonar Deep Research: 요청당 $0.10~$0.41 (내부 반복 검색 횟수에 따라)
단순 질의 기준으로 Sonar 대비 Deep Research가 최대 40배가 넘는다. 하루 1,000건 질의를 Deep Research로 돌리면 Sonar 대비 월 비용이 수백 달러에서 수천 달러로 뛸 수 있다.
Deep Research 비용 분해 (citation + reasoning + query)
Deep Research 청구서가 예상보다 크게 나오는 이유는 reasoning tokens다. Sonar·Sonar Pro는 올해 citation tokens 요금이 폐지됐는데, Deep Research에는 citation($2/M)과 reasoning($3/M)이 여전히 붙는다.
모델이 내부에서 반복 추론할 때마다 reasoning tokens이 누적된다. API 문서의 기본 단가 표만 봐서는 이 항목이 눈에 잘 안 들어온다.
어떤 케이스에 어떤 모델을?
- 빠른 단답 / 실시간 검색 → Sonar
- 출처가 많이 필요한 콘텐츠 보조 / 상세 검색 → Sonar Pro
- 여러 소스 종합 추론 → Sonar Reasoning Pro
- 장문 리포트 자동화, 깊이 있는 조사 → Sonar Deep Research (비용 한도 설정 필수)
근데 그냥 RAG 만들면 되지 않냐는 생각도 든다
Perplexity API를 쓰지 않고, 검색 API(Brave, Bing, SerpAPI) + LLM 직접 조합으로 RAG 파이프라인을 만들면 어떨까. 비용이 더 저렴하지 않을까.
이 비교는 실제로 유의미하다. 단순 검색 질의라면 직접 만드는 RAG가 더 싸게 나올 수 있다. Brave Search API가 월 2,000건 무료이고, 그 이상도 $5/1K 수준이라 Sonar Pro보다 토큰 비용이 낮다.
그런데 Sonar가 RAG보다 나은 케이스가 분명히 있다. 인용 처리가 내장되어 있고, 검색 품질이 단순 키워드 검색보다 좋다. 무엇보다 구현 비용이 다르다. 직접 RAG를 만들면 검색 결과 파싱, 청킹, 임베딩, 재순위화(reranking) 로직을 직접 짜야 한다. MVP 단계에서 빠르게 검색 기능을 붙이고 싶다면 Sonar 쪽이 시간 대비 효율이 좋다.
한계는 있다. Perplexity API는 특정 사내 데이터나 프라이빗 문서를 검색할 수 없다. 웹 공개 정보 기반이라는 전제가 깔려있다. 내부 데이터가 중요하다면 RAG를 직접 구축하는 쪽이 맞다.
Perplexity Sonar API, 이런 케이스면 쓸 만하다
케이스별로 나눠보면 세 가지로 좁혀진다.
- 실시간 검색 응답이 필요한 챗봇·서비스 — Sonar 또는 Sonar Pro. 빠르고 인용 포함. 구현 단순.
- 자동화 리포트 생성 — Sonar Deep Research. 장문 분석에 맞다. 대신 요청당 비용 한도를 모니터링하고, 고비용 질의는 사용자 단에서 제한을 두는 구조로 설계해야 한다.
- 프라이빗 데이터 검색이 없는 MVP — 가장 빠르게 검색 기능 붙이는 방법이다. 기존 코드에 OpenAI SDK base_url만 바꾸면 된다.
search_domain_filter로 도메인을 좁히면 품질이 올라가는 케이스가 있다. 뉴스·학술·공식 문서 한정으로 검색하고 싶을 때 유용하다.
비용 관리 팁 하나. Sonar Deep Research는 실제 비용이 얼마 나오는지 스테이징 환경에서 먼저 확인하고 프로덕션에 붙이는 게 낫다. reasoning tokens가 쌓이는 구조라 첫 청구서가 예상보다 클 수 있다.
📎 참고 자료
- Perplexity API Pricing — 공식 문서
- Perplexity Sonar API Quickstart
- Sonar Deep Research 모델 문서
- Perplexity API Pricing In 2026 — CloudZero
- AI SDK Perplexity Provider 문서
📌 함께 보면 좋은 글
'AI.IT' 카테고리의 다른 글
| Figma AI 기능 팁 모음, 3개월 쓰고 살아남은 것만 정리했다 (0) | 2026.05.11 |
|---|---|
| Hermes Agent, 7주 만에 95.6K 스타 — OpenClaw와 다른 길을 잡았다 (0) | 2026.05.11 |
| Vercel AI SDK v6 써봤는데, /api/chat 없애는 게 생각보다 복잡했다 (0) | 2026.05.11 |
| Claude 멀티 에이전트 OS 표준화, ClaudeClaw V3와 공식 발표 정리 (0) | 2026.05.10 |
| Higgsfield MCP Claude 연동, 이미지·영상 생성 Cowork에서 굴려보기 (1) | 2026.05.10 |