Kursus
Salah satu fitur baru di ChatGPT yang sangat saya apresiasi adalah kemampuannya menelusuri internet untuk memenuhi permintaan pengguna ketika informasi tambahan diperlukan. Namun, sejauh ini saya menemui dua masalah:
- Kemampuan browsing hanya tersedia untuk pengguna ChatGPT Plus.
- Pengguna dapat mengakses kemampuan browsing melalui antarmuka pengguna, tetapi tidak saat berinteraksi dengan model melalui API.
Ternyata, LangChain telah mengatasi masalah ini dengan merilis apa yang disebut LangChain Tools!
Dalam tutorial ini, kita akan mempelajari cara menggunakan LangChain Tools untuk membangun model GPT kita sendiri dengan kemampuan browsing. Di sini, kemampuan browsing mengacu pada memungkinkan model untuk berkonsultasi dengan sumber eksternal guna memperluas basis pengetahuannya dan memenuhi permintaan pengguna dengan lebih efektif ketimbang hanya mengandalkan pengetahuan bawaan model.
Dan yang terbaik? LangChain Tools terintegrasi mulus dengan Python dan OpenAI API!
Mari mulai!
Ruang Lingkup dan Tujuan
Artikel ini membahas dasar-dasar LangChain Tools dan cara menggunakannya di Python. Kita akan menggunakan Jupyter Notebook dengan pustaka openai dan langchain terpasang. Jika Anda ingin terlebih dahulu mempelajari kerangka LangChain, saya sangat merekomendasikan artikel Introduction to LangChain for Data Engineering & Data Applications.
Dalam tutorial ini, kita akan mempelajari cara memanfaatkan empat LangChain Tools yang ada untuk menyediakan beragam sumber eksternal bagi model GPT default saat memenuhi permintaan pengguna. Secara khusus, kita akan mengeksplorasi Tools yang menggunakan sumber berikut:
- Dua mesin pencari terkenal: Google SERP dan pencarian DuckDuckGo.
- Wikipedia sebagai basis data informasi yang komprehensif dan diakui luas.
- Sumber YouTube untuk mendapatkan saran video dari model.
Setelah menyiapkan Tools ini, kita akan memahami cara umum menggunakan LangChain Tool apa pun, dan cara menggabungkannya dalam satu Toolkit untuk memberikan kemampuan browsing pada model.
Pengantar LangChain Tools
Seperti yang dibahas dalam pendahuluan, LangChain Tools dapat meningkatkan kapabilitas model dengan memungkinkannya berkonsultasi ke sumber eksternal saat merespons prompt pengguna. Tools ini berperan penting dalam teknik prompting yang dikenal sebagai ReAct Prompting. ReAct, singkatan dari Reasoning and Acting, membagi pemrosesan model ke dalam dua tahap:
- Tahap penalaran: Pada fase ini, model mempertimbangkan strategi terbaik untuk menghasilkan jawaban.
- Tahap tindakan: Di sini, model mengeksekusi rencana yang dirumuskan pada tahap sebelumnya untuk memperoleh jawaban sebenarnya.
Proses ini menghasilkan jejak penalaran yang dapat menuntun model itu sendiri menuju jawaban yang benar. Teknik ini terbukti membantu Large Language Models (LLM) mencapai jawaban yang lebih akurat dan andal, khususnya pada tugas yang intensif pengetahuan dan pengambilan keputusan. Sebagian karena teknik ini memberi model waktu tambahan untuk ’berpikir.’
LangChain Tools dapat semakin meningkatkan teknik ReAct dengan menyediakan sumber informasi pelengkap. Dalam pendekatan kita, tahap penalaran melibatkan model yang memutuskan alat mana yang digunakan berdasarkan pertanyaan pengguna. Sementara itu, tahap tindakan memungkinkan model berinteraksi dengan sumber eksternal yang dipilih untuk mengumpulkan informasi tambahan.
Jika Anda tertarik pada pengantar mendalam tentang ReAct prompting dengan Langchain, artikel ChatGPT ReAct Prompting cocok untuk Anda!
Elemen LangChain untuk ReAct Prompting
Ada dua elemen penting dalam kerangka LangChain untuk memanfaatkan teknik prompting ini: Agents dan Tools.
Yang disebut agent adalah entitas yang bertanggung jawab mengeksekusi tahap penalaran dan tindakan. Mereka mengembalikan hasilnya ke model, memungkinkan LLM menghasilkan jawaban dengan informasi tambahan dalam bahasa alami. Ada berbagai jenis agent, masing-masing cocok untuk tugas berbeda yang mungkin Anda inginkan dari LLM. Tinjauan rinci tentang berbagai jenis agent tersedia di dokumentasi resmi LangChain tentang Agents.
Tools sudah menjadi fokus utama pembahasan kita. Secara teknis, Tools adalah fungsi yang dapat dipanggil oleh agent. LangChain menawarkan beragam Tools seperti utilitas Google (Search, Drive, dan Scholar), pencarian Wikipedia, basis data ArXiV, ekstensi shell, dan plugin ChatGPT native, dan lain-lain. Dalam artikel ini, kita akan mengenal empat di antaranya. Lihat dokumentasi resmi LangChainFor untuk daftar lengkap Tools yang tersedia.
Praktik Langsung dengan LangChain Tools
Mari mulai praktiknya!
Menyiapkan lingkungan OpenAI
Seperti proyek lain yang memanfaatkan model GPT, langkah pertama adalah memuat kunci API OpenAI ke dalam lingkungan kita. Untuk itu, kita akan menggunakan modul os dan openai.
import openai
import os
os.environ["OPENAI_API_KEY"] = os.getenv("OPENAI_API_KEY")
Jika Anda belum memiliki kunci API OpenAI, artikel ini, A Beginner’s Guide to the OpenAI API, cocok untuk Anda!
Karena kita akan menggunakan kerangka LangChain, kita juga akan memuat model gpt aktual dari pustaka langchain:
from langchain.llms.openai import OpenAI
llm = OpenAI(model_name="gpt-3.5-turbo")
Dalam kasus ini, kita menggunakan model gpt-3.5-turbo sebagai opsi tanpa biaya, namun silakan gunakan model lain sesuai preferensi Anda.
Pada bagian berikut, kita akan mempelajari cara menyiapkan Tool pertama. Kita akan menggunakan alat pencarian DuckDuckGo sebagai contoh, tetapi Anda akan melihat semua Tools mengikuti langkah yang sama untuk mulai digunakan!
Menyiapkan LangChain Tool pertama: DuckDuckGo
DuckDuckGo adalah mesin pencari yang menekankan perlindungan privasi pengguna. Tidak seperti beberapa mesin pencari lain, DuckDuckGo tidak melacak riwayat pencarian penggunanya, sehingga tidak membuat atau memelihara profil pribadi pengguna.
Ada pustaka Python yang perlu kita pasang untuk menggunakan mesin pencari ini. Dapat dipasang melalui pip:
!pip install duckduckgo-search
Selain itu, kita perlu mengimpor Tool DuckDuckGo dari pustaka langchain:
from langchain.tools import DuckDuckGoSearchRun
ddg_search = DuckDuckGoSearchRun()
Metode DuckDuckGoSearchRun() sendiri sudah memungkinkan penelusuran internet tanpa berinteraksi dengan LLM mana pun. Mari lihat contoh sederhana:

