This is an autogen>=0.4 extension for watsonx client integration.
- This is a community extension for the Autogen project, specifically for the new Autogen architecture. The goal is to support IBM Watsonx.ai hosted LLMs in the Autogen framework.
- This project is still in a very early stage under development, please create issues in this github repo for bug reports.
- This project is a personal endeavor and is not affiliated with, endorsed by, or connected to any organization/employer in any way. The views, ideas, and opinions expressed in this project are solely my own and do not reflect those of others.
- create a python environment with version
3.10
or above pip install --upgrade autogen-watsonx-client
pip install --upgrade autogen-agentchat>=0.4 --pre
- access to a watsonx.ai instance, setting up environment variables
WATSONX_API_KEY
, one ofWATSONX_SPACE_ID
orWATSONX_PROJECT_ID
, optionallyWATSONX_URL
Importing dependencies:
import os
from autogen_agentchat.agents import AssistantAgent
from autogen_agentchat.task import Console, TextMentionTermination
from autogen_agentchat.teams import RoundRobinGroupChat
from autogen_watsonx_client.client import WatsonXChatCompletionClient
from autogen_watsonx_client.config import WatsonxClientConfiguration
Create a watsonx client
wx_config = WatsonxClientConfiguration(
model_id="meta-llama/llama-3-2-90b-vision-instruct", # pick a model you have access to on wx.ai here
api_key=os.environ.get("WATSONX_API_KEY"),
url=os.environ.get("WATSONX_URL"),
space_id=os.environ.get("WATSONX_SPACE_ID"),
project_id=os.environ.get("WATSONX_PROJECT_ID"),
)
wx_client = WatsonXChatCompletionClient(**wx_config)
Define an agent using the watsonx client and register a dummy tool for querying weather
# Define a tool
async def get_weather(city: str) -> str:
return f"The weather in {city} is 73 degrees and Sunny."
async def main() -> None:
# Define an agent
weather_agent = AssistantAgent(
name="weather_agent",
model_client=wx_client,
tools=[get_weather],
)
# Define termination condition
termination = TextMentionTermination("TERMINATE")
# Define a team
agent_team = RoundRobinGroupChat([weather_agent], termination_condition=termination)
# Run the team and stream messages to the console
stream = agent_team.run_stream(task="What is the weather in New York?")
await Console(stream)
# NOTE: if running this inside a Python script you'll need to use asyncio.run(main()).
await main()
Refer to here for more detailed examples.