跳转到内容

构建可用的数据分析 Agent

上一节我们了解了 Agent 的基本架构。这一节把它变成一个真正可用的工具——支持自定义分析函数、优雅的错误处理和多表联合查询。

完整实现

python
from langchain_experimental.agents import create_pandas_dataframe_agent
from langchain_openai import ChatOpenAI
import pandas as pd

class PandasAnalysisAgent:
    def __init__(self, df, model='gpt-4o-mini'):
        self.df = df
        self.agent = create_pandas_dataframe_agent(
            llm=ChatOpenAI(model=model, temperature=0),
            df=df,
            verbose=False,
            max_iterations=5,
            handle_parsing_errors=True,
        )
    
    def ask(self, question):
        try:
            result = self.agent.invoke(question)
            return result['output']
        except Exception as e:
            return f"处理失败: {str(e)[:150]}"
    
    def analyze(self):
        questions = [
            "数据有多少行?每列的类型是什么?",
            "数值列的统计摘要是什么?",
            "有没有缺失值或异常值?",
        ]
        results = {}
        for q in questions:
            results[q] = self.ask(q)
        return results


df = pd.DataFrame({
    'model': ['GPT-4o']*50 + ['Claude']*50,
    'score': [88 + i*0.1 for i in range(100)],
})

agent = PandasAnalysisAgent(df)
for q, a in agent.analyze().items():
    print(f"Q: {q}\nA: {a[:200]}\n")

handle_parsing_errors=True 让 Agent 在代码解析失败时自动重试而不是直接报错——这在生产环境中非常重要,因为 LLM 生成的代码偶尔会有语法错误。max_iterations=5 防止无限循环。

基于 MIT 许可发布