Memanggil alat LangChain menggunakan Granite-3.0-8B-Instruct di Python dengan watsonx.ai

Penulis

Anna Gutowska

AI Engineer, Developer Advocate

IBM

Dalam tutorial ini, kita akan menggunakan alat LangChain yang dibangun sebelumnya untuk agen ReAct agen untuk memperlihatkan kemampuannya dalam membedakan contoh penggunaan yang sesuai untuk setiap alat. Kami terutama akan menggunakan paket LangChain Python sumber terbuka.

Apa yang dimaksud dengan pemanggilan alat?

Panggilan alat, atau dikenal sebagai panggilan fungsi, adalah antarmuka yang memungkinkan agen kecerdasan buatan (AI) untuk mengerjakan tugas-tugas tertentu yang memerlukan informasi terkini. Jika tugas tersebut tidak dijalankan, informasi terkini tidak tersedia untuk model bahasa besar (LLM) yang terlatih. LLM seperti model IBM® Granite atau model GPT (generative pre-trained transformer) OpenAI hanya memiliki akses ke informasi yang digunakan dalam pelatihan. Ada banyak alat bawaan yang dapat diakses melalui LangChain, termasuk alat untuk menangani kueri SQL database, mengakses informasi di Wikipedia, dan banyak lagi. Sebaiknya Anda membaca dokumentasi LangChain untuk mendapatkan daftar lengkap alat yang telah dibuat sebelumnya.

Alat kustom dapat didefinisikan menggunakan berbagai metode, termasuk menggunakan dekorator @tool atau LangChain Runnables, yang akan kita bahas dalam tutorial ini. Alat Async dapat dibuat dengan menggunakan StructuredTool atau class BaseTool. Untuk perbedaan antara setiap pendekatan, harap baca dokumentasi resmi LangChain. Lihat tutorial pemanggilan fungsi IBM untuk contoh alat khusus.

Harap lihat dokumen penjelas Agen AI kami untuk ikhtisar mendalam tentang berbagai jenis agen AI dan perbedaannya dari chatbot LLM tradisional.

Prasyarat

Anda memerlukan akun IBM Cloud.

Langkah

Langkah 1. Siapkan lingkungan kerja Anda

Meskipun Anda dapat memilih dari beberapa alat, tutorial ini akan memandu Anda langkah demi langkah dalam membuat akun IBM untuk menggunakan Jupyter Notebook.

  1. Masuk ke watsonx.ai™ menggunakan akun IBM Cloud Anda.

  2. Buat proyek watsonx.ai.

    Anda bisa mendapatkan ID proyek Anda dari dalam proyek Anda. Klik tab Kelola. Kemudian, salin ID proyek dari bagian Detail pada halaman Umum. Anda memerlukan ID ini untuk tutorial ini.

  3. Buat Jupyter Notebook.

    Langkah ini akan membuka lingkungan Jupyter Notebook tempat Anda dapat menyalin kode dari tutorial ini. Sebagai alternatif, Anda dapat mengunduh notebook ini ke sistem lokal Anda dan mengunggahnya ke proyek watsonx.ai Anda sebagai aset. Untuk melihat tutorial Granite lainnya, kunjungi Komunitas IBM Granite. Tutorial ini juga tersedia di Github.

Langkah 2. Siapkan instance waktu proses watsonx.ai dan kunci API

  1. Buat instance layanan Waktu proses watsonx.ai (pilih wilayah yang sesuai dan pilih paket Lite, yang merupakan instance gratis).

  2. Buat Kunci API.

  3. Asosiasikan instance layanan waktu proses watsonx.ai ke proyek yang Anda buat di watsonx.ai.

Langkah 3. Instal dan impor pustaka yang relevan dan atur kredensial Anda

Kita membutuhkan beberapa pustaka dan modul untuk tutorial ini. Pastikan untuk mengimpor yang berikut ini, dan jika belum diinstal, Anda dapat mengatasinya dengan instalasi pip yang cepat. LangChain dan LangGraph akan menjadi kerangka kerja dan toolkit yang digunakan pengembang.

Catatan: Tutorial ini dibuat menggunakan Python 3.11.9 dan juga kompatibel dengan Google Colab yang menggunakan Python 3.10.12. Untuk memeriksa versi python Anda, Anda dapat menjalankan perintah !python --version  dalam sel kode.