Screenshot dari eksekusi ddg_search.run() untuk browsing internet dengan DuckDuckGo
Gagasan di balik Tools adalah mengintegrasikan kemampuan browsing ini ke dalam LLM, sehingga kita mendapatkan respons yang koheren dalam bahasa alami, bukan sekadar potongan informasi mentah. Untuk itu, kita perlu membenamkan metode ini ke dalam instance kelas Tool langchain sebagai berikut:
from langchain.agents import Tool
tools = [
Tool(
name="DuckDuckGo Search",
func=ddg_search.run,
description="Useful to browse information from the Internet.",
)
]
Setiap tool memerlukan nama (name) yang akan digunakan agent LangChain untuk merujuknya, fungsi (func) yang dapat dieksekusi agent untuk berkonsultasi dengan sumber eksternal (ddg_search.run seperti di atas) dan deskripsi (description) yang dapat digunakan untuk memberi tahu agent kapan harus menggunakannya.
Untuk contoh ini, kita memilih deskripsi berikut: ”Useful to browse information from the Internet”. Ada juga parameter opsional lain pada definisi Tools yang dapat disesuaikan sesuai kebutuhan.
Mengeksplorasi Tools Browsing Lain
Setelah mempelajari cara menyiapkan tool pertama, menyiapkan sisanya seharusnya cukup mudah karena semuanya mengikuti struktur yang sama.
Google Serper Tool
Google Serper adalah API Google Search berbiaya rendah yang memungkinkan kita menelusuri internet seperti DuckDuckGo.
Untuk tool ini, kita memerlukan kunci API yang bisa didapatkan dengan mendaftar akun gratis di https://serper.dev/.

