Membangun sistem manajemen kontrak multiagen dengan BeeAI dan Granite

Penulis

Anna Gutowska

AI Engineer, Developer Advocate

IBM

Dalam tutorial ini, Anda akan membangun sistem multi-agen lokal sepenuhnya dengan IBM® Granite dengan menggunakan BeeAI di Python. Agen-agen ini akan berkolaborasi untuk menegosiasikan perjanjian kontrak untuk layanan penataan lanskap antara dua perusahaan dengan mempertimbangkan tren pasar dan batasan anggaran internal. Alur kerja akan terdiri dari agen penasihat anggaran, agen penyusun kontrak, agen pencarian web, dan agen penasihat pengadaan. Mengingat kontrak, data anggaran, industri layanan, dan nama perusahaan yang disediakan oleh pengguna, agen berkolaborasi untuk menghasilkan email untuk menegosiasikan persyaratan kontrak yang menguntungkan klien.

Apa itu BeeAI?

BeeAI yang diluncurkan oleh IBM Research dan kini disumbangkan ke Linux Foundation, adalah platform AI agen sumber terbuka yang memungkinkan pengembang untuk membangun agen AI dari kerangka kerja apa pun.1

Agen kecerdasan buatan (AI) merujuk pada sistem atau program yang dibangun menggunakan model bahasa besar (LLM) untuk secara mandiri melaksanakan tugas atas nama pengguna atau sistem lain dengan merancang alur kerjanya dan memanfaatkan alat yang tersedia. Agen AI lebih canggih daripada chatbot LLM tradisional karena mereka dapat mengakses alat yang telah ditentukan sebelumnya, merencanakan tindakan pada masa depan, dan memerlukan sedikit atau tanpa intervensi manusia untuk memecahkan dan mengotomatiskan masalah yang kompleks.

Pendahulu BeeAI adalah Kerangka Kerja Bee Agent, kerangka kerja sumber terbuka khusus untuk membangun agen LLM tunggal. Sebaliknya, BeeAI menyediakan ekosistem yang lebih canggih untuk membangun dan mengatur alur kerja multiagen.

BeeAI adalah:

  • Tidak bergantung pada kerangka kerja.
  • Tersedia dalam TypeScript dan Python.
  • Dibangun di atas Agent Communication Protocol (ACP) yang dirancang oleh IBM Research, yang meningkatkan Model Context Protocol (MCP) dengan membakukan cara agen berkomunikasi satu sama lain. ACP mengintegrasikan agen dari berbagai kerangka kerja, seperti LangGraphcrewAI , dan BeeAI ke dalam satu waktu proses yang konstan.2
  • Terintegrasi dengan Arize Phoenix, alat sumber terbuka untuk melacak perilaku agen yang memungkinkan observabilitas. Informasi lebih lanjut tentang penghapusan bug pada agen Anda melalui pencatatan dan telemetri yang tersedia dapat ditemukan di dokumentasi resmi.
  • Mampu berjalan secara lokal sepenuhnya di mesin Anda. Agen juga dapat diterapkan ke lingkungan bersama.
  • Menyediakan antarmuka terpadu untuk berbagai fungsi, termasuk obrolan, penanaman, dan output terstruktur, seperti JSON, memungkinkan pertukaran model yang mulus tanpa memerlukan perubahan apa pun pada kode yang ada.

Langkah-langkah

Panduan langkah demi langkah ini dapat ditemukan di repositori GitHub kami dalam bentuk Jupyter Notebook.

Langkah 1. Siapkan lingkungan Anda

Pertama-tama, kita perlu menyiapkan lingkungan kita dengan memenuhi beberapa prasyarat.
1. Dalam tutorial ini, kita tidak akan menggunakan antarmuka pemrograman aplikasi (API) seperti yang tersedia di IBM® watsonx.ai dan OpenAI. Sebagai gantinya, kita dapat menginstal versi terbaru Ollama untuk menjalankan model secara lokal.
Cara termudah untuk menginstal Ollama untuk macOS, Linux dan Windows adalah melalui halaman web mereka: https://ollama.com/download. Langkah ini akan menginstal aplikasi bilah menu untuk menjalankan server Ollama di latar belakang dan membuat Anda tetap mendapatkan informasi terbaru tentang rilis terbaru.
Sebagai alternatif, Anda dapat menginstal Ollama dengan homebrew di terminal Anda:

brew install ollama

Jika menginstal dari brew, atau membangun dari sumber, Anda perlu mem-boot server pusat:

ollama serve

