You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Langchain的create_csv_agent与create_pandas_dataframe_agent是否支持非OpenAI大模型?

支持情况说明

LangChain的create_csv_agent和create_pandas_dataframe_agent完全支持Llama 2、Vicuna这类非OpenAI的开源LLM。官方文档仅展示OpenAI示例是因为其使用广泛,但LangChain的Agent体系设计兼容所有实现了LLM或ChatModel接口的模型。

实现步骤与示例

1. 准备依赖

安装所需库:

pip install langchain pandas transformers accelerate torch bitsandbytes  # bitsandbytes用于量化,可选

2. 加载并封装开源LLM

以Llama 2为例,先将模型封装为LangChain兼容的LLM对象:

from langchain.agents import create_csv_agent
from langchain.llms import HuggingFacePipeline
from transformers import AutoTokenizer, AutoModelForCausalLM, pipeline
import torch

# 替换为你要使用的模型名称(本地路径或Hugging Face Hub地址)
model_name = "meta-llama/Llama-2-7b-chat-hf"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(
    model_name,
    torch_dtype=torch.float16,
    device_map="auto",
    load_in_4bit=True  # 显存不足时启用4位量化,需安装bitsandbytes
)

# 创建文本生成pipeline
text_gen_pipeline = pipeline(
    "text-generation",
    model=model,
    tokenizer=tokenizer,
    max_new_tokens=512,
    temperature=0.1,
    top_p=0.95,
    repetition_penalty=1.15
)

# 封装为LangChain LLM
llm = HuggingFacePipeline(pipeline=text_gen_pipeline)

3. 创建并使用Agent

将封装好的LLM传入Agent构造函数即可:

# CSV Agent示例
csv_agent = create_csv_agent(
    llm,
    path="your_dataset.csv",
    verbose=True,
    allow_dangerous_code=True  # 需启用以允许执行生成的pandas代码,注意安全风险
)

# 测试查询
csv_agent.run("统计CSV中各地区的销售额总和")

# Pandas DataFrame Agent示例(逻辑类似)
import pandas as pd
df = pd.read_csv("your_dataset.csv")
df_agent = create_pandas_dataframe_agent(
    llm,
    df,
    verbose=True,
    allow_dangerous_code=True
)
df_agent.run("找出销售额最高的三个地区")

4. 适配模型特定Prompt格式

部分开源模型(如Llama 2、Vicuna)有专属的聊天Prompt格式,需用ChatHuggingFace封装并指定模板以提升效果:

from langchain.chat_models import ChatHuggingFace
from langchain.prompts import PromptTemplate

# Llama 2专用Prompt模板
llama_template = """<s>[INST] <<SYS>>
你是专业的数据分析助手,严格按照用户需求执行pandas操作并返回清晰结果。
<</SYS>>

{input}[/INST]"""
prompt = PromptTemplate.from_template(llama_template)

# 封装为ChatModel
chat_llm = ChatHuggingFace(pipeline=text_gen_pipeline, prompt=prompt)

# 用ChatModel创建Agent
agent = create_csv_agent(
    chat_llm,
    path="your_dataset.csv",
    verbose=True,
    allow_dangerous_code=True
)
关键注意事项
  • 模型权限:使用Llama 2需要在Hugging Face Hub申请访问权限;Vicuna模型可直接从Hub获取。
  • 硬件适配:大模型需足够显存,可通过load_in_4bit/load_in_8bit启用量化减少显存占用。
  • 安全风险:allow_dangerous_code=True会允许执行生成的代码,仅在可信输入场景下使用,避免代码注入攻击。
  • Vicuna适配:替换model_name为lmsys/vicuna-7b-v1.5等Vicuna模型即可,其余代码逻辑通用。

内容的提问来源于stack exchange,提问作者Leockl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 18:22:33