ใช้ตัวแยกวิเคราะห์ผลลัพธ์ของ Langchain เพื่อดึงข้อมูลจากการตอบกลับพรอมต์ของ Chatgpt
สมุดบันทึก Jupyter นี้แสดงให้เห็นถึงวิธีการใช้ StructuredOutputParser ของ Langchain เพื่อแยกข้อมูลที่มีโครงสร้างจากการตอบกลับพร้อมท์ ChatGPT
นำเข้าห้องสมุดที่จำเป็นเช่น OpenAI , LangChain และกำหนดอินสแตนซ์ ChatOpenAI
กำหนดโครงสร้างเอาท์พุทตัวอย่างด้วยฟิลด์เช่น "gift" , "delivery_days" , "price_value"
แสดงตัวอย่างข้อความตรวจสอบลูกค้าที่จะแยกวิเคราะห์
สร้างวัตถุ ResponseSchema สำหรับแต่ละฟิลด์เอาต์พุต
สร้าง StructuredOutputParser โดยใช้ schemas ตอบสนอง
กำหนดเทมเพลตพรอมต์ที่รวมคำแนะนำรูปแบบของตัวแยกวิเคราะห์
แจ้งให้ Chatgpt วิเคราะห์ข้อความรีวิวและเอาต์พุตในรูปแบบที่มีโครงสร้าง
แยกวิเคราะห์การตอบสนองของ JSON เพื่อสกัดของขวัญวันส่งมอบและมูลค่าราคาลงในพจนานุกรม
โดยสรุปโน้ตบุ๊กแสดงให้เห็นว่าตัวแยกวิเคราะห์เอาท์พุทของ Langchain สามารถใช้เพื่อรับข้อมูลที่มีโครงสร้างจากการตอบกลับแบบ Free-Form ChatGPT ช่วยให้วิศวกรรมพร้อมใช้งานสำหรับการดึงข้อมูล
ลิงค์สมุดบันทึก Jupyter: langchain_output_parser_prompt_engineering.ipynb (การทดลองดำเนินการใน Google Colab)
หากต้องการใช้รุ่น GPT-3.5-turbo ของ OpenAI กับ Langchain จำเป็นต้องใช้คีย์ API สามารถรับคีย์ API ได้จากที่นี่
เพื่อควบคุมการสุ่มและความคิดสร้างสรรค์ของข้อความที่สร้างขึ้นโดย LLM เราใช้อุณหภูมิ = 0.0 เมื่อเริ่มต้นอินสแตนซ์ ChatOpenAI อุณหภูมิเป็นค่าตัวเลขที่ตั้งอยู่ระหว่าง 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/พจนานุกรมที่เราต้องการ
เป็นตัวอย่างที่เราใช้รีวิวต่อไปนี้:
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."
}