İşlev aracını kullanma
Tavsiye
Daha fazla ayrıntı için Metin ve resimler sekmesine bakın!
İşlev aracı, modelinizin bir yanıt sırasında veri almak veya eylemleri tetiklemek için geliştirici tanımlı işlevleri çağırmasına olanak tanır.
İşlev aracı nedir?
İşlev aracı (işlev çağırma), bir modelin uygulamanızda kullanıma sunulan adlandırılmış araçların ne zaman çağrıleceğine karar vermesine olanak tanır. Model, iş mantığınızı doğrudan çalıştırmaz. Bunun yerine yapılandırılmış bir işlev çağrısı döndürür, kodunuz işlevi çalıştırır ve ardından işlev çıkışını modele geri geçirirsiniz.
Bu desen, model mantığının API'ler, veritabanları, iş iş akışları ve yardımcı program işlevleri gibi gerçek dünya sistemlerine bağlanması için idealdir.
Önemli özellikler şunlardır:
- Yapılandırılmış araç çağrıları - Model açık işlev çağrısı istekleri yayar
- Geliştirici tarafından denetlenen yürütme - İşlevlerin nasıl ve nerede çalıştırıldığına uygulamanız karar verir
- Güvenilir tümleştirme düzeni - API'leri, iç hizmetleri veya yardımcı yardımcı programları güvenli bir şekilde çağırma
- Çok aşamalı orkestrasyon - Aracın çıktılarını geri döndür ve modelin akıl yürütmeye devam etmesine olanak tanıma
- Temellendirilmiş yanıtlar - Yanıtlar canlı, sistem tarafından oluşturulan verileri içerebilir
Yaygın kullanım örnekleri
| Kullanım Örneği | Example |
|---|---|
| Sistem Tümleştirmesi | Hesap veya sipariş ayrıntıları için iç API çağırma |
| Görev Otomasyonu | Bilet oluşturma veya bildirimler gibi iş akışlarını tetikleme |
| Veri Arama | Yanıtlamadan önce iş kurallarını veya başvuru tablolarını sorgulama |
Basit bir örnek
Aşağıda bir işlevi kullanıma sunan ve modelin gerektiğinde çağırmasına izin veren bir get_time örnek verilmiştir:
import time
from openai import OpenAI
# Function to get the current time
def get_time():
return f"The time is {time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())}"
# Main function
def main():
client = OpenAI(
base_url={openai_endpoint},
api_key={auth_key_or_token}
)
function_tools = [
{
"type": "function",
"name": "get_time",
"description": "Get the current time"
}
]
# Initialize messages with a system prompt
messages = [
{"role": "developer", "content": "You are an AI assistant that provides information."},
]
# Loop until the user types 'quit'
while True:
prompt = input("\nEnter a prompt (or type 'quit' to exit)\n")
if prompt.lower() == "quit":
break
# Append the user prompt to the messages
messages.append({"role": "user", "content": prompt})
# Get initial response
response = client.responses.create(
model=model_deployment,
input=messages,
tools=function_tools
)
# Append model output to the messages
messages += response.output
# Was there a function call?
for item in response.output:
if item.type == "function_call" and item.name == "get_time":
current_time = get_time()
messages.append({
"type": "function_call_output",
"call_id": item.call_id,
"output": current_time
})
# Get a follow up response using the tool output
response = client.responses.create(
model=model_deployment,
instructions="Answer only with the tool output.",
input=messages,
tools=function_tools
)
print(response.output_text)
# Run the main function when the script starts
if __name__ == '__main__':
main()
Bu akışta model, get_time öğesinin ne zaman çağrılacağına karar verir, kodunuz işlevi çalıştırır ve ardından model dayalı bir son yanıt döndürür. Kullanıcı herhangi bir istem girebildiğinden, modelin işlevi ne zaman çağırması gerektiğini belirlemesi gerekir. Bunu yaparsa, istemin yanıtı bir işlev çağrısı içerir ve bu çağrıyı, modelin işlemesi için çıktıyı içeren yeni bir istem göndermeden önce uygulama kodunun gerçekleştirmesi gerekir.
Çıktı şuna benzer olabilir:
Enter a prompt (or type 'quit' to exit)
Hello
Hello! How can I help you today?
Enter a prompt (or type 'quit' to exit)
What time is it?
The time is 2026-03-19 17:17:41.
Enter a prompt (or type 'quit' to exit)
İlk kullanıcı istemi ("Merhaba") işlev aracının kullanılmasını gerektirmediğinden model normal yanıt verdi. İkinci istem (“Saat kaç?”), modelin yanıtında belirttiği get_time işlevini seçmesi için tetikleyici oldu. Uygulama kodu daha sonra işlevi çalıştırıp sonuçları modele döndürdü ve ardından işlevin sonuçlarıyla birlikte ikinci bir yanıt gönderdi.
Tavsiye
Bu örnekte parametresiz tek bir işlev kullanılır. Aracı parametrelerle veya parametreler olmadan birden çok işlevi kullanacak şekilde yapılandırabilirsiniz. İşlev ayrıntılarını belirtme hakkında daha fazla bilgi için OpenAI geliştiricileri kılavuzuna bakın.
İşlev aracı nasıl çalışır?
İşlev aracını kullanmaya yönelik genel süreç şu şekildedir:
- Araçları tanımlarsınız - Araçlar dizisinde bir veya daha fazla işlev tanımı sağlayın.
- Model istemi değerlendirir - İşlev çağrısı gerekip gerekmediğini belirler.
- Model bir işlev çağrısı yayar - Yanıt, işlev adını ve çağrı meta verilerini içerir.
- Uygulamanız mantık çalıştırır - Kodunuzda eşleşen işlevi çalıştırın.
-
İşlev çıktısı döndürebilirsiniz - Sonuçla birlikte bir
function_call_outputöğe gönderin. - Model yanıtı tamamlar - Araç sonuçlarını son yanıta ekler.
En iyi uygulamalar
- Araçları odaklanmış tutma - Küçük, tek amaçlı işlevlerin denetimi ve testi daha kolaydır
- İşlev girişlerini doğrulama - Üretim sistemlerinde araç bağımsız değişkenlerine hiçbir zaman körü körüne güvenmeyin
- Hataları güvenli bir şekilde işleyin - Modelin üzerinde düşünüp değerlendirebileceği net hata çıktıları döndürün
- Günlük aracı kullanımı - Hata ayıklama ve idare için çağrıları, gecikme süresini ve hata oranlarını izleme
- Hassas işlemleri sınırla - Yüksek etkili eylemler için açık yetkilendirme gerektir
Bilinmesi gereken sınırlamalar
- Model işlev çağrıları istemektedir, ancak uygulamanızın bunları çalıştırması gerekir
- Yanlış veya beklenmeyen araç bağımsız değişkenleriyle karşılaşılabilir; bu durumda, bu bağımsız değişkenler doğrulanmalıdır.
- Araç gecikme süresi uçtan uca yanıt süresini artırabilir
- İşlev çağrısı güvenilirliği artırır, ancak son çıktıların yine de kritik kararlar için gözden geçirilmesi gerekir
İyi kullanıldığında, fonksiyon aracı bir metin oluşturucusundaki modeli, gerçek sistemlerle denetimli ve denetlenebilir bir şekilde etkileşim kurabilen bir düzenleyiciye dönüştürür.