Memanfaatkan LangChain untuk Mendapatkan Output JSON yang Terstruktur dari AI
Eko Susilo Harjo September 10, 2024

Dalam dunia aplikasi berbasis AI, mendapatkan output terstruktur dari model bahasa sangat penting untuk integrasi yang mulus dengan sistem lain. Artikel ini akan membahas cara menggunakan LangChain untuk mendapatkan output JSON yang terstruktur secara kustom, dengan fokus pada mendapatkan daftar objek JSON berdasarkan skema yang telah ditentukan.
Kekuatan Output Terstruktur yang Dikustomisasi
Ketika bekerja dengan model bahasa, respons teks bebas bentuk dapat sulit diurai dan digunakan dalam aplikasi hilir. Dengan mendefinisikan skema JSON kustom, kita dapat memandu model untuk menghasilkan output terstruktur yang sesuai dengan persyaratan yang tepat.
Menerapkan Output Terstruktur yang Dikustomisasi dengan LangChain
Mari kita bahas cara menerapkan output terstruktur yang dikustomisasi menggunakan LangChain, berdasarkan skema JSON spesifik.
Mendefinisikan Skema Output
Pertama, kita perlu mendefinisikan struktur output yang diinginkan. Dalam contoh ini, kita akan menggunakan skema untuk daftar item, di mana setiap item memiliki properti spesifik:
Python
outputFormatJson = {
"name": "ItemList",
"description": "List of information about items",
"parameters": {
"type": "object",
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "The name of the item"
},
"description": {
"type": "string",
"description": "Description of the item"
},
"category": {
"type": "string",
"description": "Category of the item"
},
"price": {
"type": "number",
"description": "Price of the item"
},
"tags": {
"type": "array",
"items": {
"type": "string"
},
"description": "List of tags associated with the item"
}
},
"required": ["name", "description", "category", "price"]
}
}
},
"required": ["items"]
}
}
Skema ini mendefinisikan daftar item, di mana setiap item memiliki nama, deskripsi, kategori, harga, dan tag opsional.
Menyiapkan Model Bahasa
Selanjutnya, kita akan menyiapkan model bahasa kita dengan format output yang dikustomisasi:
Python
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(model="gpt-4o-mini")
structured_llm = llm.with_structured_output(outputFormatJson)
Di sini, kita menggunakan model ChatGPT dari OpenAI, tetapi Anda dapat menggunakan model apa pun yang kompatibel yang didukung oleh LangChain.
Membuat Templat Prompt
Untuk memandu model dalam menghasilkan output yang diinginkan, kita akan membuat templat prompt:
Python
from langchain_core.prompts import ChatPromptTemplate
system_message = """You are an inventory management assistant. Create a list of items based on the user's request.
Follow the specified JSON structure exactly. Each item should have a name, description, category, price, and optional tags."""
prompt = ChatPromptTemplate.from_messages([
("system", system_message),
("human", "{input}")
])
item_list_chain = prompt | structured_llm
Templat prompt ini menyiapkan konteks untuk model dan memastikan model memahami format output yang diperlukan.
Membangkitkan Output Terstruktur
Sekarang kita dapat menggunakan chain kita untuk menghasilkan output terstruktur berdasarkan input pengguna:
Python
user_input = "Create a list of 3 office supplies"
result = item_list_chain.invoke({"input": user_input})
print(result)
Hal ini akan menghasilkan output JSON terstruktur yang mirip dengan ini:
JSON
{
"items": [
{
"name": "Ballpoint Pen Set",
"description": "A pack of smooth-writing ballpoint pens in assorted colors",
"category": "Writing Instruments",
"price": 5.99,
"tags": ["pens", "office", "writing"]
},
{
"name": "Sticky Notes",
"description": "A pack of colorful self-adhesive notes for quick reminders",
"category": "Paper Products",
"price": 3.49,
"tags": ["notes", "office", "organization"]
},
{
"name": "Stapler",
"description": "A reliable desktop stapler with 20-sheet capacity",
"category": "Office Equipment",
"price": 8.99,
"tags": ["stapler", "office", "fastening"]
}
]
}
Mengelola Output
Output terstruktur dapat dengan mudah diurai dan digunakan dalam aplikasi Anda. Misalnya:
Python
for item in result["items"]:
print(f"Item: {item['name']}")
print(f"Price: ${item['price']:.2f}")
print(f"Category: {item['category']}")
print("---")
Hal ini akan menampilkan daftar item yang diformat, sehingga mudah diintegrasikan dengan sistem manajemen inventaris atau aplikasi lainnya.
Kesimpulan
Output JSON terstruktur yang dikustomisasi dengan LangChain menyediakan cara yang kuat untuk mengintegrasikan model bahasa ke dalam aplikasi Anda sambil mempertahankan kontrol penuh atas format output. Dengan mendefinisikan skema yang jelas dan menggunakan prompt yang tepat, Anda dapat memandu model untuk menghasilkan data terstruktur yang konsisten yang siap digunakan langsung dalam sistem Anda. Ingatlah untuk selalu memvalidasi output dan menerapkan penanganan kesalahan yang tepat, karena model bahasa mungkin menghasilkan hasil yang tidak terduga. Dengan teknik-teknik ini, Anda dapat membuat aplikasi yang kuat, berbasis AI, yang terintegrasi dengan mulus dengan alur kerja dan struktur data yang ada.
sources : https://jeetah.hashnode.dev/creating-custom-json-outputs-from-ai-responses-with-langchain
Discover more from teknologi now
Subscribe to get the latest posts sent to your email.