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

使用LangChain+Llama2构建CSV聊天机器人时卡在AgentExecutor环节求助

排查CSV Agent卡在执行环节的问题

以下是几个可能导致你的代码卡在> Entering new AgentExecutor chain...的原因及对应解决办法:

  • 本地LLM推理速度过慢
    你使用的Llama-2-7B量化模型,即使是q3_K_S版本,在普通CPU上推理速度也极慢,而CSV Agent需要模型多轮思考并调用工具,会导致长时间无响应看起来像卡住。
    解决:换用更轻量的量化模型(比如q4_K_M或q2_K版本),或切换到更小的模型如Mistral-7B的量化版;如果有NVIDIA GPU,给CTransformers添加device='cuda'参数启用GPU加速(需确保安装了对应GPU版本的依赖)。

  • 模型无法正确解析Agent的默认Prompt
    CSV Agent的默认Prompt相对复杂,量化后的小模型可能无法理解其中的工具调用逻辑,导致无法生成有效指令。
    解决:简化Prompt模板,明确引导模型调用工具。比如先打印默认Prompt(你的代码中已注释#agent.agent.llm_chain.prompt.template),然后替换为更简洁的版本:

    from langchain.prompts import PromptTemplate
    custom_prompt = PromptTemplate(
        input_variables=["input", "agent_scratchpad"],
        template="""你需要根据提供的CSV数据回答问题,只能使用给定工具。
    问题:{input}
    请直接调用工具完成计算,输出工具调用内容:
    {agent_scratchpad}"""
    )
    agent.agent.llm_chain.prompt = custom_prompt
    
  • 模型文件损坏或加载异常
    如果模型文件下载不完整或损坏,CTransformers加载后可能出现无声阻塞的情况。
    解决:重新下载模型文件,确认文件路径和名称完全匹配;同时调整LLM参数,将max_new_tokens调低(比如128)、temperature设为0,减少模型生成的不确定性。

  • 工具调用逻辑异常
    即使CSV只有2行,若模型生成了错误的工具调用指令,也可能导致循环等待。
    解决:先手动用pandas验证数据操作,比如运行pd.read_csv("rating.csv").shape[0]确认能正确获取行数,再通过Prompt强制模型调用正确的工具函数。

修改后的示例代码(启用GPU+简化Prompt):

!pip -q install langchain langchain_experimental ctransformers pandas
from langchain.llms import CTransformers
from langchain_experimental.agents.agent_toolkits.csv.base import create_csv_agent
from langchain.prompts import PromptTemplate

# 加载LLM,启用GPU(如果有)
llm = CTransformers(
    model="llama-2-7b-chat.ggmlv3.q4_K_M.bin",
    model_type="llama",
    max_new_tokens=128,
    temperature=0.0,
    device='cuda'
)

# 创建CSV Agent
agent = create_csv_agent(llm, "rating.csv", verbose=True, separator=",")

# 设置自定义Prompt
custom_prompt = PromptTemplate(
    input_variables=["input", "agent_scratchpad"],
    template="""你是CSV数据助手,只能用提供的工具回答问题。
问题:{input}
请调用工具完成计算,输出工具调用内容:
{agent_scratchpad}"""
)
agent.agent.llm_chain.prompt = custom_prompt

# 执行查询
agent.run("how many rows are there?")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 00:43:19