如何为LangChain CSV Agent(基于AzureOpenAI)传递自定义系统消息?
为LangChain CSV Agent添加全局自定义系统消息的方法
要为CSV Agent传递适用于所有查询的自定义系统消息(比如数据描述、通用指令),可以通过自定义Agent的Prompt模板实现,无需在每次查询中重复输入。具体步骤如下:
步骤1:定义自定义系统消息
先编写你的全局指令或数据框描述,确保内容清晰明确:
custom_system_msg = """ 你是专门处理设备数据CSV的助手,以下是数据说明: - CSV文件记录了设备的ID、名称、运行状态、温度和使用率 - status字段的可选值为:在线、离线、故障 - temperature单位为摄氏度,usage_rate为百分比 处理查询时请严格遵循上述数据描述,优先使用Python代码进行数据分析,输出清晰易懂的结果。 """
步骤2:构建包含自定义消息的Prompt模板
结合ZERO_SHOT_REACT_DESCRIPTION类型Agent的默认Prompt,将自定义消息添加到Prompt前缀:
from langchain.prompts import PromptTemplate prompt_template = PromptTemplate( input_variables=["input", "agent_scratchpad", "tool_names", "tools"], template=f"{custom_system_msg}\n\n{AgentType.ZERO_SHOT_REACT_DESCRIPTION.value.prompt}" )
步骤3:创建Agent时传入自定义Prompt
修改原有的create_csv_agent调用,加入prompt参数:
from langchain.agents import create_csv_agent, AgentType from langchain.chat_models import AzureChatOpenAI # 初始化AzureOpenAI LLM(原代码不变) llm = AzureChatOpenAI( deployment_name=OPENAI_DEPLOYMENT_NAME, model_name="gpt-3.5", temperature=0.0, ) # 创建带自定义系统消息的CSV Agent python_agent = create_csv_agent( llm, './device_data.csv', verbose=True, agent_executor_kwargs={"handle_parsing_errors": True}, agent_type=AgentType.ZERO_SHOT_REACT_DESCRIPTION, prompt=prompt_template # 传入自定义Prompt )
步骤4:正常调用Agent
之后直接运行查询即可,自定义系统消息会自动应用到所有查询中:
agent.run(query)
关键说明
- 自定义消息会被插入到每次生成的Prompt开头,作为全局约束,不需要在
query中重复输入 - 如果需要调整系统消息,只需修改
custom_system_msg的内容即可
内容的提问来源于stack exchange,提问作者Yan Lei
相关产品推荐
相关产品推荐

