Lewati ke konten utama

Tutorial Function Calling GPT-4.5: Ekstrak Harga Saham dan Berita dengan AI

Bangun sistem AI multi-function calling untuk mengekstrak harga saham dan berita menggunakan model paling canggih dari OpenAI.
· 12 mnt Baca

Jelajahi bersama AI

Model bahasa besar (LLM) sering kesulitan menghasilkan output terstruktur secara konsisten, seperti JSON, bahkan saat menggunakan teknik prompt engineering yang canggih. Meskipun prompt engineering dapat meningkatkan hasil, ini tidak selalu berhasil—kesalahan tetap dapat terjadi selama pengujian, yang menyebabkan kegagalan sesekali. Lalu, bagaimana Anda dapat memastikan output terstruktur yang akurat dan andal setiap saat?

Function calling dalam LLM mengacu pada kemampuan model untuk menghasilkan respons data terstruktur, biasanya dalam bentuk objek JSON. Fitur ini memungkinkan LLM melampaui sekadar menghasilkan teks dan berinteraksi dengan sistem eksternal, API, dan alat. Dengan memanfaatkan function calling, LLM dapat menjalankan tugas yang lebih kompleks dan berbasis konteks sambil mempertahankan struktur dan akurasi yang diperlukan.

Dalam tutorial ini, kita akan mempelajari cara menggunakan GPT-4.5, model paling akurat dan faktual, untuk membuat skrip function calling. Pertama, kita akan mengimplementasikan satu fungsi untuk mengekstrak harga saham dari internet. Lalu, kita akan menambahkan fungsi lain, sehingga LLM dapat memilih di antara beberapa alat dan menentukan yang paling sesuai berdasarkan prompt pengguna.

Di akhir tutorial ini, Anda akan belajar cara membangun aplikasi cerdas Anda sendiri yang dapat menyediakan harga saham untuk perusahaan mana pun dan juga menghadirkan umpan berita.

Gambar dari penulis

Kemampuan Function Calling GPT-4.5

GPT-4.5, model terbaru dari OpenAI, memperkenalkan sejumlah fitur canggih, termasuk kemampuan function calling yang ditingkatkan. Kemampuan ini dirancang untuk meningkatkan kemampuan model dalam berinteraksi dengan sistem eksternal dan menjalankan tugas kompleks dengan memanggil fungsi tertentu berdasarkan masukan pengguna.

Sumber: Model - OpenAI API

Berikut fitur utama Function Calling GPT-4.5:

1. Integrasi dengan API

GPT-4.5 mendukung function calling melalui Chat Completions API, Assistants API, dan Batch API. Ini memungkinkan pengembang mengintegrasikan model ke dalam aplikasi mereka secara mulus, sehingga model dapat melakukan tugas seperti pengambilan data, pemrosesan, dan bahkan mengeksekusi perintah dalam lingkungan perangkat lunak.

2. Output terstruktur

Model dapat mengembalikan output terstruktur, seperti JSON, yang sangat berguna bagi pengembang yang membutuhkan model untuk berinteraksi dengan sistem atau alat lain yang memerlukan format data tertentu.

3. Kapabilitas visi

Meskipun GPT-4.5 tidak mendukung output multimodal seperti suara atau video, model ini mendukung kapabilitas visi melalui masukan gambar. Ini memungkinkan model memproses dan menganalisis data visual, yang dapat digabungkan dengan function calling untuk menjalankan tugas yang melibatkan data teks dan gambar.

4. Fungsionalitas lanjutan

Fitur function calling di GPT-4.5 dirancang untuk menyederhanakan alur kerja kompleks dengan memungkinkan model menyarankan atau memanggil fungsi yang ditulis dalam kode Anda. Ini sangat berguna untuk mengotomatiskan tugas berulang atau mengintegrasikan pengambilan keputusan berbasis AI ke dalam sistem perangkat lunak yang ada.