#installations
!pip install -q langchain \
    "langchain_community<0.3.0" \
    langgraph \
    youtube_search \
    pyowm \
    ionic-langchain \
    python-dotenv

!pip install -qU langchain-ibm
#imports
import os

from langchain_ibm import ChatWatsonx
from langgraph.prebuilt import create_react_agent
from langchain_core.tools import Tool
from langchain_core.messages import HumanMessage
from langchain_community.tools import YouTubeSearchTool
from langchain_community.utilities import OpenWeatherMapAPIWrapper
from ionic_langchain.tool import IonicTool
from dotenv import load_dotenv

load_dotenv(os.getcwd()+"/.env", override=True)

Untuk mengatur kredensial kami, kami memerlukan WATSONX_APIKEY dan WATSONX_PROJECT_ID yang Anda hasilkan di langkah 1. Anda dapat menyimpannya dalam file .env di direktori Anda atau mengganti teks placeholder. Kami juga akan menetapkan URL yang berfungsi sebagai titik akhir API.

WATSONX_APIKEY = os.getenv('WATSONX_APIKEY', "<WATSONX_APIKEY_HERE>")
WATSONX_PROJECT_ID = os.getenv('WATSONX_PROJECT_ID', "<WATSONX_PROJECT_ID_HERE>")
URL = "https://us-south.ml.cloud.ibm.com"

Alat cuaca yang digunakan dalam tutorial ini dengan memerlukan kunci OpenWeather API. Untuk membuatnya, buat akun OpenWeather. Setelah membuat akun, pilih tab "API Keys" untuk menampilkan kunci gratis Anda.

OPENWEATHERMAP_API_KEY = os.getenv('OPENWEATHERMAP_API_KEY', "<OPEN_WEATHERMAP_API_KEY_HERE>")

Langkah 4. Inisialisasi LLM

Untuk tutorial ini, kita akan menggunakan wrapper ChatWatsonX untuk mengatur model obrolan kita. Wrapper ini menyederhanakan integrasi pemanggilan alat dan rantai. Kita akan menggunakan model instruktur granite-3-8b. Harap gunakan referensi API dalam dokumentasi ChatWatsonx untuk informasi lebih lanjut.

Untuk menginisialisasi LLM, kita perlu mengatur parameter model. Penting untuk mengonfigurasi suhu model di sini untuk membatasi halusinasi agen.

llm = ChatWatsonx(
    model_id="ibm/granite-3-8b-instruct",
    url = URL,
    apikey = WATSONX_APIKEY,
    project_id = WATSONX_PROJECT_ID,
    params = {
        "decoding_method": "greedy",
        "temperature": 0,
        "min_new_tokens": 5,
        "max_new_tokens": 2000
    }
)

Langkah 5. Aktifkan alat bawaan

Kita dapat menggunakan class Tool agar alat kita dapat dipanggil. Deskripsi alat yang jelas dan sederhana juga penting. Selain itu, atribut boolean return_direct menentukan apakah respons alat harus ditampilkan langsung kepada pengguna. Terakhir, atribut opsional args_schema pada tipe pydantic.BaseModel digunakan untuk memberikan informasi tambahan atau validasi ke model.

Bayangkan Anda sedang merencanakan liburan berikutnya ke Yunani dan ingin tahu lebih banyak tentang negara tersebut serta mempersiapkan diri untuk perjalanan tersebut. Pertama, mari kita siapkan alat cuaca LangChain bawaan. Alat ini menggunakan OpenWeatherMapapiWrapper yang menggunakan OPENWEATHERMAP_API_KEY yang kita buat sebelumnya.

weather = OpenWeatherMapAPIWrapper(openweathermap_api_key=OPENWEATHERMAP_API_KEY)

weather_search = Tool(
    name="weather_search",
    description="Get weather for a city and country code, e.g. Athens, GR",
    func=weather.run,
)

Selanjutnya, mari kita siapkan alat YouTube bawaan dengan menggunakan paket Penelusuran YouTube yang tersedia melalui LangChain. Langkah ini akan sangat membantu untuk menemukan video tentang tujuan perjalanan Anda.

youtube = YouTubeSearchTool()

youtube_search = Tool(
    name="youtube_search",
    description="Search YouTube for video links.",
    func=youtube.run,
)

Terakhir, mari kita siapkan alat belanja online menggunakan Ionic. Alat ini menampilkan item yang relevan dengan kueri pengguna yang dijual melalui pasar digital.

ionic_search = IonicTool().tool()

