Ana içeriğe geç

GPT-4.5 Fonksiyon Çağırma Eğitimi: Yapay Zekâ ile Hisse Fiyatları ve Haberleri Çıkarma

OpenAI'nin en gelişmiş modeliyle hisse fiyatlarını ve haberleri çıkarmak için çoklu fonksiyon çağırma özelliğine sahip bir yapay zekâ sistemi kurun.
· 12 dk. oku

Yapay Zeka ile Keşfedin

Büyük dil modelleri (LLM'ler), gelişmiş yönlendirme (prompt) teknikleri kullanıldığında bile, JSON gibi yapılandırılmış çıktıları tutarlı biçimde üretmekte sıklıkla zorlanır. Yönlendirme mühendisliği sonuçları iyileştirebilse de, kusursuz değildir—test sırasında hatalar oluşabilir ve ara sıra başarısızlıklar yaşanabilir. Peki her seferinde doğru ve güvenilir yapılandırılmış çıktıları nasıl garanti edebilirsiniz?

Fonksiyon çağırma, LLM'lerin genellikle JSON nesneleri biçiminde yapılandırılmış veri yanıtları üretebilme yeteneğini ifade eder. Bu özellik, LLM'lerin basit metin üretiminin ötesine geçerek harici sistemler, API'ler ve araçlarla etkileşime girmesini sağlar. Fonksiyon çağırmadan yararlanarak, LLM'ler gerekli yapı ve doğruluğu korurken daha karmaşık, bağlam odaklı görevleri yerine getirebilir.

Bu eğitimde, bir fonksiyon çağırma betiği oluşturmak için GPT-4.5, en doğru ve olgusal modelin nasıl kullanılacağını öğreneceğiz. Önce internetten hisse fiyatlarını çıkarmak için tek bir fonksiyon uygulayacağız. Ardından, LLM'in birden çok araç arasından seçim yapmasına ve kullanıcı istemine göre en uygun olanı belirlemesine olanak tanıyan başka bir fonksiyon ekleyeceğiz.

Bu eğitimin sonunda, herhangi bir şirket için hisse fiyatı sunabilen ve ayrıca haber akışları sağlayabilen kendi akıllı uygulamanızı nasıl kuracağınızı öğrenmiş olacaksınız.

Görsel: yazar

GPT-4.5'in Fonksiyon Çağırma Yetenekleri

OpenAI'nin en yeni modeli GPT-4.5, geliştirilmiş fonksiyon çağırma yetenekleri de dahil olmak üzere çeşitli ileri özellikler sunar. Bu yetenekler, modelin kullanıcı girdilerine dayalı olarak belirli fonksiyonları çağırarak harici sistemlerle etkileşim kurma ve karmaşık görevleri yerine getirme becerisini geliştirmek için tasarlanmıştır.

Kaynak: Model - OpenAI API

İşte GPT-4.5'in Fonksiyon Çağırma özelliğinin temel unsurları:

1. API'lerle entegrasyon

GPT-4.5, Chat Completions API, Assistants API ve Batch API üzerinden fonksiyon çağırmayı destekler. Bu sayede geliştiriciler modeli uygulamalarına sorunsuz biçimde entegre ederek veri alma, işleme ve hatta bir yazılım ortamında komut yürütme gibi görevleri yerine getirmesini sağlayabilir.

2. Yapılandırılmış çıktılar

Model, özellikle belirli veri biçimlerine ihtiyaç duyan diğer sistem veya araçlarla etkileşim kurması gereken geliştiriciler için faydalı olan JSON gibi yapılandırılmış çıktılar döndürebilir.

3. Görsel yetenekler

GPT-4.5 ses veya video gibi çok modlu çıktıları desteklemese de, görsel girdiler üzerinden görme yeteneklerini destekler. Bu, modelin görsel verileri işlemesine ve analiz etmesine olanak tanır; böylece hem metin hem de görsel verileri içeren görevler için fonksiyon çağırma ile birleştirilebilir.

4. Gelişmiş işlevsellik

GPT-4.5'teki fonksiyon çağırma özelliği, modelin kodunuzda yazılmış fonksiyonları önermesine veya çağırmasına izin vererek karmaşık iş akışlarını basitleştirmek üzere tasarlanmıştır. Bu, tekrarlayan görevleri otomatikleştirmek veya mevcut yazılım sistemlerine yapay zekâ destekli karar mekanizmaları entegre etmek için özellikle kullanışlıdır.

Yeni OpenAI modeli hakkında tüm ayrıntıları öğrenmek için GPT 4.5: Özellikler, Erişim, GPT-4o Karşılaştırması ve Daha Fazlası blog yazısını okuyun.

GPT-4.5 Tekli Fonksiyon Çağırma

Şimdi GPT-4.5 modeli ve Yahooquery kütüphanesini kullanarak basit bir fonksiyon çağırma sistemi kuracağız. Yahooquery kütüphanesi, Yahoo Finance'tan hisseyle ilgili her türlü veriyi çıkarmamıza yardımcı olacak. 

Çözümümüz, kullanıcıların hisse fiyatları hakkında soru sormasına izin verecek; bu da internetten hisse fiyatını alan ve bir yanıt üreten belirli bir fonksiyonu tetikleyecek. Bu kadar basit. 

PIP komutunu kullanarak openai ve yahooquery kütüphanelerini kurarak başlayacağız.

!pip install openai yahooquery -q

Bir hisse fiyatı fonksiyonu oluşturma  

Bir sembol (ör. AAPL) alan ve o sembolün fiyatını döndüren bir Python fonksiyonu oluşturun. Arka planda ilgili verileri çıkarmak için yahooquery kullanır.

from openai import OpenAI
import json
from yahooquery import Ticker

def get_stock_price(ticker):
    try:
        # Create a Ticker object for the provided ticker symbol
        t = Ticker(ticker)
        # Retrieve the price data
        price_data = t.price
        # Check if we received valid data for the ticker
        if ticker in price_data and price_data[ticker].get("regularMarketPrice") is not None:
            price = price_data[ticker]["regularMarketPrice"]
        else:
            return f"Price information for {ticker} is unavailable."
    except Exception as e:
        return f"Failed to retrieve data for {ticker}: {str(e)}"
    
    return f"{ticker} is currently trading at ${price:.2f}"

Araçları fonksiyon kullanarak tanımlama

OpenAI istemcisi Python fonksiyonunu anlamaz, bu yüzden sözlüklerden oluşan bir liste kullanarak bir araç oluşturmamız gerekir. Gerekli ad, açıklama ve çıktı türünü sağlamalıyız. 

Bu fonksiyon her çağrıldığında, istemden sembol adını çıkaracak ve yapılandırılmış bir formatta döndürecektir.

tools = [{
    "type": "function",
    "function": {
        "name": "get_stock_price",
        "description": "Get current stock price for a provided ticker symbol from Yahoo Finance using the yahooquery Python library.",
        "parameters": {
            "type": "object",
            "properties": {
                "ticker": {"type": "string"}
            },
            "required": ["ticker"],
            "additionalProperties": False
        },
        "strict": True
    }
}]

Modelin fonksiyonu çağırıp çağırmayacağına karar vermesine izin verin

Yeni oluşturduğumuz OpenAI fonksiyonunu test edelim. Sohbet tamamlamasına kullanıcı mesajını, model adını ve araçları sağlayın.

client = OpenAI()

messages = [{"role": "user", "content": "What's the current price of Meta stock?"}]

completion = client.chat.completions.create(
    model="gpt-4.5-preview",
    messages=messages,
    tools=tools,
)

print(completion.choices[0].message.tool_calls)

Gördüğümüz gibi, GPT-4.5 get_stock_price fonksiyonunu doğru şekilde çağırdı ve doğru sembolü (META) döndürdü.

[ChatCompletionMessageToolCall(id='call_uVGbahRiMnn4AkOJYbv8gfIV', function=Function(arguments='{"ticker":"META"}', name='get_stock_price'), type='function')]

Sağlanan sembolle fonksiyonu yürütme

Artık bu sembolü get_stock_price Python fonksiyonumuza sağlayabiliriz. 

tool_call = completion.choices[0].message.tool_calls[0]
args = json.loads(tool_call.function.arguments)

result = get_stock_price(args["ticker"])

print(result)

Sonuç olarak, sembol adını ve buna karşılık gelen fiyatı içeren bir yanıt alırsınız.

META is currently trading at $640.00

Burada durabilirsiniz; ancak doğal dilde düzgün bir yanıt vermek için sonuçları tekrar sohbet tamamlamasına geçirmeniz gerekir.

Fonksiyon çağrısını ve araç sonucunu ekleme

Önceki konuşmadan üretilen yanıtı ekleyeceğiz ve ayrıca araç kimliği ve araç sonuçlarıyla birlikte araç çağrısını dahil edeceğiz.

messages.append(completion.choices[0].message)  # Model's function call message
messages.append({
    "role": "tool",
    "tool_call_id": tool_call.id,
    "content": str(result)
})

Güncellenmiş konuşmayı yeniden modele gönderin

Araç çağrısı içeriğini içeren mesajla sohbet tamamlamasını tekrar çalıştırın.

completion_2 = client.chat.completions.create(
    model="gpt-4.5-preview",
    messages=messages,
    tools=tools,
)

# The final model response incorporating the stock price information
print(completion_2.choices[0].message.content)

Gördüğünüz gibi, doğru sonucu elde ettik. 

The current price of Meta stock (META) is $640.00.

Bunun gereksiz bir adım olduğunu düşünebilirsiniz; ancak çıktınız karmaşıksa, bu adım, JSON biçimi yerine sade İngilizceyle sonuçları anlamanıza yardımcı olur.

OpenAI API konusunda kafanız karışıksa ve daha fazla bilgi edinmek istiyorsanız, OpenAI'nin GPT ve Whisper modellerine yönlendirme yapmak için OpenAI API'yi nasıl kullanacağınızı öğrenmek üzere OpenAI Fundamentals kariyer yolunu göz önünde bulundurun.

GPT-4.5 Çoklu Fonksiyon Çağırma

Şimdi, GPT-4.5'in kullanıcı istemine göre hangi fonksiyonu çağıracağına otomatik olarak karar verebilmesi için yapay zekâ sistemimize başka bir fonksiyon eklemeyi öğreneceğiz. Belirtilen sembol için bağlantılarla birlikte en iyi 3 haber makalesini döndürecek yeni bir haber akışı fonksiyonu ekliyoruz. 

pip komutunu kullanarak feedparser kütüphanesini kurarak başlayın. Bu kütüphaneyi, belirtilen sembol için manşetleri çıkarmak amacıyla kullanacağız.

!pip install feedparser -q

Hisse haberleri fonksiyonunu tanımlayın

get_stock_news adlı ve girdi olarak sembol alan, bağlantılarıyla birlikte en iyi üç haber başlığını döndüren Python fonksiyonunu oluşturun.

import feedparser


def get_stock_news(ticker):
    # Construct the RSS feed URL for the given ticker.
    rss_url = f"https://feeds.finance.yahoo.com/rss/2.0/headline?s={ticker}&region=US&lang=en-US"
    try:
        feed = feedparser.parse(rss_url)
        if not feed.entries:
            return f"No news found for {ticker}."
        # Extract the top 3 news items (title and link)
        news_items = []
        for entry in feed.entries[:3]:
            title = entry.get("title", "No Title")
            link = entry.get("link", "No Link")
            news_items.append(f"{title} ({link})")
        news_str = "\n".join(news_items)
    except Exception as e:
        return f"Failed to retrieve news for {ticker}: {str(e)}"
    
    return f"Latest news for {ticker}:\n{news_str}"

get_stock_news("AAPL")

Apple hakkında en iyi üç başlığı uygun bağlantılarla topladık.

'Latest news for AAPL:\nNvidia AI Server Maker Hon Hai Posts 25% Jump in Two-Month Sales 
(https://finance.yahoo.com/news/nvidia-ai-server-maker-hon-075011863.html?.tsrc=rss)\nFoxconn says February revenue rose 56.43% y/y
(https://finance.yahoo.com/news/foxconn-says-february-revenue-rose-074433615.html?.tsrc=rss)\nApple Inc. (AAPL): Among the Best Stocks To Invest In According to Billionaires 
(https://finance.yahoo.com/news/apple-inc-aapl-among-best-051548210.html?.tsrc=rss)'

Hisse fiyatı ve haberleri için birden çok aracı tanımlayın

Şimdi uygun açıklama ve çıktıyla get_stock_news adlı başka bir OpenAI fonksiyonu eklememiz gerekiyor.

tools = [
    {
        "type": "function",
        "function": {
            "name": "get_stock_price",
            "description": "Get current stock price for a provided ticker symbol using yahooquery.",
            "parameters": {
                "type": "object",
                "properties": {
                    "ticker": {"type": "string"}
                },
                "required": ["ticker"],
                "additionalProperties": False
            },
            "strict": True
        }
    },
    {
        "type": "function",
        "function": {
            "name": "get_stock_news",
            "description": "Get the latest news for a provided ticker symbol by parsing the Yahoo Finance RSS feed using feedparser.",
            "parameters": {
                "type": "object",
                "properties": {
                    "ticker": {"type": "string"}
                },
                "required": ["ticker"],
                "additionalProperties": False
            },
            "strict": True
        }
    }
]

Modelin bir veya her iki fonksiyonu çağırıp çağırmayacağına karar vermesine izin verin

Fonksiyonu, Google hisseleri ve Google hakkındaki en yeni haberleri sorarak test edelim.

messages = [{
    "role": "user",
    "content": "What's the current price of Google stock and can you show me the latest news about it?"
}]


completion = client.chat.completions.create(
    model="gpt-4.5-preview",
    messages=messages,
    tools=tools,
)

completion.choices[0].message.tool_calls

Gördüğümüz gibi, hem hisse fiyatı hem de en yeni haberler için iki fonksiyon da çağrıldı.

[ChatCompletionMessageToolCall(id='call_zfcRJ4EcIUUqHCcN8SErjeoi', function=Function(arguments='{"ticker": "GOOGL"}', name='get_stock_price'), type='function'),
 ChatCompletionMessageToolCall(id='call_jBv8TlSPOyFKcRWHwByxLMb4', function=Function(arguments='{"ticker": "GOOGL"}', name='get_stock_news'), type='function')]

Fonksiyon çağrısı sonucunu kaydetme

Sorun şu ki, her iki fonksiyon da sonuç olarak sembolü döndürüyor. Hangi fonksiyonun çağrıldığını belirlemek için bir if-else deyimi kurgulamamız gerekiyor. Fonksiyonların sonuçlarını sözlükte depolayacağız.

# The model returns function call requests.
tool_calls = completion.choices[0].message.tool_calls

# Execute each function call based on the tool the model requested
tool_results = {}
for tool_call in tool_calls:
    func_name = tool_call.function.name
    args = json.loads(tool_call.function.arguments)
    if func_name == "get_stock_price":
        tool_results["price"] = get_stock_price(args["ticker"])
    elif func_name == "get_stock_news":
        tool_results["news"] = get_stock_news(args["ticker"])

Fonksiyon çağrısını ve araç sonuçlarını ekleme

Şimdi, daha önce üretilen sonuçları ve araç kimliği ile birlikte fonksiyon sonucunu ekleyeceğiz. 

messages.append(completion.choices[0].message)  # Append the model's function call message

for tool_call in tool_calls:
    func_name = tool_call.function.name
    result_content = tool_results.get("price") if func_name == "get_stock_price" else tool_results.get("news")
    messages.append({
        "role": "tool",
        "tool_call_id": tool_call.id,
        "content": result_content
    })

Güncellenmiş konuşmayı yeniden modele gönderin

Ortaya çıkan mesajı GPT-4.5'e ilettiğimizde, gayet makul ve etkileyici sonuçlar üretti.

from IPython.display import display, Markdown

completion_2 = client.chat.completions.create(
    model="gpt-4.5-preview",
    messages=messages,
    tools=tools,
)

# The final model response incorporates both stock price and news.
Markdown(completion_2.choices[0].message.content)

Google hisse fiyatını ve Google hakkında en üst haberlerin bağlantılarını elde ettik. 

Kaynak kodu ve çıktılar DataLab Workspace'te mevcuttur. Tek yapmanız gereken kendi OpenAI API anahtarınızı ortam değişkenine eklemek; böylece her şeyi kendi başınıza çalıştırabilirsiniz.

Sonuç

Büyük dil modellerine yapılandırılmış çıktı üretmesini sağladık ve ardından bunu belirli bir görevi yerine getirmek üzere bir API'ye veya başka bir Python fonksiyonuna aktardık. GPT-4.5 gibi gelişmiş yapay zekâlar, son derece entegre yanıtlar üretmek için birden çok hizmet veya API kullanabilir. 

Gelecekte, etrafımızdaki her şeyi kontrol etmek için fonksiyon çağırma ve ajanları kullanacağız; yapay zekânıza bir sesli komut göndermeniz yeterli olacak, o da komutunuza göre gerekli araçları çağırarak sistemde değişiklikler yapacak.

Şu anda GPT-4.5 var, ancak birçok yapay zekâ uzmanı AGI'ye daha yakın olması beklenen GPT-5'i bekliyor. Yaklaşan model hakkında her şeyi öğrenmek için GPT-5 Hakkında Bildiğimiz Her Şey blog yazısını okuyabilirsiniz.

Abid Ali Awan

Yazar

Abid Ali Awan

Sertifikalı bir veri bilimcisi olarak, yenilikçi makine öğrenimi uygulamaları oluşturmak için en son teknolojileri kullanmaya büyük ilgi duyuyorum. Konuşma tanıma, veri analizi ve raporlama, MLOps, konuşma yapay zekası ve NLP alanlarında güçlü bir geçmişe sahip olarak, gerçek bir etki yaratabilecek akıllı sistemler geliştirme becerilerimi geliştirdim. Teknik uzmanlığımın yanı sıra, karmaşık kavramları açık ve özlü bir dille ifade etme yeteneğine sahip, becerikli bir iletişimciyim. Sonuç olarak, veri bilimi konusunda aranan bir blog yazarı oldum ve giderek büyüyen veri profesyonelleri topluluğuyla görüşlerimi ve deneyimlerimi paylaşıyorum. Şu anda, içerik oluşturma ve düzenlemeye odaklanıyorum. Büyük dil modelleriyle çalışarak, hem işletmelerin hem de bireylerin verilerinden en iyi şekilde yararlanmalarına yardımcı olabilecek güçlü ve ilgi çekici içerikler geliştiriyorum.

Konular

İlgili