Temukan semua detail tentang model OpenAI baru dengan membaca blog GPT 4.5: Fitur, Akses, Perbandingan dengan GPT-4o & Lainnya.

Function Calling Tunggal GPT-4.5

Sekarang kita akan membangun sistem function calling sederhana menggunakan model GPT-4.5 dan pustaka Yahooquery. Pustaka Yahooquery akan membantu kita mengekstrak data terkait saham apa pun dari Yahoo Finance. 

Solusi kita akan memungkinkan pengguna mengajukan pertanyaan tentang harga saham, memicu fungsi tertentu yang mengambil harga saham dari internet dan menghasilkan respons. Sesederhana itu. 

Kita akan mulai dengan menginstal pustaka openai dan yahooquery menggunakan perintah PIP.

!pip install openai yahooquery -q

Membuat fungsi harga saham  

Buat fungsi Python yang menerima ticker (misalnya, AAPL) dan mengembalikan harga ticker tersebut. Fungsi ini menggunakan yahooquery di backend untuk mengekstrak data yang relevan.

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}"

Mendefinisikan alat menggunakan fungsi

Klien OpenAI tidak memahami fungsi Python, jadi kita perlu membuat alat menggunakan daftar dictionary. Kita harus menyediakan nama, deskripsi, dan tipe output yang diperlukan. 

Setiap kali fungsi ini dipanggil, fungsi akan mengekstrak nama ticker dari prompt dan mengembalikannya dalam format terstruktur.

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
    }
}]

Biarkan model memutuskan apakah perlu memanggil fungsi

Mari uji fungsi OpenAI yang baru kita buat. Berikan chat completion dengan pesan pengguna, nama model, dan alat.

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)

Seperti yang kita lihat, GPT-4.5 memanggil get_stock_price dengan tepat dan mengembalikan ticker yang benar (META).

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

Jalankan fungsi dengan ticker yang disediakan

Sekarang kita dapat memberikan ticker ini ke fungsi Python get_stock_price kita. 

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

result = get_stock_price(args["ticker"])

print(result)

Hasilnya, Anda menerima respons yang mencakup nama ticker dan harga yang sesuai.

META is currently trading at $640.00

Anda bisa berhenti di sini, tetapi untuk memberikan jawaban yang tepat dalam bahasa alami, Anda harus mengoper hasilnya lagi ke chat completion.

Menambahkan pemanggilan fungsi dan hasil alat

Kita akan menambahkan respons yang dihasilkan dari percakapan sebelumnya dan juga menyertakan pemanggilan alat dengan ID alat dan hasil alat.

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

Kirim percakapan yang diperbarui kembali ke model

Jalankan chat completion lagi dengan pesan yang menyertakan konten pemanggilan alat.

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)

Seperti yang Anda lihat, kita mendapatkan hasil yang tepat. 

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

Anda mungkin menganggap ini langkah yang tidak berguna, tetapi saat output Anda kompleks, langkah ini akan membantu Anda memahami hasil dalam bahasa Inggris yang lugas alih-alih hasil dalam format JSON.

Jika Anda masih bingung tentang OpenAI API dan ingin belajar lebih lanjut, pertimbangkan untuk mengikuti OpenAI Fundamentals career track untuk mempelajari cara menggunakan OpenAI API untuk mem-prompt model GPT dan Whisper dari OpenAI.

Function Calling Ganda GPT-4.5

Sekarang, kita akan mempelajari cara menambahkan fungsi lain ke sistem AI kita sehingga GPT-4.5 dapat secara otomatis memutuskan fungsi mana yang akan dipanggil berdasarkan prompt pengguna. Kita menambahkan fungsi feed baru yang akan mengembalikan 3 artikel berita teratas beserta tautannya untuk ticker yang ditentukan. 

Mulailah dengan menginstal pustaka feedparser menggunakan perintah pip. Kita akan menggunakan pustaka ini untuk mengekstrak judul berita untuk ticker yang ditentukan.

!pip install feedparser -q

