BeeAI 및 Granite로 다중 에이전트 계약 관리 시스템 구축

작성자

Anna Gutowska

AI Engineer, Developer Advocate

IBM

이 튜토리얼에서는 Python에서 BeeAI를 사용하여 IBM® Granite가 포함된 완전한 로컬 다중 에이전트 시스템을 구축합니다. 이들 에이전트는 시장 동향과 내부 예산 제약을 고려하여 두 회사 간의 조경 서비스에 대한 계약 합의를 협상하기 위해 협력합니다. 워크플로는 예산 자문 에이전트, 계약 합성 에이전트, 웹 검색 에이전트, 구매/조달 자문 에이전트로 구성됩니다. 사용자가 제공한 계약, 예산 데이터, 서비스 산업 및 회사 이름이 주어지면 에이전트는 협력하여 고객에게 유리한 계약 조건을 협상하기 위한 이메일을 생성합니다.

BeeAI란 무엇인가요?

IBM® Research에서 출시하고 현재 Linux Foundation에 기부된 BeeAI는 개발자에게 모든 프레임워크에서 AI 에이전트를 구축할 수 있는 기능을 제공하는 오픈 소스 에이전틱 AI 플랫폼입니다.1

인공 지능(AI) 에이전트는 대규모 언어 모델(LLM)을 사용하여 구축된 시스템 또는 프로그램으로, 사용자 또는 다른 시스템을 대신하여 워크플로를 설계하고 사용 가능한 도구를 활용하여 작업을 자율적으로 수행하도록 구축됩니다. AI 에이전트는 사전 정의된 도구에 액세스하고 향후 작업을 계획할 수 있으며 복잡한 문제를 해결하고 자동화하는 데 거의 또는 전혀 사람의 개입이 필요하지 않기 때문에 전통적인 LLM 챗봇보다 더 발전한 기술입니다.

BeeAI의 전신은 단일 LLM 에이전트 구축에 특화된 오픈 소스 프레임워크인 Bee Agent Framework입니다. 반대로, BeeAI는 다중 에이전트 워크플로를 구축하고 조정할 수 있는 고급 에코시스템을 제공합니다.

BeeAI의 특징:

  • 프레임워크에 독립적입니다.
  • TypeScript와 Python 모두에서 사용할 수 있습니다.
  • IBM 연구소에서 설계한 에이전트 통신 프로토콜(ACP) 을 기반으로 구축되었으며, 이는에이전트 간 통신 방식을 표준화하여 모델 컨텍스트 프로토콜(MCP)을 한 단계 발전시켰습니다. ACP는 LangGraphcrewAI 및 BeeAI와 같은 다양한 프레임워크의 에이전트를 일관된 단일 런타임으로 가져옵니다.2
  • 에이전트 행동을 추적하기 위한 오픈 소스 도구인 Arize Phoenix와 통합되어 관측 가능성을 제공합니다. 사용 가능한 로깅 및 원격 측정을 통해 에이전트를 디버깅하는 방법에 대한 자세한 내용은 공식 문서에서 확인할 수 있습니다.
  • 사용자 머신에서 완전히 로컬로 실행할 수 있습니다. 에이전트를 공유 환경에 배포할 수도 있습니다.
  • 채팅, 임베딩, JSON과 같은 구조화된 아웃풋 등 다양한 기능을 위한 통합 인터페이스를 제공하므로 기존 코드를 변경할 필요 없이 모델을 원활하게 교체할 수 있습니다.

단계

이 단계별 가이드는 GitHub 저장소에서 Jupyter Notebook 형식으로 찾을 수 있습니다.

1단계. 환경 설정

먼저 몇 가지 전제 조건을 충족시켜 환경을 설정해야 합니다.
1. 이 튜토리얼에서는 IBM watsonx.ai 및 OpenAI를 통해 제공되는 것과 같은 애플리케이션 프로그래밍 인터페이스(API)를 사용하지 않습니다. 대신 최신 버전의 Ollama를 설치하여 모델을 로컬에서 실행할 수 있습니다.
macOS, Linux, Windows용 Ollama를 설치하는 가장 간단한 방법은 웹페이지인 https://ollama.com/download 를 이용하는 것입니다. 이 단계에서는 메뉴 표시줄 앱을 설치하여 백그라운드에서 Ollama 서버를 실행하고 최신 릴리스를 최신 상태로 유지합니다.
또는 터미널에 Homebrew를 사용하여 Ollama를 설치할 수 있습니다.

brew install ollama

brew에서 설치하거나 소스에서 빌드하는 경우 중앙 서버를 부팅해야 합니다.

ollama serve

