İşlev çağrısını kullanarak yapılandırılmış verileri ayıklama

Google Yapay Zeka'da görüntüle Google Colab'de çalıştır Kaynağı GitHub'da görüntüleyin

Bu eğiticide, bir hikayedeki karakter, ilişki, nesne ve yer listelerini ayıklamak için Gemini API'yi kullanarak yapılandırılmış bir veri ayıklama örneği üzerinden çalışacaksınız.

Kurulum

pip install -U -q google-generativeai
import pathlib
import textwrap

import google.generativeai as genai
import google.ai.generativelanguage as glm


from IPython.display import display
from IPython.display import Markdown

from google.api_core import retry

def to_markdown(text):
  text = text.replace('•', '  *')
  return Markdown(textwrap.indent(text, '> ', predicate=lambda _: True))

API anahtarınızı aldıktan sonra SDK'ya iletin. Bunu iki şekilde yapabilirsiniz:

  • Anahtarı, GOOGLE_API_KEY ortam değişkenine yerleştirin (SDK otomatik olarak oradan alır).
  • Anahtarı genai.configure(api_key=...) adlı cihaza verin
try:
    # Used to securely store your API key
    from google.colab import userdata

    # Or use `os.getenv('API_KEY')` to fetch an environment variable.
    GOOGLE_API_KEY=userdata.get('GOOGLE_API_KEY')
except ImportError:
    import os
    GOOGLE_API_KEY = os.environ['GOOGLE_API_KEY']

genai.configure(api_key=GOOGLE_API_KEY)

Örnek görev

Bu eğitim için doğal dil hikayelerinden varlıklar çıkaracaksınız. Örneğin, aşağıda Gemini tarafından yazılmış bir hikaye verilmiştir.

new_story = False

if new_story:
  model = genai.GenerativeModel(model_name='models/gemini-1.5-pro-latest')

  response = model.generate_content("""
      Write a long story about a girl with magic backpack, her family, and at
      least one other charater. Make sure everyone has names. Don't forget to
      describe the contents of the backpack, and where everyone and everything
      starts and ends up.""", request_options={'retry': retry.Retry()})
  story = response.text
  print(response.candidates[0].citation_metadata)
else:
  story = """In the quaint town of Willow Creek, nestled amidst rolling hills and whispering willows, resided a young girl named Anya. As she stepped out of the creaky wooden door of her modest cottage, her heart skipped a beat with excitement and anticipation. Today was her first day of school, and she couldn't wait to show off her prized possession - a magical backpack.\n\nHanded down to her from her grandmother, the backpack was no ordinary satchel. Its soft, emerald-green fabric shimmered with an ethereal glow, and its leather straps held secrets that only Anya knew. Within its capacious interior lay an enchanted world, filled with wonders that would ignite her imagination and change her life forever.\n\nAnya's parents, kind-hearted Elise and wise-bearded Edward, bid her farewell with warm embraces. "Remember, my dear," whispered her mother, "use your magic wisely and for good." Her father added, "Always seek knowledge, and let the backpack be your trusted companion."\n\nWith a skip in her step, Anya set off towards the town's only schoolhouse. On her way, she passed her best friend, Samuel, a curious and adventurous boy with a mischievous grin. "Hey, Anya," he called out. "Can I see your backpack?"\n\nAnya hesitated for a moment before unzipping the flap and revealing its contents. Samuel's eyes widened in amazement as he peered inside. There, nestled amidst pencils and notebooks, were a shimmering sword, a book of ancient spells, a tiny compass that always pointed north, and a magical key that could open any lock.\n\nTogether, they marveled at the backpack's wonders, promising to keep its secrets safe. As they approached the schoolhouse, Anya noticed a group of older children huddled together, their faces etched with fear. Curiosity getting the better of her, she cautiously approached.\n\n"What's wrong?" she asked.\n\nA tall, lanky boy stepped forward. "There's a monster in the forest," he stammered. "It's been terrorizing the town, attacking animals and even people."\n\nAnya's heart sank. The town of Willow Creek was small and peaceful, and the thought of a monster brought a shiver down her spine. She knew she had to do something to protect her family and friends.\n\nWithout a moment's hesitation, Anya opened her backpack and retrieved the shimmering sword. With a determined gleam in her eye, she turned to her terrified peers. "Don't worry," she said, her voice steady. "I'll take care of it."\n\nWith Samuel close behind her, Anya ventured into the shadowy depths of the forest. The trees seemed to whisper secrets as she passed, and the undergrowth rustled with unseen creatures. As they walked deeper into the forest, the air grew heavy and the ground beneath their feet trembled.\n\nSuddenly, they came to a clearing, and there before their eyes was the monster - a massive beast with sharp teeth, glowing red eyes, and claws that could crush a human with ease. The creature roared, a thunderous sound that shook the forest to its core.\n\nFear surged through Anya, but she refused to let it consume her. She drew the sword from its sheath and charged towards the monster. The blade shimmered in the sunlight, and as it struck the beast's hide, a blinding light erupted, enveloping everything in its radiance.\n\nWhen the light faded, the monster was gone, and in its place was a pile of shattered crystals. Anya had defeated the creature with the magic of her backpack, proving that even the smallest of objects could hold the greatest of powers.\n\nAs she and Samuel returned to the town, they were greeted as heroes. The people of Willow Creek rejoiced, and the legend of Anya, the girl with the magic backpack, was passed down through generations. And so, Anya continued her adventures, using the backpack's wonders to make the world a better place, one magical step at a time."""
