安爸-超级家庭

基于Langchain框架的Agent智能体实现之工具集成

安爸 发布于

工具调用是大模型智能体的核心理念,没有工具就没有智能体的存在。

智能体开发是大模型应用中一个重要的概念,也是大模型应用的未来;而关于智能体的开发有各种各样的概念,但核心无非有两个一个是函数调用,另一个就是工具的实现。

关于函数调用有两种方式,其一是之前的function call,其二是现在比较火的MCP协议;不管是fc还是MCP目的都是让大模型能够调用外部的工具来实现具体的功能。而今天我们主要介绍的就是基于Langchain框架来实现各种工具。

基于Langchain的工具开发

在智能体开发中,工具是一个很重要的概念,操作数据库需要数据库工具,访问搜索引擎需要搜索工具等等;可以说在智能体中所有的外部调用都是以工具的形式来体现的。

而在实际的开发过程中,工具主要是以函数和服务的形式出现;比如说定义一个访问搜索引擎的工具,只需要封装一个函数;让大模型自己去生成函数需要的参数,最后再交给python引擎执行,然后获取结果。

而在Langchain中提供了大量的封装好的工具给我们使用,如下图所示:

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)        

完整代码如下,当然用户也可以直接查看官方文档自己手动实现

文档地址如下:

https://python.langchain.ac.cn/docs/integrations/tools/pandas/

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)                 # agent = create_pandas_dataframe_agent(                     #     self.llm,                     #     df,                     #     verbose=True,                     #     allow_dangerous_code=True,                     #     agent_type=AgentType.OPENAI_FUNCTIONS,                     # )                 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}")

(文:AI探索时代)

基于Langchain框架的Agent智能体实现之工具集成最先出现在每时AI


扫描二维码,在手机上阅读