2. Ada beberapa LLM yang mendukung pemanggilan alat seperti model Llama terbaru dari Meta dan model Mistral dari Mistral AI. Untuk tutorial ini, kita akan menggunakan model sumber terbuka Granite 3.3 IBM. Model ini memiliki fitur penalaran yang ditingkatkan dan kemampuan mengikuti instruksi.3 Ambil model Granite 3.3 terbaru dengan menjalankan perintah berikut di terminal Anda.

ollama pull granite3.3:8b

3. Untuk menghindari konflik dependensi paket, mari kita siapkan lingkungan virtual. Untuk membuat lingkungan virtual dengan Python versi 3.11.9, jalankan perintah berikut di terminal Anda.

python3.12 -m venv .venv

Kemudian, untuk mengaktifkan lingkungan, jalankan:

source .venv/bin/activate

4. File requirements.txt Anda harus berisi paket-paket berikut. Paket-paket ini diperlukan untuk membangun agen dengan kerangka kerja BeeAI dan menggabungkan kelas-kelas LangChain yang diperlukan untuk inisialisasi alat.

beeai-framework
beeai-framework[duckduckgo]
langchain-core
langchain-community
pandas

Untuk menginstal paket-paket ini, jalankan perintah berikut di terminal Anda.

pip install -r requirements.txt

5. Buat file Python baru berjudul bee-script.py dengan menjalankan perintah ini di terminal Anda:

touch bee-script.py

Di bagian atas file Python baru, sertakan pernyataan impor untuk pustaka dan modul yang diperlukan.

import asyncio
import pandas as pd
import os
import traceback
import sys

from beeai_framework.backend import ChatModel
from beeai_framework.tools.search.duckduckgo import DuckDuckGoSearchTool
from beeai_framework.workflows.agent import AgentWorkflow, AgentWorkflowInput
from beeai_framework.errors import FrameworkError
from beeai_framework.adapters.langchain import LangChainTool
from langchain_core.tools import StructuredTool
from typing import Any

Langkah 2. Buat instance agen dan alur kerja Anda

Dalam metode utama asinkron menggunakan asyncio , mari kita gabungkan kelas ChatModel dan AgentWorkflow untuk membuat instance Granite LLM dan alur kerja kita. Kita cukup memberikan ID model Ollama serta nama alur kerja. Dengan membuat instance alur kerja ini, kita dapat menambahkan agen dan membuat sistem multi-agen. Tambahkan metode utama ini ke file Python Anda.

async def main() -> None:
    llm = ChatModel.from_name("ollama:granite3.3:8b")
    workflow = AgentWorkflow(name="Procurement")

Untuk visual alur kerja agen, lihat diagram berikut.

Alur kerja agen untuk manajemen kontrak Alur kerja agen untuk manajemen kontrak

Kita akan merakit setiap komponen alur kerja ini dalam langkah-langkah berikut.

Langkah 3. Minta pengguna memasukkan input

Alur kerja kita bergantung pada input pengguna. Input awal yang diperlukan adalah nama perusahaan klien dan kontraktor. Pengguna akan diminta dengan teks berikut setelah eksekusi alur kerja di langkah selanjutnya. Tambahkan kode berikut ke metode utama.

client_company = input("Please enter the client company: ") #Example: Company A
contractor_company = input("Please enter the contractor company: ") #Example: Company B

Kita juga akan membutuhkan nama-nama file yang berisi laporan anggaran perusahaan klien,budget-data.csv , serta file yang berisi kontrak antara kedua perusahaan, contract.txt . Dalam contoh kita, kontrak tersebut berkaitan dengan layanan penataan lanskap yang disediakan oleh perusahaan kontraktor kepada perusahaan klien. Anda dapat menemukan file sampel di repositori GitHub kami. Struktur proyek harus seperti berikut:

├── .venv/ # Virtual environment
├── bee-script.py # The Python script
├── contract.txt # The contract
└── budget-data.csv # Client's budget report

Dalam kode berikut, kita juga memverifikasi ekstensi file untuk membantu memastikan bahwa ekstensi file selaras dengan format yang kita siapkan. Jika ada jenis file yang salah, pengguna akan diminta untuk mencoba lagi.

client_budget_file = input(f"Enter the file name of the budget report for {client_company} (in the same directory level): ") #Example: budget_data.csv
while os.path.splitext(client_budget_file)[1].lower() != ".csv":
    client_budget_file = input(f"Budget report must be in .csv format, please try again: ")

