INVALID_PROMPT_INPUT

INVALID_PROMPT_INPUT

프롬프트 템플릿이 누락되거나 유효하지 않은 입력 변수를 받았을 때 발생하는 오류예요.

생각지 못한 방식으로 발생하는 한 가지 경우는 JSON 객체를 프롬프트 템플릿에 직접 넣는 경우예요:

import { PromptTemplate } from "@langchain/core/prompts";
import { ChatOpenAI } from "@langchain/openai";

const prompt = PromptTemplate.fromTemplate(`You are a helpful assistant.

Here is an example of how you should respond:

{
  "firstName": "John",
  "lastName": "Doe",
  "age": 21
}

Now, answer the following question:

{question}`);

위 프롬프트 템플릿은 question이라는 입력 키 하나만 요구할 거라고 생각할 수 있지만, 중괄호({)가 이스케이프되지 않았기 때문에 JSON 객체가 추가 변수로 해석돼요. 대신 중괄호 앞에 두 번째 중괄호를 붙여 이렇게 해야 해요:

import { PromptTemplate } from "@langchain/core/prompts";
import { ChatOpenAI } from "@langchain/openai";

const prompt = PromptTemplate.fromTemplate(`You are a helpful assistant.

Here is an example of how you should respond:

{{
  "firstName": "John",
  "lastName": "Doe",
  "age": 21
}}

Now, answer the following question:

{question}`);

문제 해결 (Troubleshooting)

이 오류를 해결하려면:

  1. 프롬프트 템플릿이 올바른지 검토하세요. f-string 형식을 쓸 때 중괄호 이스케이프를 올바르게 해야 해요:
    • f-string에서 단일 중괄호는 {{ 로 써요
    • f-string에서 이중 중괄호는 {{{{ 로 써요
  2. MessagesPlaceholder 컴포넌트를 쓸 때 메시지 배열이나 message-like 객체를 전달하는지 확인하세요. 축약 튜플을 쓴다면 ["placeholder", "{messages}"] 처럼 변수명을 중괄호로 감싸세요
  3. LangSmith를 쓰거나 로깅을 통해 프롬프트 템플릿의 실제 입력값을 확인해 기대와 일치하는지 디버깅하세요
  4. LangChain Prompt Hub에서 프롬프트를 가져왔다면, 샘플 입력으로 분리해 테스트해서 의도대로 동작하는지 확인하세요

출처: 문서

본문

프롬프트 템플릿이 누락되거나 잘못된 입력 변수를 받으면 발생해요. 흔한 원인은 템플릿 안의 JSON 객체 중괄호를 이스케이프하지 않아 추가 변수로 해석되는 경우예요. 단일 중괄호는 {{ 로, 이중 중괄호는 {{{{ 로 이스케이프하고, MessagesPlaceholder 사용 시 메시지 배열을 전달하며, LangSmith나 로깅으로 실제 입력을 확인해 해결할 수 있어요.

더 알아보기 (Learn more)