랭체인 프로그래밍: 개념과 응용 – Chain
0 Comment
체인을 구성한다?
프롬프트가 있어야 하고, 프롬프트에 대한 응답이 있습니다. 프롬프트는 프롬프트 템플릿으로 작성할 수 있습니다.
PromptTemplate은 Runnable 입니다. 템플릿 부분을 대체해서 프롬프트를 작성합니다.
프롬프트 템플릿 작성방법이 있어야 합니다. 템플릿 부분은 {변수}와 같이 작성합니다.
예) Extract {entities} entities from the item description: {description}.
작성된 프롬프트는 PromptValue(직렬화 가능)로 반환됩니다. 프롬프트는 텍스트로 작성되니 가장 기본적인 데이터구조는 StringPromptValue가 됩니다.
프롬프트는 LLM에게 전달되고, LLM은 응답합니다.
응답에는 형식이 있을 수 있고, 응답을 다른 프로그램 등에서 사용하기 위해 JSON 포맷을 사용할 수 있습니다.
랭체인에서는 이를 위해 JsonOutputParser를 지원합니다.
체인을 다음과 같이 구성하겠습니다. 프롬프트 템플릿, LLM, JSON 출력
체인을 구성하는 프롬프트 템플릿과 llm을 만들어보겠습니다.
1 2 3 4 5 6 7 8 9 |
from langchain.prompts import PromptTemplate from langchain_core.output_parsers import JsonOutputParser description = "The laptop has 16GB of RAM and costs $1500." prompt_template = PromptTemplate.from_template( """Extract {entities} entities from the item description:{description}. Answer with a valid json as an output.""" ) |
1 2 3 4 5 6 7 |
import os from langchain_google_vertexai import VertexAI credentials_path = "/v1.json" os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = credentials_path llm = VertexAI(model_name="gemini-1.5-pro", project="vertex-447105") |
체인을 구성하고, 체인을 실행합니다. entities와 description을 딕셔너리로 전달합니다.
1 2 3 |
chain = prompt_template | llm | JsonOutputParser() result = chain.invoke({"entities": "price, RAM", "description": description}) |