contract_file = input(f"Enter the file name of the contract between {client_company} and {contractor_company} (in the same directory level): ") #Example: contract.txt
while os.path.splitext(contract_file)[1].lower() != ".txt":
    contract_file = input(f"Contract must be in .txt format, please try again: ")

Input terakhir yang diperlukan adalah industri dari layanan yang dijelaskan dalam kontrak. Input ini dapat berupa keuangan, konstruksi, atau lainnya.

service_industry = input(f"Enter the industry of the service described in this contract (e.g., finance, construction, etc.): ") #Example: landscaping

Langkah 4. Siapkan alat bantu anggaran

Alat pertama yang dapat kita bangun dalam sistem multi-agen kita adalah untuk agen penasihat anggaran. Agen ini bertanggung jawab untuk membaca data anggaran klien. Fungsi yang diberikan kepada agen adalahget_budget_data , yang akan membaca file CSV yang berisi data anggaran dan menampilkan pesan eror jika file tidak ada, atau terjadi eror yang tidak terduga. Untuk mengakses file dengan menggunakan nama file yang disediakan oleh pengguna, pertama-tama kita perlu mengambil direktori saat ini. Kita dapat melakukannya dengan menggunakan metodeos berikut.

current_directory = os.getcwd()

Sekarang, mari kita mengatur kekuatan pendorong agen, fungsi get_budget_data , yang menggunakan direktori saat ini serta input pengguna untuk mengakses dan membaca file.

def get_budget_data():
    try:
        budget = pd.read_csv(os.path.join(current_directory, client_budget_file))
    except FileNotFoundError:
        return client_budget_file + " not found. Please check correct file name."
    except Exception as e:
        return f"An error occurred: {e}"
    return budget

Untuk membantu memastikan penggunaan alat ini dengan tepat, gunakan kelas StructuredTool LangChain. Di bagian ini, berikan fungsi, nama alat, deskripsi alat dan tetapkan parameter return_direct sebagai true (benar) atau false (salah). Parameter terakhir ini hanya memberi tahu agen apakah harus menampilkan output alat secara langsung atau menyusunnya.

get_budget = StructuredTool.from_function(
    func=get_budget_data,
    name="GetBudgetData",
    description=f"Returns the budget data for {client_company}.",
    return_direct=True,
)

Kita dapat menyelesaikan inisialisasi alat pertama menggunakan adaptor LangChain di BeeAI, yaitu LangChainTool.

budget_tool = LangChainTool[Any](get_budget)

Langkah 5. Siapkan alat bantu kontrak

Alat berikutnya yang bisa kita bangun adalah untuk agen synthesizer kontrak. Agen ini bertanggung jawab untuk membaca kontrak antara klien dan kontraktor. Fungsi yang diberikan kepada agen adalah get_contract_data , yang akan membaca file teks yang berisi kontrak, dan menampilkan pesan eror jika file tidak ada, atau terjadi kesalahan yang tidak terduga. Kode yang diperlukan untuk langkah ini mirip dengan langkah 3.

def get_contract_data():
    try:
        with open(os.path.join(current_directory, contract_file), 'r') as file:
            content = file.read()
    except FileNotFoundError:
        return contract_file + " not found. Please check correct file name."
    except Exception as e:
        return f"An error occurred: {e}"
    return content
get_contract = StructuredTool.from_function(
    func=get_contract_data,
    name="GetContractData",
    description=f"Returns the contract details.",
    return_direct=True,
)
contract_tool = LangChainTool[Any](get_contract)

Langkah 6. Tetapkan alur kerja agen

Pada langkah ini, kita dapat menambahkan berbagai agen ke alur kerja. Mari kita berikan alat khusus yang sesuai untuk penasihat anggaran dan agen synthesizer kontrak. Kita juga dapat mengatur nama agen, peran, instruksi, daftar alat, dan LLM. 

workflow.add_agent(
    name="Budget Advisor",
    role="A diligent budget advisor",
    instructions="You specialize in reading internal budget data in CSV format.",
    tools=[budget_tool],
    llm=llm,
)

workflow.add_agent(
    name="Contract Synthesizer",
    role="A diligent contract synthesizer",
    instructions=f"You specialize in reading contracts.",
    tools=[contract_tool],
    llm=llm,
)

Untuk mencari tren pasar dalam industri yang relevan di web, kita dapat membuat agen dengan akses ke DuckDuckGoSearchTool LangChain yang telah dibuat sebelumnya. Alat ini mengambil data dari web dengan menggunakan mesin pencari DuckDuckGo.