to_markdown(story)

İnişli çıkışlı tepelerle çevrili, söğütler çalan söğütler arasında yer alan sıra dışı Willow Creek'te Anya adında bir genç kız yaşardı. Mütevazı kulübesinin gıcırtılı ahşap kapısından çıktığında kalbi heyecan ve beklentiyle atlıyor. Bugün okulun ilk günüydü ve en değerli eşyası olan sihirli bir sırt çantasını göstermek için sabırsızlanıyordu.

Büyükannesinden ona teslim edilen sırt çantası sıradan bir çanta değildi. Yumuşak, zümrüt yeşili kumaşı soluk bir ışıltıyla parlıyordu, deri kayışları ise yalnızca Anya'nın bildiği sırları saklıyordu. Oyunun geniş iç mekanında, hayal gücünü harekete geçirecek ve hayatını sonsuza kadar değiştirecek harikalarla dolu büyülü bir dünya vardı.

Anne babası olan nazik Elise ve bilge sakallı Edward, ona içten kucaklamalarla veda ediyor. "Hatırla, aşkım," diye fısıldadı annesine, "sihirini akıllıca ve iyilik için kullan." Babası, "Daima bilgi arama ve sırt çantasını bile güvendiğin bir yol arkadaşım bıraksın." diye ekliyor.

Ayşe birden atlayarak şehrin tek okul evine doğru yola çıktı. Yolda, muzip bir şekilde sırıtan en yakın arkadaşı Samuel'i geçti. Meraklı ve maceracı bir erkek çocuk. "Selam, Ayşe" diye seslendi. "Sırt çantanızı görebilir miyim?"

Anya bir süre tereddüt ederek fermuarı açıp içindekileri açığa çıkardı. Samuel şaşkınlıktan gözlerini kocaman açarak içine baktı. Orada, kalemler ve defterlerin arasında parıltılı bir kılıç, antik büyülerden oluşan bir kitap, her zaman kuzeyi gösteren küçük bir pusula ve tüm kilitleri açabilen sihirli bir anahtar vardı.

İkisi birlikte sırt çantasının harikalarına hayrete düşmüş ve sırtın sırlarını güvende tutmayı vaat etmektedir. Okul evine yaklaşırken Anya, birbirine sarılmış bir grup büyük çocuğun yüzlerine korkuyla çizilmiş olduğunu fark etti. Merakla daha da iyileşti ve dikkatli bir şekilde yaklaştı.

"Sorun ne?" diye sordu.

Uzun, zavallı bir çocuk öne doğru adım attı. "Ormanda bir canavar var," diye kederli sözlerle kekeliyordu. "Kasabayı korkutuyor, hayvanlara, hatta insanlara saldırıyor."

Anya'nın kalbi battı. Willow Creek küçük ve huzurlu bir kasabaydı. Bir canavarın düşüncesi bile omurgasını ürküttü. Ailesini ve arkadaşlarını korumak için bir şeyler yapması gerektiğini biliyordu.

Anya hiç tereddüt etmeden sırt çantasını açtı ve parıltılı kılıcı aldı. Gözlerinde kararlı bir parıltı varken korkmuş arkadaşlarına baktı. "Endişelenme," dedi titreyen bir ses tonu. "Ben ilgileneceğim."