Definisikan fungsi berita saham

Buat fungsi Python get_stock_news yang akan menerima ticker sebagai input dan mengembalikan tiga judul berita teratas beserta tautannya.

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")

Kita telah mengumpulkan tiga judul utama tentang Apple dengan tautan yang sesuai.

'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)'

Definisikan beberapa alat untuk harga saham dan berita

Sekarang kita perlu menambahkan fungsi OpenAI lain bernama get_stock_news dengan deskripsi dan output yang tepat.

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
        }
    }
]

Biarkan model memutuskan apakah perlu memanggil satu atau kedua fungsi

Mari kita coba menguji fungsi dengan menanyakan GPT-4.5 tentang saham Google dan berita terbaru tentang Google.

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

Seperti yang kita lihat, model memanggil kedua fungsi untuk harga saham dan berita terbaru.

[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')]

Menyimpan hasil pemanggilan fungsi

Permasalahannya adalah kedua fungsi mengembalikan ticker sebagai hasil. Kita harus membuat pernyataan if-else untuk menentukan fungsi mana yang dipanggil. Kita akan menyimpan hasil fungsi dalam dictionary.

# 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"])

Menambahkan pemanggilan fungsi dan hasil alat

Sekarang kita akan menambahkan hasil yang dihasilkan sebelumnya dan hasil fungsi dengan ID alat. 

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
    })

Kirim percakapan yang diperbarui kembali ke model

Saat kita meneruskan pesan hasil ke GPT-4.5, model menghasilkan hasil yang sangat baik dan sepenuhnya masuk akal.

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)

Kita memperoleh harga saham Google dan tautan ke berita teratas tentang Google. 

Kode sumber dan output tersedia di DataLab Workspace. Yang perlu Anda lakukan hanyalah menambahkan kunci API OpenAI Anda sendiri ke variabel lingkungan, dan Anda dapat menjalankan semuanya sendiri.

Kesimpulan

Kita telah memaksa model bahasa besar untuk menghasilkan output terstruktur dan kemudian meneruskannya ke API atau fungsi Python lain untuk mengeksekusi tugas tertentu. AI canggih seperti GPT-4.5 dapat menggunakan banyak layanan atau API untuk menghasilkan respons yang sangat terintegrasi. 

Di masa depan, kita akan menggunakan function calling dan agen untuk mengendalikan segala sesuatu di sekitar kita; cukup kirim perintah suara ke AI Anda, dan AI akan memanggil alat yang diperlukan berdasarkan perintah Anda dan melakukan perubahan pada sistem.

Kita telah memiliki GPT-4.5, namun banyak pakar AI menantikan GPT-5, yang diperkirakan akan lebih mendekati AGI. Anda dapat mempelajari semua tentang model yang akan datang dengan membaca blog Everything We Know About GPT-5 .

Abid Ali Awan

Penulis

Abid Ali Awan

Sebagai data scientist tersertifikasi, saya bersemangat memanfaatkan teknologi mutakhir untuk menciptakan aplikasi machine learning yang inovatif. Dengan latar belakang kuat di pengenalan ucapan, analisis dan pelaporan data, MLOps, conversational AI, dan NLP, saya mengasah keterampilan dalam mengembangkan sistem cerdas yang berdampak nyata. Selain keahlian teknis, saya juga komunikator andal yang mampu menyederhanakan konsep kompleks menjadi bahasa yang jelas dan ringkas. Karena itu, saya menjadi blogger yang dicari di bidang data science, membagikan wawasan dan pengalaman kepada komunitas profesional data yang terus berkembang. Saat ini, saya berfokus pada pembuatan dan penyuntingan konten, bekerja dengan large language model untuk mengembangkan konten yang kuat dan menarik agar membantu bisnis dan individu memaksimalkan data mereka.

Topik

Terkait

blogs

40 Pertanyaan Wawancara DBMS Teratas di 2026

blogs

Tutorial Korelasi di R