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)
이 오류를 해결하려면:
- 프롬프트 템플릿이 올바른지 검토하세요. f-string 형식을 쓸 때 중괄호 이스케이프를 올바르게 해야 해요:
- f-string에서 단일 중괄호는
{{로 써요 - f-string에서 이중 중괄호는
{{{{로 써요
- f-string에서 단일 중괄호는
MessagesPlaceholder컴포넌트를 쓸 때 메시지 배열이나 message-like 객체를 전달하는지 확인하세요. 축약 튜플을 쓴다면["placeholder", "{messages}"]처럼 변수명을 중괄호로 감싸세요- LangSmith를 쓰거나 로깅을 통해 프롬프트 템플릿의 실제 입력값을 확인해 기대와 일치하는지 디버깅하세요
- LangChain Prompt Hub에서 프롬프트를 가져왔다면, 샘플 입력으로 분리해 테스트해서 의도대로 동작하는지 확인하세요
출처: 문서
본문
프롬프트 템플릿이 누락되거나 잘못된 입력 변수를 받으면 발생해요. 흔한 원인은 템플릿 안의 JSON 객체 중괄호를 이스케이프하지 않아 추가 변수로 해석되는 경우예요. 단일 중괄호는 {{ 로, 이중 중괄호는 {{{{ 로 이스케이프하고, MessagesPlaceholder 사용 시 메시지 배열을 전달하며, LangSmith나 로깅으로 실제 입력을 확인해 해결할 수 있어요.