Samuel onun yakınlarındayken Anya ormanın gölgelere daldı. Kadın geçerken ağaçlar sırlar fısıldaymış gibi görünüyordu. Çalılar ise görünmeyen yaratıklarla hışırdıyordu. Ormanın derinliklerine doğru yürüdüklerinde hava ağırlaştı ve ayaklarının altındaki zemin titremeye başladı.

Birden bire bir açıklığa ulaştılar ve gözlerinin önünde keskin dişleri, parlayan kırmızı gözleri ve pençeleri olan dev bir canavar vardı. Bu canavar bir insanı kolayca ezebilir. Yaratık, ormanı sarsan bir gök gürültülü sesle kükredi.

Korkuyu sarsan Anya, onu kaybetmesine izin vermiyordu. Kılıcı kılıcının kılıcından çekip canavara doğru saldırdı. Bıçak güneş ışığında parlıyor, canavarın derisine çarptığında kör bir ışık patlıyor ve parlaklığıyla her şeyi kaplıyordu.

Işık söndüğünde canavar yok olmuştu ve yerine kırık kristaller kalmıştı. Anya, sırt çantasının büyüsüyle bu yaratığı yenmiş ve en küçük nesnelerin bile en büyük güçlere sahip olabileceğini kanıtlamıştı.

O ve Samuel şehre döndüklerinde kahraman olarak karşılandılar. Willow Creek halkı keyif aldı ve sihirli sırt çantası takan Anya'nın efsanesi nesiller boyu anlatıldı. Böylece Anya, her seferinde sihirli bir adımla dünyayı daha iyi bir yer haline getirmek için sırt çantasıyla yapılan harikalardan yararlanarak maceralarına devam etti.

Doğal dil kullanma

Büyük dil modelleri, güçlü bir çoklu görev aracıdır. Genellikle İkizler’den ne istediğinizi sorabilirsiniz, sorun olmaz.

Bu şekilde veri yapıları oluştururken dikkat edilmesi gereken birkaç nokta vardır:

  • Bazen ayrıştırma işlemi başarısız olur.
  • Şema katı bir şekilde uygulanamıyor.

Bu sorunları bir sonraki bölümde çözeceksiniz. Öncelikle, şemanın metin olarak yazıldığı basit bir doğal dil istemini deneyin. Bu optimize edilmedi:

model = model = model = genai.GenerativeModel(
    model_name='models/gemini-1.5-pro-latest')