2. Meta의 최신 Llama 모델, Mistral AI의 Mistral 모델 등 도구 호출을 지원하는 여러 LLM이 있습니다. 이 튜토리얼에서는 IBM의 오픈 소스 Granite 3.3 모델을 사용합니다. 이 모델은 향상된 추론 및 지시 따르기 능력을 제공합니다.3 터미널에서 다음 명령을 실행하여 최신 Granite 3.3 모델을 가져옵니다.

ollama pull granite3.3:8b

3. 패키지 종속성 충돌을 방지하기 위해 가상 환경을 설정해 보겠습니다. Python 버전 3.11.9로 가상 환경을 만들려면 터미널에서 다음 명령을 실행합니다.

python3.12 -m venv .venv

그런 다음 환경을 활성화하려면 다음을 실행합니다.

source .venv/bin/activate

4. 파일 requirements.txt 에는 다음 패키지가 포함되어야 합니다. 이러한 패키지는 BeeAI 프레임워크를 사용하여 에이전트를 구축하고 도구 초기화에 필요한 LangChain 클래스를 통합하는 데 필요합니다.

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

이러한 패키지를 설치하려면 터미널에서 다음 명령을 실행하세요.

pip install -r requirements.txt

5. 터미널에 다음 명령을 실행하여 bee-script.py 라는 이름의 새 Python 파일을 만듭니다.

touch bee-script.py

새 Python 파일의 맨 위에 필요한 라이브러리 및 모듈에 대한 import 문을 포함시키세요.

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

2단계. 에이전트 및 워크플로 인스턴스화

이제 asyncio 를 사용하는 비동기식 기본 메서드에서 ChatModel 및 AgentWorkflow 클래스를 통합하여 Granite LLM 및 워크플로를 인스턴스화해 보겠습니다. Ollama 모델 ID와 워크플로 이름만 제공하면 됩니다. 이 워크플로를 인스턴스화하면 에이전트를 추가하고 다중 에이전트 시스템을 만들 수 있습니다. 이 기본 메서드를 Python 파일에 추가합니다.

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

에이전트 워크플로를 시각적으로 보려면 다음 다이어그램을 참조하세요.

계약 관리를 위한 에이전틱 워크플로 계약 관리를 위한 에이전틱 워크플로

이 워크플로의 각 구성 요소를 다음 단계에 따라 조립합니다.

3단계. 사용자에게 입력 요청

워크플로는 사용자 입력에 의존합니다. 필요한 초기 입력은 고객과 계약자 회사의 이름입니다. 이후 단계에서 워크플로를 실행하면 사용자에게 다음 텍스트를 묻는 메시지가 표시됩니다. 기본 메서드에 다음 코드를 추가합니다.

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

우리에게는 고객 회사의 예산 보고서가 포함된 파일,budget-data.csv 와 두 회사 간의 계약이 포함된 파일, contract.txt 의 이름도 필요합니다. 이 예시에서 계약은 계약자 회사가 고객 회사에 제공하는 조경 서비스와 관련이 있습니다. GitHub 리포지토리에서 샘플 파일을 찾을 수 있습니다. 프로젝트 구조는 다음과 유사해야 합니다.

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

다음 코드에서는 파일 확장자가 예상 형식과 일치하는지 확인합니다. 파일 형식이 잘못된 경우 다시 시도하라는 메시지가 표시됩니다.

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

필요한 마지막 사용자 입력은 계약에 설명된 서비스의 산업입니다. 이 입력은 재무, 건설 등이 될 수 있습니다.

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

4단계. 예산 도구 설정

다중 에이전트 시스템에서 구축할 수 있는 첫 번째 도구는 예산 자문 에이전트를 위한 것입니다. 이 에이전트는 고객의 예산 데이터를 읽는 일을 담당합니다. 에이전트에 제공되는 함수는get_budget_data 이며, 이를 통해 예산 데이터가 포함된 CSV 파일을 읽고 파일이 존재하지 않거나 예기치 않은 오류가 발생하는 경우 오류 메시지가 반환됩니다. 사용자가 제공한 파일 이름을 사용하여 파일에 액세스하려면 먼저 현재 디렉터리를 검색해야 합니다. 다음os 메서드를 사용하여 이를 수행할 수 있습니다.

current_directory = os.getcwd()

이제 에이전트의 원동력인 get_budget_data 함수를 설정하겠습니다. 이 함수는 현재 디렉터리와 사용자 입력을 사용하여 파일에 액세스하고 읽는 함수입니다.

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

이 도구를 적절하게 사용할 수 있도록 LangChain의 StructuredTool 클래스를 사용해보겠습니다. 여기에서는 기능, 도구 이름, 도구 설명을 제공하고 return_direct 매개변수를 true 또는 false로 설정합니다. 이 마지막 매개변수는 단순히 아웃풋을 직접 반환할지 아니면 합성할지 에이전트에게 알려줍니다.

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

BeeAI의 LangChain 어댑터인 LangChainTool을 사용하여 첫 번째 도구의 초기화를 완료할 수 있습니다.