Mari kita atur daftar beberapa alat yang kami sediakan untuk LLM. Kita juga dapat mencetak daftar untuk melihat bagaimana daftar tersebut dimuat. Untuk daftar lengkap alat LangChain yang tersedia, lihat dokumentasi LangChain.

tools = [weather_search, youtube_search, ionic_search]
tools

output:

[Tool(name='weather_search', description='Get weather for a city and country code, e.g. Athens, GR', func=<bound method OpenWeatherMapAPIWrapper.run of OpenWeatherMapAPIWrapper(owm=<pyowm.owm.OWM - API key=************************611450cc, subscription type=free, PyOWM version=(3, 3, 0)>, openweathermap_api_key='******************')>),

Tool(name='youtube_search', description='Search YouTube for video links.', func=<bound method BaseTool.run of YouTubeSearchTool()>),

Tool(name='ionic_commerce_shopping_tool', description='\nIonic is an e-commerce shopping tool...[abbreviated]', verbose=True, func=<bound method Ionic.query of <ionic_langchain.tool.Ionic object at 0x17f6e5510>>)] 

Langkah 6. Pemanggilan alat

Pemanggilan alat biasanya mengacu pada LLM yang menampilkan nama alat yang akan dipanggil dan argumennya. Kita dapat menggunakan informasi yang diekstraksi untuk tujuan lain atau kita dapat memanggil alat dengan argumen ini. Untuk contoh lebih lanjut tentang ini, lihat tutorial pemanggilan fungsi kami.

Sebenarnya, menjalankan alat dan mengambil outputnya tidak selalu tersirat. Dalam tutorial ini, kita akan mengeksplorasi kedua pendekatan tersebut.

Menampilkan alat dan argumen yang relevan

Untuk melakukan pemanggilan alat tradisional, kita dapat memberikan kueri pengguna dan menggunakan metode bind_tools bawaan untuk meneruskan daftar alat ke LLM pada setiap iterasi.

llm_with_tools = llm.bind_tools(tools)
response = llm_with_tools.invoke([("human", "What are some youtube videos about greece")])
response

Output:

AIMessage(content='', additional_kwargs={'tool_calls': [{'id': 'chatcmpl-tool-7a15abba7d3c4419970d807ac0c8d353', 'type': 'function', 'function': {'name': 'youtube_search', 'arguments': '{"query": "greece"}'}}]}, response_metadata={'token_usage': {'completion_tokens': 21, 'prompt_tokens': 578, 'total_tokens': 599}, 'model_name': 'ibm/granite-3-8b-instruct', 'system_fingerprint': '', 'finish_reason': 'tool_calls'}, id='chat-5fe7a26b8f954c179c4995e873bff91e', tool_calls=[{'name': 'youtube_search', 'args': {'query': 'greece'}, 'id': 'chatcmpl-tool-7a15abba7d3c4419970d807ac0c8d353', 'type': 'tool_call'}], usage_metadata={'input_tokens': 578, 'output_tokens': 21, 'total_tokens': 599})

response.additional_kwargs

Output:

{'tool_calls': [{'id': 'chatcmpl-tool-7a15abba7d3c4419970d807ac0c8d353',
'type': 'function',
'function': {'name': 'youtube_search',
'arguments': '{"query": "greece"}'}}]}

Seperti yang terlihat pada output tool_calls, LLM dengan benar mengidentifikasi panggilan alat dan argumen yang sesuai. LLM tidak menjalankan alat itu sendiri. Kita akan melakukan ini di langkah selanjutnya.

Menjalankan panggilan alat dan mengambil outputnya

Untuk menjalankan panggilan alat, kita perlu terlebih dahulu membuat agen ReAct menggunakan metode bantu LangGraph create_react_agent yang telah disediakan. Fungsi ini membuat grafik yang berfungsi sebagai jembatan antara model obrolan dan alat-alat yang tersedia, sehingga memungkinkan pemanggilan alat agen. Grafik ini ditunjukkan dalam diagram berikut.

Grafik agen ReAct
agent_executor = create_react_agent(llm, tools)

Kita sekarang dapat mengajukan pertanyaan kepada agen yang memerlukan panggilan alat. Pertama, kita dapat meminta model untuk menampilkan URL ke video YouTube tentang Yunani. Kita dapat menggunakan class HumanMessage untuk meneruskan query pengguna ke LLM.

user_query = "What are some YouTube videos about Greece"
response = agent_executor.invoke({"messages": user_query})
response["messages"]