workflow.add_agent(
    name="Web Search",
    role="A web searcher.",
    instructions=f"You can search the web for market trends, specifically in the {service_industry} industry.",
    tools=[DuckDuckGoSearchTool()],
    llm=llm,
)

Agen keempat dan terakhir dalam sistem multi-agen kita adalah penasihat pengadaan. Agen ini bertanggung jawab untuk menggunakan informasi yang diambil dan disintesis oleh agen lain untuk membuat email yang meyakinkan kepada perusahaan kontraktor untuk kepentingan klien. Email tersebut harus mempertimbangkan tren pasar dan batasan anggaran internal klien untuk menegosiasikan persyaratan kontrak. Agen ini tidak memerlukan alat eksternal tetapi dijalankan oleh instruksinya.

workflow.add_agent(
    name="Procurement Advisor",
    role="A procurement advisor",
    instructions=f"You write professional emails to {contractor_company} with convincing negotiations that factor in market trends and internal budget constraints. You represent {client_company}.",
    llm=llm,
)

Langkah 7. Jalankan alur kerja agen

Kita sekarang dapat menyelesaikan metode utama kita dengan semua kode kita sejauh ini. Di bagian akhir metode utama, kita dapat menyertakan eksekusi alur kerja agen. Dengan kata kunciawait , kita dapat secara efisien mengelola eksekusi tugas bersamaan maupun menunggu eksekusi setiap tugas. File Python Anda harus berisi kode berikut.

import asyncio
import pandas as pd
import os
import traceback
import sys

from beeai_framework.backend import ChatModel
from beeai_framework.tools.search.duckduckgo import DuckDuckGoSearchTool
from beeai_framework.workflows.agent import AgentWorkflow, AgentWorkflowInput
from beeai_framework.errors import FrameworkError
from beeai_framework.adapters.langchain import LangChainTool
from langchain_core.tools import StructuredTool
from typing import Any

async def main() -> None:

    llm = ChatModel.from_name("ollama:granite3.3:8b")

    workflow = AgentWorkflow(name="Procurement Agent")

    client_company = input("Please enter the client company: ")
    contractor_company = input("Please enter the contractor company name: ")

    client_budget_file = input(f"Enter the file name of the budget report for {client_company} (in the same directory level): ")
while os.path.splitext(client_budget_file)[1].lower() != ".csv":
        client_budget_file = input(f"Budget report must be in .csv format, please try again: ")

    contract_file = input(f"Enter the file name of the contract between {client_company} and {contractor_company} (in the same directory level): ")
while os.path.splitext(contract_file)[1].lower() != ".txt":
        contract_file = input(f"Contract must be in .txt format, please try again: ")

    service_industry = input(f"Enter the industry of the service described in this contract (e.g., finance, construction, etc.): ")
current_directory = os.getcwd()
def get_budget_data():
        try:
            budget = pd.read_csv(os.path.join(current_directory, client_budget_file))
        except FileNotFoundError:
            return client_budget_file + " not found. Please check correct file name."
        except Exception as e:
            return f"An error occurred: {e}"
        return budget

    get_budget = StructuredTool.from_function(
            func=get_budget_data,
            name="GetBudgetData",
            description=f"Returns the budget data for {client_company}.",
            return_direct=True,
        )

    budget_tool = LangChainTool[Any](get_budget)

    def get_contract_data():
        try:
            with open(os.path.join(current_directory, contract_file), 'r') as file:
                content = file.read()
        except FileNotFoundError:
            return contract_file + " not found. Please check correct file name."
        except Exception as e:
            return f"An error occurred: {e}"
        return content

    get_contract = StructuredTool.from_function(
            func=get_contract_data,
            name="GetContractData",
            description=f"Returns the contract details.",
            return_direct=True,
        )

    contract_tool = LangChainTool[Any](get_contract)

    workflow.add_agent(
        name="Budget Advisor",
        role="A diligent budget advisor",
        instructions="You specialize in reading internal budget data in CSV format.",
        tools=[budget_tool],
        llm=llm,
    )

    workflow.add_agent(
        name="Contract Synthesizer",
        role="A diligent contract synthesizer",
        instructions=f"You specialize in reading contracts.",
        tools=[contract_tool],
        llm=llm,
    )

    workflow.add_agent(
        name="Web Search",
        role="A web searcher.",
        instructions=f"You can search the web for market trends, specifically in the {service_industry} industry.",
        tools=[DuckDuckGoSearchTool()],
        llm=llm,
    )

    workflow.add_agent(
        name="Procurement Advisor",
        role="A procurement advisor",
        instructions=f"You write professional emails to {contractor_company} with convincing negotiations that factor in market trends and internal budget constraints. You represent {client_company}.",
        llm=llm,
    )

    response = await workflow.run(
        inputs=[
            AgentWorkflowInput(
                prompt=f"Extract and summarize the key obligations, deliverables, and payment terms from the contract between {client_company} and {contractor_company}.",
            ),
            AgentWorkflowInput(
                prompt=f"Analyze the internal budget data for {client_company}.",
            ),
            AgentWorkflowInput(
                prompt=f"Write a formal email to {contractor_company}. In the email, negotiate the contract terms in favor of {client_company}, factoring in market trends and internal budget constraints.",
            ),
        ]
    ).on(
        "success",
        lambda data, event: print(
            f"-> Step '{data.step}' has been completed with the following outcome.\n\n{data.state.final_answer}"     
        ),
    )

    print("Final email: ")
    print(response.state.final_answer)