Screenshot dari halaman utama Google Serper API.
Setelah berada di akun Serper, kita akan melihat opsi kunci API di panel sisi kiri:

Screenshot dari halaman akun di Google Serper API. Opsi kunci API di panel sisi kiri.
Dengan mengkliknya, kita akan mendapatkan kunci API yang dapat dengan mudah disalin dan diintegrasikan dalam skrip Python kita:

Screenshot dari pembuatan kunci API di halaman Google Serper.
Kembali ke kode, kita dapat dengan mudah memuat kuncinya ke lingkungan:
serper_api_key = os.environ["SERPER_API_KEY"]
Untuk menggunakan Google Serper API, kita perlu terlebih dahulu memasang pustaka Python yang diperlukan (pip install google-serp-api). Selain itu, kita perlu mengimpor Tool GoogleSerper dari pustaka langchain:
from langchain.utilities import GoogleSerperAPIWrapper
google_search = GoogleSerperAPIWrapper()
Seperti pada kasus sebelumnya, google_search.run() juga merupakan metode yang akan menelusuri internet secara mandiri. Namun, lagi-lagi idenya adalah mengintegrasikannya sebagai tool LangChain sebagai berikut:
tools.append(
Tool(
name="Google Search",
func=google_search.run,
description="Useful to search in Google. Use by default.",
)
)
Perhatikan bahwa dalam kasus ini, kita menambahkan tool baru ke daftar tools. Jadi, daftar tools kita kini memuat kedua mesin pencari.
Wikipedia Tool
Mari lengkapi kumpulan Tools kita dengan sumber Wikipedia yang terkenal, mengikuti proses yang sama seperti Tools sebelumnya.
Langkah pertama adalah memasang pustaka Python wikipedia melalui pip (pip install wikipedia), dan memuat modul yang diperlukan dari pustaka LangChain. Tool ini sebenarnya membutuhkan dua modul karena arsitektur API Wikipedia:
from langchain.tools import WikipediaQueryRun
from langchain.utilities import WikipediaAPIWrapper
wikipedia = WikipediaQueryRun(api_wrapper=WikipediaAPIWrapper())
Terakhir, kita dapat menambahkan instance baru dari kelas Tool dengan fungsi yang menjalankan metode wikipedia.run():
tools.append(
Tool(
name="Wikipedia Search",
func=wikipedia.run,
description="Useful when users request biographies or historical moments.",
)
)
YouTube Tool
Terakhir, saya rasa menarik untuk mengintegrasikan sumber YouTube agar model memiliki kemampuan tambahan untuk menjawab dalam bentuk video, bukan hanya teks tertulis. Mengikuti prosedur yang sama seperti sebelumnya:
!pip install youtube
from langchain.tools import YouTubeSearchTool
youtube = YouTubeSearchTool()
tools.append(
Tool(
name="Youtube Search",
func=youtube.run,
description="Useful for when the user explicitly asks you to look on Youtube.",
)
)
Sekarang kita siap melangkah!
Kita telah membangun sebuah toolkit (daftar tools) dengan empat Tools yang memberikan kemampuan browsing pada model kita. Namun, sejauh ini kita belum berinteraksi dengan model.
Mari lihat bagaimana model memanfaatkan sumber-sumber tersebut!
Menguji Kemampuan Browsing
Seperti telah disebutkan, yang disebut agent adalah entitas yang bertanggung jawab menggunakan Tools. Karena itu, kita juga perlu mengimpornya dari pustaka langchain:
from langchain.agents import initialize_agent
Metode initialize_agent memungkinkan kita menyiapkan agent:
agent = initialize_agent(
tools, llm, agent="zero-shot-react-description", verbose=True
)
Seperti terlihat dari inisialisasi, kita perlu memberikan daftar Tools yang tersedia (tools), LLM yang digunakan (llm), dan tipe agent (agent=”zero-shot-react-description”). Untuk contoh ini, kita akan menggunakan tipe agent Zero-shot ReAct sebagai agent aksi tujuan umum yang paling serbaguna. Dalam kasus ini, kita juga menetapkan verbose=True untuk mengamati proses penalaran agent.
Setelah agent diinisialisasi, kita dapat menjalankan prompt pengguna apa pun dengan metode agent.run().
Contoh 1: Biografi
Pada prinsipnya, setelah kita mengirimkan prompt pengguna, agent akan menganalisis deskripsi Tools dan menggunakan yang paling sesuai untuk kasus penggunaan. Selain itu, agent akan tetap beralih ke Tools lain jika tidak menemukan informasi yang tepat saat menggunakan tool yang dipilih.
Mari jalankan pengujian pertama dengan meminta biografi. Dalam hal ini, ada tool yang sesuai yang telah kita konfigurasikan untuk biografi dan momen historis, jadi kita berharap agent memilih tool tersebut:
agent.run(
"Harry Styles biography"
)
Kita dapat mengamati proses penalarannya:
> Entering new AgentExecutor chain...
I should look for a biography of the singer
Action: Wikipedia Search
Action Input: Harry Styles biography
Observation:
Page: Harry Styles
Summary: Harry Edward Styles (born 1 February 1994) is an English singer. His musical career began in 2010 as part of One Direction, a boy band formed on the British music competition series The X Factor after each member of the band had been eliminated from the solo contest. They became one of the best-selling boy groups of all time before going on an indefinite hiatus in 2016.
Styles released his self-titled debut solo album through Columbia Records in 2017. It debuted at number one in the UK and the US and was one of the world's top-ten best-selling albums of the year, while its lead single, "Sign of the Times", topped the UK Singles Chart. Styles' second album, Fine Line (2019), debuted atop the US Billboard 200 with the biggest ever first-week sales by an English male artist, and was the most recent album to be included in Rolling Stone's "500 Greatest Albums of All Time" in 2020. Its fourth single, "Watermelon Sugar", topped the US Billboard Hot 100. Styles' third album, Harry's House (2022), broke several records and was widely acclaimed, receiving the Grammy Award for Album of the Year in 2023. Its lead single, "As It Was", became the number-one song of 2022 globally according to Billboard.
Styles has received various accolades, including six Brit Awards, three Grammy Awards, an Ivor Novello Award, and three American Music Awards. His film roles include Dunkirk (2017), Don't Worry Darling (2022), and My Policeman (2022). Aside from music and acting, Styles is known for his flamboyant fashion. He is the first man to appear solo on the cover of Vogue.
Page: Debbie Harry
Summary: Deborah Ann Harry (born Angela Trimble; July 1, 1945) is an American singer, songwriter and actress, best known as the lead vocalist of the band Blondie. Four of her songs with the band reached No. 1 on the US charts between 1979 and 1981.
Born in Miami, Florida, Harry was adopted as an infant and raised in Hawthorne, New Jersey. After college she worked various jobs—as a dancer, a Playboy Bunny, and a secretary (including at the BBC in New York)—before her breakthrough in the music industry. She co-formed Blondie in 1974 in New York City. The band released its eponymous debut studio album in 1976 and released three more studio albums between then and 1979, including Parallel Lines, which spawned six singles, including "Heart of Glass". Their fifth studio album, Autoamerican (1980), spawned such hits as a cover of "The Tide Is High", and "Rapture", which is considered the first rap song to chart at number one in the United States.Harry released her debut solo studio album, KooKoo, in 1981. During a Blondie hiatus, she embarked on an acting career, appearing in lead roles in the neo-noir Union City (1980) and in David Cronenberg's body horror film Videodrome (1983). She released her second solo studio album, 1986's Rockbird, and starred in John Waters's cult dance film Hairspray (1988). She released two more solo albums between then and 1993, before returning to film with roles in a John Carpenter-directed segment of the horror film Body Bags (1993), and in the drama Heavy (1995).
Blondie reunited in the late 1990s, releasing No Exit (1999), followed by The Curse of Blondie (2003). Harry continued to appear in independent films throughout the 2000s, including Deuces Wild (2002), My Life Without Me (2003) and Elegy (2008). With Blondie, she released the group's ninth studio album, Panic of Girls, in 2011, followed by Ghosts of Download (2014). The band's eleventh studio album, 2017's Pollinator, charted at number 4 in the United Kingdom.
Page: Harry Potter
Summary: Harry Potter is a series of seven fantasy novels written by British author J. K. Rowling. The novels chronicle the lives of a young wizard, Harry Potter, and his friends Hermione Granger and Ron Weasley, all of whom are students at Hogwarts School of Witchcraft and Wizardry. The main story arc concerns Harry's conflict with Lord Voldemort, a dark wizard who intends
Thought: I now know the final answer
Final Answer: Harry Styles is an English singer, songwriter and actor. He rose to fame as a member of the boy band One Direction, and later embarked on a solo career. He released his debut solo album, Harry Styles, in 2017, and his second album, Fine Line, in 2019. He has also had success in film, appearing in Dunkirk (2017), Don't Worry Darling (2022) and My Policeman (2022).
> Finished chain.
"Harry Styles is an English singer, songwriter and actor. He rose to fame as a member of the boy band One Direction, and later embarked on a solo career. He released his debut solo album, Harry Styles, in 2017, and his second album, Fine Line, in 2019. He has also had success in film, appearing in Dunkirk (2017), Don't Worry Darling (2022) and My Policeman (2022)."
Kita dapat melihat bahwa setelah menjalankan metode .run(), agent memproses prompt pengguna dan memulai fase penalaran, yang berujung pada hasil: "Saya harus mencari biografi penyanyinya". Untuk itu, agent merancang rencana tindakan yang terdiri dari menggunakan tool Wikipedia Search – sesuai definisi tool kita – dengan masukan "Harry Styles biography". Lalu, rencana tindakan dijalankan, dan agent mengambil informasi terkait dari basis data Wikipedia, memproses temuannya, dan menghasilkan jawaban yang sesuai dalam bahasa alami.
Contoh 2: Browsing Acak
Sekarang mari minta tugas browsing generik sehingga agent tidak memiliki tool spesifik yang disebutkan dalam deskripsi toolkit:
agent.run(
"Yesterday's latest news in Spain"
)
Mari amati proses penalaran pada kasus ini:
> Entering new AgentExecutor chain...
I should look for news from yesterday
Action: Google Search
Action Input: "Yesterday's news in Spain"
Observation: The latest breaking news, comment and features from The Independent. All the latest content about Spain from the BBC. Find all national and international information about spain. Select the subjects you want to know more about on euronews.com. Latest Spain news stories including accidents, crime and policing, politics, and Spanish sport news headlines. Latest news, essential insights and practical guides to life in Spain from The Local, Europe's leading independent voice. Missing: Yesterday's | Show results with:Yesterday's. Stay on top of Spain latest developments on the ground with Al Jazeera's fact-based news, exclusive video footage, photos and updated maps. Missing: Yesterday's | Show results with:Yesterday's. Spain · Shakira due to go on trial in Spain over tax fraud claims · The Observer view on Pedro Sánchez's election deal to take power: it undermines democracy. Missing: Yesterday's | Show results with:Yesterday's. Latest News · Hundreds leave Al-Shifa hospital as Israeli forces take control of facility · F1 fans file class-action suit over being forced to exit Las Vegas ... Missing: Yesterday's | Show results with:Yesterday's. Follow the latest Spain news stories and headlines. Get breaking news alerts when you download the ABC News App and subscribe to Spain notifications. Missing: Yesterday's | Show results with:Yesterday's. Get the latest breaking news and top news headlines at Reuters ... Spain Headlines. Shakira stands trial in Spain for alleged tax fraud. Shakira ... Missing: Yesterday's | Show results with:Yesterday's.
Thought: I found a lot of news sources with yesterday's news, so the final answer should be about that.
Final Answer: The latest news in Spain from yesterday is that Shakira is standing trial in Spain for alleged tax fraud, hundreds of people have left Al-Shifa hospital as Israeli forces take control, and F1 fans have filed a class-action suit over being forced to exit Las Vegas. Other news includes insights and practical guides to life in Spain, Pedro Sánchez's election deal to take power, and the top news headlines from Reuters.
> Finished chain.
"The latest news in Spain from yesterday is that Shakira is standing trial in Spain for alleged tax fraud, hundreds of people have left Al-Shifa hospital as Israeli forces take control, and F1 fans have filed a class-action suit over being forced to exit Las Vegas. Other news includes insights and practical guides to life in Spain, Pedro Sánchez's election deal to take power, and the top news headlines from Reuters."
Dalam kasus ini, agent berhasil menggunakan tool Google Serper default dan menemukan berita terbaru di Spanyol. Contoh browsing ini menarik karena kita berhasil mengajukan prompt yang sangat aktual ke LLM yang data latihannya berakhir pada September 2021, namun tetap mendapatkan jawaban terkini.
Contoh 3: Pengambilan Video
Terakhir, anggaplah kita tertarik pada sumber berupa video. Mari lihat apakah model dapat benar-benar menujukannya. Kita akan mematikan mode verbose dan mengamati respons aktual dari model:
agent = initialize_agent(
tools, llm, agent="zero-shot-react-description"
)
agent.run(
"Can you point me to the Procrastination TED talk by Tim Urban?"
)
Dan, seperti yang diharapkan, kita berhasil mendapatkan respons berikut:
'The TED Talk "Procrastination" by Tim Urban can be found at
https://www.youtube.com/watch?v=arj7oStGLkU'
Berhasil! Dengan tiga contoh ini, kita telah menunjukkan berbagai sumber yang dapat dimanfaatkan LLM untuk memenuhi permintaan kita.
Jika Anda tertarik menambahkan lebih banyak Tools ke Toolkit kita, saya sangat merekomendasikan artikel ReAct: 3 LangChain Tools To Enhance the Default GPT Capabilities.
Kesimpulan
Dalam tutorial ini, kita telah mempelajari penggunaan LangChain Tools untuk meningkatkan kemampuan browsing pada LLM. Inti dari LangChain adalah kemampuannya menyederhanakan pengembangan aplikasi berbasis LLM, menampilkan serangkaian fitur andal termasuk memori bawaan, chatbot lengkap, dan Tools yang dieksplorasi dalam artikel ini, antara lain.
Sementara OpenAI membuat kemajuan di ranah AI kustom dengan peluncuran model GPT terbarunya, saya yakin masih ada ruang signifikan untuk bertumbuh dan berinovasi.
Dalam hal ini, LangChain Tools memiliki keunggulan besar dalam perlombaan teknologi ini bagi pengguna yang sering berinteraksi dengan model GPT melalui Python dan OpenAI API. Ini sangat kontras dengan GPTs, yang tampaknya ditujukan untuk audiens non-koding. Pengguna GPT dapat dengan mudah mengonfigurasi instance khusus dari antarmuka pengguna ChatGPT dan mengaksesnya sesuai kebutuhan, menawarkan kemudahan penggunaan tetapi fleksibilitas yang terbatas.
Selain itu, kemampuan LangChain Tools untuk memeriksa sumber informasi eksternal seperti Google atau Wikipedia sangat meningkatkan basis pengetahuan model. Ini memberikan keunggulan besar dibanding GPTs, yang mendukung unggahan informasi tetapi dalam skala yang lebih kecil.
Sebagai penutup, LangChain Tools, menurut saya, adalah fitur paling kuat untuk menambah kapabilitas model dan menyesuaikan instance kita sendiri menggunakan data publik yang luas tersedia. Dapatkah Anda bayangkan kekuatan menggabungkan Tools dengan basis data privat kita sendiri?
Baru di dunia LLM? Lihat kursus Large Language Models Concepts kami untuk mengejar ketertinggalan!
Andrea Valenzuela saat ini bekerja pada eksperimen CMS di akselerator partikel (CERN) di Jenewa, Swiss. Dengan keahlian dalam rekayasa dan analisis data selama enam tahun terakhir, tugasnya mencakup analisis data dan pengembangan perangkat lunak. Kini ia berupaya mendemokratisasi pembelajaran teknologi terkait data melalui publikasi Medium ForCode'Sake.
Ia meraih gelar BS di bidang Engineering Physics dari Polytechnic University of Catalonia, serta gelar MS di bidang Intelligent Interactive Systems dari Pompeu Fabra University. Pengalaman penelitiannya mencakup pekerjaan profesional dengan algoritme OpenAI sebelumnya untuk pembuatan gambar, seperti Normalizing Flows.