budget_tool = LangChainTool[Any](get_budget)

5단계. 계약 도구 설정

다음으로 구축할 수 있는 도구는 계약 합성 에이전트입니다. 이 에이전트는 고객과 계약자 간의 계약서를 읽을 책임이 있습니다. 에이전트에 제공되는 함수는 get_contract_data 로, 이 함수를 통해 계약서가 포함된 텍스트 파일을 읽고 파일이 없거나 예기치 않은 오류가 발생하는 경우 오류 메시지가 반환됩니다. 이 단계에 필요한 코드는 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)

6단계. 에이전트 워크플로 설정

이 단계에서 워크플로에 다양한 에이전트를 추가할 수 있습니다. 예산 자문 및 계약 합성 에이전트에게 해당 맞춤형 도구를 제공해 보겠습니다. 또한 에이전트 이름, 역할, 지침, 도구 목록, 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,
)

관련 업계의 시장 동향을 웹에서 검색하기 위해 사전 구축된 LangChain DuckDuckGoSearchTool 에 액세스할 수 있는 에이전트를 만들 수 있습니다. 이 도구는 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,
)

다중 에이전트 시스템의 네 번째이자 마지막 에이전트는 구매/조달 자문입니다. 이 에이전트는 다른 에이전트가 검색하고 합성한 정보를 사용하여 계약자 회사로 전송할, 설득력 있고 고객에게 유리한 이메일을 작성할 책임이 있습니다. 이메일은 계약 조건을 협상하기 위해 시장 동향과 고객의 내부 예산 제약을 고려해야 합니다. 이 에이전트는 외부 도구가 필요하지 않고 오히려 명령에 따라 구동됩니다.

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

7단계. 에이전트 워크플로 실행

이제 지금까지의 모든 코드로 메인 메서드를 마무리할 수 있습니다. 기본 방법의 마지막에는 에이전트형 워크플로 실행을 포함할 수 있습니다. 키워드await 를 사용하면 작업의 동시 실행을 효율적으로 관리할 수 있을 뿐만 아니라 각 작업의 실행을 기다릴 수 있습니다. Python 파일에는 다음 코드가 포함되어야 합니다.

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

샘플 계약 및 예산 데이터와 최종 스크립트는 GitHub 리포지토리를 확인하세요. 프로젝트를 실행하기 위해 터미널에서 다음 명령을 실행할 수 있습니다.

python bee-script.py

샘플 사용자 입력을 사용하세요.

  • 고객 회사 입력: A사
  • 계약자 회사 이름 입력: B사
  • 회사 A에 대한 예산 보고서의 파일 이름(동일한 디렉터리 수준) 입력: budget_data.csv
  • 회사 A와 회사 B 간의 계약 파일 이름(동일한 디렉토리 수준) 입력: contract.txt
  • 이 계약에 설명된 서비스 산업(예: 금융, 건설 또는 기타) 입력: 조경

다음 텍스트는 이 워크플로를 실행하여 얻은 아웃풋을 보여줍니다.

아웃풋:


-> '예산 자문' 단계가 다음과 같은 결과로 완료되었습니다.

해당 기간에 A사의 예산은 총 편차가 미화 -12,700달러인 것으로 나타났습니다. 가장 큰 편차는 직원 급여(미화 -5000달러), 온라인 광고(미화 -3000달러), 인쇄 광고(미화 -2000달러), 유지 보수 및 수리(미화 -1000달러)입니다. 임대료, 전기, 수도, 조경 및 청소 서비스에도 작은 편차가 있습니다. -> '계약 합성' 단계는 다음과 같은 결과로 완료되었습니다.

A사와 B사 간의 계약은 델라웨어에 있는 고객의 소유지의 조경 서비스에 대한 계약입니다. A사가 작업 완료 시 지불해야 하는 총 대금은 미화 5,500달러입니다. 양 당사자는 델라웨어의 관련 법규를 준수하기로 합의했습니다.

-> '웹 검색' 단계가 다음과 같은 결과로 완료되었습니다.

제목: 조경 서비스 협상 제안서

친애하는 B사 팀 여러분,

귀사의 무궁한 발전을 기원합니다.