response = model.generate_content(
  textwrap.dedent("""\
    Please return JSON describing the the people, places, things and relationships from this story using the following schema:

    {"people": list[PERSON], "places":list[PLACE], "things":list[THING], "relationships": list[RELATIONSHIP]}

    PERSON = {"name": str, "description": str, "start_place_name": str, "end_place_name": str}
    PLACE = {"name": str, "description": str}
    THING = {"name": str, "description": str, "start_place_name": str, "end_place_name": str}
    RELATIONSHIP = {"person_1_name": str, "person_2_name": str, "relationship": str}

    All fields are required.

    Important: Only return a single piece of valid JSON text.

    Here is the story:

    """) + story,
  generation_config={'response_mime_type':'application/json'}
)
response.text
'{"people": [\n    {\n        "name": "Anya",\n        "description": "A young girl who lives in the town of Willow Creek with her parents, Elise and Edward. She possesses a magical backpack that was handed down to her from her grandmother.",\n        "start_place_name": "Willow Creek",\n        "end_place_name": "Willow Creek"\n    },\n    {\n        "name": "Elise",\n        "description": "Anya\'s kind-hearted mother",\n        "start_place_name": "Willow Creek",\n        "end_place_name": "Willow Creek"\n    },\n    {\n        "name": "Edward",\n        "description": "Anya\'s wise-bearded father",\n        "start_place_name": "Willow Creek",\n        "end_place_name": "Willow Creek"\n    },\n    {\n        "name": "Samuel",\n        "description": "Anya\'s best friend, a curious and adventurous boy with a mischievous grin.",\n        "start_place_name": "Willow Creek",\n        "end_place_name": "Willow Creek"\n    },\n    {\n        "name": "Monster",\n        "description": "A massive beast with sharp teeth, glowing red eyes, and claws that could crush a human with ease.",\n        "start_place_name": "Forest",\n        "end_place_name": "Forest"\n    }\n], "places": [\n    {\n        "name": "Willow Creek",\n        "description": "A quaint town nestled amidst rolling hills and whispering willows."\n    },\n    {\n        "name": "Forest",\n        "description": "A shadowy place with rustling undergrowth and whispering trees."\n    },\n    {\n        "name": "Schoolhouse",\n        "description": "The only school in the town of Willow Creek."\n    },\n    {\n        "name": "Anya\'s home",\n        "description": "A modest cottage with a creaky wooden door."\n    }\n], "things": [\n    {\n        "name": "Magic backpack",\n        "description": "A magical backpack that was handed down to Anya from her grandmother. Its soft, emerald-green fabric shimmered with an ethereal glow, and its leather straps held secrets that only Anya knew.",\n        "start_place_name": "Anya\'s home",\n        "end_place_name": "Forest"\n    },\n    {\n        "name": "Shimmering sword",\n        "description": "A sword that shimmered in the sunlight and could strike with blinding light.",\n        "start_place_name": "Magic backpack",\n        "end_place_name": "Forest"\n    },\n    {\n        "name": "Book of ancient spells",\n        "description": "A book that contained ancient spells.",\n        "start_place_name": "Magic backpack",\n        "end_place_name": "Forest"\n    },\n    {\n        "name": "Tiny compass",\n        "description": "A compass that always pointed north.",\n        "start_place_name": "Magic backpack",\n        "end_place_name": "Forest"\n    },\n    {\n        "name": "Magical key",\n        "description": "A key that could open any lock.",\n        "start_place_name": "Magic backpack",\n        "end_place_name": "Forest"\n    },\n    {\n        "name": "Shattered crystals",\n        "description": "The remains of the monster after it was defeated by Anya\'s magic backpack.",\n        "start_place_name": "Forest",\n        "end_place_name": "Forest"\n    }\n], "relationships": [\n    {\n        "person_1_name": "Anya",\n        "person_2_name": "Elise",\n        "relationship": "mother-daughter"\n    },\n    {\n        "person_1_name": "Anya",\n        "person_2_name": "Edward",\n        "relationship": "father-daughter"\n    },\n    {\n        "person_1_name": "Anya",\n        "person_2_name": "Samuel",\n        "relationship": "best friends"\n    }\n]}'

Bu, bir JSON dizesi döndürdü. Kodu ayrıştırmayı deneyin:

import json

print(json.dumps(json.loads(response.text), indent=4))
{
    "people": [
        {
            "name": "Anya",
            "description": "A young girl who lives in the town of Willow Creek with her parents, Elise and Edward. She possesses a magical backpack that was handed down to her from her grandmother.",
            "start_place_name": "Willow Creek",
            "end_place_name": "Willow Creek"
        },
        {
            "name": "Elise",
            "description": "Anya's kind-hearted mother",
            "start_place_name": "Willow Creek",
            "end_place_name": "Willow Creek"
        },
        {
            "name": "Edward",
            "description": "Anya's wise-bearded father",
            "start_place_name": "Willow Creek",
            "end_place_name": "Willow Creek"
        },
        {
            "name": "Samuel",
            "description": "Anya's best friend, a curious and adventurous boy with a mischievous grin.",
            "start_place_name": "Willow Creek",
            "end_place_name": "Willow Creek"
        },
        {
            "name": "Monster",
            "description": "A massive beast with sharp teeth, glowing red eyes, and claws that could crush a human with ease.",
            "start_place_name": "Forest",
            "end_place_name": "Forest"
        }
    ],
    "places": [
        {
            "name": "Willow Creek",
            "description": "A quaint town nestled amidst rolling hills and whispering willows."
        },
        {
            "name": "Forest",
            "description": "A shadowy place with rustling undergrowth and whispering trees."
        },
        {
            "name": "Schoolhouse",
            "description": "The only school in the town of Willow Creek."
        },
        {
            "name": "Anya's home",
            "description": "A modest cottage with a creaky wooden door."
        }
    ],
    "things": [
        {
            "name": "Magic backpack",
            "description": "A magical backpack that was handed down to Anya from her grandmother. Its soft, emerald-green fabric shimmered with an ethereal glow, and its leather straps held secrets that only Anya knew.",
            "start_place_name": "Anya's home",
            "end_place_name": "Forest"
        },
        {
            "name": "Shimmering sword",
            "description": "A sword that shimmered in the sunlight and could strike with blinding light.",
            "start_place_name": "Magic backpack",
            "end_place_name": "Forest"
        },
        {
            "name": "Book of ancient spells",
            "description": "A book that contained ancient spells.",
            "start_place_name": "Magic backpack",
            "end_place_name": "Forest"
        },
        {
            "name": "Tiny compass",
            "description": "A compass that always pointed north.",
            "start_place_name": "Magic backpack",
            "end_place_name": "Forest"
        },
        {
            "name": "Magical key",
            "description": "A key that could open any lock.",
            "start_place_name": "Magic backpack",
            "end_place_name": "Forest"
        },
        {
            "name": "Shattered crystals",
            "description": "The remains of the monster after it was defeated by Anya's magic backpack.",
            "start_place_name": "Forest",
            "end_place_name": "Forest"
        }
    ],
    "relationships": [
        {
            "person_1_name": "Anya",
            "person_2_name": "Elise",
            "relationship": "mother-daughter"
        },
        {
            "person_1_name": "Anya",
            "person_2_name": "Edward",
            "relationship": "father-daughter"
        },
        {
            "person_1_name": "Anya",
            "person_2_name": "Samuel",
            "relationship": "best friends"
        }
    ]
}

