Langchain의 출력 파서를 사용하여 Chatgpt Prompt Response에서 정보를 추출하십시오.
이 Jupyter 노트북은 Langchain의 StructuredOutputParser 사용하여 Chatgpt 프롬프트 응답에서 구조화 된 정보를 추출하는 방법을 보여줍니다.
OpenAI , LangChain 과 같은 필요한 라이브러리를 가져오고 ChatOpenAI 인스턴스를 정의합니다.
"gift" , "delivery_days" , "price_value" 와 같은 필드로 예제 출력 구조를 정의합니다.
구문 분석 할 샘플 고객 리뷰 텍스트를 보여줍니다.
각 출력 필드에 대한 ResponseSchema 객체를 구성합니다.
응답 스키마를 사용하여 StructuredOutputParser 만듭니다.
파서의 형식 지침을 통합 한 프롬프트 템플릿을 정의합니다.
Chatgpt를 프롬프트하여 검토 텍스트를 분석하고 구조화 된 형식의 출력을 분석합니다.
선물, 배달 일 및 가격 가치를 사전으로 추출하기 위해 JSON 응답을 구문 분석합니다.
요약하면, 노트북은 Langchain의 출력 파서를 사용하여 자유 형식 Chatgpt 응답으로부터 구조화 된 데이터를 얻는 데 어떻게 정보 추출을위한 신속한 엔지니어링을 가능하게합니다.
Jupyter 노트북 링크 : langchain_output_parser_prompt_engineering.ipynb (실험은 Google Colab에서 수행됩니다)
Langchain과 함께 Openai의 GPT-3.5-Turbo 모델을 사용하려면 API 키가 필요합니다. API 키는 여기에서 얻을 수 있습니다.
LLM에 의해 생성 된 텍스트의 무작위성과 창의성을 제어하기 위해 ChatOpenAI 인스턴스를 초기화 할 때 온도 = 0.0을 사용했습니다. 온도는 0과 1 사이의 숫자 값입니다. 0의 온도는 모델이 항상 생성 할 가능성이 가장 높은 단어를 선택한다는 것을 의미하는 반면, 1의 온도는 모델이 더 적은 단어를 선택할 가능성이 높아서 더 창의적이고 예상치 못한 출력을 초래한다는 것을 의미합니다. 일반적으로 최적의 온도 설정은 당면한 특정 작업에 따라 다릅니다. 질문에 답하거나 요약하는 것과 같이 정확성과 사실이 필요한 작업의 경우 일반적으로 더 낮은 온도가 선호됩니다. 시를 쓰거나 이야기 아이디어를 생성하는 것과 같은 창의성과 독창성이 필요한 작업의 경우 더 높은 온도가 더 적합 할 수 있습니다. 우리의 임무는 Chatgpt 프롬프트 응답에서 구조화 된 정보를 추출하는 것이므로 온도를 0.0으로 설정합니다.
출력 파서 : 언어 모델 출력 텍스트. 그러나 여러 번 텍스트보다 구조화 된 정보를 얻고 싶습니다. 출력 파서가 언어 모델 응답을 구조화하는 데 도움이되는 곳입니다. 출력 파서가 구현 해야하는 두 가지 주요 방법이 있습니다.
신속한 엔지니어링을 위해 고객 리뷰를 분석하여 3 개의 정보를 추출합니다.
우리가 구문 분석하려는 검토에서 출력의 예제 구조 :
{
"gift" : true ,
"delivery_days" : 3 ,
"price_value" : " pretty affordable! "
}프롬프트 템플릿 :
For the following text, extract the following information:
gift: Was the item purchased as a gift for someone else?
Answer True if yes, False if not or unknown.
delivery_days: How many days did it take for the product
to arrive? If this information is not found, output -1.
price_value: Extract any sentences about the value or price,
and output them as a comma separated Python list.
text: {text}
{format_instructions}
여기서 텍스트는 고객 검토를 말하며 Format_instructions는 언어 모델의 출력을 형식화하는 방법에 대한 지침이 포함 된 문자열입니다.
그런 다음 LLM 응답을 출력 파서에 쉽게 공급하여 원하는 JSON/Dictionary 형식으로 구조화 된 데이터를 얻을 수 있습니다.
예를 들어 다음 검토를 사용했습니다.
This leaf blower is pretty amazing. It has four settings:
candle blower, gentle breeze, windy city, and tornado.
It arrived in two days, just in time for my wife's
anniversary present.
I think my wife liked it so much she was speechless.
So far I've been the only one using it, and I've been
using it every other morning to clear the leaves on our lawn.
It's slightly more expensive than the other leaf blowers
out there, but I think it's worth it for the extra features.
출력 파서에는 출력이 있습니다.
{
'gift': False,
'delivery_days': '2',
'price_value': "It's slightly more expensive than the other leaf blowers out there, but I think it's worth it for the extra features."
}