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
相关产品推荐
相关产品推荐