Bu yöntem nispeten basittir ve genellikle işe yarar. Ancak API'nin işlev çağırma özelliğini kullanarak şemayı tanımlayarak bunu daha sıkı/sağlam hale getirebilirsiniz.

İşlev çağrısını kullan

Henüz İşlev çağrısıyla ilgili temel bilgiler eğiticisini henüz denemediyseniz önce bunu yaptığınızdan emin olun.

İşlevinizi çağıran işlev ve parametreleri, API'de glm.FunctionDeclaration olarak açıklanır. SDK, temel durumlarda FunctionDeclaration öğesini işlevden ve ek açıklamalarından oluşturabilir. SDK şu anda iç içe yerleştirilmiş OBJECT (dict) parametrelerinin açıklamasını işlememektedir. Şimdilik bunları açık bir şekilde tanımlamanız gerekiyor.

Şemayı tanımlama

person öğesini name, description, start_place_name, end_place_name dize alanlarına sahip bir nesne olarak tanımlayarak başlayın.

person = glm.Schema(
    type = glm.Type.OBJECT,
    properties = {
        'name':  glm.Schema(type=glm.Type.STRING),
        'description':  glm.Schema(type=glm.Type.STRING),
        'start_place_name': glm.Schema(type=glm.Type.STRING),
        'end_place_name': glm.Schema(type=glm.Type.STRING)
    },
    required=['name', 'description', 'start_place_name', 'end_place_name']
)

Daha sonra, kişileri person nesne arasından ARRAY olarak tanımlayın:

people = glm.Schema(
    type=glm.Type.ARRAY,
    items=person
)

Ardından ayıklamaya çalıştığınız öğelerin her biri için aynı işlemi yapın:

place = glm.Schema(
    type = glm.Type.OBJECT,
    properties = {
        'name':  glm.Schema(type=glm.Type.STRING),
        'description':  glm.Schema(type=glm.Type.STRING),
    }
)

places = glm.Schema(
    type=glm.Type.ARRAY,
    items=place
)
thing = glm.Schema(
  type = glm.Type.OBJECT,
  properties = {
      'name':  glm.Schema(type=glm.Type.STRING),
      'description':  glm.Schema(type=glm.Type.STRING),
  }
)

things = glm.Schema(
    type=glm.Type.ARRAY,
    items=thing
)
relationship = glm.Schema(
    type = glm.Type.OBJECT,
    properties = {
        'person_1_name':  glm.Schema(type=glm.Type.STRING),
        'person_2_name':  glm.Schema(type=glm.Type.STRING),
        'relationship':  glm.Schema(type=glm.Type.STRING),
    }
)

relationships = glm.Schema(
    type=glm.Type.ARRAY,
    items=relationship
)

Şimdi FunctionDeclaration oluşturun:

add_to_database = glm.FunctionDeclaration(
    name="add_to_database",
    description=textwrap.dedent("""\
        Adds entities to the database.
        """),
    parameters=glm.Schema(
        type=glm.Type.OBJECT,
        properties = {
            'people': people,
            'places': places,
            'things': things,
            'relationships': relationships
        }
    )
)

API'yi çağırma

