Langchain智能体工具集成:实战精选指南
掌握智能体开发的核心技术,深入理解 Langchain 框架下的工具集成与实战应用。
本文重点:
- 工具调用在智能体开发中的核心地位与设计理念
- Langchain 框架下工具集成与函数调用的实现路径
- 实战案例:基于 pandas 构建智能数据分析工具的全流程
“ 工具调用是驱动大模型智能体的底层逻辑,没有工具链的支撑,智能体就失去了执行能力。”
智能体开发已成为大模型落地场景中最具潜力的方向之一。市场上关于智能体的定义繁杂,但本质离不开两大要素:函数调用能力,以及工具的具体落地形态。
当前函数调用主要分为两条路线:早期提出的 function call 范式,和近期备受关注的 MCP 协议。两者殊途同归,目标都是让大模型能调用外部工具完成实际任务。本文聚焦于 Langchain 框架,详细拆解如何在该生态中实现各类工具。
Langchain 工具开发实操
智能体开发中,一切外部交互都封装为工具。操作数据库需要数据库工具,访问搜索引擎需要搜索工具——智能体任何对外部系统的调用,最终都抽象为工具接口。
实际编码时,工具通常表现为函数或微服务。例如构建一个搜索引擎工具,只需封装一个函数,让大模型自行生成所需参数,交由 Python 引擎执行并返回结果即可。
Langchain 内置了大量开箱即用的工具,覆盖搜索、代码解释器、数据库操作等场景。具体支持列表可参考下方截图。
下面以基于 pandas 的智能数据分析为例,演示如何快速实现一个 Excel 数据分析工具。
先安装 Langchain 相关依赖包:
# 安装包
pip install --upgrade langchain_openai
pip install --upgrade langchain
Langchain 官方提供了针对 pandas 的封装函数——create_pandas_dataframe_agent,直接实例化一个 pandas Agent 即可:
agent = create_pandas_dataframe_agent(self.llm, df_list, allow_dangerous_code=True, verbose=True)
完整代码如下(也可参照官方文档手动实现):
import os
import logging
import pandas as pd
from langchain_experimental.agents.agent_toolkits import create_pandas_dataframe_agent
from langchain_openai import ChatOpenAI, OpenAI
# 需要换成你自己的参数
openai_api_key = "api_key"
openai_api_base = "openai_url"
model = "model"
# Adjust logging levels for specific libraries to reduce noise
logging.getLogger("openai").setLevel(logging.DEBUG)
logging.getLogger("langchain").setLevel(logging.DEBUG)
logging.getLogger("httpx").setLevel(logging.DEBUG)
logging.getLogger("httpcore").setLevel(logging.DEBUG)
logger = logging.getLogger(__name__)
logging.basicConfig(
level=logging.INFO, # 设置日志级别为DEBUG
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', # 定义日志格式
datefmt='%Y-%m-%d %H:%M:%S' # 定义时间格式
)
class LangChainPandas:
def __init__(self, model, temperature=0.8):
os.environ['OPENAI_API_KEY'] = openai_api_key
os.environ['OPENAI_API_BASE'] = openai_api_base
# self.llm = ChatOpenAI(model_name=model, verbose=True, temperature=temperature)
self.llm = OpenAI(model_name=model, openai_api_base=openai_api_base, openai_api_key=openai_api_key, temperature=temperature)
def create_agent(self, path_list):
df_list = [pd.read_excel(path) for path in path_list]
agent = create_pandas_dataframe_agent(self.llm, df_list, allow_dangerous_code=True, verbose=True)
return agent
def chat(self, query, path_list):
agent = self.create_agent(path_list)
result = agent.invoke(query)
return result.get('output', "")
if __name__ == "__main__":
agent = LangChainPandas(model)
# excel文件路径
path_list = ["path1", "path2"]
while True:
query = input("请输入您的问题: ")
result = agent.chat(query, path_list)
print(f"result: {result}")
从代码可见,核心流程十分清晰:配置数据源,实例化 agent,随后即可用自然语言直接提问。官方文档提供了更多场景案例,值得进一步探索。