Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:
Databricks SQL
Databricks Runtime
Önemli
Bu işlev Genel Önizleme aşamasındadır ve HIPAA ile uyumludur.
Önizleme sırasında:
- Temel alınan dil modeli birkaç dili işleyebilir, ancak bu AI İşlevi İngilizce için ayarlanmıştır.
- Yapay Zeka İşlevleri bölge kullanılabilirliği için sınırlı bölgesel kullanılabilirliğe sahip özellikler bölümüne bakın.
İşlev, ai_extract() sağladığınız şemaya göre metin ve belgelerden yapılandırılmış verileri ayıklar. Basit alan adlarını temel ayıklama için kullanabilir veya faturalar, sözleşmeler ve finansal dosyalar gibi iş belgeleri için iç içe nesneler, diziler, tür doğrulama ve alan açıklamalarıyla karmaşık şemalar tanımlayabilirsiniz.
İşlev, gibi VARIANTdiğer yapay zeka işlevlerinden metin veya ai_parse_document çıktı kabul eder ve uçtan uca belge işleme için birleştirilebilir iş akışlarını etkinleştirir.
Görsel kullanıcı arabiriminin sonuçlarını ai_extractdoğrulamak ve yinelemek için bkz. Bilgi Ayıklama.
Gereksinimler
Apache 2.0 lisansı
Şu anda kullanılabilecek temel modeller Apache 2.0 Lisansı, Telif Hakkı © Apache Software Foundation kapsamında lisanslandırılır. Müşteriler, geçerli model lisanslarıyla uyumluluğu sağlamakla sorumludur.
Databricks, geçerli koşullarla uyumluluğu sağlamak için bu lisansların gözden geçirilmesini önerir. Gelecekte Databricks'in iç karşılaştırmalarına göre daha iyi performans gösteren modeller ortaya çıkarsa Databricks modeli (ve bu sayfada sağlanan geçerli lisansların listesini) değiştirebilir.
Bu işlevi güçlendiren model, Model Sunma Temeli Model API'leri kullanılarak kullanılabilir hale getirilir. Databricks'te hangi modellerin kullanılabildiği ve bu modellerin kullanımını yöneten lisanslar ve ilkeler hakkında bilgi için bkz. Geçerli model koşulları .
Gelecekte Databricks'in iç karşılaştırmalarına göre daha iyi performans gösteren modeller ortaya çıkarsa Databricks modelleri değiştirebilir ve belgeleri güncelleştirebilir.
- Bu işlev yalnızca bazı bölgelerde kullanılabilir. Bkz. Yapay zeka işlevi kullanılabilirliği.
- Bu işlev Azure Databricks SQL Classic'te kullanılamaz.
- Databricks SQL fiyatlandırma sayfasını gözden geçirin.
- Databricks Runtime 15.1 ve üzerinde bu işlev Databricks iş akışında görev olarak çalıştırılacak not defterleri de dahil olmak üzere Databricks not defterlerinde desteklenir.
- Toplu çıkarım iş yükleri, gelişmiş performans için Databricks Runtime 15.4 ML LTS gerektirir.
Söz dizimi
Databricks, iç içe alan ayıklamayı ve açıklamaları desteklediğinden bu işlevin 2. sürümünün kullanılmasını önerir.
Sürüm 2.1 (önerilir)
ai_extract(
content VARIANT | STRING,
schema STRING,
[options MAP<STRING, STRING>]
) RETURNS VARIANT
Sürüm 2
ai_extract(
content VARIANT | STRING,
schema STRING,
[options MAP<STRING, STRING>]
) RETURNS VARIANT
Sürüm 1
ai_extract(
content STRING,
labels ARRAY<STRING>,
[options MAP<STRING, STRING>]
) RETURNS STRUCT
Argümanlar
Sürüm 2.1 (önerilir)
content:VARIANTveyaSTRINGifadesi. Kabul eder:- Ham metin olarak
STRING - Başka
VARIANTbir yapay zeka işlevi (örneğinai_parse_document) tarafından üretilen bir
- Ham metin olarak
schemaSTRING: Ayıklama için JSON şemasını tanımlayan değişmez değer. Şema şu şekilde olabilir:- Basit şema: Alan adlarının JSON dizisi (dize olduğu varsayılır)
"[\"vendor_name\", \"invoice_id\", \"total_amount\"]" - Gelişmiş şema: Tür bilgileri, açıklamalar ve iç içe yapıları olan bir JSON nesnesi
- , ,
string,integernumbervebooleantürlerini desteklerenum. Tür doğrulama gerçekleştirir. Geçerli olmayan değerler hatayla sonuçlanır. En fazla 500 sabit listesi değeri. - ile kullanarak
"type": "object"iç içe nesneleri destekler"properties" - ile kullanarak
"type": "array"temel öğe veya nesne dizilerini destekler"items" - Ayıklama kalitesine yol gösterecek her özellik için isteğe bağlı
"description"alan
- , ,
- Basit şema: Alan adlarının JSON dizisi (dize olduğu varsayılır)
options: Yapılandırma seçeneklerini içeren isteğe bağlıMAP<STRING, STRING>bir seçenek:-
version: Geçişi desteklemek için sürüm anahtarı ("2.1","2.0","1.0"). Varsayılan değer giriş türlerini temel alır. -
instructions: Ayıklama kalitesini geliştirmek için görevin ve etki alanının genel açıklaması. 20.000 karakterden az olmalıdır. -
enableCitations: olduğundatrue, ayıklama şemasındaki her alanın çıktısı, belgede ayıklanan çıkışı gösteren sıfır veya daha fazla alıntı listesi içerir. -
enableConfidenceScores: olduğundatrue, ayıklama şemasındaki her alanın çıktısı 0 ile 1 arasında bir güvenilirlik puanı içerir ve modelin bu değerle ilgili ne kadar kesin olduğunu gösterir. Uygun güvenilirlik eşiği, özel kullanım örneğinize bağlıdır ve risk ve hata toleransınızla uyumlu bir kesme seçmelisiniz.
-
Sürüm 2
content:VARIANTveyaSTRINGifadesi. Kabul eder:- Ham metin olarak
STRING - Başka
VARIANTbir yapay zeka işlevi (örneğinai_parse_document) tarafından üretilen bir
- Ham metin olarak
schemaSTRING: Ayıklama için JSON şemasını tanımlayan değişmez değer. Şema şu şekilde olabilir:- Basit şema: Alan adlarının JSON dizisi (dize olduğu varsayılır)
"[\"vendor_name\", \"invoice_id\", \"total_amount\"]" - Gelişmiş şema: Tür bilgileri, açıklamalar ve iç içe yapıları olan bir JSON nesnesi
- , ,
string,integernumbervebooleantürlerini desteklerenum. Tür doğrulama gerçekleştirir. Geçerli olmayan değerler hatayla sonuçlanır. En fazla 500 sabit listesi değeri. - ile kullanarak
"type": "object"iç içe nesneleri destekler"properties" - ile kullanarak
"type": "array"temel öğe veya nesne dizilerini destekler"items" - Ayıklama kalitesine yol gösterecek her özellik için isteğe bağlı
"description"alan
- , ,
- Basit şema: Alan adlarının JSON dizisi (dize olduğu varsayılır)
options: Yapılandırma seçeneklerini içeren isteğe bağlıMAP<STRING, STRING>bir seçenek:-
version: Geçişi desteklemek için sürüm anahtarı ("1.0"v1 davranışı için,"2.0"v2 davranışı için). Varsayılan, giriş türlerini temel alır, ancak öğesine geri döner"1.0". -
instructions: Ayıklama kalitesini geliştirmek için görevin ve etki alanının genel açıklaması. 20.000 karakterden az olmalıdır.
-
Sürüm 1
contentSTRING: Ham metni içeren bir ifade.labels: BirARRAY<STRING>literal. Her öğe ayıklanacak bir varlık türüdür.options: Yapılandırma seçeneklerini içeren isteğe bağlıMAP<STRING, STRING>bir seçenek:-
version: Geçişi desteklemek için sürüm anahtarı ("1.0"v1 davranışı için,"2.0"v2 davranışı için). Varsayılan, giriş türlerini temel alır, ancak öğesine geri"1.0"döner.
-
İadeler
Sürüm 2.1 (önerilir)
Şunu içeren bir VARIANT döndürür:
{
"response": {...}, // Extracted data matching the provided schema. Each leaf is returned as a Field object (see below).
"error_message": null, // null on success, or error message on failure
"metadata": { ... } // Metadata about the response, including unfurled citation ids.
}
alanı, response şemaya göre ayıklanan yapılandırılmış verileri içerir:
- Alan adları ve türleri şema tanımıyla eşleş
- Şemanın yapısı yanıtta korunur: iç içe nesneler ve diziler özgün şekillerini korur. Ayıklama şemasındaki her "skaler" alan, aşağıdaki alanlara sahip bir çıkış nesnesine sahiptir:
-
value: Şemaya göre yazılan ayıklanan değer.Nullalanı ayıklanamazsa. -
citation_ids: Yalnızca olduğundaenableCitationstruebulunur. dizininemetadata.citationsalınmış bir kimlik dizisi. -
confidence_score: Yalnızca olduğundaenableConfidenceScorestruebulunur. 0 ile 1 arasında bir float.
-
- Tamsayı, sayı, boole ve sabit listesi türleri için tür doğrulaması zorunlu kılındı
- Eğer
contentNULLise, sonuçNULLolur.
alanı metadata yanıtla ilgili meta verileri içerir. olduğunda enableCitationstrue, metadata alan, ayıklanan değeri girişteki konumuna response kadar takip eden alandaki her alıntı kimliğiyle ilgili ayrıntıları içerir.
Giriş türüne bağlı olarak alıntılar iki türden biri olabilir:
- Ham metin (STRING) girişleri için alıntı, özgün girişteki bir metin aralığıdır. metadata.citations dosyasındaki her nesnenin içeriği:
-
id: Bir alandaki citation_ids girişiyle eşleşen tamsayı. -
start: Giriş dizesine 0 tabanlı karakter uzaklığı dahil. -
stop: Giriş dizesine özel 0 tabanlı karakter uzaklığı.
-
- PDF belgeleri ve görüntüleri için (aşağı akışı
ai_parse_documentkullanılırkenai_extract), alıntı özgün girişteki sınırlayıcı bir kutudur. içindekimetadata.citationsher nesnenin içeriği:-
id: Bir alandaki girdiyle eşleşencitation_idstamsayı. -
bbox: Çıkışta şekli element.bboxai_parse_documentile aynı olan nesne dizisi{coord, page_id}.coord, sayfa görüntüsündeki[x0, y0, x1, y1]; page_idpiksel koordinatlarıdır ve 0 tabanlı bir sayfa dizinidir.
-
Sürüm 2
Şunu içeren bir VARIANT döndürür:
{
"response": { ... }, // Extracted data matching the provided schema
"error_message": null // null on success, or error message on failure
}
alanı, response şemaya göre ayıklanan yapılandırılmış verileri içerir:
- Alan adları ve türleri şema tanımıyla eşleş
- İç içe nesneler ve diziler yapıda korunur
- Alanlar bulunamazsa olabilir
null - , ,
integernumbervebooleantürleri içinenumtür doğrulaması zorunlu kılındı
Eğer contentNULL ise, sonuç NULL olur.
Sürüm 1
STRUCT Her alanın içinde labelsbelirtilen bir varlık türüne karşılık geldiği bir döndürür. Her alan, ayıklanan varlığı temsil eden bir dize içerir. İşlev herhangi bir varlık türü için birden fazla aday bulursa, yalnızca bir tane döndürür.
Örnekler
Sürüm 2.1 (önerilir)
Basit şema - yalnızca alan adları
> SELECT ai_extract(
'Invoice #12345 from Acme Corp for $1,250.00 dated 2024-01-15',
'["invoice_id", "vendor_name", "total_amount", "invoice_date"]',
options => map('version', '2.1')
);
{
"response": {
"invoice_id": {"value": "12345"},
"vendor_name": {"value": "Acme Corp"},
"total_amount": {"value": "1250.00"},
"invoice_date": {"value": "2024-01-15"}
},
"error_message": null
}
Gelişmiş şema - türleri ve açıklamaları ile
> SELECT ai_extract(
'Invoice #12345 from Acme Corp for $1,250.00 dated 2024-01-15',
'{
"invoice_id": {"type": "string", "description": "Unique invoice identifier"},
"vendor_name": {"type": "string", "description": "Legal business name"},
"total_amount": {"type": "number", "description": "Total invoice amount"},
"invoice_date": {"type": "string", "description": "Date in YYYY-MM-DD format"}
}',
options => map('version', '2.1')
);
{
"response": {
"invoice_id": {"value": "12345"},
"vendor_name": {"value": "Acme Corp"},
"total_amount": {"value": 1250.00},
"invoice_date": {"value": "2024-01-15"}
},
"error_message": null
}
İç içe nesneler ve diziler
> SELECT ai_extract(
'Invoice #12345 from Acme Corp
Line 1: Widget A, qty 10, $50.00 each
Line 2: Widget B, qty 5, $100.00 each
Subtotal: $1,000.00, Tax: $80.00, Total: $1,080.00',
'{
"invoice_header": {
"type": "object",
"properties": {
"invoice_id": {"type": "string"},
"vendor_name": {"type": "string"}
}
},
"line_items": {
"type": "array",
"description": "List of invoiced products",
"items": {
"type": "object",
"properties": {
"description": {"type": "string"},
"quantity": {"type": "integer"},
"unit_price": {"type": "number"}
}
}
},
"totals": {
"type": "object",
"properties": {
"subtotal": {"type": "number"},
"tax_amount": {"type": "number"},
"total_amount": {"type": "number"}
}
}
}',
options => map('version', '2.1')
);
{
"response": {
"invoice_header": {
"invoice_id": {"value": "12345"},
"vendor_name": {"value": "Acme Corp"}
},
"line_items": [
{"description": {"value": "Widget A"}, "quantity": {"value": 10}, "unit_price": {"value": 50.00}},
{"description": {"value": "Widget B"}, "quantity": {"value": 5}, "unit_price": {"value": 100.00}}
],
"totals": {
"subtotal": {"value": 1000.00},
"tax_amount": {"value": 80.00},
"total_amount": {"value": 1080.00}
}
},
"error_message": null
}
ile birlikte kullanılabilirlik ai_parse_document
> WITH parsed_docs AS (
SELECT
path,
ai_parse_document(
content,
MAP('version', '2.0')
) AS parsed_content
FROM READ_FILES('/Volumes/finance/invoices/', format => 'binaryFile')
)
SELECT
path,
ai_extract(
parsed_content,
'["invoice_id", "vendor_name", "total_amount"]',
MAP('version', '2.1', 'instructions', 'These are vendor invoices.')
) AS invoice_data
FROM parsed_docs;
Sabit listeleri kullanma
> SELECT ai_extract(
'Invoice #12345 from Acme Corp, amount: $1,250.00 USD',
'{
"invoice_id": {"type": "string"},
"vendor_name": {"type": "string"},
"total_amount": {"type": "number"},
"currency": {
"type": "enum",
"labels": ["USD", "EUR", "GBP", "CAD", "AUD"],
"description": "Currency code"
},
"payment_terms": {"type": "string"}
}',
options => map('version', '2.1')
);
{
"response": {
"invoice_id": {"value": "12345"},
"vendor_name": {"value": "Acme Corp"},
"total_amount": {"value": 1250.00},
"currency": {"value": "USD"},
"payment_terms": {"value": null}
},
"error_message": null
}
Alıntılar (STRING girişi, SPAN alıntıları)
> SELECT ai_extract(
'Invoice #12345 from Acme Corp for $1,250.00 dated 2024-01-15',
'{
"invoice_id": {"type": "string", "description": "Unique invoice identifier"},
"vendor_name": {"type": "string", "description": "Legal business name"},
"total_amount": {"type": "number", "description": "Total invoice amount"},
"invoice_date": {"type": "string", "description": "Date in YYYY-MM-DD format"}
}',
options => map(
'version', '2.1',
'enableCitations', 'true'
)
);
{
"response": {
"invoice_id": {"citation_ids": [0], "value": "12345"},
"vendor_name": {"citation_ids": [0], "value": "Acme Corp"},
"total_amount": {"citation_ids": [1], "value": 1250.00},
"invoice_date": {"citation_ids": [1], "value": "2024-01-15"}
},
"metadata": {
"chunk_type": "span",
"citations": [
{"id": 0, "start": 0, "stop": 29},
{"id": 1, "start": 29, "stop": 60}
]
},
"error_message": null
}
Alıntılar (ai_parse_document VARYANT, BBOX alıntıları)
> WITH parsed AS (
SELECT ai_parse_document(
content,
map('imageOutputPath', '/Volumes/main/default/parsed_images/') // necessary for rendering bboxes
) AS doc
FROM READ_FILES('/Volumes/main/default/invoices/invoice.pdf', format => 'binaryFile')
)
SELECT ai_extract(
doc,
'{"invoice_id":{"type":"string"}, "total_amount":{"type":"number"}}',
options => map('version','2.1','enableCitations','true')
) AS extracted
FROM parsed;
{
"response": {
"invoice_id": {"citation_ids": [0], "value": "12345"},
"total_amount": {"citation_ids": [1], "value": 1250.00}
},
"metadata": {
"chunk_type": "bbox",
"citations": [
{"id": 0, "bbox": [{"coord": [120, 80, 240, 110], "page_id": 0}]},
{"id": 1, "bbox": [{"coord": [400, 500, 560, 530], "page_id": 0}]}
],
"pages": [{"id": 0, "image_uri": "/Volumes/main/default/parsed_images/6077ca79...f8efdb2ed05.jpg"}]
},
"error_message": null
}
Güvenilirlik puanları
> SELECT ai_extract(
'Invoice #12345 from Acme Corp for $1,250.00 dated 2024-01-15',
'{
"invoice_id": {"type": "string", "description": "Unique invoice identifier"},
"vendor_name": {"type": "string", "description": "Legal business name"},
"total_amount": {"type": "number", "description": "Total invoice amount"},
"invoice_date": {"type": "string", "description": "Date in YYYY-MM-DD format"}
}',
options => map(
'version', '2.1',
'enableConfidenceScores', 'true'
)
);
{
"response": {
"invoice_id": {"confidence_score": 0.95, "value": "12345"},
"vendor_name": {"confidence_score": 0.62, "value": "Acme Corp"},
"total_amount": {"confidence_score": 1.0, "value": 1250.00},
"invoice_date": {"confidence_score": 0.99, "value": "2024-01-15"}
},
"error_message": null
}
Not defteri örneği
Aşağıdaki not defteri işlevin alıntı çıkışlarını ai_extract analiz etmek için bir görsel hata ayıklama arabirimi sağlar. Alıntı meta verilerinin alt dize kod parçacıkları (STRING girişi) veya sınırlayıcı kutu yer paylaşımları (VARIANT girişi) olarak nasıl işleneceği ve alıntıları SQL'deki öğelere ai_parse_document geri birleştirerek ai_extract el ile gözden geçirme için düşük güvenilirlikli ayıklamalara bayrak ekleyebileceğinizi gösterir.
Alıntı işleme not defteri
Sürüm 2
Basit şema - yalnızca alan adları
> SELECT ai_extract(
'Invoice #12345 from Acme Corp for $1,250.00 dated 2024-01-15',
'["invoice_id", "vendor_name", "total_amount", "invoice_date"]'
);
{
"response": {
"invoice_id": "12345",
"vendor_name": "Acme Corp",
"total_amount": "1250.00",
"invoice_date": "2024-01-15"
},
"error_message": null
}
Gelişmiş şema - türleri ve açıklamaları ile
> SELECT ai_extract(
'Invoice #12345 from Acme Corp for $1,250.00 dated 2024-01-15',
'{
"invoice_id": {"type": "string", "description": "Unique invoice identifier"},
"vendor_name": {"type": "string", "description": "Legal business name"},
"total_amount": {"type": "number", "description": "Total invoice amount"},
"invoice_date": {"type": "string", "description": "Date in YYYY-MM-DD format"}
}'
);
{
"response": {
"invoice_id": "12345",
"vendor_name": "Acme Corp",
"total_amount": 1250.00,
"invoice_date": "2024-01-15"
},
"error_message": null
}
İç içe nesneler ve diziler
> SELECT ai_extract(
'Invoice #12345 from Acme Corp
Line 1: Widget A, qty 10, $50.00 each
Line 2: Widget B, qty 5, $100.00 each
Subtotal: $1,000.00, Tax: $80.00, Total: $1,080.00',
'{
"invoice_header": {
"type": "object",
"properties": {
"invoice_id": {"type": "string"},
"vendor_name": {"type": "string"}
}
},
"line_items": {
"type": "array",
"description": "List of invoiced products",
"items": {
"type": "object",
"properties": {
"description": {"type": "string"},
"quantity": {"type": "integer"},
"unit_price": {"type": "number"}
}
}
},
"totals": {
"type": "object",
"properties": {
"subtotal": {"type": "number"},
"tax_amount": {"type": "number"},
"total_amount": {"type": "number"}
}
}
}'
);
{
"response": {
"invoice_header": {
"invoice_id": "12345",
"vendor_name": "Acme Corp"
},
"line_items": [
{"description": "Widget A", "quantity": 10, "unit_price": 50.00},
{"description": "Widget B", "quantity": 5, "unit_price": 100.00}
],
"totals": {
"subtotal": 1000.00,
"tax_amount": 80.00,
"total_amount": 1080.00
}
},
"error": null
}
ile birlikte kullanılabilirlik ai_parse_document
> WITH parsed_docs AS (
SELECT
path,
ai_parse_document(
content,
MAP('version', '2.0')
) AS parsed_content
FROM READ_FILES('/Volumes/finance/invoices/', format => 'binaryFile')
)
SELECT
path,
ai_extract(
parsed_content,
'["invoice_id", "vendor_name", "total_amount"]',
MAP('instructions', 'These are vendor invoices.')
) AS invoice_data
FROM parsed_docs;
Sabit listeleri kullanma
> SELECT ai_extract(
'Invoice #12345 from Acme Corp, amount: $1,250.00 USD',
'{
"invoice_id": {"type": "string"},
"vendor_name": {"type": "string"},
"total_amount": {"type": "number"},
"currency": {
"type": "enum",
"labels": ["USD", "EUR", "GBP", "CAD", "AUD"],
"description": "Currency code"
},
"payment_terms": {"type": "string"}
}'
);
{
"response": {
"invoice_id": "12345",
"vendor_name": "Acme Corp",
"total_amount": 1250.00,
"currency": "USD",
"payment_terms": null
},
"error": null
}
Sürüm 1
> SELECT ai_extract(
'John Doe lives in New York and works for Acme Corp.',
array('person', 'location', 'organization')
);
{"person": "John Doe", "location": "New York", "organization": "Acme Corp."}
> SELECT ai_extract(
'Send an email to jane.doe@example.com about the meeting at 10am.',
array('email', 'time')
);
{"email": "jane.doe@example.com", "time": "10am"}
Sınırlamalar
Sürüm 2.1 (önerilir)
- Bu işlev Azure Databricks SQL Classic'te kullanılamaz.
- Bu işlev görünümlerle kullanılamaz.
- Şema en fazla 128 alanı destekler.
- Alan adları en fazla 150 karakter içerebilir.
- Şemalar iç içe yerleştirilmiş alanlar için en fazla yedi iç içe yerleştirme düzeyini destekler.
- Numaralandırma alanları en fazla 500 değeri destekler.
- Tür doğrulaması , ,
integernumbervebooleantürleri içinenumzorlanır. Bir değer belirtilen türle eşleşmiyorsa işlev bir hata döndürür. - Toplam bağlam boyutu üst sınırı 128.000 belirteçtir.
Sürüm 2
- Bu işlev Azure Databricks SQL Classic'te kullanılamaz.
- Bu işlev görünümlerle kullanılamaz.
- Şema en fazla 128 alanı destekler.
- Alan adları en fazla 150 karakter içerebilir.
- Şemalar iç içe yerleştirilmiş alanlar için en fazla yedi iç içe yerleştirme düzeyini destekler.
- Numaralandırma alanları en fazla 500 değeri destekler.
- Tür doğrulaması , ,
integernumbervebooleantürleri içinenumzorlanır. Bir değer belirtilen türle eşleşmiyorsa işlev bir hata döndürür. - Toplam bağlam boyutu üst sınırı 128.000 belirteçtir.
Sürüm 1
- Bu işlev Azure Databricks SQL Classic'te kullanılamaz.
- Bu işlev Görünümler ile kullanılamaz.
- İçerikte bir varlık türü için birden fazla aday bulunursa, yalnızca bir değer döndürülür.