Output:

[HumanMessage(content='What are some YouTube videos about Greece', additional_kwargs={}, response_metadata={}, id='1adba6c0-32e6-4bbd-92a6-7d21b0177439'),
AIMessage(content='', additional_kwargs={'tool_calls': [{'id': 'chatcmpl-tool-b4b5bf452404424ba4d6d9c26e53c6ce', 'type': 'function', 'function': {'name': 'youtube_search', 'arguments': '{"query": "Greece"}'}}]}, response_metadata={'token_usage': {'completion_tokens': 22, 'prompt_tokens': 578, 'total_tokens': 600}, 'model_name': 'ibm/granite-3-8b-instruct', 'system_fingerprint': '', 'finish_reason': 'tool_calls'}, id='chat-5f41aee6736842749285aa7fbff50f65', tool_calls=[{'name': 'youtube_search', 'args': {'query': 'Greece'}, 'id': 'chatcmpl-tool-b4b5bf452404424ba4d6d9c26e53c6ce', 'type': 'tool_call'}], usage_metadata={'input_tokens': 578, 'output_tokens': 22, 'total_tokens': 600}),
ToolMessage(content="['https://www.youtube.com/watch?v=waQY2Ucpbd0&pp=ygUGR3JlZWNl', 'https://www.youtube.com/watch?v=NMlBB2pK5qo&pp=ygUGR3JlZWNl']", name='youtube_search', id='1ccf3137-2c10-495e-86ad-a548a3434243', tool_call_id='chatcmpl-tool-b4b5bf452404424ba4d6d9c26e53c6ce'),
AIMessage(content='Here are some YouTube videos about Greece:\n\n1. [Greece Travel Guide | Top 10 Tourist Attractions](https://www.youtube.com/watch?v=waQY2Ucpbd0&pp=ygUGR3JlZWNl)\n2. [Greece Travel Guide | Top 10 Tourist Attractions](https://www.youtube.com/watch?v=NMlBB2pK5qo&pp=ygUGR3JlZWNl)', additional_kwargs={}, response_metadata={'token_usage': {'completion_tokens': 117, 'prompt_tokens': 677, 'total_tokens': 794}, 'model_name': 'ibm/granite-3-8b-instruct', 'system_fingerprint': '', 'finish_reason': 'stop'}, id='chat-801e3b596a174ac88246b507c93e5869', usage_metadata={'input_tokens': 677, 'output_tokens': 117, 'total_tokens': 794})]

Hebat! Seperti yang terlihat di AiMessage, model mengidentifikasi panggilan alat yang sesuai dengan benar. Dalam ToolMessage, kita dapat melihat bahwa model berhasil menampilkan output yang diharapkan dengan menggunakan alat YouTube bawaan LangChain. Akhirnya, AIMessage menampilkan respons yang disintesis oleh LLM.

Selanjutnya, mari kita tanyakan kepada model tentang cuaca di Yunani untuk menentukan apakah model memanggil alat weather_search sesuai yang diharapkan.

user_query = "What is the weather in Athens, GR"
response = agent_executor.invoke({"messages": user_query})
response["messages"]

Output:

[HumanMessage(content='What is the weather in Athens, GR', additional_kwargs={}, response_metadata={}, id='a0c4b69c-988a-4f7d-9b8a-4780305f8e2a'),
AIMessage(content='', additional_kwargs={'tool_calls': [{'id': 'chatcmpl-tool-9a0c07a3b35f4c69a351c5540ab663f8', 'type': 'function', 'function': {'name': 'weather_search', 'arguments': '{"__arg1": "Athens, GR"}'}}]}, response_metadata={'token_usage': {'completion_tokens': 26, 'prompt_tokens': 579, 'total_tokens': 605}, 'model_name': 'ibm/granite-3-8b-instruct', 'system_fingerprint': '', 'finish_reason': 'tool_calls'}, id='chat-eeed087050e049f0ad715f3615c7fdda', tool_calls=[{'name': 'weather_search', 'args': {'__arg1': 'Athens, GR'}, 'id': 'chatcmpl-tool-9a0c07a3b35f4c69a351c5540ab663f8', 'type': 'tool_call'}], usage_metadata={'input_tokens': 579, 'output_tokens': 26, 'total_tokens': 605}),
ToolMessage(content='In Athens, GR, the current weather is as follows:\nDetailed status: few clouds\nWind speed: 4.47 m/s, direction: 23°\nHumidity: 58%\nTemperature: \n - Current: 15.15°C\n - High: 15.74°C\n - Low: 14.1°C\n - Feels like: 14.24°C\nRain: {}\nHeat index: None\nCloud cover: 20%', name='weather_search', id='587b0230-b667-41de-97b9-3779554d2559', tool_call_id='chatcmpl-tool-9a0c07a3b35f4c69a351c5540ab663f8'),
AIMessage(content='The current weather in Athens, GR is:\n- Detailed status: few clouds\n- Wind speed: 4.47 m/s, direction: 23°\n- Humidity: 58%\n- Temperature:\n - Current: 15.15°C\n - High: 15.74°C\n - Low: 14.1°C\n - Feels like: 14.24°C\n- Rain: None\n- Heat index: None\n- Cloud cover: 20%', additional_kwargs={}, response_metadata={'token_usage': {'completion_tokens': 125, 'prompt_tokens': 733, 'total_tokens': 858}, 'model_name': 'ibm/granite-3-8b-instruct', 'system_fingerprint': '', 'finish_reason': 'stop'}, id='chat-6719a5ca266a439bb10ed410db25c5ef', usage_metadata={'input_tokens': 733, 'output_tokens': 125, 'total_tokens': 858})]

Model tersebut mampu mengidentifikasi alat yang tepat untuk dipanggil, menjalankan alat tersebut dengan argumen yang diekstraksi, serta mensintesis output alat tersebut. Sekarang, mari kita tanya LLM tentang beberapa koper di bawah 100 USD untuk perjalanan Anda yang akan datang. Catatan, alat ini dirancang untuk mencari harga dalam sen. Oleh karena itu, kami meminta koper di bawah 10.000 sen dalam skenario ini, setara dengan 100 USD.

user_query = "Find some suitcases for less than 10000"
response = agent_executor.invoke({"messages": user_query})
response["messages"]

Output:

[HumanMessage(content='Find some suitcases for less than 10000', additional_kwargs={}, response_metadata={}, id='8b207035-150a-4390-aff3-8b09ef85a592'),
AIMessage(content='', additional_kwargs={'tool_calls': [{'id': 'chatcmpl-tool-b011e718b18e41dcbcae2f7786af263d', 'type': 'function', 'function': {'name': 'ionic_commerce_shopping_tool', 'arguments': '{"__arg1": "suitcases, 10, 0, 10000"}'}}]}, response_metadata={'token_usage': {'completion_tokens': 41, 'prompt_tokens': 582, 'total_tokens': 623}, 'model_name': 'ibm/granite-3-8b-instruct', 'system_fingerprint': '', 'finish_reason': 'tool_calls'}, id='chat-e38c8568d1754636a6a92082561180bd', tool_calls=[{'name': 'ionic_commerce_shopping_tool', 'args': {'__arg1': 'suitcases, 10, 0, 10000'}, 'id': 'chatcmpl-tool-b011e718b18e41dcbcae2f7786af263d', 'type': 'tool_call'}], usage_metadata={'input_tokens': 582, 'output_tokens': 41, 'total_tokens': 623}),
ToolMessage(content='[{"products": [{"links": [{"text": "Details", "type": "pdp", "url": "https://go.ionic.click/Ch4CKd"}], "merchant_name": "Walmart", "merchant_product_id": "811277349", "name": "Zimtown Hardside Lightweight Spinner Orange 3 Piece Luggage Set with TSA Lock", "price": "$69.99", "status": "available", "thumbnail": "https://i5.walmartimages.com/asr/b809a274-ccc7-4ca4-b4f1-e848b4412fe6.314144bcd13e5467a33cb99e8dd5237c.jpeg?odnHeight=100&odnWidth=100&odnBg=ffffff", "brand_name": "Zimtown", "upc": "273109526768"}, {"links": [{"text": "Details", "type": "pdp", "url": "https://www.amazon.com/dp/B071HHX6VF?tag=ioniccommer00-20&linkCode=osi&th=1&psc=1"}], "merchant_name": "Amazon", "merchant_product_id": "B071HHX6VF", "name": "Amazon Basics Expandable Hardside Luggage, Suitcase with Wheels, 30-Inch Spinner with Four Spinner Wheels and Scratch-Resistant Surface, Black", "price": "$74.49", "status": "available", "thumbnail": "https://m.media-amazon.com/images/I/41jJcuMYSdL._SL160_.jpg", "brand_name": "Amazon Basics", "upc": "841710177190"}, .....[abbreviated],
AIMessage(content='Here are some suitcases that are less than 10000:\n\n1. [Zimtown Hardside Lightweight Spinner Orange 3 Piece Luggage Set with TSA Lock](https://go.ionic.click/Ch4CKd) - $69.99\n2. [Amazon Basics Expandable Hardside Luggage, Suitcase with Wheels, 30-Inch Spinner](https://www.amazon.com/dp/B071HHX6VF) - $74.49\n3. [SwissGear Sion Softside Expandable Luggage, Blue, Carry-On 21-Inch](https://www.amazon.com/dp/B01MFBVKDF) - $80.73\n4. [Travelers Club Midtown Hardside Luggage Travel, Rose Gold, 4-Piece Set](https://www.amazon.com/dp/B07RS4PK3J) - $95.19\n5. [American Tourister Stratum 2.0 Expandable Hardside Luggage with Spinner Wheels, 28" SPINNER, Slate Blue](https://www.amazon.com/dp/B0B2X1BDFH) - $89.97\n6. [Wrangler Smart Luggage Set with Cup Holder and USB Port, Navy Blue, 20-Inch Carry-On](https://www.amazon.com/dp/B07SLG6WZ2) - $39.99\n7. [Wrangler Hardside Carry-On Spinner Luggage, Lilac, 20-Inch](https://www.amazon.com/dp/B0C7YWMBGP) - $40.00\n8. [Protege 20 inch Hard Side Carry-On Spinner Luggage, Black Matte Finish (Walmart.com Exclusive)](https://go.ionic.click/qJqBRA) - $29.87\n9. [Wrangler Wesley Rolling Duffel Bag, Tannin, Large 30-Inch](https://www.amazon.com/dp/B07XKWMLJ5) - $44.00\n10. [U.S. Traveler Boren Polycarbonate Hardside Rugged Travel Suitcase Luggage with 8 Spinner Wheels, Aluminum Handle, Lavender, Checked-Large 30-Inch](https://www.amazon.com/dp/B085B4D852) - $79.99', additional_kwargs={}, response_metadata={'token_usage': {'completion_tokens': 612, 'prompt_tokens': 2794, 'total_tokens': 3406}, 'model_name': 'ibm/granite-3-8b-instruct', 'system_fingerprint': '', 'finish_reason': 'stop'}, id='chat-d08201ff6ef84c428e7ae44372396926', usage_metadata={'input_tokens': 2794, 'output_tokens': 612, 'total_tokens': 3406})]

Seperti yang terlihat dari respons LLM, model tersebut dengan benar menggunakan alat belanja untuk menampilkan beberapa koper yang dapat dibeli secara online dengan harga di bawah 100 USD.

Ringkasan

Dalam tutorial ini, Anda menggunakan alat LangChain bawaan untuk membuat agen ReAct di Python dengan watsonx menggunakan model granite-3-8b-instruct  . Anda menggunakan alat youtube_search , weather_search  dan ionic_search . Tutorial menunjukkan bagaimana menerapkan pemanggilan alat tradisional serta pendekatan yang menjalankan alat. Output sampel penting karena menunjukkan langkah-langkah yang diambil agen dalam membuat alur kerja agennya sendiri dengan menggunakan fungsi yang tersedia. Alat yang diberikan kepada agen sangat penting untuk menjawab pertanyaan pengguna.

Solusi terkait
Agen AI untuk bisnis

Bangun, terapkan, dan kelola asisten dan agen AI yang kuat yang mengotomatiskan alur kerja dan proses dengan AI generatif.

    Menjelajahi watsonx Orchestrate
    Solusi agen AI IBM

    Bangun masa depan bisnis Anda dengan solusi AI yang dapat Anda percaya.

    Jelajahi solusi agen AI
    Layanan AI IBM Consulting

    Layanan IBM Consulting AI membantu merancang ulang cara kerja bisnis dengan AI untuk transformasi.

    Jelajahi layanan kecerdasan buatan
    Ambil langkah selanjutnya

    Baik Anda memilih untuk menyesuaikan aplikasi dan keterampilan yang dibangun sebelumnya atau membangun dan menerapkan layanan agen khusus menggunakan studio AI, platform IBM watsonx siap membantu Anda.

    Menjelajahi watsonx Orchestrate Jelajahi watsonx.ai