如何基于LangChain构建可路由至PandasAI/LLMChain的多能力内部工具?
LangChain工具请求路由方案建议
结论:必须构建Agent做请求路由
只用PandasAI处理所有请求的弊端很明显:PandasAI是为结构化数据分析设计的,处理通用对话类任务(比如生成诗歌)不仅效率低,还容易生成不符合预期的结果。引入Agent可以让大模型通过语义判断,自动把请求分流到对应的处理模块,大幅提升工具的实用性和响应质量。
改造后的代码示例
现有代码(仅用PandasAI)
from langchain.llms import OpenAI from pandasai import PandasAI llm = OpenAI(temperature=0) pandas_ai = PandasAI(llm) def handle_query(query, sales_df): return pandas_ai.run(sales_df, prompt=query)
带Agent路由的改造代码
from langchain.agents import AgentType, initialize_agent, Tool from langchain.llms import OpenAI from pandasai import PandasAI # 初始化核心组件 llm = OpenAI(temperature=0) pandas_ai = PandasAI(llm) sales_df = your_sales_dataframe # 替换为实际的销售数据DataFrame # 定义各模块处理函数 def process_sales_query(query): return pandas_ai.run(sales_df, prompt=query) def process_general_conversation(query): return llm.predict(query) # 配置工具列表,给Agent明确的功能指引 tools = [ Tool( name="SalesDataAnalyzer", func=process_sales_query, description="专门处理销售数据相关查询,比如计算YoY增长、月度销售额统计、区域业绩对比等结构化数据分析任务" ), Tool( name="GeneralChat", func=process_general_conversation, description="处理所有非数据分析类请求,比如生成诗歌、回答常识问题、文案创作、日常聊天等通用对话任务" ) ] # 初始化Zero-Shot Agent(无需历史示例,靠工具描述判断) agent = initialize_agent( tools, llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True # 开启后可以看到Agent的思考过程,方便调试 ) # 统一入口函数 def handle_user_query(query): return agent.run(query)
预期运行效果
- 数据分析请求示例:
用户输入:"计算2023年Q3和2022年Q3的销售额同比增长率"
Agent会调用SalesDataAnalyzer工具,通过PandasAI计算并返回结果。 - 通用对话请求示例:
用户输入:"写一首关于电商促销季的短诗"
Agent会调用GeneralChat工具,直接让LLM生成符合要求的诗歌。
内容的提问来源于stack exchange,提问作者tessuw
相关产品推荐
相关产品推荐