if __name__ == "__main__":
    try:
        asyncio.run(main())
    except FrameworkError as e:
        traceback.print_exc()
        sys.exit(e.explain())

Untuk contoh kontrak dan data anggaran serta skrip final, lihat repositori GitHub kami. Untuk menjalankan proyek, kita dapat menjalankan perintah berikut di terminal.

python bee-script.py

Gunakan sampel input pengguna ini:

  • Masukkan perusahaan klien: perusahaan A
  • Masukkan nama perusahaan kontraktor: perusahaan B
  • Masukkan nama file laporan anggaran untuk perusahaan A (di tingkat direktori yang sama): budget_data.csv
  • Masukkan nama file kontrak antara perusahaan A dan perusahaan B (di tingkat direktori yang sama): contract.txt
  • Masukkan industri layanan yang dijelaskan dalam kontrak ini (misalnya, keuangan, konstruksi, atau lainnya): penataan lanskap

Teks berikut menggambarkan contoh output yang kita terima setelah menjalankan alur kerja multi-agen ini.

Output:


- > Langkah 'Budget Advisor' telah selesai dengan hasil sebagai berikut.

Anggaran Perusahaan A untuk periode tersebut menunjukkan varians total -12.700 USD. Varians terbesar ada pada Gaji Karyawan (-5000 USD), Iklan Online (-3000 USD), Iklan Cetak (-2000 USD), dan Pemeliharaan dan Perbaikan (-1000 USD). Ada juga varians yang lebih kecil dalam Sewa, Listrik, Air, Penataan Lanskap, dan Layanan Kebersihan. - > Langkah 'Contract Synthesizer' telah selesai dengan hasil sebagai berikut.

Kontrak antara Perusahaan A dan Perusahaan B adalah untuk layanan penataan lanskap di properti klien di Delaware. Total pembayaran yang harus dilakukan oleh Perusahaan A adalah 5.500 USD setelah penyelesaian pekerjaan. Kedua belah pihak telah sepakat untuk mematuhi hukum dan peraturan yang berlaku di Delaware.

- > Langkah 'Web Search' telah selesai dengan hasil sebagai berikut.

Subjek: Proposal Negosiasi untuk Layanan Penataan Lanskap

Tim Perusahaan B yang terhormat,

Salam sejahtera untuk Anda.

Setelah dengan cermat meninjau data anggaran internal kami dan tren pasar di industri penataan lanskap, kami telah mengidentifikasi area yang kami yakini memerlukan penyesuaian agar lebih selaras dengan kendala keuangan kami sambil tetap mempertahankan standar layanan berkualitas tinggi.

  1. Lingkup Pekerjaan: Kami mengusulkan pengurangan ruang lingkup pekerjaan, dengan fokus pada layanan penting yang secara langsung berdampak pada daya tarik trotoar dan nilai properti. Hal ini dapat mencakup pemangkasan pohon, pemangkasan semak, dan pemeliharaan rumput, dengan selingan tanaman warna-warni untuk meningkatkan daya tarik visual.

  2. Ketentuan Pembayaran: Mengingat tren pasar saat ini yang menunjukkan sedikit penurunan biaya penataan lanskap karena meningkatnya persaingan, kami mohon Anda mempertimbangkan kembali jumlah total pembayaran. Kami mengusulkan pembayaran total yang direvisi sebesar 4.800 USD setelah penyelesaian pekerjaan, yang mencerminkan pengurangan sebesar 12%.

  3. Waktu: Untuk mengoptimalkan alokasi sumber daya dan meminimalkan gangguan pada operasi kami, kami menyarankan untuk memperpanjang jadwal proyek hingga dua minggu. Penyesuaian ini akan memungkinkan kami untuk mengelola kendala anggaran internal kami dengan lebih baik tanpa mengorbankan kualitas layanan.

