- 프롬프트 엔지니어링과 시스템 프롬프트는 다르다.
- 프론프트 엔지니어링은 말을 어떻게 걸 것인가(사용자 입력)에 초점
- 시스템 프롬프트는 AI의 '자아'나 '기본 환경'을 백그라운드에서 미리 설정하는 것(역할, 규칙 설정)
1. 로컬에서 돌리는 LLM(Ollama 등)은 오픈소스다.
- 각 모델들을 선택할 수 있다.
- content에 <think> 있으면 추론 모델
2. 각 모델을 사용 할 때, 필요로 하는 API KEY 또는 Auth 토큰 정보를 요구하는 Error가 나온다. (환경변수 설정 필요)
- 여러가지 방법이 있지만 추천하는건
.env 파일에 해당 API_KEY 변수명 = “KEY” 를 등록해서 사용하는 것
- 환경 변수 불러오는 패키지
pip install -q python-dotenv
3. 프롬프트
- 프롬프트도 함수로 동작하기 때문에 input의 타입이 정해져있음
string or promptValue or list of BaseMessages(주로 예제에 쓰임)
3-1. PromptValue, PromptTemplate
- PromptValue는 랭체인의 Prompt Template으로 생성 가능

- prompt_template.invoke 결과 == promptValue → llm.invoke의 input으로 한 결과 → AIMessage(..)

3-2. BaseMessage
-
langchain_core의 클래스 중에 HumanMessage 라는 클래스에

-
HumanMessage 가 BaseMessage 를 상속 받고 있다.

-
BaseMessage 를 상속받는 대표적인 4가지 → llm.invoke의 input으로 줄 수 있음
- System : LLM App 목적(페르소나 부여하면 시스템 프롬프트(할 일을 정의)에 들어감)
- human : 사용자
- ai : llm
- tool : tool 도구(agent)의 invoke 결과가 담기는 듯

3-2-1. BaseMessage를 List로 줄 때 가장 마지막을 AIMessage로 하면 당연하게도 content가 비어있음

3-3. FewShots, OneShot (예제)