Cross-Framework LLM Tool for CaptainAgent#
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:
Note: If you have been using
autogenorag2, all you need to do is upgrade it using:or
as
autogen, andag2are 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")