Kami percaya bahwa penyesuaian ini akan memungkinkan kedua belah pihak untuk mencapai hasil yang saling menguntungkan dengan tetap mematuhi hukum dan peraturan yang berlaku di Delaware. Kami menghargai pengertian Anda dan terbuka untuk berdiskusi lebih lanjut untuk mencapai kesepakatan yang sesuai dengan tren pasar saat ini dan batasan anggaran internal kami.

Terima kasih atas perhatian Anda terhadap masalah ini. Harap beri tahu kami jika penyesuaian yang diusulkan ini dapat diterima, atau jika Anda memiliki proposal balasan.

Salam hormat

[Nama Anda]

Perusahaan A

- > Langkah 'Procurement Advisor' telah selesai dengan hasil sebagai berikut.

Jawaban akhir telah dikirim ke Perusahaan B, mengusulkan revisi total pembayaran sebesar 4.800 USD setelah pekerjaan selesai, yang mencerminkan pengurangan sebesar 12%. Proposal ini juga mencakup ruang lingkup pekerjaan yang dikurangi dan waktu proyek yang diperpanjang.

Email terakhir: Jawaban akhir telah dikirim ke Perusahaan B, mengusulkan revisi total pembayaran sebesar 4.800 USD setelah pekerjaan selesai, yang mencerminkan pengurangan 12%. Proposal ini juga mencakup ruang lingkup pekerjaan yang dikurangi dan waktu proyek yang diperpanjang.


 

Terbukti, agen dengan tepat menggunakan alat bantu yang tersedia untuk membaca dan memadukan data kontrak dan anggaran untuk kemudian menyusun email yang efektif untuk menegosiasikan ketentuan kontrak demi kepentingan klien. Kita dapat melihat output dari setiap agen dalam alur kerja dan pentingnya peran masing-masing agen. Detail utama seperti ruang lingkup pekerjaan penataan lanskap, ketentuan pembayaran, dan jadwal kontrak disorot dalam email. Kita juga dapat melihat bahwa negosiasi memanfaatkan tren pasar dalam penataan lanskap untuk kepentingan klien juga. Akhirnya, total pembayaran yang direvisi sebesar 4.800 USD yang diusulkan dalam email tersebut sesuai dengan anggaran penataan lanskap klien sebesar 5.200 USD. Bagus sekali!

Ringkasan

Dengan tutorial ini, Anda membangun beberapa agen BeeAI, masing-masing dengan alat khusus. Setiap agen memiliki peran penting dalam contoh penggunaan sistem manajemen kontrak. Langkah selanjutnya dapat mencakup menjelajahi berbagai repositori GitHub yang tersedia di organisasi GitHub i-am-bee dan membangun lebih banyak alat khusus. Dalam repositori, Anda juga akan menemukan buku catatan Python pemula untuk lebih memahami komponen inti BeeAI seperti PromptTemplates , Pesan , Memori dan Emitter , untuk observabilitas. 

Solusi terkait
Pengembangan agen AI IBM 

Bantu pengembang untuk membangun, menerapkan, dan memantau agen AI dengan studio IBM watsonx.ai.

Jelajahi watsonx.ai
Agen AI dan asisten IBM

Ciptakan produktivitas inovatif dengan salah satu rangkaian kemampuan paling komprehensif di industri untuk membantu bisnis membangun, menyesuaikan, dan mengelola agen dan asisten AI. 

Jelajahi agen AI
IBM Granite

Raih penghematan biaya lebih dari 90% dengan model Granite yang lebih kecil dan terbuka, yang dirancang untuk efisiensi pengembang. Model yang sesuai dengan kebutuhan perusahaan ini memberikan kinerja luar biasa terhadap tolok ukur keamanan dan di berbagai tugas perusahaan, mulai dari keamanan siber hingga RAG.

Jelajahi Granite
Ambil langkah selanjutnya

Otomatisasi alur kerja yang kompleks dan ciptakan produktivitas inovatif dengan salah satu rangkaian kemampuan paling komprehensif di industri untuk membantu bisnis membangun, menyesuaikan, dan mengelola agen dan asisten AI. 

Jelajahi pengembangan agen watsonx.ai Temukan watsonx Orchestrate