İşlev çağrısı temel özellikleri bölümünde gördüğünüz gibi artık bu FunctionDeclaration öğesini genai.GenerativeModel oluşturucunun tools bağımsız değişkenine geçirebilirsiniz (kurucu, işlev bildiriminin eşdeğer JSON gösterimini de kabul eder):

model = model = genai.GenerativeModel(
    model_name='models/gemini-1.5-pro-latest',
    tools = [add_to_database])

API'yi her çağırdığınızda SDK, araçları isteminizle birlikte gönderir ve model, tanımladığınız işlevi çağırmalıdır:

result = model.generate_content(f"""
Please add the people, places, things, and relationships from this story to the database:

{story}
""",
# Force a function call
tool_config={'function_calling_config':'ANY'})

Artık ayrıştırılacak metin yoktur. Sonuç, bir veri yapısı olur.

'text' in result.candidates[0].content.parts[0]
False
'function_call' in result.candidates[0].content.parts[0]
True
fc = result.candidates[0].content.parts[0].function_call
print(type(fc))
<class 'google.ai.generativelanguage_v1beta.types.content.FunctionCall'>

glm.FunctionCall sınıfı Google Protocol Buffers'ı temel alır. Sınıfı daha iyi bilinen bir JSON uyumlu nesneye dönüştürün:

print(json.dumps(type(fc).to_dict(fc), indent=4))
{
    "name": "add_to_database",
    "args": {
        "things": [
            {
                "name": "Magical Backpack",
                "description": "Anya's prized possession, the Magical Backpack, is no ordinary satchel. Its soft, emerald-green fabric shimmers with an ethereal glow, and its leather straps have secrets that only Anya knows. Within its capacious interior lay an enchanted world, filled with wonders that would ignite her imagination and change her life forever."
            },
            {
                "name": "Shimmering Sword",
                "description": "Among the wonders in Anya's Magical Backpack, lies a shimmering sword. With a determined gleam in her eye, she retrieved the shimmering sword and charged towards the monster."
            },
            {
                "description": "Residing within the Magical Backpack, the Book of Ancient Spells holds secrets untold.",
                "name": "Book of Ancient Spells"
            },
            {
                "description": "Tucked away in the Magical Backpack is a tiny compass that always points north.",
                "name": "Tiny Compass that Always Points North"
            },
            {
                "description": "Hidden within the Magical Backpack is a magical key that can open any lock.",
                "name": "Magical Key that Can Open Any Lock"
            }
        ],
        "relationships": [
            {
                "relationship": "Mother-Daughter",
                "person_1_name": "Anya",
                "person_2_name": "Elise"
            },
            {
                "person_2_name": "Edward",
                "relationship": "Father-Daughter",
                "person_1_name": "Anya"
            },
            {
                "person_2_name": "Samuel",
                "person_1_name": "Anya",
                "relationship": "Best Friends"
            }
        ],
        "people": [
            {
                "name": "Anya",
                "description": "Anya, the main character of the story, is a young girl with a magical backpack.",
                "start_place_name": "Willow Creek",
                "end_place_name": "Unknown"
            },
            {
                "name": "Elise",
                "description": "Anya's mother, Elise is a kind-hearted woman.",
                "end_place_name": "Unknown",
                "start_place_name": "Willow Creek"
            },
            {
                "start_place_name": "Willow Creek",
                "end_place_name": "Unknown",
                "name": "Edward",
                "description": "Anya's father, Edward is a wise-bearded man."
            },
            {
                "end_place_name": "Unknown",
                "start_place_name": "Willow Creek",
                "description": "Anya's best friend, Samuel is a curious and adventurous boy with a mischievous grin.",
                "name": "Samuel"
            }
        ],
        "places": [
            {
                "description": "The quaint town of Willow Creek is nestled amidst rolling hills and whispering willows.",
                "name": "Willow Creek"
            },
            {
                "description": "The town's only schoolhouse.",
                "name": "Schoolhouse"
            },
            {
                "description": "A shadowy place filled with secrets and dangers, the Forest is home to a terrifying monster.",
                "name": "Forest"
            }
        ]
    }
}

Sonuç

API, yalnızca metin girişi ve metin çıkışıyla yapılandırılmış veri ayıklama sorunlarını işleyebilir. Ancak işlev çağrısı, katı bir şema tanımlamanıza olanak tanıdığı ve hataya açık olabilecek bir ayrıştırma adımını ortadan kaldırdığı için büyük olasılıkla daha güvenilirdir.