🚨 v1.4.0 신규 기능: Decision reviewers가 새로운 Decisions API를 통해 TypeSafe의 Jev와 나란히, Perplexity's pplx-decider 및 OpenAI's gpt-6-luna에서도 실행됩니다. 11,793개 논문을 평가한 결과, pplx-decider가 가장 높은 순위를 기록했으며, 초록 1,000개당 약 $0.05입니다. Perplexity의 Sonar 역시 LLM reviewer로 작동합니다. 신규 기능 및 Decision 모델 대 LLM reviewer 비교를 확인하세요.
LatteReview는 AI 기반 에이전트를 통해 학술 문헌 검토 과정을 자동화하도록 설계된 강력한 Python 패키지입니다. 마치 라테 커피 ☕를 즐기듯, 수많은 연구 논문을 검토하는 과정은 하루 전체를 소모하지 않는 즐겁고 효율적인 경험이어야 합니다!
Perplexity's Decisions API: decision reviewers는 SystemOneProvider(backend="perplexity")을 사용하여 Perplexity의 pplx-decider로, 또는 OpenRouter를 통해 SystemOneProvider(backend="openrouter", model="perplexity/pplx-decider-v1.1-27b")로 실행됩니다.
(PERPLEXITY_API_KEY)
.OpenAI's Decisions API: SystemOneProvider(backend="openai")는 OpenAI의 새로운 Decisions API를 통해 gpt-6-luna를 실행합니다. 이 프로바이더는 OpenAI의 요청 형식을 변환하므로 모든 decision reviewer가 변경 없이 작동합니다. OpenAI가 답변을 거부하는 질문은 실행을 중단하는 대신 None으로 반환됩니다.11,793개 논문에 대한 세 가지 decision 모델 비교: pplx-decider가 가장 높은 순위를 기록했습니다 (평균 AUC 0.895, 9개 데이터셋 중 7개에서 최고점, 초록 1,000개당 약 $0.05), 그다음이 Jev (0.878, $0.06) 및 v1 LLM reviewer (0.828)였습니다. gpt-6-luna의 Decisions API는 0.779점($0.16)을 기록했습니다: 길고 다중 기준에 대해서는 거의 모든 논문에서 0.00을 반환했습니다. 비교를 확인하세요.Perplexity의 모델을 LLM reviewer로 사용: LiteLLMProvider(model="perplexity/sonar")는 Perplexity의 새로운 Agent API를 통해 Sonar 및 다른 공급업체의 모델 (예: perplexity/openai/gpt-6-luna)에 접근합니다 (Perplexity는 더 이상 Sonar를 채팅 완료로 제공하지 않습니다). 웹 검색 없이 Sonar 사용 시 초록 1,000개당 약 $0.20입니다.요청당 수수료의 정확한 비용: LiteLLMProvider
이제 API가 보고하는 비용(OpenRouter 및 Perplexity)을 사용하므로, Sonar의 검색 수수료와 같은 요금도 계산됩니다. 이전에는 OpenRouter를 통해 이루어진 Sonar 요청이 가격의 약 1/18로 기록되었습니다.동일한 입력, 동일한 답변: 결정 검토자(decision reviewers)는 워크플로우의 Review Task ID 라인을 모델의 입력에서 제외합니다. 이로 인해 애매한 기사의 답변이 해당 행 번호에 따라 달라질 수 있었습니다.
몇 줄 만에 구현하는 결정 모델 + LLM 파이프라인: Perplexity의 pplx-decider가 모든 기사를 검사하고, 확신하지 못하는 기사만 LLM으로 전송합니다 ( PERPLEXITY_API_KEY 및 OPENAI_API_KEY 설정 필요):
import asyncio
import pandas as pd
from lattereview.providers import SystemOneProvider, OpenAIProvider
...
노트북에서 사용해 보세요: Jev, pplx-decider 및 gpt-6-luna를 이용한 스크리닝 · 측정 지표가 포함된 하이브리드 Jev + LLM 리뷰 · Decision Models 문서.
기존 검토자 및 기본값은 이전과 동일하게 작동합니다. 전체 목록은 CHANGELOG를 참조하세요.
Jev를 사용한 결정 검토: LatteReview는 이제 TypeSafe의 Jev와 같은 System One 결정 모델을 사용하여 텍스트 생성 대신 확률로 유형화된 질문에 답변하는 방식으로 검토할 수 있습니다. DecisionTitleAbstractReviewer, DecisionScoringReviewer 및 범용적인 DecisionReviewer가 모든 ReviewWorkflow에서 LLM 검토자와 나란히 작동합니다.하나의 제공업체, 모든 백엔드:SystemOneProvider는 TypeSafe와 OpenRouter를 지원하며, base_url을 통해 자체 호스팅된 OpenJev 모델 등 다른 모든 /v1/systemone 서버와도 작동합니다.전면 규모로 평가: LatteReview의 평가 데이터셋 11,793개 기사 전체에 걸쳐 Jev는 모든 데이터셋에서 v1 LLM 검토자보다 우수한 순위를 기록했습니다 (평균 AUC 0.88 vs 0.83). 이는 1,000개 기사당 약 $0.06입니다. Jev가 부족한 부분도 포함하여 평가를 참조하세요.목표 재현율을 위한 임계값:suggest_threshold는 레이블링된 데이터에 확률 절단값을 적용합니다.하이브리드 워크플로우: Jev가 모든 것을 스크리닝하고 불확실한 기사만 LLM으로 보내도록 할 수 있습니다 (튜토리얼).
지원 모델: OpenAI GPT-6(gpt-6-astra, gpt-6-sol, gpt-6-luna) 및 GPT-5.x, Anthropic Claude Opus 5.5, Sonnet 5, Haiku 4.5, Fable 5.1, 그리고 Google Gemini 3.x(gemini-3.8-flash, gemini-3.5-flash-lite)로 테스트되었습니다. 이전 모델인 gpt-4o-mini 및 gemini-2.5-flash도 계속 작동합니다.거부된 매개변수 오류 없음: 만약 모델이 model_args의 특정 설정(예: GPT-6 또는 Claude 5에서의 temperature, 또는 OpenAI 추론 모델에서의 max_tokens)을 거부하면, LatteReview는 일회성 경고와 함께 해당 설정을 제거하거나 이름을 변경한 후 재시도합니다. 만약 추론 모델이 답변을 완료하기 전에 토큰이 부족해지면, 제한 없이 호출이 재시도됩니다.새 기본 모델: OpenAIProvider와 LiteLLMProvider는 기본적으로 gpt-6-luna를 사용하고, GoogleProvider는 gemini-3.8-flash를, 그리고 OllamaProvider는 qwen3.8:27b를 사용합니다. 다른 모델을 선택하려면 model= 매개변수를 전달하세요.더 나은 로컬 모델: OllamaProvider가 답변을 리뷰어의 JSON 스키마로 제한하고, reasoning_effort를 Ollama의 think 설정으로 매핑하며, 다른 model_args(예: top_p)를 실패하는 대신 모델 옵션으로 전달하고, close()도 다시 작동합니다. 32GB Apple Silicon Mac에서 qwen3.8:27b로 테스트되었습니다.더 정확한 비용: 각 API가 보고하는 숨겨진 추론 토큰을 포함하여 토큰 사용량으로부터 계산됩니다.Python 3.10 이상이 이제 필요합니다. Python 3.9에서는 pip이 1.1.1로 설치됩니다.
- 각 리뷰어별 맞춤형 역할 및 전문성 수준을 갖춘 다중 에이전트 리뷰 시스템 지원
- 계층적 의사결정 워크플로우를 통해 여러 차례의 검토 라운드 지원
- LLM 기반 리뷰어 에이전트를 사용하여 기사 제목, 초록, 사용자 지정 텍스트는 물론 이미지까지 포함한 다양한 콘텐츠 유형 검토 지원 - 전문화된 배경과 고유한 평가 역량(예: 점수 매기기, 개념 추상화 또는 사용자가 선호하는 맞춤형 리뷰어)을 가진 리뷰어 에이전트 정의
- 여러 에이전트가 병렬 또는 순차적으로 작동하는 유연한 검토 워크플로우 생성
- 리뷰어 에이전트가 동료 피드백 분석, 투표 참여, 다른 리뷰어의 평가에 대한 수정 제안 가능하도록 지원 강화
- **검색 증강 생성 (RAG)**과 같은 사용 사례를 지원하는 항목별 컨텍스트 통합을 통한 검토 향상 - OpenAI 및 Ollama를 포함하여 LiteLLM을 통해 LLM 제공업체와의 광범위한 호환성 확보
- OpenAI, Gemini, Claude, Groq, DeepSeek, Perplexity, OpenRouter 및 Ollama를 통한 로컬 모델을 지원하는 모델 비종속적 통합 NEW: 결정 모델 리뷰어 (Perplexity의 pplx-decider, TypeSafe의 Jev, OpenAI의 gpt-6-luna 또는 자체 호스팅된 OpenJev)가 빠르고 저렴한 스크리닝을 위해 확률 값을 반환 - 효율적인 배치 검토를 위한 고성능 비동기 처리
- 상세 점수 측정 기준 및 추론 투명성을 특징으로 하는 표준화된 출력 형식
- 강력한 비용 추적 및 메모리 관리 시스템
- 사용자 지정 리뷰 워크플로우 구현을 지원하는 확장 가능한 아키텍처
NEW: 학술 문헌 검토를 위한 RIS (Research Information Systems) 파일 형식 지원
pip install lattereview
LatteReview는 Python 3.10 이상이 필요합니다. 자세한 설치 지침은 설치 가이드를 참조하십시오.
LatteReview를 사용하면 여러 AI 리뷰어를 활용하여 맞춤형 문헌 검토 워크플로우를 만들 수 있습니다. 각 리뷰어는 필요에 따라 다른 모델과 제공업체를 사용할 수 있습니다. 아래에는 두 명의 주니어 리뷰어와 한 명의 시니어 리뷰어를 사용하여 간단한 제목/초록 검토를 수행하는 LatteReview 사용 예시가 나와 있습니다 (모두 AI 에이전트)! 그리고 이것은 시작에 불과합니다! 연구 스크리닝 외에도, LatteReview는 데이터 추상화(data abstraction), 맞춤형 파이프라인, 이미지 분석 등 훨씬 더 많은 작업을 처리할 수 있습니다. 자세한 예시는 튜토리얼을 참고하세요!
자세한 지침은 Quick Start 페이지와 Documentation 페이지를 참조해 주세요.
아래 예제는 완전히 독립적으로 실행 가능합니다: API 키를 설정하고, 패키지를 설치한 다음, 그대로 실행하기만 하면 됩니다. 이 예제는 OpenAI 모델 하나와 Gemini 모델 하나를 사용하므로 OPENAI_API_KEY 및 GEMINI_API_KEY(.env 파일에 넣거나 셸에서 내보내기)가 필요합니다. LiteLLM을 지원하는 모든 모델로 교체할 수 있습니다 — Model Support를 참고하세요.
from lattereview.providers import LiteLLMProvider
from lattereview.agents import TitleAbstractReviewer
from lattereview.workflows import ReviewWorkflow
...
결정 리뷰어(Decision reviewers)는 LLM 대신 결정 모델(decision model)을 사용합니다. 세 가지 모델이 지원되며, 모두 SystemOneProvider를 통해 접근할 수 있습니다:
| Model | Provider | API key | Mean AUC* | Cost per 1,000 abstracts* | Notes |
|---|
| Perplexity의 pplx-decider | SystemOneProvider(backend="perplexity") | PERPLEXITY_API_KEY | 0.895 | $0.05 | 평가에서 최고 성능; 오픈 가중치 (Apache-2.0); 질문당 초록에 대해 청구됨 |
| TypeSafe의 Jev | SystemOneProvider() (기본값) | TYPESAFE_API_KEY | 0.878 | $0.06 | 질문 추가가 거의 무료; 불확실한 답변은 실행마다 약간 다름 |
| OpenAI의 gpt-6-luna | SystemOneProvider(backend="openai") | OPENAI_API_KEY | 0.779 | $0.16 | 길고 여러 부분으로 된 기준에 취약; 단일 질문을 거부할 수 있음 (답변 = None) |
DecisionTitleAbstractReviewer
LatteReview의 평가 데이터셋 11,793개 기사 전체에서; v1 LLM 리뷰어는 0.828을 기록했습니다. Jev와 pplx-decider는 OpenRouter(backend="openrouter", OPENROUTER_API_KEY)를 통해서도 사용할 수 있습니다.
from lattereview.providers import SystemOneProvider
from lattereview.agents import DecisionTitleAbstractReviewer
decider = DecisionTitleAbstractReviewer(...)
Decision 모델 대 LLM 리뷰어. LLM 리뷰어는 답변과 추론 과정을 작성하는 반면, decision 모델은 아무것도 작성하지 않고 허용된 모든 답변에 대한 확률을 반환합니다. 따라서 그 답변은 항상 스키마(on-schema)를 따르며 목표 재현율(target recall)을 위해 임계값 설정(thresholded)이 가능합니다. Decision 모델은 빠르고(기사당 1초 미만) 저렴하며(요약문 1,000개당 약 $0.05-$0.16), 평가에서 pplx-decider와 Jev는 v1 LLM 리뷰어보다 기사를 더 잘 분류했습니다. 하지만 이들은 텍스트만 읽을 뿐, 추론 과정은 작성하지 않으며, 다단계 추론(multi-step reasoning)도 수행하지 못합니다. 그리고 0.5의 절단값(cutoff)은 길고 여러 부분이 있는 기준에는 종종 너무 엄격할 수 있습니다: include_probability로 순위를 매기거나 suggest_threshold를 사용하여 모델별 절단값을 설정하십시오. 좋은 패턴은 decision 모델이 모든 것을 선별하고 불확실한 기사만 LLM에 보내는 것입니다. Decision Model을 읽어보시면 작동 방식, 백엔드, 비용, 자체 호스팅 및 전체 평가 내용을 알 수 있습니다.
LatteReview는 여러 프로바이더를 통해 유연한 모델 통합을 제공합니다:
LiteLLMProvider(권장): OpenAI, Anthropic (Claude), Gemini, Groq, DeepSeek, Perplexity (Sonar), OpenRouter 등 지원
OpenAIProvider: OpenAI 및 Gemini API와 직접 통합
GoogleProvider: Google의 google-genai SDK를 통해 Gemini와 직접 통합
OllamaProvider: Ollama를 통한 로컬 모델에 최적화
SystemOneProvider: decision models: TypeSafe의 Jev, Perplexity의 pplx-decider 및 OpenAI의 gpt-6-luna (Decisions APIs)을 TypeSafe, Perplexity, OpenAI, OpenRouter 또는 모든 /v1/systemone 서버(예: 자체 호스팅된 OpenJev)를 통해 제공합니다.
만약 model을 지정하지 않으면, OpenAIProvider와 LiteLLMProvider는 gpt-6-luna를 사용합니다.
, GoogleProvider
gemini-3.8-flash를 사용하며, OllamaProvider는 qwen3.8:27b를 사용합니다 (먼저 ollama pull qwen3.8:27b을 실행하세요). Claude의 경우, 더 저렴한 옵션인 "anthropic/claude-haiku-4-5" 또는 예시로 LiteLLMProvider(model="anthropic/claude-sonnet-5")를 전달하십시오. Perplexity의 경우, LiteLLMProvider(model="perplexity/sonar") (PERPLEXITY_API_KEY)를 전달하십시오. LatteReview는 이를 Perplexity의 Agent API를 통해 전송합니다.
참고: 최적의 성능을 위해서는 모델이 비동기 작업(async operations)과 구조화된 JSON 출력(structured JSON outputs)을 지원해야 합니다.
더 새로운 추론 모델은 이전 모델들이 수락하던 일부 요청 매개변수를 거부합니다. OpenAI의 GPT-5/GPT-6 계열 및 o-시리즈 모델은 max_tokens를 사용하지 않고 (max_completion_tokens를 사용함) 기본값이 아닌 temperature/top_p를 거부합니다. Anthropic의 Claude Opus 4.7+, Claude 5, Fable 모델은 temperature, top_p, top_k를 거부합니다. LatteReview가 이 부분을 처리해 드립니다. 만약 모델이 model_args에서 매개변수를 거부하면, 이는 무시되거나 (max_tokens는 max_completion_tokens로 전송됨) 일회성 경고와 함께 처리됩니다. 추론 모델이 답변을 완료하기 전에 토큰이 부족해지면, 토큰 제한 없이 호출이 재시도됩니다. 이러한 매개변수를 수락하는 모델은 이전과 완전히 동일하게 작동하므로 기존 코드는 계속 작동합니다.
추론 모델의 경우, 대신 max_tokens와 temperature를 생략하고 reasoning_effort (예: 스크리닝용 "low", 전문가 리뷰어용 "high")를 사용하는 것을 권장합니다. 자세한 내용은 문서에서 모델 호환성(Model compatibility)을 참조하십시오.
전체 문서는 다음에서 확인할 수 있습니다: https://pouriarouzrokh.github.io/LatteReview