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

如何让LangChain Python Agent正确读取本地Python对象my_name并输出Tom

解决LangChain Python Agent无法正确读取预定义变量my_name的问题

当前问题核心是Agent误解了指令,自行重新定义了my_name变量,没有读取你预先传入locals中的值。以下是两种可行的解决方法:

方案一:明确指令,避免Agent重新定义变量

修改执行指令,明确要求Agent直接使用已存在的变量,不要重新定义:

agent_executor_openAI.run("直接打印当前已存在的Python变量my_name,不要重新定义该变量")

方案二:通过系统提示强化变量存在的信息

在创建Agent时,添加自定义系统提示,明确告知Agent可以直接使用预定义的my_name变量:

from dotenv import load_dotenv, find_dotenv
import openai
import os
from langchain.chat_models import ChatOpenAI
from langchain.agents.agent_types import AgentType
from langchain_experimental.agents.agent_toolkits import create_python_agent
from langchain_experimental.tools import PythonREPLTool
from langchain.prompts import SystemMessagePromptTemplate, ChatPromptTemplate

load_dotenv(find_dotenv())
openai.api_key = os.environ["OPENAI_API_KEY"]

my_name = "tom"

# 构建系统提示,告知Agent可直接使用已存在的变量
system_prompt = SystemMessagePromptTemplate.from_template(
    "你可以直接使用已存在的Python变量my_name,无需重新定义。请严格按照用户指令操作。"
)
prompt = ChatPromptTemplate.from_messages([system_prompt])

agent_executor_openAI = create_python_agent(
    llm=ChatOpenAI(temperature=0, model="gpt-4-1106-preview"),
    tool=PythonREPLTool(locals={"my_name": my_name}),
    verbose=True,
    agent_type=AgentType.OPENAI_FUNCTIONS,
    agent_executor_kwargs={"handle_parsing_errors": True},
    agent_kwargs={"prompt": prompt}
)
agent_executor_openAI.run("打印变量my_name的值")

修改后,Agent会直接调用print(my_name),正确输出预定义的tom。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 20:52:11