News, Artificial Intellegence

Memanfaatkan LangChain untuk Mendapatkan Output JSON yang Terstruktur dari AI

Eko Susilo Harjo September 10, 2024
langchain
langchain

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.

Polars adalah pustaka open-source untuk pemrosesan data yang ditulis dalam bahasa Rust, yang terkenal dengan efisiensi dan kecepatan. Polars dirancang untuk menangani analisis data secara paralel, memanfaatkan arsitektur modern komputer yang memiliki banyak inti CPU.

“Pelajari konsep Docker persistence dan teknik seperti Docker volumes, bind mounts, dan tmpfs untuk memastikan data tetap aman dan persisten dalam container. Dapatkan panduan lengkap di sini!”

AI dalam dunia fintech telah berkembang pesat, bukan sekadar teknologi baru yang tiba-tiba muncul. Teknologi ini telah lama digunakan untuk membantu pengambilan keputusan keuangan dan mendeteksi penipuan. Kini, AI dan subdomainnya, yaitu Machine Learning (ML), memberikan nilai tambah signifikan dalam berbagai aspek industri fintech. Apa saja manfaat utama teknologi ini bagi sektor keuangan dan perbankan? […]

Discover more from teknologi now

Subscribe now to keep reading and get access to the full archive.

Continue reading