ChatPerplexity 통합

ChatPerplexity 통합

LangChain JavaScript로 ChatPerplexity 채팅 모델과 통합하는 방법을 안내할게요.

출처: 문서

본문

이 가이드는 Perplexity 채팅 모델을 시작하는 데 도움을 줘요. 모든 ChatPerplexity 기능과 구성에 대한 자세한 문서는 API 레퍼런스를 참고하세요.

개요

통합 세부 정보

클래스 패키지 Serializable PY 지원 Downloads Version
ChatPerplexity @langchain/perplexity beta NPM - Downloads NPM - Version

모델 기능

아래 표 헤더의 링크에서 특정 기능을 사용하는 방법에 대한 가이드를 확인할 수 있어요.

Tool calling Structured output Image input Audio input Video input Token-level streaming Token usage Logprobs

참고: 작성 시점 기준, Perplexity는 특정 사용 등급에서만 구조화된 출력을 지원해요.

설정

Perplexity 모델에 접근하려면 Perplexity 계정을 만들고 API 키를 받은 뒤 @langchain/perplexity 통합 패키지를 설치해야 해요.

자격 증명

Perplexity API 키 대시보드로 이동해 가입하고 API 키를 생성하세요. 완료되면 PERPLEXITY_API_KEY 환경 변수를 설정하세요:

export PERPLEXITY_API_KEY="your-api-key"

모델 호출의 자동 추적(tracing)을 원한다면 아래 주석을 해제해 LangSmith API 키를 설정할 수도 있어요:

# export LANGSMITH_TRACING="true"
# export LANGSMITH_API_KEY="your-api-key"

설치

LangChain Perplexity 통합은 @langchain/perplexity 패키지에 있어요:

```bash npm theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}} npm install @langchain/perplexity @langchain/core ```
yarn add @langchain/perplexity @langchain/core
pnpm add @langchain/perplexity @langchain/core

인스턴스 생성

이제 모델을 인스턴스화할 수 있어요:

import { ChatPerplexity } from "@langchain/perplexity";

const llm = new ChatPerplexity({
  model: "openai/gpt-5.5",
  temperature: 0,
  maxTokens: undefined,
  timeout: undefined,
  maxRetries: 2,
  // other params...
});

호출

const aiMsg = await llm.invoke([
  {
    role: "system",
    content: "You are a helpful assistant that translates English to French. Translate the user sentence.",
  },
  {
    role: "user",
    content: "I love programming.",
  },
]);
aiMsg;
AIMessage {
  "id": "run-71853938-aa30-4861-9019-f12323c09f9a",
  "content": "J'adore la programmation.",
  "additional_kwargs": {
    "citations": [
      "https://careersatagoda.com/blog/why-we-love-programming/",
      "https://henrikwarne.com/2012/06/02/why-i-love-coding/",
      "https://forum.freecodecamp.org/t/i-love-programming-but/497502",
      "https://ilovecoding.org",
      "https://thecodinglove.com"
    ]
  },
  "response_metadata": {
    "tokenUsage": {
      "promptTokens": 20,
      "completionTokens": 9,
      "totalTokens": 29
    }
  },
  "tool_calls": [],
  "invalid_tool_calls": []
}
console.log(aiMsg.content);
J'adore la programmation.

에이전트 API 지원 (useResponsesApi)

ChatPerplexityuseResponsesApi를 설정해 Perplexity의 Agent API (Perplexity 스타일 Responses API)로 요청을 라우팅할 수도 있어요. 이는 ChatOpenAI의 Responses 패턴을 반영해요: 하나의 클래스, 두 개의 엔드포인트, 단일 옵션으로 제어됩니다.

엔드포인트 참고
undefined (기본값) 자동 감지 요청이 내장 Perplexity 도구(web_search, fetch_url, finance_search, people_search)를 사용하거나 Responses 전용 필드(previousResponseId, instructions, input, include)를 포함하면 Agent API로, 그렇지 않으면 Chat Completions로 라우팅해요.
true Agent API 항상 client.responses.create()를 사용해요.
false Chat Completions 항상 client.chat.completions.create()를 사용해요.

Agent API는 ChatPerplexity가 Perplexity의 내장 도구(라이브 웹 검색, URL 가져오기, 금융 및 인물 검색)와 상태 저장 에이전트 필드(previousResponseId, instructions, include)에 접근할 수 있게 해줘요. 이는 Chat Completions에서는 사용할 수 없어요. 기존 new ChatPerplexity({ model: "sonar" }) 호출자는 동작 변화를 느끼지 못해요 — 일반 텍스트 요청의 경우 Chat Completions 경로가 기본값으로 유지돼요.

import { ChatPerplexity } from "@langchain/perplexity";

const chat = new ChatPerplexity({
  model: "openai/gpt-5.5",
  useResponsesApi: true,
});

const response = await chat.invoke("What did Apple announce at WWDC this week?");
console.log(response.content);

또한 내장 도구를 바인딩하고 자동 감지가 요청을 라우팅하게 할 수도 있어요 — 옵션은 필요 없어요:

import { ChatPerplexity } from "@langchain/perplexity";

const chat = new ChatPerplexity({ model: "openai/gpt-5.5" });

const response = await chat.invoke(
  "Summarize the latest LangChain release notes.",
  { tools: [{ type: "web_search" }] },
);
console.log(response.content);

Agent API로 라우팅되면 응답 객체는 더 풍부한 메타데이터를 담아요:

  • usage_metadata는 Responses 형태의 usage 페이로드(input_tokens, output_tokens, total_tokens)로 채워져요.
  • response_metadata는 전송 수준 필드(id, model, status, object)와 함께, 존재할 때 Perplexity 전용 검색 출력(citations, images, related_questions, search_results)을 담아요.
  • additional_kwargs.responses_output은 원시 Agent API 출력 항목을 보유해요.
  • 모델이 반환한 tool calls는 ChatOpenAI와 동일하게 response.tool_calls에 표시돼요.
The `_toResponsesPayload` translation passes `temperature`, `topP`, and `toolChoice` straight through to the Agent API. Chat-Completions-only knobs that are not native Responses fields (for example `topK`, `stop`, `metadata`) are forwarded under `extra_body`.

이 엔드포인트를 통해 사용 가능한 전체 모델 세트(예: openai/gpt-5.5, anthropic/claude-sonnet-4-6, google/gemini-3-1-pro)는 Perplexity Agent API 모델 목록을 참고하세요.

관련 통합

@langchain/perplexity 패키지에는 채팅 API를 사용하지 않는 검색 컴포넌트도 포함돼 있어요:

세 컴포넌트의 설정은 Perplexity 제공자 개요를 참고하세요.


API 레퍼런스

모든 ChatPerplexity 기능과 구성에 대한 자세한 문서는 API 레퍼런스를 참고하세요.


[Connect these docs](/use-these-docs) to Claude, VSCode, and more via MCP for real-time answers. [Edit this page on GitHub](https://github.com/langchain-ai/docs/edit/main/src/oss/javascript/integrations/chat/perplexity.mdx) or [file an issue](https://github.com/langchain-ai/docs/issues/new/choose).

더 알아보기