Skip to content

Cross-Framework LLM Tool for CaptainAgent#

Open In Colab Open on GitHub

In this tutorial, we demonstrate how to integrate LLM tools from LangChain Tools into CaptainAgent. The developers just need to use one line of code to convert them into AG2 tools, and then pass it to CaptainAgent while instantiation, simple as that.

Langchain Tool Integration#

Langchain readily provides a number of tools at hand. These tools can be integrated into AG2 framework through interoperability.

Installation#

To integrate LangChain tools into the AG2 framework, install the required dependencies:

pip install -U ag2[openai,interop-langchain,duckduckgo]

Note: If you have been using autogen or ag2, all you need to do is upgrade it using:

pip install -U autogen[openai,interop-langchain,duckduckgo]

or

pip install -U ag2[openai,interop-langchain,duckduckgo]

as autogen, and ag2 are aliases for the same PyPI package.

Preparation#

Import necessary modules and tools. - DuckDuckGoSearchRun and DuckDuckGoSearchAPIWrapper: Tools for querying DuckDuckGo. - Interoperability: This module acts as a bridge, making it easier to integrate LangChain tools with AG2’s architecture.

from langchain_community.tools import DuckDuckGoSearchRun
from langchain_community.utilities import DuckDuckGoSearchAPIWrapper

from autogen.interop import Interoperability

Configure the agents#

Load the config for LLM, which include API key and model.

import os

from dotenv import load_dotenv

import autogen

load_dotenv()

llm_config = autogen.LLMConfig(
    config_list=[
        {
            "model": "gpt-5-mini",
            "api_key": os.getenv("OPENAI_API_KEY"),
            "api_type": "openai",
        }
    ]
)

Tool Integration#

We use Interoperability to convert the LangChain tool into a format compatible with the AG2 framework.

interop = Interoperability()

api_wrapper = DuckDuckGoSearchAPIWrapper()
langchain_tool = DuckDuckGoSearchRun(api_wrapper=api_wrapper)
ag2_tool = interop.convert_tool(tool=langchain_tool, type="langchain")

Then add the tools to CaptainAgent, the main difference from original CaptainAgent initialization is to pass the tool as a list into the tool_lib argument. This will let the agents within the nested chat created by CaptainAgent all equipped with the tools. THey can write python code to call the tools and observe the results.

from autogen import UserProxyAgent
from autogen.agentchat.contrib.captainagent import CaptainAgent

# build agents
captain_agent = CaptainAgent(
    name="captain_agent",
    code_execution_config={"use_docker": False, "work_dir": "groupchat"},
    agent_lib="captainagent_expert_library.json",
    tool_lib=[ag2_tool],  # The main difference lies here: we pass the converted tool to the agent
    agent_config_save_path=None,
    llm_config=llm_config,
)

captain_user_proxy = UserProxyAgent(name="captain_user_proxy", human_input_mode="NEVER")
res = captain_user_proxy.initiate_chat(
    captain_agent,
    message="Call a group of experts and search for the word of the day Merriham Webster December 26, 2024",
)