내부 예산 데이터와 조경 산업의 시장 동향을 주의 깊게 검토한 결과, 고품질 서비스 표준을 유지하면서 재정적 제약에 더 잘 맞출 수 있도록 조정할 수 있는 부분을 파악했습니다.

  1. 업무 범위: 업무 범위를 축소하여 자산의 매력도와 부동산 가치에 직접적인 영향을 미치는 필수 서비스에 집중할 것을 제안합니다. 여기에는 나무 다듬기, 관목 가지치기, 잔디 유지 관리가 포함될 수 있으며, 때때로 시각적 흥미를 높이기 위해 다채로운 식물을 심는 것도 포함될 수 있습니다.

  2. 지급 조건: 경쟁 심화로 인해 조경 비용이 소폭 감소하는 현재 시장 동향에 비추어 볼 때, 총 지불 금액에 대한 재검토를 요청합니다. 작업 완료 시 12% 감소를 반영하여 미화 4,800달러의 수정된 총 지급금을 제안드립니다.

  3. 타임라인: 리소스 할당을 최적화하고 운영 중단을 최소화하려면 프로젝트 일정을 2주 연장할 것을 제안합니다. 이러한 조정을 통해 서비스 품질 저하 없이 내부 예산 제약을 더 잘 관리할 수 있게 되었습니다.

저희는 이러한 조정을 통해 양 당사자가 델라웨어의 관련 법규를 준수하면서 상호 이익이 되는 결과를 달성할 수 있을 것이라고 생각합니다. 귀사의 이해에 감사드리며, 현재 시장 동향과 내부 예산 제약에 부합하는 합의에 도달하기 위한 추가 논의가 가능함을 알려드립니다.

이 문제에 관심을 가져 주셔서 감사합니다. 이렇게 제안된 조정이 수용 가능한지, 반대 의견이 있으신지 알려주십시오.

감사합니다.

[사용자 이름]

A사

-> '구매/조달 자문' 단계가 다음과 같은 결과로 완료되었습니다.

최종 답변은 B사에 전송되었으며, 작업 완료 시 12% 감소를 반영하여 총 미화 4,800달러의 수정된 지급을 제안했습니다. 이 제안에는 업무 범위 축소와 프로젝트 일정 연장도 포함되어 있습니다.

최종 이메일: 최종 답변은 B사에 전송되었으며, 작업 완료 시 12% 감소를 반영하여 총 미화 4,800달러의 수정된 지급을 제안했습니다. 이 제안에는 업무 범위 축소와 프로젝트 일정 연장도 포함되어 있습니다.


 

분명히 에이전트는 사용 가능한 도구를 올바르게 호출하여 계약 및 예산 데이터를 읽고 종합한 다음 계약 조건이 고객에게 유리하게 협상하는 데 효과적인 이메일을 작성했습니다. 워크플로 내에서 각 에이전트의 아웃풋과 각 에이전트 역할의 중요성을 확인할 수 있습니다. 조경 작업 범위, 지급 조건, 계약 일정과 같은 주요 세부 정보가 이메일에 강조 표시되어 있습니다. 또한 협상에서 고객의 이익을 위해 조경 시장 동향을 활용한다는 것을 알 수 있습니다. 마지막으로, 이메일에 제안된 수정된 총 지급금 미화 4,800달러는 고객의 조경 예산인 미화 5,200달러에 속합니다. 뛰어난 결과입니다.

요약

이 튜토리얼에서 사용자 지정 도구가 있는 여러 BeeAI 에이전트를 구축했습니다. 각 에이전트는 계약 관리 시스템 사용 사례에서 중요한 역할을 했습니다. 일부 다음 단계에는 i-am-bee GitHub 조직에서 사용할 수 있는 다양한 GitHub 리포지토리를 살펴보고 더 많은 사용자 지정 도구를 구축하는 것이 포함됩니다. 리포지토리에는 관측 가능성을 위한 PromptTemplates , 메시지 , 메모리Emitter 등의 BeeAI의 핵심 구성 요소를 더 잘 이해할 수 있는 스타터 Python 노트북도 찾을 수 있습니다. 

관련 솔루션
IBM AI 에이전트 개발 

IBM watsonx.ai 스튜디오를 사용하여 개발자가 AI 에이전트를 구축, 배포 및 모니터링할 수 있도록 지원합니다.

watsonx.ai 살펴보기
IBM AI 에이전트 및 어시스턴트

기업이 AI 에이전트 및 어시스턴트를 구축, 사용자 지정, 관리할 수 있도록 지원하며, 업계에서 가장 포괄적인 기능 세트 중 하나를 사용하여 획기적인 생산성을 창출하세요. 

AI 에이전트 살펴보기
IBM Granite

개발자 효율성을 높이는 Granite의 소형 개방형 모델을 사용하여 90% 이상의 비용 절감을 달성하세요. 이러한 엔터프라이즈급 모델은 사이버 보안부터 RAG까지 광범위한 엔터프라이즈 작업과 안전 벤치마크에 대해 탁월한 성능을 제공합니다.

Granite 살펴보기
다음 단계 안내

기업이 AI 에이전트 및 어시스턴트를 구축, 사용자 지정 및 관리할 수 있도록 지원하는 업계에서 가장 포괄적인 기능을 통해 복잡한 워크플로를 자동화하고 획기적인 생산성을 창출하세요. 

watsonx.ai 에이전트 개발 살펴보기 watsonx Orchestrate 알아보기